Controllo verde
Link copiato negli appunti

Utilizzare l'integrazione ONNX per esportare i modelli Ultralytics YOLO

Scopri come esportare i modelli Ultralytics YOLO , come Ultralytics YOLO11, utilizzando l'integrazione ONNX per una distribuzione multipiattaforma su diversi hardware.

Quando le soluzioni di intelligenza artificiale hanno iniziato a farsi notare, la maggior parte dei modelli veniva distribuita su potenti server in ambienti controllati. Tuttavia, con l'avanzare della tecnologia, l'implementazione si è estesa ben oltre il data center.

Oggi i modelli di intelligenza artificiale vengono eseguiti su qualsiasi dispositivo, dai server cloud ai desktop, fino agli smartphone e ai dispositivi edge. Questo cambiamento favorisce un'elaborazione più rapida, funzionalità offline e sistemi più intelligenti che operano più vicino al luogo in cui vengono generati i dati.

Un'area in cui questo è particolarmente evidente è la computer vision, una branca dell'IA che consente alle macchine di interpretare i dati visivi. Viene utilizzata per applicazioni come il riconoscimento facciale, la guida autonoma e l'analisi video in tempo reale. Con la crescita di questi casi d'uso, cresce anche l'esigenza di modelli che possano funzionare senza problemi su hardware e piattaforme diverse.

Ma distribuire i modelli di computer vision su una serie di obiettivi di implementazione non è sempre semplice. I dispositivi differiscono in termini di hardware, sistemi operativi e framework supportati, rendendo la flessibilità e la compatibilità essenziali.

Ecco perché avere la possibilità di esportare modelli di computer vision come Ultralytics YOLO11 in diversi formati è fondamentale. Ad esempio, l'integrazione ONNX (Open Neural Network Exchange) supportata da Ultralytics offre un modo pratico per colmare il divario tra la formazione e la distribuzione. ONNX è un formato aperto che rende i modelli indipendenti dal framework e pronti per l'implementazione su tutte le piattaforme.

Figura 1. ONNX ti aiuta a prendere un modello addestrato in un framework e ad eseguirlo in un altro in modo semplice.

In questo articolo daremo un'occhiata più da vicino all'integrazioneONNX supportata da Ultralytics ed esploreremo come esportare il tuo modello YOLO11 per una distribuzione flessibile e multipiattaforma.

Cosa sono ONNX e ONNX Runtime?

L'Open Neural Network Exchange è un progetto open-source che definisce un formato standard per i modelli di apprendimento automatico. Originariamente sviluppato da Microsoft e Facebook, consente agli sviluppatori di addestrare un modello in un framework, come PyTorch, ed eseguirlo in un altro, come TensorFlow. Questo rende lo sviluppo dell'intelligenza artificiale più flessibile, collaborativo e accessibile, soprattutto in campi come la computer vision.

ONNX fornisce un insieme comune di operatori e un formato di file unificato, rendendo più semplice lo spostamento dei modelli tra diversi strumenti, framework, runtime e compilatori. Normalmente, un modello addestrato in un framework non è facilmente compatibile con un altro - ma con ONNX puoi esportare il tuo modello una sola volta e distribuirlo praticamente ovunque: su CPU (Central Processing Unit), GPU (Graphics Processing Unit), dispositivi mobili o hardware edge.

Inoltre, ONNX Runtime è un motore di inferenza ad alte prestazioni sviluppato appositamente per eseguire modelli in formato ONNX . È stato progettato per far funzionare i modelli ONNX in modo più veloce ed efficiente su un'ampia gamma di piattaforme, tra cui server, dispositivi mobili e hardware edge. ONNX Runtime è compatibile con framework popolari come PyTorch, TensorFlow, TensorFlow Lite e scikit-learn, il che rende facile l'integrazione in diversi flussi di lavoro e la distribuzione dei modelli ovunque siano necessari.

Figura 2. ONNX e ONNX Runtime consentono una distribuzione flessibile dei modelli multipiattaforma.

Caratteristiche principali di ONNX 

