Vai al contenuto

Capire le opzioni di distribuzione di YOLOv8

Introduzione

Hai fatto molta strada nel tuo viaggio con YOLOv8. Hai raccolto diligentemente i dati, li hai annotati meticolosamente e hai dedicato molte ore all'addestramento e alla valutazione rigorosa del tuo modello personalizzato di YOLOv8 . Ora è arrivato il momento di mettere in pratica il tuo modello per un'applicazione specifica o per un progetto. Ora è arrivato il momento di mettere il tuo modello al servizio della tua specifica applicazione, del tuo caso d'uso o del tuo progetto. Ma c'è una decisione cruciale che ti aspetta: come esportare e distribuire il tuo modello in modo efficace.

Questa guida ti illustra le opzioni di distribuzione di YOLOv8e i fattori essenziali da considerare per scegliere l'opzione giusta per il tuo progetto.

Come selezionare la giusta opzione di distribuzione per il tuo modello YOLOv8

Quando è il momento di distribuire il tuo modello YOLOv8 , la scelta di un formato di esportazione adatto è molto importante. Come indicato nella documentazione diUltralytics YOLOv8 Modes, la funzione model.export() permette di convertire il modello addestrato in una varietà di formati adatti a diversi ambienti e requisiti di performance.

Il formato ideale dipende dal contesto operativo in cui il tuo modello è destinato, bilanciando velocità, vincoli hardware e facilità di integrazione. Nella sezione seguente analizzeremo più da vicino ogni opzione di esportazione e capiremo quando sceglierla.

YOLOv8Opzioni di distribuzione

Vediamo le diverse opzioni di distribuzione di YOLOv8 . Per una descrizione dettagliata del processo di esportazione, visita la pagina di documentazione diUltralytics sull'esportazione.

PyTorch

PyTorch è una libreria open-source per l'apprendimento automatico ampiamente utilizzata per applicazioni di deep learning e intelligenza artificiale. Offre un elevato livello di flessibilità e velocità, che l'ha resa una delle preferite da ricercatori e sviluppatori.

  • Benchmark delle prestazioni: PyTorch è noto per la sua facilità d'uso e la sua flessibilità, il che può comportare un leggero compromesso nelle prestazioni grezze rispetto ad altri framework più specializzati e ottimizzati.

  • Compatibilità e integrazione: Offre un'eccellente compatibilità con diverse librerie di data science e machine learning in Python.

  • Supporto ed ecosistema della comunità: Una delle comunità più vivaci, con ampie risorse per l'apprendimento e la risoluzione dei problemi.

  • Casi di studio: Usati comunemente nei prototipi di ricerca, molti articoli accademici fanno riferimento a modelli utilizzati in PyTorch.

  • Manutenzione e aggiornamenti: Aggiornamenti regolari con sviluppo attivo e supporto per nuove funzionalità.

  • Considerazioni sulla sicurezza: Le patch per i problemi di sicurezza sono regolari, ma la sicurezza dipende in gran parte dall'ambiente in cui viene distribuito.

  • Accelerazione hardware: Supporta CUDA per l'accelerazione GPU, essenziale per velocizzare la formazione e l'inferenza dei modelli.

TorchScript

TorchScript estende le funzionalità di PyTorchconsentendo l'esportazione di modelli da eseguire in un ambiente runtime C++. Questo lo rende adatto agli ambienti di produzione in cui Python non è disponibile.

  • Benchmark delle prestazioni: Può offrire prestazioni migliori rispetto al sito nativo PyTorch, soprattutto negli ambienti di produzione.

  • Compatibilità e integrazione: Progettato per passare senza problemi dagli ambienti di produzione PyTorch a quelli C++, anche se alcune funzioni avanzate potrebbero non essere perfettamente trasferite.

  • Supporto ed ecosistema della comunità: Beneficia dell'ampia comunità di PyTorchma ha una gamma più ristretta di sviluppatori specializzati.

  • Casi di studio: Ampiamente utilizzato in contesti industriali in cui l'overhead delle prestazioni di Pythonrappresenta un collo di bottiglia.

  • Manutenzione e aggiornamenti: Mantenuto insieme a PyTorch con aggiornamenti costanti.

  • Considerazioni sulla sicurezza: Offre una maggiore sicurezza consentendo l'esecuzione di modelli in ambienti privi di installazioni complete di Python .

  • Accelerazione hardware: Eredita il supporto CUDA di PyTorch, garantendo un utilizzo efficiente della GPU.

