Imparare ONNX per il trading - pagina 13

 
GitHub - duonghb53/YoloOnCSharpGPU
GitHub - duonghb53/YoloOnCSharpGPU
  • duonghb53
  • github.com
A state of the art real-time object detection system for C# (Visual Studio). This project has CPU and GPU support, with GPU the detection works much faster. The primary goal of this project is an easy use of yolo, this package is available on nuget and you must only install two packages to start detection. In the background we are use the...
 

Rilevamento facciale tramite C# e OpenCVSharp - Gruppo di utenti pratici di ML.NET 19/01/2022



Rilevamento facciale tramite C# e OpenCVSharp - Gruppo di utenti pratici di ML.NET 19/01/2022

L'esercitazione video sul rilevamento dei volti tramite OpenCVSharp in C# è iniziata con l'oratore che ha presentato la libreria OpenCVSharp, una libreria open source per attività di visione artificiale, con un wrapper .NET. Il video discute l'utilizzo di diversi classificatori per il rilevamento, anche per gli occhi, e l'importanza della sperimentazione nella selezione dei classificatori. Il tutorial ha assistito l'ascoltatore nella creazione di un programma per il rilevamento di volti e occhi tramite webcam, con l'ausilio di frammenti di codice, Visual Studio e notebook interattivi .NET. Sono stati inoltre elaborati diversi aspetti, tra cui come sovrapporre immagini trasparenti e maneggiare correttamente gli oggetti opachi. Il relatore ha riconosciuto la facilità d'uso, la velocità e la compatibilità di OpenCVSharp con .NET, ma ha anche notato la mancanza di esempi e l'incertezza del supporto a lungo termine.

  • 00:00:00 In questa sezione, il relatore introduce l'argomento del rilevamento dei volti utilizzando OpenCVSharp in C# e offre una breve panoramica di cos'è OpenCVSharp, ovvero un wrapper .NET per OpenCV, una libreria open source per attività di visione artificiale. Il relatore discute le diverse funzionalità di OpenCVSharp, tra cui la manipolazione delle immagini, il rilevamento dei volti e i modelli di riconoscimento dei volti. Il relatore osserva inoltre che mentre non ci sono molti esempi C# per OpenCVSharp, ci sono molti esempi Python che possono essere facilmente convertiti in C# a causa delle somiglianze nelle API. Il relatore passa quindi a elencare alcuni esempi di come eseguire attività specifiche sia in Python che in C# utilizzando OpenCVSharp.

  • 00:05:00 In questa sezione, il relatore discute le diverse versioni di OpenCVSharp e l'importanza di associare le librerie gestite con le librerie di binding native. Dimostrano quindi alcuni esempi utilizzando Visual Studio Code e notebook interattivi .NET, caricando i pacchetti NuGet e utilizzando i file XML hard cascade per eseguire il rilevamento dei volti. Il codice procede attraverso l'inserimento dei classificatori hard cascade e il loro utilizzo per rilevare i volti e disegnare riquadri intorno a essi nelle immagini.

  • 00:10:00 In questa sezione, il relatore spiega l'importanza di gestire e smaltire correttamente gli "oggetti mat" in OpenCVSharp per evitare potenziali perdite di memoria. Dimostrano come caricare un'immagine sorgente e creare una nuova "immagine grigia" vuota per il rilevamento dei volti, poiché il classificatore funziona meglio su immagini in bianco e nero. Spiegano quindi come utilizzare "l'istogramma equalizzato cb2" per normalizzare la luminosità e il contrasto dell'immagine, il che porta a una migliore classificazione a cascata. Il relatore discute anche su come utilizzare i requisiti di dimensioni minime per il rilevamento dei volti per evitare falsi positivi e artefatti. Infine, mostrano come utilizzare il "rettangolo cv2" per disegnare una casella attorno ai volti rilevati e aprire una finestra per mostrare l'immagine risultante, con il tasto peso utilizzato come un modo per l'utente di chiudere la finestra.

  • 00:15:00 In questa sezione del video, l'oratore discute di come non si aspetti che entri una chiave di peso poiché non ne ha bisogno per mostrare un'immagine statica. Tuttavia, entrerà maggiormente in gioco quando guarderanno la demo della webcam. Rispondono anche a una domanda sugli spazi dei nomi predefiniti e spiegano come rileveranno non solo il viso, ma anche gli occhi nel viso. Discutono dell'introduzione di due file a cascata - la faccia frontale e la cascata degli occhi - e di come attraversano i rettangoli del viso per cercare di eseguire un rilevamento aggiuntivo degli occhi. Spiegano il processo coinvolto nella creazione di una regione di interesse (ROI) e nel disegno di un rettangolo attorno al viso.

  • 00:20:00 In questa sezione, l'istruttore passa attraverso il processo di rilevamento degli occhi in un'immagine del volto utilizzando cascate nidificate in OpenCVSharp. Prendono la regione di interesse del viso rilevata in precedenza, la convertono in grigio e quindi applicano una cascata nidificata appositamente per rilevare gli occhi. In questo modo, sono in grado di disegnare cerchi attorno agli occhi rilevati, con il punto centrale del cerchio che rappresenta la posizione degli occhi rilevati. Notano che la dimensione degli occhi rilevati dovrebbe essere inferiore alla dimensione del volto rilevato e, attraverso alcuni tentativi ed errori, regolano i parametri della cascata nidificata per rilevare meglio gli occhi in volti di dimensioni diverse. Nel complesso, sebbene il processo non sia perfetto, nella maggior parte dei casi è efficace nel rilevare gli occhi.

  • 00:25:00 In questa sezione, il relatore discute i diversi classificatori che possono essere utilizzati per il rilevamento dei volti e la necessità di sperimentare per determinare quale classificatore funziona meglio per situazioni specifiche. L'oratore riconosce anche che potrebbero esserci artefatti nel processo di rilevamento e suggerisce di utilizzare la logica per rimuoverli se si sta producendo il processo. L'oratore passa quindi a discutere l'uso delle webcam e come il codice per il rilevamento di volti e occhi della webcam sia simile agli esempi precedenti, con l'unica differenza che è l'introduzione dell'acquisizione video e la creazione di un oggetto finestra. Infine, viene evidenziata l'importanza di attendere un millisecondo tra i fotogrammi per vedere se un tasto viene premuto, in quanto influisce notevolmente sui fotogrammi al secondo catturati nella webcam.

  • 00:30:00 In questa sezione, il relatore illustra la funzione di rilevamento dei volti in OpenCVSharp utilizzando C#. Il codice acquisisce i dati della webcam e rileva il volto del soggetto posizionando un riquadro attorno ad esso. Il presentatore spiega la chiave di peso, una caratteristica distintiva di OpenCVSharp che deve essere inclusa affinché la finestra mostri un'immagine. Continuano a rispondere a una domanda su quando viene eseguito il metodo della chiave di peso e descrivono come viene utilizzato. La sezione include anche un esempio di aggiunta di fotogrammi al secondo al codice di acquisizione dei dati della webcam. Il relatore rileva l'importanza di includere la chiave del peso, poiché dimenticarla può causare problemi e dimostra come distruggere tutte le finestre nel codice.

  • 00:35:00 In questa sezione, il relatore spiega come è possibile inserire il testo sullo schermo e controllare il colore utilizzando C# e OpenCVSharp. Spiegano come definiscono un colore per la casella attorno a volti e occhi e definiscono un altro colore chiamato colore fps, che è rosso se la frequenza dei fotogrammi è inferiore a 20 fotogrammi al secondo e verde se è maggiore o uguale a 20. dimostrare anche l'effetto del ritardo nella chiave del peso e come influisce sui frame rate. Dicono che con tutte le variabili in gioco, sono felici se riescono a ottenere 20 o più fotogrammi al secondo, il che consente loro di raggiungere i loro obiettivi per il momento.

  • 00:40:00 In questa sezione, il relatore dimostra come sovrapporre le immagini e spiega l'importanza di utilizzare IamReadModes invariato per mantenere l'elemento di trasparenza di un'immagine. Usano gli occhiali da sole come esempio e ammettono che il codice non è ottimizzato, in quanto non hanno avuto il tempo di rendere tutto perfetto. Inoltre imbrogliano codificando le coordinate di dove vogliono che gli occhiali da sole atterrino invece di utilizzare le coordinate x e y del rettangolo del viso. Il relatore spiega che negli scenari della vita reale, sarebbe necessario passare le coordinate x e y al metodo MakeOverlay per sapere dove inserire l'overlay. Inoltre, menzionano il metodo Resize che dovrebbe essere utilizzato per ridimensionare l'immagine sovrapposta in base alla grandezza del rettangolo, ma questo non è necessario nel loro esempio di imbroglio.

  • 00:45:00 In questa sezione, l'oratore spiega il processo di unione di un'immagine di sovrapposizione trasparente su un'immagine di base. Innanzitutto, l'immagine di sovrapposizione trasparente viene convertita in RGB preservando il canale trasparente. Quindi, i canali RGB vengono estratti dalla sovrapposizione originale e uniti in una nuova mappa. Successivamente, il canale di trasparenza viene unito alla nuova mappa duplicandolo tre volte in una nuova mappa denominata "overlay alpha 3 channel" ed eseguendo un'operazione bit a bit. Infine, viene definita la regione di interesse in cui verranno posizionati gli occhiali da sole e il rettangolo del viso viene estratto per fungere da regione di interesse del viso per unire gli occhiali da sole.

  • 00:50:00 In questa sezione, l'oratore spiega brevemente il processo di aggiunta di occhiali da sole a un volto rilevato utilizzando OpenCVSharp. Utilizzano operazioni bit per bit per posizionare gli occhiali da sole sopra il volto rilevato, mantenere la trasparenza e riportare il volto nella sua posizione originale. Il relatore evidenzia anche alcuni pro e contro di OpenCVSharp, come la facilità d'uso, la velocità e la compatibilità con .NET, ma la mancanza di esempi e l'incertezza del supporto a lungo termine. Il relatore fornisce varie risorse e incoraggia gli utenti a sponsorizzare il progetto OpenCVSharp su GitHub. Un partecipante chiede se OpenCVSharp può essere eseguito su un microcontrollore come Raspberry Pi e l'oratore risponde che dovrebbe essere possibile con il sapore Linux Arm.
 