Prima di parlare di come esportare YOLO11 in formato ONNX , vediamo alcune caratteristiche principali del formato ONNX . 

Se stai passando da uno strumento all'altro, se stai distribuendo su dispositivi diversi o se stai aggiornando i sistemi, ONNX ti aiuta a far funzionare tutto senza problemi. Ecco cosa rende unico il formato del modello ONNX :

  • Un formato standard: ONNX utilizza un modo comune per descrivere il modo in cui i modelli sono costruiti, come i livelli e le operazioni (considerali come blocchi di costruzione). Quando un modello viene convertito in ONNX, segue questo standard in modo che qualsiasi sistema che supporti ONNX possa comprenderlo ed eseguirlo.
  • Compatibilità con le versioni precedenti: Anche se ONNX continua a migliorare, garantisce che i modelli più vecchi funzionino ancora con le versioni più recenti. Ciò significa che non dovrai riqualificare o ricostruire i tuoi modelli ogni volta che ONNX viene aggiornato.
  • Progettazione di modelli basati su grafi: I modelli ONNX sono strutturati come grafi di calcolo, dove ogni nodo rappresenta un'operazione (come un livello o una funzione matematica) e i bordi indicano il flusso di dati. Questa struttura a grafo facilita l'integrazione con vari sistemi che utilizzano strutture di grafi computazionali simili.
  • Strumenti di facile utilizzo per gli sviluppatori: È dotato di un'ampia gamma di strumenti che ti aiutano a convertire, convalidare e ottimizzare i tuoi modelli. Questi strumenti semplificano il processo di spostamento dei modelli tra diversi framework e possono accelerare la distribuzione, soprattutto per le applicazioni di computer vision.

Una panoramica dell'integrazione di ONNX

L'esportazione di modelliUltralytics YOLO come Ultralytics YOLO11 in formato ONNX è semplice e può essere effettuata in pochi passaggi. 

Per iniziare, installa il pacchettoUltralytics Python utilizzando un gestore di pacchetti come "pip". Per iniziare, puoi eseguire il comando "pip install ultralytics" nel prompt dei comandi o nel terminale.

Con il pacchetto Ultralytics puoi facilmente addestrare, testare, mettere a punto, esportare e distribuire modelli per diverse attività di computer vision, rendendo l'intero processo più veloce ed efficiente. Durante l'installazione, se dovessi incontrare qualche difficoltà, puoi consultare la guida ai problemi comuni per trovare soluzioni e suggerimenti.

Una volta installato il pacchetto Ultralytics , puoi caricare ed esportare il modello YOLO11 in formato ONNX utilizzando il codice seguente. Questo esempio carica un modello YOLO11 pre-addestrato (yolo11n.pt) e lo esporta come file ONNX (yolo11nonnx), rendendolo pronto per la distribuzione su diverse piattaforme e dispositivi.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

model.export(format="onnx") 

Dopo aver convertito il tuo modello in formato ONNX , puoi distribuirlo su diverse piattaforme. 

L'esempio seguente mostra come caricare il modello YOLO11 esportato (yolo11nonnx) ed eseguire un'inferenza con esso. Fare inferenza significa semplicemente utilizzare il modello addestrato per fare previsioni su nuovi dati. In questo caso, utilizzeremo l'URL di un'immagine di un autobus per testare il modello.

onnx_model = YOLO("yolo11n.onnx")

results = onnx_model("https://ultralytics.com/images/bus.jpg",save=True)

Quando esegui questo codice, nella cartella runs/detect/predict verrà salvata la seguente immagine di output.

Figura 3. Esecuzione di un'inferenza utilizzando il modello YOLO11 esportato su un'immagine.

Quando dovresti scegliere l'integrazione ONNX ?

Il pacchetto Ultralytics Python supporta l'esportazione dei modelli in diversi formati, tra cui TorchScript, CoreML, TensorRT e ONNX. Allora, perché scegliere ONNX?

