Esportazione NCNN di Ultralytics YOLO
Distribuire 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 attività avanzate di computer vision in modo efficiente.
L'esportazione nel formato NCNN ti consente di ottimizzare i tuoi modelli Ultralytics YOLO26 per applicazioni su dispositivi leggeri. Questa guida spiega come convertire i tuoi modelli nel 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 una vasta 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 caratteristiche chiave che abilitano il machine learning on-device, aiutando gli sviluppatori a distribuire modelli su dispositivi mobili, embedded e edge:
-
Efficienti e ad alte prestazioni: i modelli NCNN sono leggeri e ottimizzati per dispositivi mobili ed embedded come Raspberry Pi con risorse limitate, 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'impronta di memoria.
-
Compatibilità: i modelli NCNN sono compatibili con framework di deep learning diffusi 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 vari ambienti di sviluppo.
-
Accelerazione GPU Vulkan: NCNN supporta Vulkan per l'inferenza accelerata tramite GPU su diversi 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, consentendo un'integrazione fluida nelle applicazioni mobili per un'efficiente inferenza on-device.
-
Sistemi embedded e dispositivi IoT: Ideale per dispositivi con risorse limitate come Raspberry Pi e NVIDIA Jetson. Se l'inferenza standard su un Raspberry Pi con la Guida Ultralytics non è sufficiente, NCNN può offrire notevoli 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, inclusi AMD, Intel e altre schede grafiche non NVIDIA. Questo è particolarmente utile per:
- Supporto GPU multi-vendor: A differenza di CUDA, 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 i driver Vulkan installati 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.
Esporta 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 nostra Guida ai problemi comuni per trovare soluzioni.
Utilizzo
Tutti i modelli Ultralytics YOLO26 sono progettati per supportare l'esportazione nativamente, 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.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates '/yolo26n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")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. |
half | bool | False | Abilita la quantizzazione FP16 (precisione dimezzata), riducendo le dimensioni del modello e potenzialmente velocizzando l'inferenza sull'hardware supportato. |
batch | int | 1 | Specifica la dimensione dell'inferenza batch del modello di esportazione o il numero massimo di immagini che il modello esportato elaborerà simultaneamente 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 d'uso sopra. Per 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 delle guide all'integrazione.
FAQ
Come posso esportare i modelli Ultralytics YOLO26 nel formato NCNN?
Per esportare il tuo modello Ultralytics YOLO26 nel formato NCNN:
-
Python: Utilizza il metodo
exportdella classe YOLO.from ultralytics import YOLO # Load the YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates '/yolo26n_ncnn_model' -
CLI: Utilizza il comando
yolo export.yolo export model=yolo26n.pt format=ncnn # creates '/yolo26n_ncnn_model'
Per opzioni di esportazione dettagliate, consulta la documentazione Export.
Quali sono i vantaggi dell'esportazione dei modelli YOLO26 in NCNN?
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 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 ulteriori dettagli, consulta la sezione Perché esportare in NCNN?.
Perché dovrei usare NCNN per le mie applicazioni IA mobile?
NCNN, sviluppato da Tencent, è ottimizzato specificamente per piattaforme mobili. I motivi principali per utilizzare NCNN includono:
- Alte prestazioni: Progettato per un'elaborazione efficiente e veloce su CPU mobili.
- Multipiattaforma: Compatibile con framework popolari come TensorFlow e ONNX, rendendo più semplice convertire e distribuire modelli su piattaforme diverse.
- Supporto della community: Un attivo supporto della community garantisce continui miglioramenti e aggiornamenti.
Per ulteriori informazioni, consulta la sezione Caratteristiche principali dei modelli NCNN.
Quali piattaforme sono supportate per la distribuzione del modello 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 prestazioni migliori su Raspberry Pi, prendi in considerazione l'utilizzo del formato NCNN come dettagliato nella nostra Guida a Raspberry Pi.
Come posso distribuire i modelli Ultralytics YOLO26 NCNN su Android?
Per distribuire i tuoi modelli YOLO26 su Android:
- Build per Android: Segui la guida Build NCNN per Android.
- Integrazione con la tua app: Utilizza l'SDK Android di NCNN 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.
Come posso utilizzare l'accelerazione GPU Vulkan con i modelli NCNN?
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 sistemi multi-GPU, specifica l'indice del dispositivo (es. vulkan:1 per la seconda GPU). Assicurati che i driver Vulkan siano installati per la tua GPU. Vedi la sezione Accelerazione GPU Vulkan per maggiori dettagli.