ONNX

L'Open Neural Network Exchange (ONNX) è un formato che consente l'interoperabilità dei modelli tra diversi framework, il che può essere fondamentale per la distribuzione su diverse piattaforme.

  • Benchmark delle prestazioni: i modelli di ONNX possono avere prestazioni variabili a seconda del runtime specifico su cui vengono implementati.

  • Compatibilità e integrazione: Elevata interoperabilità tra diverse piattaforme e hardware grazie alla sua natura di framework-agnostic.

  • Supporto ed ecosistema della comunità: Supportato da molte organizzazioni, il che porta a un ampio ecosistema e a una varietà di strumenti per l'ottimizzazione.

  • Casi di studio: Viene spesso utilizzata per spostare i modelli tra diversi framework di apprendimento automatico, dimostrando la sua flessibilità.

  • Manutenzione e aggiornamenti: Essendo uno standard aperto, ONNX viene aggiornato regolarmente per supportare nuove operazioni e modelli.

  • Considerazioni sulla sicurezza: Come per ogni strumento multipiattaforma, è essenziale garantire pratiche sicure nella pipeline di conversione e distribuzione.

  • Accelerazione hardware: Con ONNX Runtime, i modelli possono sfruttare diverse ottimizzazioni hardware.

OpenVINO

OpenVINO è un toolkit di Intel progettato per facilitare l'implementazione di modelli di deep learning sull'hardware Intel, migliorando le prestazioni e la velocità.

  • Benchmark delle prestazioni: Ottimizzato in modo specifico per le CPU, le GPU e le VPU Intel, offre un significativo aumento delle prestazioni su hardware compatibile.

  • Compatibilità e integrazione: Funziona al meglio all'interno dell'ecosistema Intel, ma supporta anche una serie di altre piattaforme.

  • Supporto ed ecosistema della comunità: Sostenuto da Intel, con una solida base di utenti soprattutto nel settore della computer vision.

  • Casi di studio: Spesso viene utilizzato in scenari IoT e di edge computing in cui l'hardware Intel è prevalente.

  • Manutenzione e aggiornamenti: Intel aggiorna regolarmente OpenVINO per supportare gli ultimi modelli di deep learning e l'hardware Intel.

  • Considerazioni sulla sicurezza: Offre robuste funzioni di sicurezza adatte all'implementazione in applicazioni sensibili.

  • Accelerazione hardware: Personalizzata per l'accelerazione su hardware Intel, sfruttando set di istruzioni e caratteristiche hardware dedicate.

Per maggiori dettagli sulla distribuzione utilizzando OpenVINO, consulta la documentazione di Ultralytics Integration: Intel OpenVINO Export.

TensorRT

TensorRT è un ottimizzatore e runtime di inferenza di deep learning ad alte prestazioni di NVIDIA, ideale per le applicazioni che richiedono velocità ed efficienza.

  • Benchmark delle prestazioni: Offre prestazioni di alto livello sulle GPU NVIDIA con supporto per l'inferenza ad alta velocità.

  • Compatibilità e integrazione: È più adatto all'hardware NVIDIA, con un supporto limitato al di fuori di questo ambiente.

  • Supporto ed ecosistema della comunità: Forte rete di supporto grazie ai forum per sviluppatori e alla documentazione di NVIDIA.

  • Casi di studio: Ampiamente adottato nei settori che richiedono un'inferenza in tempo reale su dati video e immagini.

  • Manutenzione e aggiornamenti: NVIDIA mantiene TensorRT con frequenti aggiornamenti per migliorare le prestazioni e supportare nuove architetture di GPU.

  • Considerazioni sulla sicurezza: Come molti altri prodotti NVIDIA, questo sistema pone una forte enfasi sulla sicurezza, ma le caratteristiche specifiche dipendono dall'ambiente di implementazione.

  • Accelerazione hardware: Progettata in esclusiva per le GPU NVIDIA, offre una profonda ottimizzazione e accelerazione.

CoreML