Previsione su un modello ONNX di visione personalizzata con ML.NET



Previsione su un modello ONNX di visione personalizzata con ML.NET

In questo video di YouTube, il relatore illustra l'utilizzo di ML.NET per prevedere un modello ONNX di visione personalizzato. Ciò comporta l'esportazione del modello dal servizio di visione personalizzato e l'importazione nel progetto ML.NET. L'implementazione include il ridimensionamento delle immagini, l'estrazione dei pixel dell'immagine, la creazione di un contesto dati e un elenco di dati vuoto per caricare i dati dell'immagine, l'utilizzo del framework ML.NET per effettuare previsioni sul modello e l'output dei risultati. Il video mostra anche come ottenere il nome di output di un modello utilizzando uno strumento chiamato Neuron e come ottenere informazioni sul riquadro di delimitazione dal modello per una determinata immagine di prova. Il presentatore mostra anche come disegnare un rettangolo attorno al riquadro di delimitazione e visualizzare le etichette previste utilizzando l'API grafica. L'implementazione del modello ONNX tramite l'API ML.NET e il ridimensionamento delle immagini è considerata la parte più significativa dell'implementazione.

  • 00:00:00 Utilizzeremo il framework ML.NET per prevedere un modello ONNX di visione personalizzato. Per fare ciò, dobbiamo prima esportare il modello dal servizio di visione personalizzato e importarlo nel nostro progetto ML.NET. Una volta che il modello è nel nostro progetto, possiamo creare una pipeline che ridimensiona le immagini ed estrae i pixel dell'immagine prima di fare la previsione sul modello. Per fare ciò, dobbiamo scaricare e aggiungere diversi pacchetti NuGet al nostro progetto, nonché creare un nuovo contesto dati e un elenco di dati vuoto per caricare i dati dell'immagine. Infine, usiamo il framework ML.NET per fare previsioni sul modello ed emettere i risultati.

  • 00:05:00 In questa sezione, il relatore discute l'utilizzo di uno strumento chiamato Neuron per ottenere il nome di output di un modello scaricato da Custom Vision. Neuron è una piccola app desktop che fornisce informazioni su un modello, inclusi input e output. Una volta ottenuto il nome di output, può essere utilizzato come nome della colonna di output quando si chiama la trasformazione per applicare il modello. Il relatore dimostra anche come creare un motore di previsione e utilizzare metodi di supporto per ottenere informazioni sul riquadro di delimitazione dal modello per una determinata immagine di prova.

  • 00:10:00 In questa sezione, il relatore continua con l'implementazione del modello di rilevamento degli oggetti dimostrando come ottenere i riquadri di delimitazione, disegnare un rettangolo attorno ad esso e visualizzare le etichette previste per le immagini utilizzando l'API grafica. La confidenza massima si ottiene per ottenere il riquadro di delimitazione superiore in cui viene considerato solo un riquadro di delimitazione con la confidenza massima. Il codice utilizza anche metodi helper per disegnare il rettangolo e viene restituita la stringa della descrizione per indicare la percentuale di confidenza. Infine, l'immagine di prova viene salvata nel file system per riferimenti futuri. Il relatore sottolinea che la maggior parte dell'implementazione è il ridimensionamento delle immagini e l'applicazione del modello ONNX utilizzando l'API ML.NET.
 

