Esportazione Ultralytics YOLO NCNN#
La distribuzione di modelli di computer vision su dispositivi con potenza di calcolo limitata, come sistemi mobili o embedded, richiede un'attenta selezione del formato. L'uso di un formato ottimizzato garantisce che anche i dispositivi con risorse limitate possano gestire in modo efficiente attività avanzate di computer vision.
Esportare nel formato NCNN ti consente di ottimizzare i tuoi modelli Ultralytics YOLO26 per applicazioni leggere basate su dispositivi. Questa guida spiega come convertire i tuoi modelli in formato NCNN per migliorare le prestazioni su dispositivi mobili ed embedded.
Perché esportare in NCNN?#
Il framework NCNN, sviluppato da Tencent, è un framework di calcolo per l'inferenza di reti neurali ad alte prestazioni, ottimizzato specificamente per piattaforme mobili, inclusi telefoni cellulari, dispositivi embedded e dispositivi IoT. NCNN è compatibile con un'ampia gamma di piattaforme, tra cui Linux, Android, iOS e macOS.
NCNN è noto per la sua velocità di elaborazione elevata su CPU mobili e consente una rapida distribuzione di modelli di deep learning su piattaforme mobili, rendendolo una scelta eccellente per la creazione di applicazioni basate sull'IA.
Caratteristiche principali dei modelli NCNN#
I modelli NCNN offrono diverse funzionalità chiave che abilitano il machine learning on-device, aiutando gli sviluppatori a distribuire modelli su dispositivi mobili, embedded e edge:
-
Efficiente e ad alte prestazioni: i modelli NCNN sono leggeri e ottimizzati per dispositivi mobili ed embedded come Raspberry Pi con risorse limitate, pur mantenendo un'elevata precisione nelle attività di computer vision.
-
Quantizzazione: NCNN supporta la quantizzazione, una tecnica che riduce la precisione dei pesi e delle attivazioni del modello per migliorare le prestazioni e ridurre l'occupazione di memoria.
-
Compatibilità: i modelli NCNN sono compatibili con i più diffusi framework di deep learning, inclusi TensorFlow, Caffe e ONNX, consentendo agli sviluppatori di sfruttare modelli e flussi di lavoro esistenti.
-
Facilità d'uso: NCNN fornisce strumenti intuitivi per convertire i modelli tra diversi formati, garantendo un'interoperabilità fluida tra vari ambienti di sviluppo.
-
Accelerazione GPU Vulkan: NCNN supporta Vulkan per l'inferenza accelerata tramite GPU su più fornitori, inclusi AMD, Intel e altre GPU non NVIDIA, consentendo una distribuzione ad alte prestazioni su una gamma più ampia di hardware.
Opzioni di distribuzione con NCNN#
I modelli NCNN sono compatibili con una varietà di piattaforme di distribuzione:
-
Distribuzione mobile: Ottimizzato per Android e iOS, consente un'integrazione fluida nelle applicazioni mobili per un'efficiente inferenza on-device.
-
Sistemi embedded e dispositivi IoT: ideali per dispositivi con risorse limitate come Raspberry Pi e NVIDIA Jetson. Se l'inferenza standard su un Raspberry Pi con la Guida di Ultralytics non è sufficiente, NCNN può offrire significativi miglioramenti delle prestazioni.
-
Distribuzione desktop e server: Supporta la distribuzione su Linux, Windows e macOS per flussi di lavoro di sviluppo, addestramento e valutazione.
Accelerazione GPU Vulkan#
NCNN supporta l'accelerazione GPU tramite Vulkan, consentendo un'inferenza ad alte prestazioni su una vasta gamma di GPU, incluse quelle AMD, Intel e altre schede grafiche non NVIDIA. Questo è particolarmente utile per:
- Supporto GPU multi-fornitore: A differenza di CUDA, che è limitato alle GPU NVIDIA, Vulkan funziona su più fornitori di GPU.
- Sistemi multi-GPU: seleziona uno specifico dispositivo Vulkan in sistemi con più GPU utilizzando
device="vulkan:0",device="vulkan:1", ecc. - Distribuzioni edge e desktop: Sfrutta l'accelerazione GPU su dispositivi dove CUDA non è disponibile.
Per utilizzare l'accelerazione Vulkan, specifica il dispositivo Vulkan durante l'esecuzione dell'inferenza:
from ultralytics import YOLO
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Assicurati di avere installato i driver Vulkan per la tua GPU. La maggior parte dei driver GPU moderni include il supporto Vulkan per impostazione predefinita. Puoi verificare la disponibilità di Vulkan utilizzando strumenti come vulkaninfo su Linux o il Vulkan SDK su Windows.
Attività supportate#
L'esportazione NCNN supporta tutte e sette le attività di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include quelle teste.
Esportazione in NCNN: Conversione del tuo modello YOLO26#
Puoi espandere la compatibilità del modello e la flessibilità di distribuzione convertendo i modelli YOLO26 nel formato NCNN.
Installazione#
Per installare i pacchetti richiesti, esegui:
# Install the required package for YOLO26
pip install ultralyticsPer istruzioni dettagliate e best practices, consulta la Guida all'installazione di Ultralytics. In caso di difficoltà, consulta la nostra Guida ai problemi comuni per trovare soluzioni.
Utilizzo#
Tutti i modelli Ultralytics YOLO26 sono progettati per supportare l'esportazione pronta all'uso, rendendo semplice integrarli nel tuo flusso di lavoro di distribuzione preferito. Puoi visualizzare l'elenco completo dei formati di esportazione supportati e delle opzioni di configurazione per scegliere la configurazione migliore per la tua applicazione.
Il formato NCNN supporta le modalità Esporta, Prevedi e Valida. Esporta il tuo modello, quindi carica il modello esportato per eseguire l'inferenza o validarne la precisione.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates '/yolo26n_ncnn_model'from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'ncnn' | Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
quantize | int o str | None | Precisione di quantizzazione: 16 (FP16) riduce le dimensioni del modello e può accelerare l'inferenza; 32/non impostato è FP32. Sostituisce il flag deprecato half. |
batch | int | 1 | Specifica la dimensione dell'inferenza in batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict. |
device | str | None | Specifica il dispositivo per l'esportazione: GPU (device=0), CPU (device=cpu), MPS per Apple silicon (device=mps). |
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Distribuzione di modelli YOLO26 NCNN esportati#
Dopo aver esportato i tuoi modelli Ultralytics YOLO26 nel formato NCNN, puoi distribuirli utilizzando il metodo YOLO("yolo26n_ncnn_model/") come mostrato nell'esempio di utilizzo sopra. Per le istruzioni di distribuzione specifiche per piattaforma, consulta le seguenti risorse:
-
Android: compila e integra modelli NCNN per il rilevamento di oggetti nelle applicazioni Android.
-
macOS: distribuisci modelli NCNN su sistemi macOS.
-
Linux: distribuisci modelli NCNN su dispositivi Linux, inclusi Raspberry Pi e sistemi embedded simili.
-
Windows x64: distribuisci modelli NCNN su Windows x64 utilizzando Visual Studio.
Riepilogo#
Questa guida ha trattato l'esportazione dei modelli Ultralytics YOLO26 nel formato NCNN per una maggiore efficienza e velocità su dispositivi con risorse limitate.
Per ulteriori dettagli, fai riferimento alla documentazione ufficiale di NCNN. Per altre opzioni di esportazione, visita la nostra pagina della guida all'integrazione.
FAQ#
Per esportare il tuo modello Ultralytics YOLO26 nel formato NCNN:
-
Python: usa il metodo
exportdalla classe YOLO.from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates '/yolo26n_ncnn_model' -
CLI: usa il comando
yolo export.yolo export model=yolo26n.pt format=ncnn # creates '/yolo26n_ncnn_model'
Per opzioni di esportazione dettagliate, consulta la documentazione di Esportazione.
-
Esportare i tuoi modelli Ultralytics YOLO26 in NCNN offre diversi vantaggi:
- Efficienza: i modelli NCNN sono ottimizzati per dispositivi mobili ed embedded, garantendo prestazioni elevate anche con risorse computazionali limitate.
- Quantizzazione: NCNN supporta tecniche come la quantizzazione che migliorano la velocità del modello e riducono l'uso della memoria.
- Ampia compatibilità: Puoi distribuire i modelli NCNN su più piattaforme, inclusi Android, iOS, Linux e macOS.
- Accelerazione GPU Vulkan: Sfrutta l'accelerazione GPU su AMD, Intel e altre GPU non NVIDIA tramite Vulkan per un'inferenza più rapida.
Per maggiori dettagli, consulta la sezione Perché esportare in NCNN?.
NCNN, sviluppato da Tencent, è specificamente ottimizzato per piattaforme mobili. I motivi principali per usare NCNN includono:
- Alte prestazioni: Progettato per un'elaborazione efficiente e veloce su CPU mobile.
- Multi-piattaforma: compatibile con i framework più diffusi come TensorFlow e ONNX, rendendo più semplice la conversione e la distribuzione di modelli su diverse piattaforme.
- Supporto della community: Il supporto attivo della community garantisce continui miglioramenti e aggiornamenti.
Per ulteriori informazioni, consulta la sezione Caratteristiche principali dei modelli NCNN.
NCNN è versatile e supporta varie piattaforme:
- Mobile: Android, iOS.
- Sistemi embedded e dispositivi IoT: Dispositivi come Raspberry Pi e NVIDIA Jetson.
- Desktop e server: Linux, Windows e macOS.
Per migliorare le prestazioni su Raspberry Pi, valuta l'uso del formato NCNN come descritto nella nostra Guida a Raspberry Pi.
Per distribuire i tuoi modelli YOLO26 su Android:
- Compilazione per Android: segui la guida Compilazione di NCNN per Android.
- Integra con la tua app: Usa l'SDK NCNN per Android per integrare il modello esportato nella tua applicazione per un'efficiente inferenza on-device.
Per istruzioni dettagliate, consulta Distribuzione di modelli YOLO26 NCNN esportati.
Per guide più avanzate e casi d'uso, visita la guida alla distribuzione di Ultralytics.
NCNN supporta Vulkan per l'accelerazione GPU su AMD, Intel e altre GPU non NVIDIA. Per utilizzare Vulkan:
from ultralytics import YOLO # Load NCNN model and run with Vulkan GPU model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Use first Vulkan devicePer i sistemi multi-GPU, specifica l'indice del dispositivo (ad esempio,
vulkan:1per la seconda GPU). Assicurati che i driver Vulkan siano installati per la tua GPU. Vedi la sezione Accelerazione GPU Vulkan per maggiori dettagli.