Facendo clic su "Accetta tutti i cookie", l'utente accetta la memorizzazione dei cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzarne l'utilizzo e contribuire alle nostre iniziative di marketing. Per saperne di più
Impostazioni dei cookie
Facendo clic su "Accetta tutti i cookie", l'utente accetta la memorizzazione dei cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzarne l'utilizzo e contribuire alle nostre iniziative di marketing. Per saperne di più
Scoprite come esportare i modelli Ultralytics YOLO utilizzando l'integrazione TensorRT per ottenere prestazioni AI più rapide ed efficienti sulle GPU NVIDIA per le applicazioni in tempo reale.
Si pensi a un'auto a guida autonoma che si muove in una strada trafficata con pochi millisecondi per rilevare un pedone che scende dal marciapiede. Allo stesso tempo, potrebbe dover riconoscere un segnale di stop parzialmente nascosto da un albero o reagire rapidamente a un veicolo vicino che invade la sua corsia. In queste situazioni, la velocità e le risposte in tempo reale sono fondamentali.
È qui che l'intelligenza artificiale (AI), in particolare la computer vision, una branca dell'AI che aiuta le macchine a interpretare i dati visivi, svolge un ruolo fondamentale. Affinché le soluzioni di computer vision funzionino in modo affidabile negli ambienti reali, spesso devono elaborare rapidamente le informazioni, gestire più attività contemporaneamente e utilizzare la memoria in modo efficiente.
Un modo per ottenere questo risultato è l'accelerazione hardware, che utilizza dispositivi specializzati come le unità di elaborazione grafica (GPU) per eseguire i modelli più velocemente. Le GPU NVIDIA sono particolarmente note per questo tipo di operazioni, grazie alla loro capacità di offrire una bassa latenza e un elevato throughput.
Tuttavia, l'esecuzione di un modello su una GPU così com'è non sempre garantisce prestazioni ottimali. I modelli di intelligenza artificiale richiedono in genere un'ottimizzazione per sfruttare appieno le capacità dei dispositivi hardware. Per ottenere le massime prestazioni con un hardware specifico, è necessario compilare il modello in modo che utilizzi l'insieme di istruzioni specifiche dell'hardware.
Ad esempio, TensorRT è un formato di esportazione e una libreria di ottimizzazione sviluppata da NVIDIA per migliorare le prestazioni su macchine di fascia alta. Utilizza tecniche avanzate per ridurre in modo significativo il tempo di inferenza, pur mantenendo la precisione.
Figura 1. NVIDIA TensorRT consente di eseguire i modelli in modo ottimale su vari dispositivi NVIDIA.
In questo articolo esploreremo l'integrazione di TensorRT supportata da Ultralytics e vedremo come esportare il modello YOLO11 per una distribuzione più rapida ed efficiente su hardware NVIDIA. Iniziamo!
Una panoramica di TensorRT
TensorRT è un toolkit sviluppato da NVIDIA per aiutare i modelli di intelligenza artificiale a girare in modo più rapido ed efficiente sulle GPU NVIDIA. È stato progettato per le applicazioni del mondo reale in cui la velocità e le prestazioni sono davvero importanti, come le auto a guida autonoma e il controllo di qualità nel settore manifatturiero e farmaceutico.
TensorRT include strumenti come compilatori e ottimizzatori di modelli che possono lavorare dietro le quinte per assicurarsi che i modelli vengano eseguiti con una bassa latenza e possano gestire un throughput più elevato.
L'integrazione di TensorRT supportata da Ultralytics funziona ottimizzando il modello YOLO per un'esecuzione più efficiente sulle GPU utilizzando metodi come la riduzione della precisione. Ciò si riferisce all'uso di formati a bit più bassi, come quelli a virgola mobile a 16 bit (FP16) o interi a 8 bit (INT8), per rappresentare i dati del modello, il che riduce l'uso della memoria e accelera il calcolo con un impatto minimo sulla precisione.
Inoltre, gli strati di rete neurale compatibili vengono fusi in modelli TensorRT ottimizzati per ridurre l'uso della memoria, con il risultato di un'inferenza più veloce ed efficiente.
Figura 2. Uno sguardo alla tecnica di fusione dei livelli di TensorRT.
Caratteristiche principali del formato di esportazione di TensorRT
Prima di discutere come esportare YOLO11 utilizzando l'integrazione con TensorRT, diamo un'occhiata ad alcune caratteristiche chiave del formato del modello TensorRT:
Facile integrazione con i framework: TensorRT supporta l'integrazione diretta con i framework AI più diffusi, come PyTorch, Hugging Face e ONNX, offrendo prestazioni fino a 6 volte superiori. Supporta anche MATLAB, consentendo lo sviluppo di motori di IA ad alta velocità su piattaforme come Jetson, NVIDIA DRIVE e data center.
Distribuzione scalabile con Triton: I modelli ottimizzati nel formato TensorRT possono essere distribuiti su scala utilizzando NVIDIA Triton Inference Server, che migliora l'efficienza grazie a funzionalità come il batching degli input, l'esecuzione concorrente dei modelli, il supporto di ensemble di modelli e lo streaming audio/video in tempo reale.
Flessibile su tutti i dispositivi: Dai piccoli dispositivi edge ai potenti server, TensorRT funziona in tutto l'ecosistema NVIDIA, supportando strumenti come DeepStream per i video, Riva per l'IA vocale e altri per la cybersecurity, le raccomandazioni e altro ancora.
Come funziona l'integrazione di TensorRT?
Esportare modelli Ultralytics YOLO come Ultralytics YOLO11 nel formato dei modelli TensorRT è facile. Vediamo i passaggi necessari.
Per iniziare, è possibile installare il pacchetto Ultralytics Python utilizzando un gestore di pacchetti come "pip". Per farlo, basta eseguire il comando "pip install ultralytics" nel prompt dei comandi o nel terminale.
Dopo aver installato con successo il pacchetto Ultralytics Python, è possibile addestrare, testare, mettere a punto, esportare e distribuire modelli per varie attività di visione artificiale, come il rilevamento di oggetti, la classificazione e la segmentazione di istanze. Se durante l'installazione del pacchetto si riscontrano delle difficoltà, è possibile consultare la guida Problemi comuni per trovare soluzioni e suggerimenti.
Per il passo successivo, è necessario un dispositivo NVIDIA. Utilizzare lo snippet di codice qui sotto per caricare ed esportare YOLOv11 nel formato del modello TensorRT. Carica una variante nano pre-addestrata del modello YOLO11 (yolo11n.pt) e la esporta come file del motore TensorRT (yolo11n.engine), rendendola pronta per la distribuzione sui dispositivi NVIDIA.
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="engine")
Dopo aver convertito il modello in formato TensorRT, è possibile distribuirlo per varie applicazioni.
L'esempio seguente mostra come caricare il modello YOLO11 esportato (yolo11n.engine) ed eseguire un'inferenza con esso. L'inferenza consiste nell'utilizzare il modello addestrato per fare previsioni su nuovi dati. In questo caso, utilizzeremo l'immagine di un cane per testare il modello.
Quando si esegue questo codice, nella cartella runs/detect/predict viene salvata la seguente immagine di output.
Figura 3. Il risultato dell'esecuzione di un'inferenza utilizzando il modello YOLO11 esportato in formato TensorRT.
Quando sfruttare l'integrazione di TensorRT
Il pacchetto Ultralytics Python supporta diverse integrazioni che consentono di esportare i modelli YOLO in diversi formati, come TorchScript, CoreML, ONNX e TensorRT. Quindi, quando si dovrebbe scegliere di utilizzare l'integrazione con TensorRT?
Ecco alcuni fattori che distinguono il formato del modello TensorRT da altre opzioni di integrazione dell'esportazione:
Dimensioni del modello ridotte: L'esportazione di un modello YOLO nel formato TensorRT con precisione INT8 può ridurre significativamente le dimensioni del modello. La quantizzazione da FP32 a INT8 può portare a una riduzione di 4 volte delle dimensioni del modello, il che consente tempi di download più rapidi, requisiti di archiviazione inferiori e un'impronta di memoria ridotta durante l'implementazione.
Riduzione del consumo energetico: La quantizzazione INT8 non solo riduce le dimensioni del modello, ma riduce anche il consumo di energia. Le operazioni a precisione ridotta per i modelli YOLO esportati in INT8 possono consumare meno energia rispetto ai modelli FP32, il che è particolarmente vantaggioso per i dispositivi alimentati a batteria come droni, smartphone o dispositivi edge.
Prestazioni più veloci: La combinazione dell'architettura efficiente di YOLO con l'ottimizzazione INT8 di TensorRT può migliorare la velocità di inferenza.
Applicazioni di YOLO11 e del formato del modello TensorRT
I modelli Ultralytics YOLO esportati nel formato TensorRT possono essere utilizzati in un'ampia gamma di scenari reali. Questi modelli ottimizzati sono particolarmente utili quando le prestazioni dell'intelligenza artificiale sono rapide ed efficienti. Vediamo alcuni esempi interessanti di come possono essere utilizzati.
Casse intelligenti nei negozi al dettaglio
Un'ampia gamma di attività nei negozi al dettaglio, come la scansione dei codici a barre, la pesatura dei prodotti o l'imballaggio degli articoli, sono ancora gestite manualmente dal personale. Tuttavia, affidarsi esclusivamente ai dipendenti può rallentare le operazioni e causare la frustrazione dei clienti, soprattutto alle casse. Le lunghe file sono scomode sia per gli acquirenti che per i proprietari dei negozi. I banchi self checkout intelligenti sono un'ottima soluzione a questo problema.
Questi sportelli utilizzano la computer vision e le GPU per accelerare il processo, contribuendo a ridurre i tempi di attesa. La computer vision consente a questi sistemi di vedere e comprendere l'ambiente circostante attraverso operazioni come il rilevamento degli oggetti. Modelli avanzati come YOLO11, se ottimizzati con strumenti come TensorRT, possono essere eseguiti molto più velocemente su dispositivi GPU.
Questi modelli esportati sono adatti alle configurazioni di smart retail che utilizzano dispositivi hardware compatti ma potenti come NVIDIA Jetson Nano, progettato specificamente per le applicazioni di intelligenza artificiale.
Rilevamento automatico dei difetti nella produzione
Un modello di computer vision come YOLO11 può essere addestrato su misura per rilevare i prodotti difettosi nell'industria manifatturiera. Una volta addestrato, il modello può essere esportato nel formato TensorRT per essere utilizzato in strutture dotate di sistemi di intelligenza artificiale ad alte prestazioni.
Mentre i prodotti si muovono lungo i nastri trasportatori, le telecamere catturano le immagini e il modello YOLO11, eseguito in formato TensorRT, le analizza in tempo reale per individuare i difetti. Questa configurazione consente alle aziende di individuare i problemi in modo rapido e preciso, riducendo gli errori e migliorando l'efficienza.
Allo stesso modo, industrie come quella farmaceutica utilizzano questi tipi di sistemi per identificare i difetti nelle confezioni mediche. In effetti, il mercato globale dei sistemi intelligenti di rilevamento dei difetti è destinato a crescere fino a 5 miliardi di dollari entro il 2026.
Figura 5. Utilizzo di YOLO per rilevare i difetti nell'industria farmaceutica.
Considerazioni da tenere presenti durante l'utilizzo di TensorRT
Sebbene l'integrazione di TensorRT offra molti vantaggi, come una maggiore velocità di inferenza e una latenza ridotta, vi sono alcune limitazioni da tenere presenti:
Leggero calo della precisione: Quando si esporta il modello in formato TensorRT, il modello esportato potrebbe non essere preciso come l'originale. Le metriche delle prestazioni come la precisione, il richiamo e la capacità del modello di rilevare gli oggetti (punteggi mAP) potrebbero diminuire leggermente. Questo problema può essere attenuato utilizzando un set di dati rappresentativo durante la quantizzazione.
Aumento della complessità del debug: Le ottimizzazioni effettuate da TensorRT possono rendere più difficile rintracciare gli errori o comprendere i comportamenti inattesi, soprattutto quando si confrontano i risultati con il modello originale.
Sensibilità alle dimensioni dei lotti: I guadagni di prestazioni di TensorRT sono più pronunciati con lotti di dimensioni maggiori. Per le applicazioni che elaborano singole immagini o piccoli lotti, i miglioramenti delle prestazioni potrebbero essere meno significativi.
Punti di forza
L'esportazione dei modelli Ultralytics YOLO nel formato TensorRT li fa funzionare in modo significativamente più veloce ed efficiente, rendendoli ideali per attività in tempo reale come il rilevamento di difetti nelle fabbriche, l'alimentazione di sistemi di cassa intelligenti o il monitoraggio di aree urbane trafficate.
Questa ottimizzazione aiuta i modelli a funzionare meglio sulle GPU NVIDIA, accelerando le previsioni e riducendo l'uso di memoria e di energia. Sebbene vi siano alcune limitazioni, l'aumento delle prestazioni rende l'integrazione di TensorRT un'ottima scelta per chiunque costruisca sistemi di computer vision ad alta velocità su hardware NVIDIA.