Rendere le reti neurali portatili con ONNX



Rendere le reti neurali portatili con ONNX

In questo video di YouTube, Ron Dagdag spiega come rendere portatili le reti neurali con ONNX, concentrandosi sul lato inferenziale dell'apprendimento automatico. ONNX è un framework open source che consente la portabilità dei modelli di machine learning su varie unità di elaborazione e dispositivi. Il relatore discute il processo di conversione dei modelli in ONNX, la distribuzione e l'integrazione del modello con le applicazioni e il suo utilizzo per la distribuzione cloud ed edge. Dimostrano inoltre come caricare un modello ONNX in Node.js e integrare i modelli di classificazione delle immagini nelle applicazioni Web e mobili utilizzando ONNX Runtime. I modelli ONNX sono uno standard aperto che può essere creato da vari framework per essere distribuito in modo efficiente sulla piattaforma di destinazione.

  • 00:00:00 In questa sezione, Ron Dagdag introduce il concetto di rendere le reti neurali portatili tramite ONNX, concentrandosi sul lato inferenziale dell'apprendimento automatico. Spiega il tipico processo di programmazione rispetto all'apprendimento automatico e la necessità di dati di addestramento, un framework di addestramento, un modello e un runtime di inferenza per creare algoritmi. Accenna inoltre al fatto che il focus della presentazione sarà sul lato dell'inferenza, utilizzando ONNX per incorporare il modello in un'applicazione.

  • 00:05:00 In questa sezione, il relatore introduce ONNX come framework che consente la portabilità dei modelli di machine learning su varie unità di elaborazione come CPU, GPU e FPGA, nonché su diversi dispositivi come il cloud o l'IoT. Lo confrontano con un PDF in quanto è un formato che può essere consumato ovunque ed è open source su GitHub, avendo raccolto oltre 11.000 stelle e 200 collaboratori. Il relatore consiglia di usare ONNX quando si ha a che fare con modelli addestrati in Python che devono essere distribuiti con altre applicazioni o richiedono un'elevata latenza di inferenza, ad esempio l'esecuzione su dispositivi edge come Azure Percept.

  • 00:10:00 In questa sezione, il relatore discute gli scenari in cui diventa necessario convertire un'applicazione programmata su un sistema operativo (SO) o hardware specifico per essere eseguita su un sistema operativo o hardware diverso. La soluzione è convertire il programma in formato ONNX. ONNX viene usato quando si eseguono modelli creati da framework diversi e quando il training richiede troppo tempo. Il relatore passa quindi a descrivere in dettaglio quattro modi per ottenere un modello ONNX, il primo dei quali è lo zoo del modello ONNX su GitHub. Questo è seguito da un servizio di visione personalizzato, dalla conversione da un modello esistente e dal training tramite Machine Learning di Azure o Machine Learning automatizzato.

  • 00:15:00 In questa sezione, il relatore discute il processo di conversione dei modelli in ONNX. Il processo non è limitato ai modelli scritti in Python e può essere eseguito anche con ML.NET. Il relatore mostra come convertire un modello ML.NET e quindi salvarlo in ONNX. Sono disponibili molti modelli che sono stati convertiti in ONNX, inclusi i modelli di classificazione delle immagini e di rilevamento degli oggetti. Custom Vision Service può anche essere utilizzato per caricare immagini e contrassegnarle per classificare diversi tipi di oggetti. GitHub fornisce un'app chiamata Netron che consente agli ingegneri del software di visualizzare l'aspetto di un modello ONNX, inclusi input e output. Il relatore spiega che si può anche generare un modello ONNX convertendolo da PyTorch o TensorFlow.

  • 00:20:00 In questa sezione, il relatore dimostra come generare un modello di regressione ed esportarlo in ONNX, un formato open source che consente la portabilità quando si utilizzano diversi framework di machine learning. Usando C# e ml.net, il relatore carica i dati sullo stipendio in un frame di dati e addestra un modello di regressione, specificando la colonna dell'etichetta e l'input (anni di esperienza) usando una pipeline. Dopo aver valutato il modello, lo convertono in ONNX passando il modello, i dati campione e lo stream al contesto, ottenendo un file che può essere visualizzato utilizzando Netron. Il relatore osserva che ONNX può anche essere utilizzato come formato intermedio per convertire i modelli di apprendimento automatico tra framework, come PyTorch e TensorFlow.

  • 00:25:00 In questa sezione, il relatore discute il processo di implementazione e integrazione di un modello ONNX in un'applicazione. La conversione dei modelli in ONNX consente la compatibilità tra diversi framework e gli utenti possono anche utilizzare i modelli ONNX per trasferire l'apprendimento e la messa a punto. Il relatore sottolinea l'importanza del controllo delle versioni e della disponibilità di un registro modello, proprio come un registro contenitore, per facilitare il monitoraggio e la distribuzione. Inoltre, il relatore evidenzia i diversi set di competenze richiesti ai data scientist che costruiscono la "ricetta" rispetto a quelli necessari agli ingegneri che avviano una "panetteria" e integrano l'IA nelle applicazioni. Il discorso copre vari framework e piattaforme che supportano la distribuzione di modelli ONNX, come Azure Machine Learning, Ubuntu o Windows Server e dispositivi perimetrali IoT.

  • 00:30:00 In questa sezione, il relatore discute l'implementazione di modelli di machine learning, coprendo sia l'implementazione cloud che edge. Secondo il relatore, l'implementazione edge riguarda la vicinanza dell'elaborazione dei dati agli utenti ed è molto più vicina del cloud. L'esecuzione dell'IA sull'edge è l'ideale per una bassa latenza e per risparmiare sui costi, in quanto può elaborare i dati localmente senza caricarli nel cloud. Inoltre, l'esecuzione in locale è più flessibile e può garantire la conformità alla privacy, particolarmente importante quando si tratta di regole che vietano la condivisione di immagini al di fuori della rete. Per facilitare l'implementazione di modelli di machine learning sull'edge, Microsoft ha sviluppato un runtime ONNX open source che supporta non solo le reti neurali ma anche le tradizionali specifiche di machine learning, può eseguire inferenza ad alte prestazioni e dispone di un'architettura estensibile per gli acceleratori hardware.

  • 00:35:00 In questa sezione, il relatore spiega come rendere portatili le reti neurali con ONNX. Il runtime ONNX consente agli utenti di eseguire modelli su diverse unità di elaborazione, tra cui GPU, CPU e VPU, e può essere utilizzato su varie piattaforme, come Windows, browser Web, Node.js e applicazioni React Native. Il relatore mostra una demo su come caricare un modello ONNX in un'applicazione Node.js e su come passare i valori di input per ricevere l'output desiderato. Utilizzando il runtime ONNX, gli sviluppatori possono incorporare facilmente modelli di machine learning nelle loro applicazioni senza preoccuparsi della compatibilità hardware.

  • 00:40:00 In questa sezione, il video illustra ONNX Runtime Web, una libreria JavaScript progettata per l'esecuzione di modelli ONNX direttamente in un browser utilizzando le tecnologie WebAssembly e WebGL ottimizzate. Questo metodo di inferenza nel browser è più veloce, più sicuro ed economico, consentendo anche l'utilizzo offline. Tuttavia, potrebbe non essere efficiente per i modelli più grandi che richiedono specifiche hardware specifiche e potrebbero comportare tempi di download più lunghi. Il video fornisce un esempio di utilizzo di ONNX Runtime Web per analizzare l'immagine di un bambino che piange, dimostrando come il modello viene integrato in un file HTML ed eseguito utilizzando il runtime.

  • 00:45:00 In questa sezione del video, il relatore mostra come utilizzare lo zoo del modello ONNX e il runtime web di ONNX per integrare un modello di classificazione delle immagini in un'applicazione web. Carica un'immagine nell'app Web, la ridimensiona e la converte in scala di grigi e un tensore per prepararla per il modello pre-addestrato. Utilizzando il runtime web di ONNX, il modello viene caricato e alimentato con l'immagine elaborata, ottenendo una previsione dell'emozione espressa nell'immagine. Il relatore mostra quindi il punteggio di un modello ONNX pre-addestrato in un'app React Native.

  • 00:50:00 In questa sezione, il relatore discute l'uso di ONNX runtime mobile come soluzione di inferenza leggera per l'esecuzione di modelli ONNX ottimizzati su piattaforme Android e iOS. Per integrare ONNX runtime mobile nell'applicazione, è possibile utilizzare npm install ONNX runtime react native, che riduce al minimo la dimensione binaria in un modello ONNX pre-ottimizzato chiamato formato ort. Il tutorial disponibile su onnxruntime.ai spiega passo dopo passo come distribuire i modelli ONNX utilizzando varie piattaforme come node, browser web, react mobile, ecc. Il grafico di compatibilità mostra che Chrome supporta il web assembly e webGL su Windows 10, macOS, Ubuntu , iOS e Android. I modelli ONNX sono uno standard aperto che può essere creato da vari framework per essere distribuito utilizzando gli strumenti giusti in modo efficiente sulla piattaforma di destinazione.
 

