Ultralytics YOLO27:
Get Started

Esportazione RKNN per Rockchip dei modelli Ultralytics YOLO26#

Quando distribuisci modelli di visione artificiale su dispositivi embedded, soprattutto quelli basati su processori Rockchip, è essenziale disporre di un formato di modello compatibile. Esportare i modelli Ultralytics YOLO26 in formato RKNN garantisce prestazioni ottimizzate e compatibilità con l'hardware Rockchip. Questa guida illustra come convertire i modelli YOLO26 in formato RKNN, comprese le esportazioni in virgola mobile e quantizzate INT8, per consentire una distribuzione 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. Si prevede che funzioni anche su altri dispositivi basati su Rockchip che supportano rknn-toolkit2, come RK3576, RK3568, RK3562, RK2118, RV1126B, RV1103, RV1106, RV1103B e RV1106B. I dispositivi che supportano solo INT8, come RV1103 e RV1106, richiedono quantize=8.

Che cos'è Rockchip?#

Nota per la realizzazione di soluzioni versatili ed efficienti dal punto di vista energetico, Rockchip progetta System-on-Chips (SoC) avanzati che alimentano un'ampia gamma di dispositivi elettronici di consumo, applicazioni industriali e tecnologie IA. Grazie all'architettura basata su ARM, alle Neural Processing Units (NPU) integrate e al supporto multimediale ad alta risoluzione, i SoC Rockchip offrono prestazioni all'avanguardia per dispositivi come tablet, smart TV, sistemi IoT e applicazioni di IA edge. Aziende come Radxa, ASUS, Pine64, Orange Pi, Odroid, Khadas e Banana Pi offrono una varietà di prodotti basati sui SoC Rockchip, ampliandone ulteriormente la diffusione e l'impatto in diversi mercati.

RKNN Toolkit#

RKNN Toolkit è un insieme di strumenti e librerie forniti da Rockchip per facilitare la distribuzione di modelli di deep learning sulle proprie piattaforme hardware. RKNN, ovvero Rockchip Neural Network, è il formato proprietario utilizzato da questi strumenti. I modelli RKNN sono progettati per sfruttare appieno l'accelerazione hardware offerta dalla NPU (Neural Processing Unit) di Rockchip, garantendo prestazioni elevate nelle attività di IA 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 la distribuzione sulle piattaforme Rockchip:

  • Ottimizzazione 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 di inferenza, un aspetto fondamentale per le applicazioni in tempo reale sui dispositivi edge.
  • Personalizzazione specifica per piattaforma: i modelli RKNN possono essere adattati a specifiche piattaforme Rockchip, consentendo un migliore utilizzo delle risorse hardware.
  • Efficienza energetica: grazie all'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.

Installare il sistema operativo sull'hardware Rockchip#

Il primo passo dopo aver ricevuto un dispositivo basato su Rockchip è installare un sistema operativo, in modo che l'hardware possa avviarsi in un ambiente funzionante. In questa guida rimandiamo 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✅✅✅
Stima della posa✅✅✅
OBB✅✅✅

Esportazione in RKNN: conversione del tuo 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 necessari, esegui:

Installazione
# Install the required package for YOLO26
pip install ultralytics

Per istruzioni dettagliate e best practice sulla procedura 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 FP16 è supportata per tutte le attività. Attualmente, l'esportazione INT8 è supportata solo per i modelli di rilevamento; in futuro sarà supportata per altre attività. Di conseguenza, i target che supportano solo INT8, come RV1103 e RV1106, consentono di esportare solo modelli di rilevamento.

Il formato RKNN supporta le modalità Esporta, Prevedi e Convalida. 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 la precisione. 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; l'impostazione predefinita FP16 non richiede FP32.

Esporta
from ultralytics import YOLO

# Carica un modello YOLO26 (sostituiscilo con un modello di qualsiasi attività supportata)
model = YOLO("yolo26n-obb.pt")

# Esporta il modello nel formato RKNN
model.export(format="rknn", name="rk3588")  # creates 'yolo26n-obb_rknn_model'

# Esporta un modello RKNN quantizzato INT8 con dati di calibrazione (solo modelli di rilevamento)
model = YOLO("yolo26n.pt")
model.export(format="rknn", name="rk3588", quantize=8, data="coco8.yaml")  # creates 'yolo26n_rknn_model'
Predici
from ultralytics import YOLO

# Carica il modello RKNN esportato
model = YOLO("./yolo26n-obb_rknn_model")

# Esegui l'inferenza
results = model("https://ultralytics.com/images/boats.jpg")
Convalida
from ultralytics import YOLO

# Carica il modello RKNN esportato
model = YOLO("./yolo26n-obb_rknn_model")

# Convalida la precisione sul dataset DOTA8
metrics = model.val(data="dota8.yaml")

Argomenti di esportazione#

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

Assicurati di utilizzare una macchina Linux x86 quando esporti in RKNN.

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

Distribuzione dei modelli YOLO26 RKNN esportati#

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

Installazione#

Per installare i pacchetti necessari, 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 indicato nella sezione Utilizzo qui sopra: il modello esportato _rknn_model si carica direttamente con YOLO(...).

