Ultralytics YOLO27:

Esportazione RKNN di Rockchip per i modelli Ultralytics YOLO26#

Quando implementi modelli di computer vision su dispositivi embedded, soprattutto quelli basati su processori Rockchip, avere un formato di modello compatibile è essenziale. L'esportazione dei modelli Ultralytics YOLO26 nel formato RKNN garantisce prestazioni ottimizzate e compatibilità con l'hardware Rockchip. Questa guida ti accompagnerà nella conversione dei tuoi modelli YOLO26 nel formato RKNN, incluse le esportazioni in virgola mobile e quantizzate INT8, consentendo un'implementazione efficiente sulle piattaforme Rockchip.

Rockchip RKNN export for NPU deployment

Nota

Questa guida è stata testata con Radxa Rock 5B, basato su Rockchip RK3588, e Radxa Zero 3W, basato su Rockchip RK3566. Dovrebbe funzionare anche su altri dispositivi basati su Rockchip che supportano rknn-toolkit2, come RK3576, RK3568, RK3562, RK2118, RV1126B, RV1103, RV1106, RV1103B e RV1106B. I target che supportano solo INT8, come RV1103 e RV1106, richiedono quantize=8.

Che cos'è Rockchip?#

Nota per offrire soluzioni versatili ed efficienti dal punto di vista energetico, Rockchip progetta sistemi avanzati su chip (SoCs) che alimentano un'ampia gamma di dispositivi elettronici di consumo, applicazioni industriali e tecnologie AI. Grazie all'architettura basata su ARM, alle unità di elaborazione neurale (NPUs) integrate e al supporto per contenuti multimediali ad alta risoluzione, i SoCs Rockchip offrono prestazioni all'avanguardia per dispositivi come tablet, smart TV, sistemi IoT e applicazioni di edge AI. Aziende come Radxa, ASUS, Pine64, Orange Pi, Odroid, Khadas e Banana Pi offrono una varietà di prodotti basati su SoCs Rockchip, estendendone ulteriormente la portata e l'impatto in mercati diversi.

RKNN Toolkit#

RKNN Toolkit è un insieme di strumenti e librerie forniti da Rockchip per facilitare l'implementazione di modelli di deep learning sulle proprie piattaforme hardware. RKNN, ovvero rete neurale Rockchip, è il formato proprietario utilizzato da questi strumenti. I modelli RKNN sono progettati per sfruttare appieno l'accelerazione hardware fornita dall'NPU (unità di elaborazione neurale) di Rockchip, garantendo prestazioni elevate nelle attività di AI su dispositivi come RK3588, RK3566, RV1103, RV1106 e altri sistemi basati su Rockchip.

Caratteristiche principali dei modelli RKNN#

I modelli RKNN offrono diversi vantaggi per l'implementazione sulle piattaforme Rockchip:

  • Ottimizzati per NPU: i modelli RKNN sono ottimizzati specificamente per essere eseguiti sulle NPU Rockchip, garantendo prestazioni ed efficienza massime.
  • Bassa latenza: il formato RKNN riduce al minimo la latenza dell'inferenza, un aspetto fondamentale per le applicazioni in tempo reale sui dispositivi edge.
  • Personalizzazione specifica per la piattaforma: i modelli RKNN possono essere adattati a specifiche piattaforme Rockchip, consentendo un utilizzo migliore delle risorse hardware.
  • Efficienza energetica: sfruttando l'hardware NPU dedicato, i modelli RKNN consumano meno energia rispetto all'elaborazione basata su CPU o GPU, prolungando la durata della batteria dei dispositivi portatili.

Installa il sistema operativo sull'hardware Rockchip#

Il primo passo dopo aver ottenuto un dispositivo basato su Rockchip consiste nell'installare un sistema operativo, in modo che l'hardware possa avviarsi in un ambiente funzionante. In questa guida faremo riferimento alle guide introduttive dei due dispositivi che abbiamo testato: Radxa Rock 5B e Radxa Zero 3W.

Attività supportate#

L'esportazione RKNN 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àYOLOv8YOLO11YOLO26
Rilevamento
Segmentazione
Semantica
Profondità
Classificazione
Posa
OBB