Ciò che distingue ONNX è che si tratta di un formato indipendente dal framework. Mentre molti altri formati di esportazione sono legati a strumenti o ambienti specifici, ONNX utilizza un formato standardizzato e un insieme condiviso di operatori. Questo lo rende altamente portatile, compatibile con l'hardware e ideale per la distribuzione multipiattaforma, sia che tu stia lavorando con server cloud, app mobili o dispositivi edge. 

Ecco alcuni motivi per cui l'integrazione ONNX potrebbe essere la scelta ideale per i tuoi progetti YOLO11 :

  • Distribuzione portatile: Una volta esportato in ONNX, il tuo modello YOLO11 può essere distribuito su diverse piattaforme senza dover modificare il codice o riqualificarlo.
  • Supporto a livello industriale: ONNX è supportato dalle principali aziende e framework di AI, il che lo rende un formato affidabile e ampiamente accettato. Garantisce una compatibilità a lungo termine, proprio come i PDF che funzionano su tutti i dispositivi.
  • Sviluppo a prova di futuro: L'uso di ONNX aiuta a proteggere i tuoi investimenti nei modelli. Con l'evoluzione degli strumenti, ONNX mantiene i tuoi modelli attuali e utilizzabili, anche in ambienti nuovi o diversi.
  • Nessun vincolo con il fornitore: Alcuni strumenti ti obbligano a utilizzare solo il loro sistema, limitando così le possibilità del tuo modello. ONNX evita questo problema permettendoti di scegliere la piattaforma più adatta alle tue esigenze, senza essere vincolato a un'unica configurazione.

Applicazioni di YOLO11 e del formato del modello ONNX

Esploriamo quindi alcune applicazioni reali in cui YOLO11 può essere utilizzato con l'aiuto dell'integrazione ONNX .

Tracciamento dell'inventario nei magazzini con YOLO11

Nei magazzini affollati è difficile tenere sempre d'occhio tutti i prodotti e le confezioni. I sistemi di visione computerizzata possono aiutare i lavoratori a trovare i prodotti sugli scaffali e a ottenere informazioni come il numero di prodotti, il tipo, ecc. Questi sistemi possono aiutare le aziende a gestire automaticamente il loro vasto inventario e a far risparmiare molto tempo ai magazzinieri.

In particolare, nei magazzini intelligenti, i modelli YOLO11 esportati in ONNX possono essere utilizzati per identificare e contare gli articoli in tempo reale utilizzando telecamere e dispositivi edge. Il modello esportato può aiutare a scansionare scaffali o pallet per rilevare i livelli di scorte, gli articoli mancanti o i punti vuoti. Poiché l'esportazione in ONNX rende il modello leggero ed efficiente, può essere eseguito direttamente su piccoli dispositivi edge, come le telecamere intelligenti, eliminando la necessità di server costosi o di un accesso costante al cloud.

Figura 4. Un esempio di utilizzo di YOLO11 per rilevare e contare i pacchetti.

Gestione dei rifiuti ospedalieri con YOLO11

Gli ospedali di tutto il mondo producono ogni giorno grandi quantità di rifiuti, dai guanti e le siringhe usate alle attrezzature utilizzate durante gli interventi chirurgici (come gli strumenti chirurgici monouso o contaminati come forbici e bisturi). In effetti, le ricerche dimostrano che gli ospedali producono circa 5 milioni di tonnellate di rifiuti ogni anno, pari a 29 libbre di rifiuti per letto al giorno. 

Smistare correttamente questi rifiuti è essenziale per l'igiene, la sicurezza e il rispetto delle normative. Con i modelli YOLO11 esportati in formato ONNX , gli ospedali possono automatizzare e monitorare lo smaltimento dei rifiuti in tempo reale.

Ad esempio, le telecamere posizionate vicino ai cestini dei rifiuti in aree come le sale operatorie o i corridoi possono monitorare gli oggetti mentre vengono gettati. Un modello YOLO11 personalizzato, addestrato a riconoscere i diversi tipi di rifiuti medici, può analizzare i filmati e identificare ciò che viene gettato via. Se un oggetto finisce nel contenitore sbagliato, come una siringa usata nella spazzatura normale, il sistema può essere impostato per avvisare immediatamente il personale con una luce o un suono, aiutando a prevenire la contaminazione e a garantire la conformità.