Su .NET Live - AI ovunque: Azure ML e ONNX Runtime



Su .NET Live - AI ovunque: Azure ML e ONNX Runtime

Il video "On .NET Live - AI Everywhere: Azure ML and ONNX Runtime" è incentrato sull'uso di Azure ML e ONNX Runtime per l'apprendimento automatico con C#. I relatori discutono i vantaggi dell'utilizzo del formato ONNX per l'esportazione di modelli in linguaggi di programmazione, l'ottimizzazione del runtime ONNX per l'accelerazione e l'inferenza hardware e la sua compatibilità con versioni specifiche del framework. Mostrano anche come usare ONNX Runtime con Azure ML in Python e .NET, creare e addestrare un modello di rete neurale e spiegare l'inferenza e il suo passaggio finale nell'apprendimento automatico. Il video si conclude con l'introduzione di un nuovo provider per il runtime ONNX che consente l'utilizzo di OpenVINO per la CPU ARM, fornendo funzionalità di debug.

In questa sezione del video, gli host discutono della flessibilità e della configurabilità del runtime ONNX e della sua capacità di funzionare su varie piattaforme hardware e software. Il runtime ONNX è visto come un ottimo wrapper per diverse piattaforme in quanto i clienti possono utilizzarlo su una CPU cloud, Android, iOS o Snapdragon e consente un'inferenza più rapida.

  • 00:00:00 In questa sezione, i conduttori introducono l'ospite, Maro Benici, uno sviluppatore .NET italiano con esperienza in intelligenza artificiale (AI). L'episodio si concentrerà su come usare Azure ML e ONNX Runtime con C# per continuare a studiare il machine learning. Nel segmento dei bit correlati, discutono un documento sul sito di Azure Machine Learning sull'esecuzione di previsioni con i modelli AutoML ONNX in .NET, che è strettamente correlato all'argomento del giorno.

  • 00:05:00 In questa sezione, il relatore discute l'opzione per esportare modelli di machine learning in formato ONNX per condividere modelli tra framework usando componenti in Automl all'interno di Azure Machine Learning. Per eseguire l'inferenza in .NET, viene utilizzato il pacchetto di runtime ONNX, con ml.net che esegue la pipeline di previsione utilizzando il modello ONNX. Viene introdotto Netron, uno strumento per comprendere gli input e gli output di un modello, e viene dimostrata la creazione di classi per input e output. Infine, viene definita la pipeline che include il modello e un'istanza di input viene eseguita attraverso il motore per effettuare previsioni, con l'output risultante come tariffa prevista. Il relatore introduce quindi brevemente un articolo correlato sull'utilizzo del runtime ONNX con Stable Difussion per generare immagini AI.

  • 00:10:00 In questa sezione, il relatore parla di come la tecnologia si è evoluta negli ultimi 15 anni, dall'hardware personalizzato ai data center e al cloud computing. Fornisce un esempio del suo primo progetto nel 2006, che prevedeva sensori fatti a mano per catturare minerali in un vigneto, e come i dati sono stati archiviati su dischi rigidi portatili e spediti a un laboratorio per essere analizzati. Oggi, lo stesso progetto potrebbe essere realizzato con un telefono cellulare, con i dati raccolti sul cloud e analizzati in tempo reale, consentendo di effettuare avvisi e regolazioni istantanei. Il relatore discute anche di come il passaggio al cloud abbia aperto opportunità per le aziende, con servizi basati su cloud ora disponibili per i clienti che in precedenza erano limitati al computing on-premise.

  • 00:15:00 In questa sezione, il relatore discute le sfide affrontate dai clienti che utilizzano diversi linguaggi di programmazione per creare e distribuire i propri modelli di machine learning. Spiega che il formato ONNX è stato creato come soluzione a questo problema, consentendo ai clienti di salvare i propri modelli in un linguaggio che può essere ricaricato in un diverso linguaggio di programmazione. Continua spiegando che ONNX può esportare le funzioni matematiche e i valori dei livelli nella rete neurale, consentendo una facile conversione tra lingue diverse. Il relatore sottolinea che ONNX viene utilizzato da molte aziende, rendendo possibile l'esternalizzazione del codice e l'utilizzo di diverse aziende che conoscono diversi linguaggi di programmazione.

  • 00:20:00 In questa sezione, il video illustra il framework ONNX e il suo utilizzo per l'esportazione e l'esecuzione di modelli di machine learning su diverse piattaforme e linguaggi di programmazione. Il framework ONNX consente agli utenti di esportare modelli ed eseguirli senza dover ricaricare librerie o framework, rendendo più semplice per i clienti che potrebbero non conoscere Python e TensorFlow. Il runtime ONNX è open source e disponibile su GitHub e gli utenti possono selezionare la lingua e l'architettura preferite per eseguire il modello. Il video tocca anche la compatibilità dell'op set e il modo in cui viene influenzata, poiché è essenziale garantire la compatibilità con versioni specifiche del framework.

  • 00:25:00 In questa sezione, i relatori discutono su come garantire che le funzioni matematiche utilizzate nei modelli AI siano compatibili con la libreria di runtime ONNX. Raccomandano di utilizzare la versione più recente della libreria, che supporta tutte le operazioni nel modello. Menzionano anche che c'è un recente aggiornamento alla documentazione ONNX che fornisce una migliore visibilità su quali app sono supportate e quali no. Se una funzione matematica non è supportata, viene generato un avviso e l'utente viene informato su quale offset non è supportato. I relatori discutono anche dei vantaggi della libreria di runtime ONNX, come l'accelerazione hardware per le GPU e l'ottimizzazione per i modelli AI.

  • 00:30:00 In questa sezione, il relatore discute l'ottimizzazione per il runtime ONNX e la possibilità di utilizzarlo sia per l'addestramento che per l'inferenza. Con ONNX, è possibile ottimizzare il processo di formazione e adattare hardware personalizzato senza ripartire da zero. Il relatore conferma inoltre che il runtime ONNX può essere utilizzato per ottimizzare l'hardware di addestramento, mentre un altro hardware può essere scelto per l'inferenza. Nel complesso, il relatore sottolinea la capacità di creare e addestrare modelli per qualsiasi ambiente hardware e la flessibilità del runtime ONNX.

  • 00:35:00 In questa sezione, il relatore parla dell'utilizzo di Azure ML e ONNX Runtime per creare una rete neurale per la classificazione dei fiori. Iniziano selezionando l'applicazione in esecuzione all'interno di una macchina S11 standard per la misurazione. Quindi, usano Tensorflow come lo usa generalmente la loro azienda e scelgono panda, NumPy e altri strumenti di pre-elaborazione. Discutono della codifica delle stringhe come matrici e della suddivisione del set di dati tra addestramento e test. Alla fine creano la rete neurale, che codificano in formato ONNX in modo che possa essere utilizzata nel data center del cliente.

  • 00:40:00 In questa sezione del video, il relatore spiega il processo di addestramento di un modello di rete neurale usando Azure Machine Learning e TensorFlow. Dimostra come compilare il modello e ottimizzarne l'accuratezza prima di valutare le prestazioni del modello. Una volta addestrato il modello, mostra come importare il modello in TensorFlow per creare un nuovo modello per il cliente. Per facilitare le cose al cliente, definisce le specifiche di input e nomina l'input e l'output. Spiega inoltre i vantaggi della conversione del modello in formato ONNX per il test prima di consegnarlo al cliente.

  • 00:45:00 In questa sezione del video, il relatore mostra come usare ONNX Runtime con Azure ML su Python e .NET. Importano ONNX una volta in Python, selezionano un provider e caricano il runtime ONNX da utilizzare ignorando il modello TensorFlow. Creano input e lo alimentano con valori di matrice prima di eseguire il modello per ottenere l'output. Inoltre, il relatore mostra come creare un endpoint per esporre ONNX direttamente in Azure e come usare ONNX su un dispositivo IoT o uno smartphone usando un'applicazione console su .NET Core.

  • 00:50:00 In questa sezione, gli host spiegano il concetto di inferenza, che è il passaggio finale nell'apprendimento automatico in cui la rete neurale addestrata viene utilizzata per prevedere i risultati sulla base di nuovi dati che non ha mai visto prima. Discutono anche del formato ONNX, che può convertire qualsiasi modello tensoriale personalizzato in un formato supportato dal runtime ONNX. Dicono che la pre e la post-elaborazione del modello possono anche essere serializzate nel modello ONNX stesso, facilitando l'esecuzione su ciascuna piattaforma. Gli host dimostrano che il processo è simile in diverse lingue una volta caricato il modello.

  • 00:55:00 In questa sezione, il relatore discute il nuovo provider che è arrivato per il runtime ONNX, rendendo possibile l'utilizzo di OpenVINO per la CPU ARM, abilitando il debug. L'oratore sottolinea la potenza di questo, affermando che quando il modello è supportato e può essere eseguito, non è necessario modificare il codice ed è possibile eseguire lo stesso modello senza convertirlo costantemente. Il relatore osserva che mentre la scelta dell'hardware per il modello è essenziale, non è qualcosa che il runtime ONNX controlla e le decisioni prese nell'operazionalizzazione del modello devono considerare i requisiti hardware. Inoltre, il relatore afferma che è possibile utilizzare il runtime ONNX su un cluster e, inferenza, non è necessario convertire il modello ogni volta.
 