Esportazione in RKNN: conversione del modello YOLO26#

Esporta un modello Ultralytics YOLO26 nel formato RKNN ed esegui l'inferenza con il modello esportato.

Nota

Assicurati di utilizzare un PC Linux basato su X86 per esportare il modello in RKNN, perché l'esportazione sui dispositivi basati su Rockchip (ARM64) non è supportata.

Installazione#

Per installare i pacchetti richiesti, esegui:

Installazione
# Install the required package for YOLO26
pip install ultralytics

Per istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di Ultralytics. Se durante l'installazione dei pacchetti necessari per YOLO26 riscontri difficoltà, consulta la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.

Utilizzo#

Nota

L'esportazione in FP16 è supportata per tutti i task. L'esportazione in INT8 è attualmente supportata solo per i modelli di rilevamento, con un supporto per altri task in arrivo in futuro; i target solo INT8 come RV1103 e RV1106 esportano quindi solo i modelli di rilevamento.

Il formato RKNN supporta le modalità Export, Predict e Validate. L'inferenza e la convalida vengono eseguite sull'hardware NPU Rockchip. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza. Per impostazione predefinita, l'esportazione RKNN utilizza il percorso di compilazione in virgola mobile (quantize=16) per i target Rockchip compatibili con FP16. Usa quantize=8 per compilare un modello RKNN quantizzato INT8 con dati di calibrazione. L'esportazione RKNN non espone una modalità FP32 separata; il valore predefinito FP16 non richiede FP32.

Esportazione
from ultralytics import YOLO

# Load a YOLO26 model (replace with any supported task model)
model = YOLO("yolo26n-obb.pt")

# Export the model to RKNN format
model.export(format="rknn", name="rk3588")  # creates 'yolo26n-obb_rknn_model'

# Export an INT8-quantized RKNN model with calibration data (detection models only)
model = YOLO("yolo26n.pt")
model.export(format="rknn", name="rk3588", quantize=8, data="coco8.yaml")  # creates 'yolo26n_rknn_model'
Predizione
from ultralytics import YOLO

# Load the exported RKNN model
model = YOLO("./yolo26n-obb_rknn_model")

# Run inference
results = model("https://ultralytics.com/images/boats.jpg")
Valida
from ultralytics import YOLO

# Load the exported RKNN model
model = YOLO("./yolo26n-obb_rknn_model")

# Validate accuracy on the DOTA8 dataset
metrics = model.val(data="dota8.yaml")

Argomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'rknn'Formato target del modello esportato, che definisce la compatibilità con gli ambienti di implementazione Rockchip.
imgszint o tuple640Dimensione desiderata dell'immagine per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
batchint1Specifica la dimensione del batch di inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict.
namestr'rk3588'Specifica il target Rockchip. rk3588, rk3576, rk3566, rk3568, rk3562, rk2118 e rv1126b supportano FP16 (quantize=16 o non impostato) e INT8 (quantize=8); rv1103, rv1106, rv1103b e rv1106b supportano solo INT8 (quantize=8 o non impostato).
quantizeint o strNonePrecisione di quantizzazione: non impostato o 16 compila FP16 per i target compatibili con FP16; se non impostato, abilita automaticamente INT8 per i target solo INT8; 8 compila INT8, che è supportato solo per i modelli di rilevamento. L'esportazione RKNN non ha una modalità FP32 separata. Sostituisce i flag deprecati half/int8.
simplifyboolTrueSemplifica il grafo ONNX intermedio con onnxslim.
opsetintNoneSpecifica la versione dell'opset ONNX per il grafo ONNX intermedio. Il valore predefinito è 19 se non impostato e i valori superiori a 19 vengono ridotti a 19.
datastrNoneYAML del dataset utilizzato per la calibrazione INT8. Se omesso con quantize=8, Ultralytics seleziona il dataset di calibrazione del rilevamento predefinito (coco8.yaml).
fractionfloat, int o list1.0Sottoinsieme di calibrazione espresso come rapporto, numero di immagini oppure rapporti/conteggi [train, val, test]. Gli elenchi di due elementi lasciano completo test, mentre 0 lo salta.
devicestrNoneSpecifica il dispositivo per l'esportazione: GPU (device=0), CPU (device=cpu).
Suggerimento