Nota

Se nei log compare un messaggio che indica una mancata corrispondenza tra la versione del runtime RKNN e quella di RKNN Toolkit e l'inferenza non riesce, sostituisci /usr/lib/librknnrt.so con il file ufficiale librknnrt.so.

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: distribuisci sistemi efficienti di rilevamento degli oggetti per il monitoraggio della sicurezza con consumi energetici ridotti.
  • 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 delle scorte, senza dipendere dal cloud.
  • Agricoltura intelligente: monitora la salute delle colture e rileva i parassiti usando la visione artificiale 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 qui sotto sono stati eseguiti dal team Ultralytics su Radxa Rock 5B, basato su Rockchip RK3588, usando il formato modello rknn per misurare velocità e precisione.

Prestazioni
ModelloFormatoPrecisioneStatoDimensione (MB)mAP50-95(B)Tempo di inferenza (ms/im)
YOLO26nrknnFP16✅7.20.47758.5
YOLO26nrknnINT8✅4.10.46341.2
YOLO26srknnFP16✅21.00.56993.8
YOLO26srknnINT8✅12.00.55461.9
YOLO26mrknnFP16✅43.00.608226.3
YOLO26mrknnINT8✅22.00.603122.0
YOLO26lrknnFP16✅53.00.628264.7
YOLO26lrknnINT8✅28.00.617145.3
YOLO26xrknnFP16✅113.00.664655.4
YOLO26xrknnINT8✅58.00.649287.4

Testato con ultralytics 8.4.60

Nota

La convalida dei benchmark qui sopra è stata eseguita usando il dataset COCO128. Il tempo di inferenza non include la pre-elaborazione né la post-elaborazione.

Riepilogo#

In questa guida hai imparato a esportare i modelli Ultralytics YOLO26 nel formato RKNN per migliorarne la distribuzione sulle piattaforme Rockchip. Hai anche conosciuto RKNN Toolkit e i vantaggi specifici dell'uso dei modelli RKNN per le applicazioni di IA edge.

La combinazione tra Ultralytics YOLO26 e la tecnologia NPU di Rockchip offre una soluzione efficiente per eseguire attività avanzate di visione artificiale su dispositivi embedded. Questo approccio consente il rilevamento degli oggetti in tempo reale e altre applicazioni di IA visiva, con consumi energetici minimi e prestazioni elevate.

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

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

Domande frequenti#

  • Puoi esportare facilmente il tuo modello Ultralytics YOLO nel formato RKNN usando il metodo export() del pacchetto Python Ultralytics oppure l'interfaccia a riga di comando (CLI). Assicurati di utilizzare un PC Linux basato su x86 per il processo di esportazione, poiché questa operazione non è supportata su dispositivi ARM64 come quelli Rockchip. Puoi specificare la piattaforma Rockchip di destinazione usando l'argomento name, ad esempio rk3588, rk3566 o altri. Questo processo genera un modello RKNN ottimizzato, pronto per la distribuzione sul tuo dispositivo Rockchip e in grado di sfruttarne la Neural Processing Unit (NPU) per accelerare l'inferenza.

    Esempio
    from ultralytics import YOLO
    
    # Carica il tuo modello YOLO
    model = YOLO("yolo26n.pt")
    
    # Esporta nel formato RKNN per una piattaforma Rockchip specifica
    model.export(format="rknn", name="rk3588")
  • I modelli RKNN sono progettati specificamente per sfruttare le capacità di accelerazione hardware delle Neural Processing Units (NPU) di Rockchip. Questa ottimizzazione consente velocità di inferenza nettamente superiori e una latenza ridotta rispetto all'esecuzione sullo stesso hardware di formati generici come ONNX o LiteRT. L'uso dei modelli RKNN permette di sfruttare le risorse del dispositivo in modo più efficiente, riducendo i consumi energetici e migliorando le prestazioni complessive: un aspetto particolarmente importante 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 SoC 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 sfruttare l'accelerazione hardware offerta dai dispositivi Rockchip. Per ottenere prestazioni ottimali su altre piattaforme, si consiglia di esportare i modelli Ultralytics YOLO in formati progettati appositamente per quelle 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 dei modelli 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 anche l'esportazione RKNN quantizzata INT8 con quantize=8, necessaria per i target che supportano solo INT8, come RV1103, RV1106, RV1103B e RV1106B. Queste piattaforme si trovano comunemente nei dispositivi di produttori come Radxa, ASUS, Pine64, Orange Pi, Odroid, Khadas e Banana Pi, permettendoti di distribuire i tuoi modelli RKNN ottimizzati su una vasta gamma di dispositivi basati su Rockchip, dai computer a scheda singola ai sistemi industriali.

  • I modelli RKNN generalmente offrono prestazioni migliori rispetto ad altri formati, come ONNX o LiteRT, sui dispositivi Rockchip, perché sono ottimizzati 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 nettamente più veloce rispetto ad altri formati. Questo vantaggio prestazionale si mantiene con diverse dimensioni dei modelli YOLO26, come dimostrato nella sezione dedicata ai 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