Berlin Buzzwords 2019: Lester Solbakken – Ridimensionamento della valutazione del modello ONNX e TensorFlow nella ricerca



Berlin Buzzwords 2019: Lester Solbakken – Ridimensionamento della valutazione del modello ONNX e TensorFlow nella ricerca

Lester Solbakken discute le sfide della scalabilità del machine learning per le applicazioni di ricerca e propone una soluzione alternativa all'utilizzo di server modello esterni. Suggerisce di valutare i modelli di machine learning sui nodi di contenuto, piuttosto che inviare dati a server di modelli esterni, per migliorare la scalabilità e controllare la latenza e il throughput. Solbakken mette in evidenza l'uso da parte di Vespa del proprio linguaggio di classificazione e dell'estensione dell'API del tensore per semplificare la creazione di un pacchetto dichiarativo di stato per un'applicazione e lo sforzo continuo per supportare i modelli di apprendimento automatico in Vespa. Sottolinea l'importanza di comprendere la correlazione tra le diverse fasi del ranking per evitare problemi di recupero a livello di sistema e incoraggia le persone a contribuire al progetto open-source.

  • 00:00:00 In questa sezione del video, Lester Solbakken discute le sfide della scalabilità della produzione di machine learning specificamente per le applicazioni basate sulla ricerca. Spiega come i server modello siano diventati sempre più popolari per risolvere problemi di prestazioni e scalabilità, ma per le applicazioni di ricerca, la valutazione del modello per ciascuno dei risultati della ricerca porta rapidamente a un collo di bottiglia nella capacità della rete. La soluzione è inviare meno dati per i risultati o trovare un modo per valutare il modello localmente per ciascun server. Solbakken accenna al lavoro del suo team con la piattaforma di ricerca Vespa per affrontare questi problemi.

  • 00:05:00 In questa sezione, Lester Solbakken discute la sfida della scalabilità della valutazione del modello ONNX e TensorFlow per la ricerca. Una potenziale soluzione consiste nell'inviare le funzionalità ai server modello, ma il problema è che i server di contenuto e modello potrebbero valutare la classifica in base a diversi set di funzionalità, il che può ridurre la probabilità di ottenere i migliori risultati a livello globale. Invece, Solbakken suggerisce di valutare i modelli sui server di contenuti per ottenere risultati migliori, qualcosa su cui si è lavorato in Vespa. Vespa, ampiamente utilizzato in centinaia di migliaia di query al secondo in tutto il mondo con centinaia di pubblicazioni statunitensi in esecuzione, ha ricche funzionalità di base, tra cui elasticità, scalabilità e capacità di punteggio avanzato pertinente.

  • 00:10:00 In questa sezione, Lester Solbakken illustra come Vespa integra ONNX e TensorFlow per semplificare la creazione di un pacchetto dichiarativo di stato per un'applicazione, semplificando l'utilizzo dei modelli di machine learning. Vespa utilizza il proprio linguaggio di classificazione per eseguire questi modelli e l'estensione API del tensore fornisce un piccolo set di funzionalità di base che possono rappresentare diversi tipi di calcolo. Il vantaggio di questo è che diversi modelli provenienti da diverse fonti possono essere tradotti in questo formato, rendendo più facile ottimizzarli. Solbakken evidenzia anche un benchmark che hanno creato per testare l'ipotesi che l'invio di dati non sia efficiente, emulando un sistema di raccomandazione del blog in cui hanno utilizzato un prodotto scalare nella prima fase e una rete neurale nella seconda fase.

  • 00:15:00 In questa sezione, il relatore discute i limiti di scalabilità dei server modello esterni per l'apprendimento automatico nella ricerca e propone una soluzione alternativa. Spiega che l'aggiunta di nodi di contenuto aggiuntivi per distribuire il carico di lavoro può migliorare la latenza e suggerisce che, facendo in modo che questi nodi riscrivano un numero maggiore di documenti, è possibile aumentare il numero di risultati con modelli di machine learning, con risultati di qualità potenzialmente superiore. Attraverso il ranking multifase, in cui la valutazione viene effettuata sul nodo del contenuto e non solo attraverso una rete, è possibile scalare e controllare la latenza e il throughput. Il relatore conclude che i server modello esterni non sono una buona soluzione per il ridimensionamento e sottolinea invece l'importanza della valutazione sul nodo del contenuto.

  • 00:20:00 In questa sezione, Lester Solbakken parla del ranking multifase in Vespa e dell'importanza di comprendere la correlazione tra le diverse fasi per evitare problemi di recupero a livello di sistema. Afferma inoltre che il supporto del modello nell'apprendimento automatico e Vespa è uno sforzo continuo e incoraggia le persone a contribuire al progetto open source. Coloro che sono interessati a giocare con Vespa possono trovare molte risorse sulla home page di Vespa AI, tra cui esempi di applicazioni, casi d'uso e tutorial.
 