Assicurati di utilizzare una macchina Linux x86 durante l'esportazione in RKNN.

Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics sull'esportazione.

Implementazione dei modelli YOLO26 RKNN esportati#

Dopo aver esportato correttamente i tuoi modelli Ultralytics YOLO26 nel formato RKNN, il passo successivo consiste nell'implementarli sui dispositivi basati su Rockchip.

Installazione#

Per installare i pacchetti richiesti, esegui:

Installazione
# Install the required package for YOLO26
pip install ultralytics

Una volta installato, esegui l'inferenza e la convalida sul tuo dispositivo Rockchip esattamente come mostrato nella sezione Usage precedente: il modello _rknn_model esportato viene caricato direttamente con YOLO(...).

Nota

Se visualizzi un messaggio di log che indica che la versione del runtime RKNN non corrisponde a quella di RKNN Toolkit e l'inferenza non riesce, sostituisci /usr/lib/librknnrt.so con il file librknnrt.so ufficiale.

Screenshot dell'esportazione RKNN

Applicazioni nel mondo reale#

I dispositivi basati su Rockchip con modelli YOLO26 RKNN possono essere utilizzati in diverse applicazioni:

  • Videosorveglianza intelligente: implementa sistemi efficienti di rilevamento degli oggetti per il monitoraggio della sicurezza con un basso consumo energetico.
  • Automazione industriale: implementa il controllo qualità e il rilevamento dei difetti direttamente sui dispositivi embedded.
  • Analisi per il commercio al dettaglio: monitora in tempo reale il comportamento dei clienti e la gestione dell'inventario senza dipendere dal cloud.
  • Agricoltura intelligente: monitora lo stato di salute delle colture e rileva i parassiti usando la computer vision in agricoltura.
  • Robotica autonoma: abilita la navigazione basata sulla visione e il rilevamento degli ostacoli su piattaforme con risorse limitate.

Benchmark#

I benchmark di YOLO26 riportati di seguito sono stati eseguiti dal team Ultralytics su Radxa Rock 5B, basato su Rockchip RK3588, utilizzando il formato del modello rknn per misurare velocità e accuratezza.

Prestazioni
ModelloFormatoPrecisionStatoDimensioni (MB)mAP50-95(B)Tempo di inferenza (ms/im)
YOLO26nrknnFP167.20.47758.5
YOLO26nrknnINT84.10.46341.2
YOLO26srknnFP1621.00.56993.8
YOLO26srknnINT812.00.55461.9
YOLO26mrknnFP1643.00.608226.3
YOLO26mrknnINT822.00.603122.0
YOLO26lrknnFP1653.00.628264.7
YOLO26lrknnINT828.00.617145.3
YOLO26xrknnFP16113.00.664655.4
YOLO26xrknnINT858.00.649287.4

Testato con ultralytics 8.4.60

Nota

La convalida dei benchmark di cui sopra è stata effettuata utilizzando il dataset COCO128. Il tempo di inferenza non include la fase di pre-elaborazione o post-elaborazione.

In questa guida hai imparato a esportare i modelli Ultralytics YOLO26 nel formato RKNN per migliorarne l'implementazione sulle piattaforme Rockchip. Hai inoltre conosciuto RKNN Toolkit e i vantaggi specifici dell'utilizzo dei modelli RKNN per le applicazioni di edge AI.

La combinazione di Ultralytics YOLO26 e della tecnologia NPU di Rockchip offre una soluzione efficiente per eseguire attività avanzate di computer vision sui dispositivi embedded. Questo approccio consente il rilevamento degli oggetti in tempo reale e altre applicazioni di AI per la visione, con un consumo energetico minimo e prestazioni elevate.

Per ulteriori dettagli sull'utilizzo, consulta la documentazione ufficiale di RKNN.

Inoltre, se vuoi saperne di più sulle altre integrazioni di Ultralytics YOLO26, visita la nostra pagina della guida alle integrazioni. Troverai numerose risorse e informazioni utili.

