Esportazione Ultralytics YOLO in NCNN#
La distribuzione di modelli di computer vision su dispositivi con potenza di calcolo limitata, come i sistemi mobili o embedded, richiede un'attenta scelta 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.
L'esportazione nel formato NCNN consente di ottimizzare i modelli Ultralytics YOLO26 per applicazioni leggere eseguite direttamente sui dispositivi. Questa guida spiega come convertire i modelli nel formato NCNN per migliorarne 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, 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 elevata velocità di elaborazione sulle CPU mobili e consente di distribuire rapidamente modelli di deep learning sulle piattaforme mobili, rivelandosi un'ottima scelta per creare applicazioni basate sull'AI.
Caratteristiche principali dei modelli NCNN#
I modelli NCNN offrono diverse caratteristiche chiave che abilitano il machine learning direttamente sul dispositivo e aiutano gli sviluppatori a distribuire modelli su dispositivi mobili, embedded ed edge:
-
Efficienti e ad alte prestazioni: i modelli NCNN sono leggeri e ottimizzati per dispositivi mobili ed embedded con risorse limitate, come Raspberry Pi, e mantengono un'elevata accuratezza nelle attività di computer vision.
-
Quantizzazione: NCNN supporta la quantizzazione, una tecnica che riduce la precisione dei pesi e delle attivazioni del modello per migliorarne le prestazioni e ridurre l'occupazione di memoria.
-
Compatibilità: i modelli NCNN sono compatibili con i più diffusi framework di deep learning, tra cui 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 ambienti di sviluppo differenti.
-
Accelerazione GPU Vulkan: NCNN supporta Vulkan per l'inferenza accelerata su GPU di diversi produttori, tra cui AMD, Intel e altre GPU non NVIDIA, consentendo distribuzioni ad alte prestazioni su una gamma più ampia di hardware.
Opzioni di distribuzione con NCNN#
I modelli NCNN sono compatibili con diverse piattaforme di distribuzione:
-
Distribuzione su dispositivi mobili: ottimizzati per Android e iOS, consentono un'integrazione fluida nelle applicazioni mobili per un'inferenza efficiente direttamente sul dispositivo.
-
Sistemi embedded e dispositivi IoT: ideali per dispositivi con risorse limitate, come Raspberry Pi e NVIDIA Jetson. Se l'inferenza standard su Raspberry Pi con la guida Ultralytics non è sufficiente, NCNN può offrire miglioramenti significativi delle prestazioni.
-
Distribuzione su 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 inferenze ad alte prestazioni su un'ampia gamma di GPU, comprese quelle AMD, Intel e altre schede grafiche non NVIDIA. Questa funzionalità è particolarmente utile per:
- Supporto GPU multipiattaforma: a differenza di CUDA, limitato alle GPU NVIDIA, Vulkan funziona con GPU di diversi produttori.
- Sistemi multi-GPU: seleziona un dispositivo Vulkan specifico nei sistemi con più GPU usando
device="vulkan:0",device="vulkan:1"ecc. - Distribuzioni edge e desktop: sfrutta l'accelerazione GPU sui dispositivi in cui CUDA non è disponibile.
Per usare l'accelerazione Vulkan, specifica il dispositivo Vulkan quando esegui l'inferenza:
from ultralytics import YOLO
# Carica il modello esportato in NCNN
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Esegui l'inferenza con l'accelerazione GPU Vulkan (primo dispositivo Vulkan)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Usa il secondo dispositivo Vulkan nei sistemi multi-GPU
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Assicurati di aver 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 usando strumenti come vulkaninfo su Linux o Vulkan SDK su Windows.
Attività supportate#
L'esportazione NCNN supporta tutte e sette le attività Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste head.
| Attività | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Rilevamento | ✅ | ✅ | ✅ |
| Segmentazione | ✅ | ✅ | ✅ |
| Semantica | ❌ | ❌ | ✅ |
| Profondità | ❌ | ❌ | ✅ |
| Classificazione | ✅ | ✅ | ✅ |
| Stima della posa | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Esportazione in NCNN: conversione del tuo modello YOLO26#
Puoi ampliare la compatibilità del modello e la flessibilità di distribuzione convertendo i modelli YOLO26 nel formato NCNN.
Installazione#
Per installare i pacchetti necessari, esegui:
# Install the required package for YOLO26
pip install ultralyticsPer istruzioni dettagliate e best practice, consulta la guida all'installazione di Ultralytics. Se riscontri difficoltà, consulta la guida ai problemi comuni per trovare soluzioni.
Utilizzo#
Tutti i modelli Ultralytics YOLO26 sono progettati per supportare l'esportazione senza configurazioni aggiuntive, semplificando l'integrazione nel workflow di distribuzione che preferisci. Puoi consultare l'elenco completo dei formati di esportazione supportati e delle opzioni di configurazione per scegliere la configurazione più adatta alla tua applicazione.
Il formato NCNN supporta le modalità Export, Predict e Validate. Esporta il tuo modello, quindi carica il modello esportato per eseguire inferenze o convalidarne la precisione.
from ultralytics import YOLO
# Carica un modello YOLO26
model = YOLO("yolo26n.pt")
# Esporta il modello nel formato NCNN
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'from ultralytics import YOLO
# Carica il modello esportato in NCNN
model = YOLO("./yolo26n_ncnn_model")
# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carica il modello esportato in NCNN
model = YOLO("./yolo26n_ncnn_model")
# # Convalida l'accuratezza sul dataset COCO8
metrics = model.val(data="coco8.yaml")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'ncnn' | Formato di destinazione del modello esportato, che definisce la compatibilità con i vari ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello. Può essere un intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
quantize | int o str | None | Precisione della quantizzazione: 16 (FP16) dimezza i pesi esportati; 32/non impostato esporta pesi FP32, che il runtime CPU di NCNN calcola comunque in FP16 per impostazione predefinita, quando l'hardware lo supporta. Sostituisce il flag deprecato half. |
batch | int | 1 | Specifica la dimensione batch per l'inferenza 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 Ultralytics dedicata all'esportazione.
Distribuzione dei modelli YOLO26 NCNN esportati#
Dopo aver esportato i tuoi modelli Ultralytics YOLO26 nel formato NCNN, puoi distribuirli usando il metodo YOLO("yolo26n_ncnn_model/"), come mostrato nell'esempio d'uso qui sopra. Per istruzioni di distribuzione specifiche per piattaforma, consulta le risorse seguenti:
-
Android: crea e integra modelli NCNN per il rilevamento degli oggetti nelle applicazioni Android.
-
macOS: distribuisci modelli NCNN sui sistemi macOS.
-
Linux: distribuisci modelli NCNN su dispositivi Linux, inclusi Raspberry Pi e sistemi embedded simili.
-
Windows x64: distribuisci modelli NCNN su Windows x64 usando Visual Studio.
Riepilogo#
Questa guida ha illustrato l'esportazione dei modelli Ultralytics YOLO26 nel formato NCNN per migliorare l'efficienza e la velocità sui dispositivi con risorse limitate.
Per ulteriori dettagli, consulta la documentazione ufficiale di NCNN. Per altre opzioni di esportazione, visita la pagina della guida alle integrazioni.
Domande frequenti#
Per esportare il tuo modello Ultralytics YOLO26 nel formato NCNN:
-
Python: usa il metodo
exportdella classe YOLO.from ultralytics import YOLO # Carica un modello YOLO26 model = YOLO("yolo26n.pt") # Esporta nel formato NCNN 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 le opzioni di esportazione dettagliate, consulta la documentazione di Export.
-
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 di calcolo 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 diverse piattaforme, tra cui Android, iOS, Linux e macOS.
- Accelerazione GPU Vulkan: sfrutta Vulkan per accelerare le GPU AMD, Intel e altre GPU non NVIDIA e velocizzare l'inferenza.
Per ulteriori dettagli, consulta la sezione Perché esportare in NCNN?.
NCNN, sviluppato da Tencent, è ottimizzato specificamente per le piattaforme mobili. Ecco i principali motivi per usare NCNN:
- Prestazioni elevate: progettato per un'elaborazione efficiente e rapida sulle CPU dei dispositivi mobili.
- Multipiattaforma: compatibile con framework diffusi come TensorFlow e ONNX, semplifica la conversione e la distribuzione dei modelli su piattaforme diverse.
- Supporto della community: una community attiva garantisce miglioramenti e aggiornamenti continui.
Per ulteriori informazioni, consulta la sezione Funzionalità principali dei modelli NCNN.
NCNN è versatile e supporta diverse piattaforme:
- Dispositivi mobili: 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.
- Integrazione con la tua app: usa l'SDK Android di NCNN per integrare il modello esportato nella tua applicazione ed eseguire inferenze efficienti direttamente sul dispositivo.
Per istruzioni dettagliate, consulta Distribuzione dei 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 GPU AMD, Intel e altre GPU non NVIDIA. Per usare Vulkan:
from ultralytics import YOLO # Carica il modello NCNN ed eseguilo con la GPU Vulkan model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Usa il primo dispositivo VulkanNei sistemi multi-GPU, specifica l'indice del dispositivo (ad esempio,
vulkan:1per la seconda GPU). Assicurati di aver installato i driver Vulkan per la tua GPU. Per ulteriori dettagli, consulta la sezione Accelerazione GPU Vulkan.