CoreML è il framework di apprendimento automatico di Apple, ottimizzato per le prestazioni sui dispositivi dell'ecosistema Apple, compresi iOS, macOS, watchOS e tvOS.

  • Benchmark delle prestazioni: Ottimizzato per prestazioni on-device su hardware Apple con un utilizzo minimo della batteria.

  • Compatibilità e integrazione: In esclusiva per l'ecosistema Apple, fornisce un flusso di lavoro semplificato per le applicazioni iOS e macOS.

  • Supporto della comunità ed ecosistema: Forte supporto da parte di Apple e di una comunità di sviluppatori dedicata, con ampia documentazione e strumenti.

  • Casi di studio: Viene comunemente utilizzato nelle applicazioni che richiedono capacità di apprendimento automatico sul dispositivo sui prodotti Apple.

  • Manutenzione e aggiornamenti: Aggiornato regolarmente da Apple per supportare gli ultimi progressi dell'apprendimento automatico e l'hardware Apple.

  • Considerazioni sulla sicurezza: Beneficia dell'attenzione di Apple alla privacy degli utenti e alla sicurezza dei dati.

  • Accelerazione hardware: Sfrutta appieno il motore neurale e la GPU di Apple per accelerare le attività di apprendimento automatico.

TF SavedModel

TF SavedModel è il formato di TensorFlowper salvare e servire modelli di apprendimento automatico, particolarmente adatto ad ambienti server scalabili.

  • Benchmark delle prestazioni: Offre prestazioni scalabili in ambienti server, soprattutto se utilizzato con TensorFlow Serving.

  • Compatibilità e integrazione: Ampia compatibilità con l'ecosistema di TensorFlow, comprese le implementazioni di server cloud e aziendali.

  • Supporto della comunità ed ecosistema: Grande supporto della comunità grazie alla popolarità di TensorFlow, con una vasta gamma di strumenti per l'implementazione e l'ottimizzazione.

  • Casi di studio: Utilizzato ampiamente in ambienti di produzione per servire modelli di deep learning su scala.

  • Manutenzione e aggiornamenti: Il supporto di Google e della comunità di TensorFlow garantisce aggiornamenti regolari e nuove funzionalità.

  • Considerazioni sulla sicurezza: L'implementazione di TensorFlow Serving include solide funzioni di sicurezza per le applicazioni di livello aziendale.

  • Accelerazione hardware: Supporta diverse accelerazioni hardware attraverso i backend di TensorFlow.

TF GraphDef

TF GraphDef è un formato TensorFlow che rappresenta il modello come un grafico, utile per gli ambienti in cui è richiesto un grafico di calcolo statico.

  • Benchmark delle prestazioni: Fornisce prestazioni stabili per i grafi di calcolo statici, con particolare attenzione alla coerenza e all'affidabilità.

  • Compatibilità e integrazione: Si integra facilmente con l'infrastruttura di TensorFlow, ma è meno flessibile rispetto a SavedModel.

  • Supporto della comunità ed ecosistema: L'ecosistema di TensorFlow offre un buon supporto, con molte risorse disponibili per l'ottimizzazione dei grafi statici.

  • Casi di studio: Utile negli scenari in cui è necessario un grafico statico, come ad esempio in alcuni sistemi embedded.

  • Manutenzione e aggiornamenti: Aggiornamenti regolari insieme agli aggiornamenti principali di TensorFlow.

  • Considerazioni sulla sicurezza: Assicura un'implementazione sicura con le pratiche di sicurezza stabilite da TensorFlow.

  • Accelerazione hardware: Può utilizzare le opzioni di accelerazione hardware di TensorFlow, anche se non è così flessibile come SavedModel.

TF Lite

TF Lite è la soluzione di TensorFlowper l'apprendimento automatico su dispositivi mobili ed embedded, che fornisce una libreria leggera per l'inferenza sul dispositivo.

  • Benchmark delle prestazioni: Progettato per garantire velocità ed efficienza su dispositivi mobili ed embedded.

  • Compatibilità e integrazione: Può essere utilizzato su un'ampia gamma di dispositivi grazie alla sua leggerezza.

  • Supporto della comunità ed ecosistema: Sostenuto da Google, ha una solida comunità e un numero crescente di risorse per gli sviluppatori.

  • Casi di studio: È molto diffusa nelle applicazioni mobili che richiedono un'inferenza sul dispositivo con un ingombro minimo.

  • Manutenzione e aggiornamenti: Aggiornato regolarmente per includere le ultime funzionalità e ottimizzazioni per i dispositivi mobili.

  • Considerazioni sulla sicurezza: Fornisce un ambiente sicuro per l'esecuzione dei modelli sui dispositivi degli utenti finali.

  • Accelerazione hardware: Supporta una serie di opzioni di accelerazione hardware, tra cui GPU e DSP.