Figura 5. Utilizzo di YOLO11 per il rilevamento di strumenti medici.

Monitoraggio delle colture YOLO11

Sapere qual è il momento giusto per raccogliere le colture può avere un grande impatto sia sulla qualità dei prodotti che sulla produttività complessiva di un'azienda agricola. Tradizionalmente, gli agricoltori si affidano all'esperienza e alle ispezioni manuali, ma con i recenti progressi della tecnologia le cose stanno cambiando.

Ora, grazie alle innovazioni di computer vision come YOLO11, esportate in formato ONNX , gli agricoltori possono portare l'automazione e la precisione nei campi. Utilizzando droni o telecamere montate su trattori o pali, gli agricoltori possono catturare immagini delle loro colture (come pomodori, mele o grano). YOLO11 può essere utilizzato per rilevare indicatori chiave come il colore, le dimensioni e la distribuzione delle colture. Sulla base di queste informazioni, gli agricoltori possono stabilire se le colture sono pronte per il raccolto, se stanno ancora maturando o se hanno già superato il loro picco.

Figura 6. YOLO11 può essere utilizzato per individuare le colture nelle riprese aeree dei droni. 

Limitazioni ONNX da considerare

Sebbene ONNX offra numerosi vantaggi, come la portabilità, la compatibilità multipiattaforma e l'interoperabilità dei framework, ci sono alcune limitazioni da tenere a mente.

  • Dimensioni del modello: La conversione dei modelli in formato ONNX può talvolta comportare file di dimensioni maggiori rispetto ai formati originali. Tecniche come la quantizzazione e il pruning possono aiutare a mitigare questo problema riducendo le dimensioni del modello senza impattare significativamente sulle prestazioni.
  • Compatibilità del runtime: Sebbene ONNX Runtime sia stato progettato per la compatibilità multipiattaforma, le prestazioni e il supporto possono variare a seconda dell'hardware e dei sistemi operativi. 
  • Problemi di debug: Il debug dei modelli ONNX può essere più complesso rispetto ai framework nativi come PyTorch o TensorFlow. I messaggi di errore possono essere meno descrittivi, rendendo più difficile individuare i problemi. Tuttavia, strumenti come Netron per la visualizzazione dei modelli e le funzionalità di registrazione di ONNX Runtime possono aiutare nella risoluzione dei problemi.

Punti di forza

Esportando Ultralytics YOLO11 in ONNX è facile prendere un modello di visione computerizzata addestrato e distribuirlo praticamente ovunque, su un computer portatile, un dispositivo mobile o persino una fotocamera compatta. Grazie all'integrazione con ONNX , non sei vincolato a un singolo framework o piattaforma, e hai la flessibilità di eseguire il tuo modello nell'ambiente più adatto alla tua applicazione. 

In questo modo il passaggio dalla formazione all'utilizzo reale è più rapido ed efficiente. Che si tratti di tracciare l'inventario in un magazzino o di assicurarsi che i rifiuti ospedalieri vengano smaltiti correttamente, questa configurazione aiuta i sistemi a funzionare meglio, riduce gli errori e fa risparmiare tempo prezioso.

Vuoi saperne di più sulla computer vision e sull'IA? Esplora il nostro repository GitHub, entra in contatto con la nostra comunità e scopri le nostre opzioni di licenza per avviare il tuo progetto di computer vision. Se stai esplorando innovazioni come l'IA nella produzione e la computer vision nell' industria automobilistica, visita le nostre pagine dedicate alle soluzioni per saperne di più. 

Logo di LinkedInLogo di TwitterLogo di FacebookSimbolo di copia-link

Leggi tutto in questa categoria

Costruiamo insieme il futuro
di AI!

Inizia il tuo viaggio nel futuro dell'apprendimento automatico