Vai al contenuto

Ottimizzare le inferenze di YOLOv8 con il motore DeepSparse di Neural Magic

Quando si distribuiscono modelli di rilevamento degli oggetti come Ultralytics YOLOv8 su diversi hardware, puoi imbatterti in problemi particolari come l'ottimizzazione. È qui che entra in gioco l'integrazione di YOLOv8con il motore DeepSparse di Neural Magic. Trasforma il modo in cui vengono eseguiti i modelli di YOLOv8 e consente di ottenere prestazioni a livello di GPU direttamente sulle CPU.

Questa guida ti mostra come distribuire YOLOv8 utilizzando Neural Magic's DeepSparse, come eseguire le inferenze e come effettuare un benchmark delle prestazioni per assicurarti che sia ottimizzato.

Neural MagicDeepSparse

Neural MagicPanoramica di DeepSparse

Neural MagicDeepSparse è un run-time di inferenza progettato per ottimizzare l'esecuzione delle reti neurali sulle CPU. Applica tecniche avanzate come la sparsità, il pruning e la quantizzazione per ridurre drasticamente i requisiti computazionali mantenendo la precisione. DeepSparse offre una soluzione agile per l'esecuzione efficiente e scalabile di reti neurali su diversi dispositivi.

Vantaggi dell'integrazione di Neural Magiccon DeepSparse YOLOv8

Prima di scoprire come distribuire YOLOV8 utilizzando DeepSparse, cerchiamo di capire quali sono i vantaggi dell'utilizzo di DeepSparse. Alcuni vantaggi chiave sono:

  • Velocità di inferenza migliorata: Raggiunge fino a 525 FPS (su YOLOv8n), velocizzando notevolmente le capacità di inferenza di YOLOv8 rispetto ai metodi tradizionali.

Velocità di inferenza migliorata

  • Efficienza ottimizzata del modello: Utilizza il pruning e la quantizzazione per migliorare l'efficienza di YOLOv8, riducendo le dimensioni del modello e i requisiti computazionali e mantenendo l'accuratezza.

Efficienza del modello ottimizzato

  • Prestazioni elevate su CPU standard: Offre prestazioni simili a quelle delle GPU sulle CPU, offrendo un'opzione più accessibile e conveniente per diverse applicazioni.

  • Integrazione e distribuzione semplificate: Offre strumenti di facile utilizzo per integrare facilmente YOLOv8 nelle applicazioni, comprese le funzioni di annotazione di immagini e video.

  • Supporto per vari tipi di modelli: Compatibile con i modelli YOLOv8 sia standard che ottimizzati per la spazialità, per una maggiore flessibilità di implementazione.

  • Soluzione economica e scalabile: Riduce le spese operative e offre una distribuzione scalabile di modelli avanzati di rilevamento degli oggetti.

Come funziona la tecnologia DeepSparse di Neural Magic?

Neural MagicLa tecnologia Deep Sparse si ispira all'efficienza del cervello umano nel calcolo delle reti neurali. Adotta i due principi chiave del cervello:

  • Sparsità: Il processo di sparsificazione consiste nel tagliare le informazioni ridondanti dalle reti di apprendimento profondo, per ottenere modelli più piccoli e veloci senza compromettere l'accuratezza. Questa tecnica riduce in modo significativo le dimensioni della rete e il fabbisogno computazionale.

  • Località di riferimento: DeepSparse utilizza un metodo di esecuzione unico, suddividendo la rete in Tensor colonne. Queste colonne vengono eseguite in profondità, inserendosi interamente nella cache della CPU. Questo approccio imita l'efficienza del cervello, riducendo al minimo il movimento dei dati e massimizzando l'uso della cache della CPU.

Come funziona la tecnologia DeepSparse di Neural Magic

Per maggiori dettagli sul funzionamento della tecnologia DeepSparse di Neural Magic, consulta il loro blog.

Creare una versione sparsa di YOLOv8 addestrata su un set di dati personalizzato

SparseZoo, un repository di modelli open-source di Neural Magic, offre una raccolta di checkpoint di modelli pre-sparsificati di YOLOv8 . Con SparseML, perfettamente integrato con Ultralytics, gli utenti possono regolare senza problemi questi checkpoint sparsi sui loro set di dati specifici utilizzando una semplice interfaccia a riga di comando.

Consulta la documentazione diNeural Magic's SparseML YOLOv8 per maggiori dettagli.