TF Bordo TPU

TF Edge TPU è progettato per un'elaborazione efficiente e ad alta velocità sull'hardware Edge TPU di Google, perfetto per i dispositivi IoT che richiedono un'elaborazione in tempo reale.

  • Benchmark delle prestazioni: Ottimizzato in modo specifico per un calcolo efficiente e ad alta velocità sull'hardware Edge TPU di Google.

  • Compatibilità e integrazione: Funziona esclusivamente con i modelli TensorFlow Lite su dispositivi Edge TPU .

  • Supporto ed ecosistema della comunità: Supporto crescente con risorse fornite da Google e da sviluppatori di terze parti.

  • Casi di studio: Utilizzata nei dispositivi IoT e nelle applicazioni che richiedono un'elaborazione in tempo reale con una bassa latenza.

  • Manutenzione e aggiornamenti: Miglioramenti continui per sfruttare le capacità delle nuove versioni hardware di Edge TPU .

  • Considerazioni sulla sicurezza: Si integra con la solida sicurezza di Google per i dispositivi IoT ed edge.

  • Accelerazione hardware: Progettato su misura per sfruttare al massimo i dispositivi Google Coral.

TF.js

TensorFlow.js (TF.js) è una libreria che porta le capacità di apprendimento automatico direttamente nel browser, offrendo un nuovo regno di possibilità per gli sviluppatori web e gli utenti. Permette di integrare i modelli di apprendimento automatico nelle applicazioni web senza la necessità di un'infrastruttura back-end.

  • Benchmark delle prestazioni: Consente l'apprendimento automatico direttamente nel browser con prestazioni ragionevoli, a seconda del dispositivo client.

  • Compatibilità e integrazione: Elevata compatibilità con le tecnologie web, che consente una facile integrazione nelle applicazioni web.

  • Supporto ed ecosistema della comunità: Supporto da parte di una comunità di sviluppatori web e Node.js, con una serie di strumenti per la distribuzione di modelli ML nei browser.

  • Casi di studio: Ideale per le applicazioni web interattive che beneficiano dell'apprendimento automatico lato client senza la necessità di un'elaborazione lato server.

  • Manutenzione e aggiornamenti: Mantenuto dal team di TensorFlow con i contributi della comunità open-source.

  • Considerazioni sulla sicurezza: Viene eseguito all'interno del contesto sicuro del browser, utilizzando il modello di sicurezza della piattaforma web.

  • Accelerazione hardware: Le prestazioni possono essere migliorate con API basate sul web che accedono all'accelerazione hardware come WebGL.

PaddlePaddle

PaddlePaddle è un framework open-source per il deep learning sviluppato da Baidu. È stato progettato per essere efficiente per i ricercatori e facile da usare per gli sviluppatori. È particolarmente popolare in Cina e offre un supporto specifico per l'elaborazione della lingua cinese.

  • Benchmark delle prestazioni: Offre prestazioni competitive con particolare attenzione alla facilità d'uso e alla scalabilità.

  • Compatibilità e integrazione: Ben integrato nell'ecosistema di Baidu, supporta un'ampia gamma di applicazioni.

  • Supporto ed ecosistema della comunità: Sebbene la comunità sia più piccola a livello globale, sta crescendo rapidamente, soprattutto in Cina.

  • Casi di studio: È comunemente utilizzato nei mercati cinesi e dagli sviluppatori che cercano alternative agli altri framework principali.

  • Manutenzione e aggiornamenti: Aggiornato regolarmente con particolare attenzione alle applicazioni e ai servizi di intelligenza artificiale in lingua cinese.

  • Considerazioni sulla sicurezza: Enfatizza la privacy e la sicurezza dei dati, rispettando gli standard cinesi di governance dei dati.

  • Accelerazione hardware: Supporta diverse accelerazioni hardware, tra cui i chip Kunlun di Baidu.