Assimilare ONNX



Assimilare ONNX

In questo video, il relatore introduce ONNX come standard aperto per l'interoperabilità del machine learning che può funzionare su tutte le diverse piattaforme. Eseguono il processo di creazione di un progetto ONNX da zero, modificando un esempio dal repository Microsoft, risoluzione dei problemi ed esplorando altri progetti Github relativi a ONNX. Quindi testano un binding ONNX utilizzando GPT2 e CUDA, esprimendo interesse a esplorare ulteriormente i binding ONNX runtime Rust in futuro. Il relatore rileva la versatilità e la portabilità di ONNX e lo vede come un ottimo strumento per la sperimentazione e la realizzazione di progetti più sostanziali in futuro.

  • 00:00:00 In questa sezione, il relatore presenta ONNX, uno standard aperto per l'interoperabilità del machine learning che consente l'utilizzo di molti framework e acceleratori diversi per l'inferenza sui servizi cloud. Menzionano la disponibilità di un wrapper sicuro attorno al runtime ONNX con un'inferenza ML multipiattaforma ad alte prestazioni e un acceleratore di addestramento. Sottolineano inoltre la portabilità associata a ONNX , in quanto può funzionare su tutte le diverse piattaforme, e dimostrano come creare un nuovo progetto ONNX da zero utilizzando esempi tratti da Microsoft Branch. Il relatore osserva che con ONNX lavorato attivamente e continuamente integrato, fornisce un buon strumento con cui giocare nell'apprendimento automatico.

  • 00:05:00 In questa sezione del video, il relatore accede al sito web di ONNX per ottenere la versione più recente e creare un runtime ONNX. Mostrano anche come copiare e modificare un esempio dal repository Microsoft e aggiungere un makefile. Inoltre, integrano il tracing subscriber e il gbt nel codice e aggiungono il modello squeeze net. Il relatore riscontra alcuni errori ma li risolve controllando un esempio precedente e assicurandosi che siano disponibili i modelli corretti.

  • 00:10:00 In questa sezione, l'oratore sta risolvendo un problema in cui tenta di utilizzare una versione specifica di ONNX, ma riscontra errori. Provano vari metodi per risolvere il problema, come copiare un esempio funzionante e ricostruire il progetto, ma nessuno di loro sembra funzionare. Alla fine, trovano un esempio precedente nella documentazione ONNX che funziona con la versione desiderata. Scambiano il modello e sono in grado di compilare ed eseguire correttamente il programma. Nel complesso, questa sezione evidenzia l'importanza di controllare accuratamente le dipendenze e di essere disposti a provare diverse soluzioni durante il debug.

  • 00:15:00 In questa sezione del video, il relatore discute i limiti dell'esempio ONNX di base "Hello world" e suggerisce che sarebbe più utile avere un esempio che carica e manipola un'immagine. Evidenziano alcuni altri progetti Github relativi a ONNX, come Rust Code Search e Track ONNX , che hanno funzionalità più avanzate e mostrano interesse a provarli. Inoltre, esplorano il progetto GPT-RS, che consente l'uso di modelli GPT2 con CUDA, e spiegano come potrebbe essere potenzialmente utilizzato per manipolare i dati delle immagini.

  • 00:20:00 In questa sezione, l'utente testa un'associazione ONNX utilizzando GPT2 e CUDA, che genera output di test per il completamento del codice o il completamento del testo. L'utente ritiene che questo esempio sia promettente ed esprime interesse a esplorare ulteriormente i collegamenti Rust del runtime ONNX in futuro. Riassumono la loro esperienza come un esperimento interessante ed esprimono il desiderio di costruire qualcosa di più sostanziale nel loro prossimo tentativo con ONNX.
 