Utilizzo: Distribuire YOLOV8 utilizzando DeepSparse

L'implementazione di YOLOv8 con Neural Magic's DeepSparse richiede alcuni semplici passi. Prima di immergerti nelle istruzioni d'uso, assicurati di dare un'occhiata alla gamma di modelli diYOLOv8 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto alle esigenze del tuo progetto. Ecco come iniziare.

Passo 1: Installazione

Per installare i pacchetti necessari, esegui:

Installazione

# Install the required packages
pip install deepsparse[yolov8]

Passo 2: Esportazione di YOLOv8 nel formato ONNX

DeepSparse Engine richiede che i modelli di YOLOv8 siano in formato ONNX . Esportare il tuo modello in questo formato è essenziale per la compatibilità con DeepSparse. Usa il seguente comando per esportare i modelli YOLOv8 :

Modello di esportazione

# Export YOLOv8 model to ONNX format
yolo task=detect mode=export model=yolov8n.pt format=onnx opset=13

Questo comando salverà i dati yolov8n.onnx modello sul tuo disco.

Passo 3: Distribuzione ed esecuzione delle inferenze

Con il tuo modello YOLOv8 in formato ONNX , puoi distribuire ed eseguire inferenze utilizzando DeepSparse. Questo può essere fatto facilmente con l'intuitiva API di Python :

Distribuzione ed esecuzione delle inferenze

from deepsparse import Pipeline

# Specify the path to your YOLOv8 ONNX model
model_path = "path/to/yolov8n.onnx"

# Set up the DeepSparse Pipeline
yolo_pipeline = Pipeline.create(task="yolov8", model_path=model_path)

# Run the model on your images
images = ["path/to/image.jpg"]
pipeline_outputs = yolo_pipeline(images=images)

Fase 4: Analisi comparativa delle prestazioni

È importante verificare che il tuo modello YOLOv8 funzioni in modo ottimale su DeepSparse. Puoi fare un benchmark delle prestazioni del tuo modello per analizzare il throughput e la latenza:

Benchmarking

# Benchmark performance
deepsparse.benchmark model_path="path/to/yolov8n.onnx" --scenario=sync --input_shapes="[1,3,640,640]"

Passo 5: Caratteristiche aggiuntive

DeepSparse fornisce ulteriori funzionalità per l'integrazione pratica di YOLOv8 nelle applicazioni, come l'annotazione delle immagini e la valutazione dei set di dati.

Caratteristiche aggiuntive

# For image annotation
deepsparse.yolov8.annotate --source "path/to/image.jpg" --model_filepath "path/to/yolov8n.onnx"

# For evaluating model performance on a dataset
deepsparse.yolov8.eval --model_path "path/to/yolov8n.onnx"

L'esecuzione del comando annotate elabora l'immagine specificata, rilevando gli oggetti e salvando l'immagine annotata con i riquadri di delimitazione e le classificazioni. L'immagine annotata verrà memorizzata in una cartella annotation-results. Questo aiuta a fornire una rappresentazione visiva delle capacità di rilevamento del modello.

Funzione di annotazione delle immagini

Dopo aver eseguito il comando eval, riceverai delle metriche di output dettagliate come precisione, richiamo e mAP (mean Average Precision). Questo fornisce una visione completa delle prestazioni del tuo modello sul set di dati. Questa funzionalità è particolarmente utile per mettere a punto e ottimizzare i modelli di YOLOv8 per casi d'uso specifici, garantendo un'elevata precisione ed efficienza.

Sommario

Questa guida ha analizzato l'integrazione di Ultralytics'YOLOv8 con Neural Magic' DeepSparse Engine. Ha evidenziato come questa integrazione migliori le prestazioni di YOLOv8'su piattaforme CPU, offrendo un'efficienza a livello di GPU e tecniche avanzate di sparsità della rete neurale.

Per informazioni più dettagliate e per un utilizzo avanzato, visita la documentazione di DeepSparse diNeural Magic. Inoltre, dai un'occhiata alla documentazione di Neural Magicsull'integrazione con YOLOv8 qui e guarda un'ottima sessione su questo argomento qui.

Inoltre, per una comprensione più ampia delle varie integrazioni di YOLOv8 , visita la pagina della guida all'integrazione diUltralytics , dove potrai scoprire una serie di altre interessanti possibilità di integrazione.



Creato 2023-12-30, Aggiornato 2024-05-18
Autori: glenn-jocher (4), abirami-vina (1)

Commenti