NCNN

NCNN è un framework per l'inferenza di reti neurali ad alte prestazioni ottimizzato per la piattaforma mobile. Si distingue per la sua leggerezza ed efficienza, che lo rendono particolarmente adatto ai dispositivi mobili ed embedded dove le risorse sono limitate.

  • Benchmark delle prestazioni: altamente ottimizzato per le piattaforme mobili, offre un'inferenza efficiente sui dispositivi basati su ARM.

  • Compatibilità e integrazione: Adatto per applicazioni su telefoni cellulari e sistemi embedded con architettura ARM.

  • Supporto ed ecosistema della comunità: Supportato da una comunità di nicchia ma attiva, focalizzata sulle applicazioni ML mobili e integrate.

  • Casi di studio: Favorito per le applicazioni mobili in cui l'efficienza e la velocità sono fondamentali su Android e altri sistemi basati su ARM.

  • Manutenzione e aggiornamenti: Migliora continuamente per mantenere alte le prestazioni su una serie di dispositivi ARM.

  • Considerazioni sulla sicurezza: Si concentra sull'esecuzione locale sul dispositivo, sfruttando la sicurezza intrinseca dell'elaborazione sul dispositivo.

  • Accelerazione hardware: Su misura per le CPU e le GPU ARM, con ottimizzazioni specifiche per queste architetture.

Analisi comparativa delle opzioni di distribuzione di YOLOv8

La seguente tabella fornisce un'istantanea delle varie opzioni di distribuzione disponibili per i modelli di YOLOv8 , aiutandoti a valutare quale potrebbe essere la più adatta alle esigenze del tuo progetto in base a diversi criteri critici. Per un approfondimento sul formato di ogni opzione di distribuzione, consulta la pagina della documentazione diUltralytics sui formati di esportazione.

Opzione di distribuzione Parametri di prestazione Compatibilità e integrazione Supporto della comunità ed ecosistema Casi di studio Manutenzione e aggiornamenti Considerazioni sulla sicurezza Accelerazione hardware
PyTorch Buona flessibilità, ma può essere un compromesso con le prestazioni grezze Eccellente con le librerie di Python Ampie risorse e comunità Ricerca e prototipi Sviluppo regolare e attivo Dipende dall'ambiente di distribuzione Supporto CUDA per l'accelerazione GPU
TorchScript Meglio per la produzione rispetto a PyTorch Transizione agevole da PyTorch a C++ Specializzato ma più ristretto di PyTorch Un settore in cui Python è un collo di bottiglia Aggiornamenti coerenti con PyTorch Sicurezza migliorata senza un'eccessiva quantità di risorse. Python Eredita il supporto CUDA da PyTorch
ONNX Variabile a seconda del tempo di esecuzione Elevato tra i diversi framework Ampio ecosistema, supportato da molte organizzazioni Flessibilità tra i framework di ML Aggiornamenti regolari per le nuove operazioni Garantire pratiche di conversione e distribuzione sicure Varie ottimizzazioni hardware
OpenVINO Ottimizzato per l'hardware Intel Il meglio dell'ecosistema Intel Solidità nel campo della visione artificiale IoT e edge con l'hardware Intel Aggiornamenti regolari per l'hardware Intel Caratteristiche robuste per applicazioni sensibili Su misura per l'hardware Intel
TensorRT Il massimo delle prestazioni con le GPU NVIDIA Il meglio per l'hardware NVIDIA Una rete forte grazie a NVIDIA Inferenza di video e immagini in tempo reale Aggiornamenti frequenti per le nuove GPU Enfasi sulla sicurezza Progettato per le GPU NVIDIA
CoreML Ottimizzato per l'hardware Apple sul dispositivo Esclusivo dell'ecosistema Apple Forte supporto di Apple e degli sviluppatori ML on-device sui prodotti Apple Aggiornamenti regolari di Apple Attenzione alla privacy e alla sicurezza Motore neurale e GPU Apple
TF SavedModel Scalabile in ambienti server Ampia compatibilità con l'ecosistema TensorFlow Grande supporto grazie alla popolarità di TensorFlow Servire modelli in scala Aggiornamenti regolari da parte di Google e della comunità Funzionalità robuste per le aziende Varie accelerazioni hardware
TF GraphDef Stabile per i grafi di calcolo statici Si integra bene con l'infrastruttura di TensorFlow Risorse per l'ottimizzazione dei grafi statici Scenari che richiedono grafici statici Aggiornamenti a fianco del nucleo di TensorFlow Pratiche di sicurezza consolidate su TensorFlow TensorFlow opzioni di accelerazione
TF Lite Velocità ed efficienza su mobile/embedded Ampia gamma di dispositivi supportati Comunità solida, supportata da Google Applicazioni mobili con un ingombro minimo Le ultime funzionalità per i dispositivi mobili Ambiente sicuro sui dispositivi degli utenti finali GPU e DSP tra gli altri
TF Bordo TPU Ottimizzato per l'hardware Edge di Google TPU Esclusivo dei dispositivi Edge TPU Crescere con Google e risorse di terze parti Dispositivi IoT che richiedono un'elaborazione in tempo reale Miglioramenti per il nuovo hardware Edge TPU La solida sicurezza IoT di Google Progettato su misura per Google Coral
TF.js Prestazioni ragionevoli nel browser Elevato livello di conoscenza delle tecnologie web Supporto agli sviluppatori Web e Node.js Applicazioni web interattive TensorFlow contributi del team e della comunità Modello di sicurezza della piattaforma web Potenziato con WebGL e altre API
PaddlePaddle Competitivo, facile da usare e scalabile Ecosistema Baidu, ampio supporto alle applicazioni In rapida crescita, soprattutto in Cina Mercato cinese ed elaborazione linguistica Focus sulle applicazioni AI cinesi Enfatizza la privacy e la sicurezza dei dati Compresi i chip Kunlun di Baidu
NCNN Ottimizzato per i dispositivi mobili basati su ARM Sistemi ARM mobili ed embedded Comunità ML di nicchia ma attiva nel settore mobile/embedded Efficienza dei sistemi Android e ARM Manutenzione ad alte prestazioni su ARM Vantaggi della sicurezza sul dispositivo Ottimizzazioni per CPU e GPU ARM

Questa analisi comparativa ti offre una panoramica di alto livello. Per l'implementazione, è fondamentale considerare i requisiti e i vincoli specifici del tuo progetto e consultare la documentazione dettagliata e le risorse disponibili per ciascuna opzione.

Comunità e supporto

Quando stai iniziando a lavorare su YOLOv8, avere a disposizione una comunità e un supporto utili può avere un impatto significativo. Ecco come entrare in contatto con altre persone che condividono i tuoi interessi e ottenere l'assistenza di cui hai bisogno.

Impegnarsi con una comunità più ampia

  • Discussioni su GitHub: Il repository YOLOv8 su GitHub ha una sezione "Discussioni" dove puoi fare domande, segnalare problemi e suggerire miglioramenti.

  • Ultralytics Server Discord: Ultralytics ha un server Discord dove puoi interagire con altri utenti e sviluppatori.

Documentazione e risorse ufficiali

  • Ultralytics YOLOv8 Documenti: La documentazione ufficiale fornisce una panoramica completa di YOLOv8, oltre a guide sull'installazione, l'utilizzo e la risoluzione dei problemi.

Queste risorse ti aiuteranno ad affrontare le sfide e a rimanere aggiornato sulle ultime tendenze e sulle migliori pratiche della comunità di YOLOv8 .

Conclusione

In questa guida abbiamo esplorato le diverse opzioni di implementazione di YOLOv8. Abbiamo anche discusso i fattori importanti da considerare al momento della scelta. Queste opzioni ti permettono di personalizzare il tuo modello per vari ambienti e requisiti di prestazioni, rendendolo adatto alle applicazioni del mondo reale.

Non dimenticare che la comunità di YOLOv8 e Ultralytics è una preziosa fonte di aiuto. Entra in contatto con altri sviluppatori ed esperti per apprendere suggerimenti e soluzioni uniche che potresti non trovare nella normale documentazione. Continua a cercare la conoscenza, a esplorare nuove idee e a condividere le tue esperienze.

Buona distribuzione!



Creato 2023-11-12, Aggiornato 2024-03-01
Autori: glenn-jocher (6), abirami-vina (1)

Commenti