HITNET vs. Confronto di stima della profondità stereo neurale ACVNet (ONNX)



HITNET vs. Confronto di stima della profondità stereo neurale ACVNet (ONNX)

Confronto dei modelli di stima della profondità stereo HITNET e ACVNet nel set di dati Driving Stereo.

Dettagli sull'inferenza del modello (NVIDIA 1660 SUPER):
HITNET (640X480): 220 ms
Rete ACV (640x384): 480 ms
Riferimenti: [HITNET Inference] https://github.com/ibaiGorordo/ONNX-HITNET-Stereo-Depth-estimation
[Inferenza ACVNet] https://github.com/ibaiGorordo/ONNX-ACVNet-Stereo-Depth-Estimation
[Driving Stereo set di dati] https://drivingstereo-dataset.github.io/

GitHub - ibaiGorordo/ONNX-HITNET-Stereo-Depth-estimation: Python scripts form performing stereo depth estimation using the HITNET model in ONNX.
  • ibaiGorordo
  • github.com
Python scripts form performing stereo depth estimation using the HITNET model in ONNX. Requirements Installation ONNX model The original models were converted to different formats (including .onnx) by PINTO0309...
 

Importa, addestra e ottimizza i modelli ONNX con NVIDIA TAO Toolkit



Importa, addestra e ottimizza i modelli ONNX con NVIDIA TAO Toolkit