FAQ#

  • Puoi esportare facilmente il tuo modello Ultralytics YOLO nel formato RKNN utilizzando il metodo export() nel pacchetto Ultralytics Python o tramite l'interfaccia della riga di comando (CLI). Assicurati di utilizzare un PC Linux basato su x86 per il processo di esportazione, poiché i dispositivi ARM64 come quelli Rockchip non sono supportati per questa operazione. Puoi specificare la piattaforma Rockchip target usando l'argomento name, ad esempio rk3588, rk3566 o altri. Questo processo genera un modello RKNN ottimizzato e pronto per l'implementazione sul tuo dispositivo Rockchip, sfruttandone l'unità di elaborazione neurale (NPU) per accelerare l'inferenza.

    Esempio
    from ultralytics import YOLO
    
    # Load your YOLO model
    model = YOLO("yolo26n.pt")
    
    # Export to RKNN format for a specific Rockchip platform
    model.export(format="rknn", name="rk3588")
  • I modelli RKNN sono progettati specificamente per sfruttare le capacità di accelerazione hardware delle unità di elaborazione neurale (NPUs) di Rockchip. Questa ottimizzazione consente velocità di inferenza significativamente superiori e una latenza ridotta rispetto all'esecuzione di formati di modello generici come ONNX o LiteRT sullo stesso hardware. L'utilizzo dei modelli RKNN permette di usare più efficientemente le risorse del dispositivo, con conseguente riduzione del consumo energetico e migliori prestazioni complessive, aspetti particolarmente importanti per le applicazioni in tempo reale sui dispositivi edge. Convertendo i tuoi modelli Ultralytics YOLO in RKNN, puoi ottenere prestazioni ottimali sui dispositivi basati su SoCs Rockchip come RK3588, RK3566 e altri.

  • I modelli RKNN sono ottimizzati specificamente per le piattaforme Rockchip e le relative NPU integrate. Sebbene sia tecnicamente possibile eseguire un modello RKNN su altre piattaforme tramite emulazione software, non potrai beneficiare dell'accelerazione hardware fornita dai dispositivi Rockchip. Per ottenere prestazioni ottimali su altre piattaforme, è consigliabile esportare i tuoi modelli Ultralytics YOLO in formati progettati specificamente per tali piattaforme, come TensorRT per le GPU NVIDIA o Edge TPU per i dispositivi Coral di Google. Ultralytics supporta l'esportazione in un'ampia gamma di formati, garantendo la compatibilità con diversi acceleratori hardware.

  • L'esportazione di Ultralytics YOLO nel formato RKNN supporta le piattaforme Rockchip con compilazioni RKNN in virgola mobile, tra cui RK3588, RK3576, RK3566, RK3568, RK3562, RK2118 e RV1126B. Supporta inoltre l'esportazione RKNN quantizzata INT8 con quantize=8, necessaria per i target che supportano solo INT8, come RV1103, RV1106, RV1103B e RV1106B. Queste piattaforme sono comunemente presenti nei dispositivi di produttori come Radxa, ASUS, Pine64, Orange Pi, Odroid, Khadas e Banana Pi, consentendoti di implementare i tuoi modelli RKNN ottimizzati su un'ampia gamma di dispositivi basati su Rockchip, dai computer a scheda singola ai sistemi industriali.

  • I modelli RKNN generalmente superano altri formati come ONNX o LiteRT sui dispositivi Rockchip grazie alla loro ottimizzazione per le NPU Rockchip. Ad esempio, i benchmark su Radxa Rock 5B (RK3588) mostrano che YOLO26n in formato RKNN raggiunge un tempo di inferenza di 58,5 ms/immagine in FP16 e 41,2 ms/immagine in INT8, risultando significativamente più veloce rispetto ad altri formati. Questo vantaggio prestazionale è coerente tra le diverse dimensioni dei modelli YOLO26, come dimostrato nella sezione sui benchmark. Sfruttando l'hardware NPU dedicato, i modelli RKNN riducono al minimo la latenza e massimizzano il throughput, risultando ideali per le applicazioni in tempo reale sui dispositivi edge basati su Rockchip.

Commenti