Il video mostra come utilizzare NVIDIA TAO Toolkit per importare, addestrare e ottimizzare i modelli ONNX. Inizia scaricando un modello ResNet18 pre-addestrato, perfezionandolo con TAO sul set di dati Pascal VOC e fornisce i passaggi per importare il modello e visualizzare il grafico ONNX. L'avanzamento dell'addestramento può essere monitorato utilizzando la visualizzazione TensorBoard e i livelli personalizzati possono essere utilizzati in caso di errori di conversione ONNX. Il video spiega anche come valutare le prestazioni del modello osservando la perdita decrescente, convalidando la perdita e analizzando pesi e distorsioni. Gli utenti possono valutare l'accuratezza del modello sul set di dati di test e sulle immagini di esempio e continuare con la potatura e l'ottimizzazione per migliorarlo ulteriormente.

  • 00:00:00 In questa sezione, il video spiega come importare, addestrare e ottimizzare i modelli ONNX utilizzando NVIDIA TAO Toolkit. Il video inizia scaricando un modello ResNet18 pre-addestrato, che viene poi messo a punto sul set di dati Pascal VOC utilizzando TAO. Vengono trattati anche i passaggi per l'importazione del modello ONNX e la visualizzazione del grafico ONNX. Inoltre, il video illustra come monitorare l'avanzamento del lavoro di formazione utilizzando la visualizzazione TensorBoard. Infine, il video menziona che TAO può gestire livelli personalizzati e fornisce indicazioni su come utilizzarli per importare modelli che non riescono a convertire.

  • 00:05:00 In questa sezione, il relatore discute su come valutare le prestazioni del modello addestrato. Gli utenti possono osservare la perdita decrescente per assicurarsi che il modello stia migliorando. Inoltre, la perdita di convalida può aiutare a identificare l'overfitting. Gli utenti più avanzati possono visualizzare grafici e istogrammi per comprendere i pesi e le distorsioni del modello. Il relatore dimostra come verificare l'accuratezza complessiva del modello sul set di dati di test e come valutare le prestazioni del modello su immagini campione. Il modello ha margini di miglioramento e gli utenti possono continuare con l'eliminazione e l'ottimizzazione del modello per migliorare ulteriormente la precisione.
 

Webinar NVAITC: distribuzione di modelli con TensorRT



Webinar NVAITC: distribuzione di modelli con TensorRT

In questa sezione del webinar NVAITC, l'architetto di soluzioni Nikki Loppie presenta TensorRT, il kit di sviluppo software di NVIDIA per l'inferenza di deep learning ad alte prestazioni. TensorRT fornisce un ottimizzatore di inferenza e un runtime per inferenza a bassa latenza e throughput elevato su una vasta gamma di piattaforme, dai dispositivi embedded ai data center. Loppie spiega le cinque tecnologie utilizzate da TensorRT per ottimizzare le prestazioni di inferenza, tra cui la fusione del kernel e la calibrazione di precisione. Gli sviluppatori possono utilizzare le API Python e C++ di TensorRT per incorporare queste ottimizzazioni nelle proprie applicazioni e le librerie di convertitori come trtorch possono essere utilizzate per ottimizzare i modelli PyTorch per l'inferenza. Loppie dimostra come salvare i modelli ottimizzati TensorRT utilizzando la libreria trtorch e confronta i modelli ottimizzati rispetto ai modelli non ottimizzati per la classificazione delle immagini, mostrando accelerazioni significative con precisione dimezzata.

  • 00:00:00 In questa sezione del webinar, l'architetto delle soluzioni Nikki Loppie discute l'importanza dell'efficienza nell'inferenza e la necessità di portabilità della piattaforma. Presenta TensorRT, un kit di sviluppo software di NVIDIA per l'inferenza di deep learning ad alte prestazioni che affronta queste due sfide. TensorRT include un ottimizzatore di inferenza e un runtime per inferenza a bassa latenza e throughput elevato su un'ampia gamma di piattaforme, dai dispositivi embedded ai data center. È inoltre compatibile con tutti i principali framework di deep learning. Loppie spiega quindi le cinque tecnologie implementate da TensorRT per ottimizzare le prestazioni di inferenza, tra cui la fusione del kernel, la calibrazione di precisione e l'ottimizzazione automatica del kernel.

  • 00:05:00 In questa sezione, il webinar introduce le capacità di TensorRT per ottimizzare i tempi di esecuzione del kernel, ridurre il footprint di memoria e supportare l'inferenza parallela utilizzando l'esecuzione multi-stream. Gli sviluppatori possono utilizzare le API Python e C++ di TensorRT per incorporare queste ottimizzazioni nelle proprie applicazioni. Il webinar spiega anche come utilizzare librerie di convertitori come tr torch per ottimizzare un modello PyTorch per l'inferenza. I passaggi prevedono il salvataggio del modello, il caricamento, l'inizializzazione di un modello ResNet, la compilazione utilizzando TorchScript e infine la conversione nel formato TensorRT. Il modello ottimizzato può quindi essere distribuito sulla piattaforma di destinazione.

  • 00:10:00 In questa sezione del webinar, il relatore mostra come salvare i modelli ottimizzati TensorRT per un uso successivo o per la distribuzione su altre piattaforme utilizzando la libreria trtorch. Il relatore utilizza un esempio di classificazione delle immagini con i modelli ResNet-18 e ResNet-50 in esecuzione sul set di dati ImageNet. I modelli ottimizzati per trtorch mostrano accelerazioni significative con precisione dimezzata rispetto ai modelli non ottimizzati, con un fattore di accelerazione di 5,5x per ResNet-18 e 6,4x per ResNet-50. Il relatore sottolinea inoltre l'importanza del benchmarking imparziale e fornisce istruzioni su come iniziare con trtorch.
Motivazione: