Guida rapida: Raspberry Pi con Ultralytics YOLO26#
Raspberry Pi è un computer piccolo e conveniente che esegue Ultralytics YOLO26 per il rilevamento di oggetti in tempo reale all'edge, senza bisogno di GPU. Questa guida ti accompagna nella distribuzione di YOLO26 su Raspberry Pi 4 e 5: installazione del sistema operativo, installazione di Ultralytics, esportazione in NCNN per ottenere l'inferenza più veloce su ARM ed esecuzione di predizioni con il flusso della videocamera in diretta. Include anche benchmark delle prestazioni per otto formati di esportazione, così puoi scegliere il compromesso ideale tra velocità e accuratezza per il tuo hardware.
Vai a configurare Ultralytics, esportare in NCNN ed eseguire l'inferenza, consultare i benchmark o eseguire l'inferenza dalla videocamera.
Guarda: Aggiornamenti e miglioramenti per Raspberry Pi 5.
Questa guida è stata testata con Raspberry Pi 4 e Raspberry Pi 5 con l'ultima versione di Raspberry Pi OS Bookworm (Debian 12). La guida dovrebbe funzionare anche sui dispositivi Raspberry Pi meno recenti, come Raspberry Pi 3, purché sia installata la stessa versione di Raspberry Pi OS Bookworm.
Che cos'è Raspberry Pi?#
Raspberry Pi è un computer a scheda singola, piccolo e conveniente. È diventato popolare per un'ampia gamma di progetti e applicazioni, dalla domotica fai-da-te agli usi industriali. Le schede Raspberry Pi possono eseguire diversi sistemi operativi e dispongono di pin GPIO (ingresso/uscita per uso generico), che consentono una facile integrazione con sensori, attuatori e altri componenti hardware. Sono disponibili in vari modelli con specifiche diverse, ma condividono tutti la stessa filosofia di base: essere economici, compatti e versatili.
Confronto tra le serie Raspberry Pi#
| Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
|---|---|---|---|
| CPU | SoC Broadcom BCM2837, Cortex-A53 a 64 bit | SoC Broadcom BCM2711, Cortex-A72 a 64 bit | SoC Broadcom BCM2712, Cortex-A76 a 64 bit |
| Frequenza massima della CPU | 1.4GHz | 1.8GHz | 2.4GHz |
| GPU | VideoCore IV | VideoCore VI | VideoCore VII |
| Frequenza massima della GPU | 400MHz | 500MHz | 800MHz |
| Memoria | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 2GB, 4GB, 8GB, 16GB LPDDR4X-4267 SDRAM |
| PCIe | N/D | N/D | Interfaccia PCIe 2.0 1x |
| Consumo massimo | 2.5A@5V | 3A@5V | 5A@5V (PD abilitato) |
Che cos'è Raspberry Pi OS?#
Raspberry Pi OS (precedentemente noto come Raspbian) è un sistema operativo simile a Unix basato sulla distribuzione GNU/Linux Debian per la famiglia Raspberry Pi di computer compatti a scheda singola distribuiti dalla Raspberry Pi Foundation. Raspberry Pi OS è altamente ottimizzato per Raspberry Pi con CPU ARM e utilizza un ambiente desktop leggero che, per impostazione predefinita, gira su Wayland su Raspberry Pi 4 e 5. Raspberry Pi OS è in costante sviluppo, con l'obiettivo di migliorare la stabilità e le prestazioni del maggior numero possibile di pacchetti Debian su Raspberry Pi.
Installa Raspberry Pi OS su Raspberry Pi#
La prima cosa da fare dopo aver messo le mani su un Raspberry Pi è installare Raspberry Pi OS su una scheda micro-SD, inserirla nel dispositivo e avviare il sistema operativo. Segui le istruzioni dettagliate della documentazione introduttiva di Raspberry Pi per preparare il dispositivo al primo utilizzo.
Configura Ultralytics#
Puoi configurare il pacchetto Ultralytics su Raspberry Pi in due modi per il tuo prossimo progetto di visione artificiale:
Inizia con Docker#
Il modo più rapido per iniziare a usare Ultralytics YOLO26 su Raspberry Pi è eseguire un'immagine Docker precompilata per Raspberry Pi.
Esegui il comando seguente per scaricare il container Docker ed eseguirlo su Raspberry Pi. Si basa sull'immagine ufficiale Python 3.13-slim-trixie, che esegue Debian 13 con Python 3.13.
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $tL'immagine Docker include già Ultralytics, quindi puoi passare direttamente all'esportazione del tuo modello in NCNN.
Inizia senza Docker#
Installa il pacchetto Ultralytics#
Qui installeremo il pacchetto Ultralytics su Raspberry Pi. Le dipendenze di esportazione per formati come NCNN vengono installate automaticamente la prima volta che esporti un modello PyTorch, quindi qui è sufficiente il pacchetto di base.
-
Aggiorna l'elenco dei pacchetti, installa pip e aggiorna pip all'ultima versione
sudo apt update sudo apt install python3-pip -y pip install -U pip -
Installa il pacchetto pip
ultralyticspip install ultralytics -
Riavvia il dispositivo
sudo reboot
Usa NCNN su Raspberry Pi#
Tra tutti i formati di esportazione dei modelli supportati da Ultralytics, NCNN offre le migliori prestazioni di inferenza sui dispositivi Raspberry Pi, perché è altamente ottimizzato per le piattaforme mobili e integrate, come quelle basate sull'architettura ARM. Converti il tuo modello YOLO26n PyTorch in NCNN, quindi esegui l'inferenza con il modello esportato:
from ultralytics import YOLO
# Carica un modello YOLO26n PyTorch
model = YOLO("yolo26n.pt")
# Esporta il modello nel formato NCNN
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'
# Carica il modello esportato in NCNN
ncnn_model = YOLO("yolo26n_ncnn_model")
# Esegui l'inferenza
results = ncnn_model("https://ultralytics.com/images/bus.jpg")Per maggiori dettagli sulle opzioni di esportazione supportate, consulta la guida alle opzioni di distribuzione dei modelli.
Miglioramenti delle prestazioni di YOLO26 rispetto a YOLO11#
YOLO26 è progettato specificamente per funzionare su dispositivi con risorse hardware limitate, come Raspberry Pi 5. Rispetto a YOLO11n, YOLO26n aumenta gli FPS di circa il 15% (6.79 → 7.79) e offre al contempo un mAP più elevato (40.1 contro 39.5), con una dimensione di input di 640 e modelli esportati in ONNX su Raspberry Pi 5. La tabella e il grafico seguenti illustrano questo confronto.
| Modello | mAP50-95(B) | Tempo di inferenza (ms/im) |
|---|---|---|
| YOLO26n | 40.1 | 128.42 |
| YOLO26s | 47.8 | 352.84 |
| YOLO26m | 52.5 | 993.78 |
| YOLO26l | 54.4 | 1259.46 |
| YOLO26x | 56.9 | 2636.26 |
Test eseguiti con Ultralytics 8.4.14.
Benchmark di YOLO26 su Raspberry Pi 5#
I benchmark di YOLO26 sono stati eseguiti dal team Ultralytics su otto formati di modello diversi, misurando la velocità e la precisione: PyTorch, TorchScript, ONNX, OpenVINO, LiteRT, MNN, NCNN, ExecuTorch. I benchmark sono stati eseguiti su Raspberry Pi 5 con precisione FP32 e una dimensione predefinita dell'immagine di input pari a 640.
Grafico di confronto#
Abbiamo incluso solo i benchmark dei modelli YOLO26n e YOLO26s, perché gli altri modelli sono troppo grandi per essere eseguiti sui Raspberry Pi e non offrono prestazioni adeguate.
Tabella di confronto dettagliata#
La tabella seguente mostra i risultati dei benchmark per due modelli diversi (YOLO26n, YOLO26s) in otto formati diversi (PyTorch, TorchScript, ONNX, OpenVINO, LiteRT, MNN, NCNN, ExecuTorch), eseguiti su Raspberry Pi 5. Per ogni combinazione sono riportati lo stato, le dimensioni, la metrica mAP50-95(B) e il tempo di inferenza.
| Formato | Stato | Dimensioni su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4760 | 299.09 |
| TorchScript | ✅ | 9.8 | 0.4734 | 353.20 |
| ONNX | ✅ | 9.5 | 0.4734 | 125.99 |
| OpenVINO | ✅ | 9.6 | 0.4734 | 104.55 |
| LiteRT | ✅ | 9.8 | 0.4730 | 123.30 |
| MNN | ✅ | 9.4 | 0.4749 | 91.87 |
| NCNN | ✅ | 9.4 | 0.4784 | 67.03 |
| ExecuTorch | ✅ | 9.4 | 0.4772 | 144.83 |
Test eseguiti con Ultralytics 8.4.108
Il tempo di inferenza non include la pre/post-elaborazione.
Riproduci i nostri risultati#
Per riprodurre i benchmark Ultralytics precedenti in tutti i formati di esportazione, esegui questo codice:
from ultralytics import YOLO
# Carica un modello YOLO26n PyTorch
model = YOLO("yolo26n.pt")
# Esegui il benchmark di velocità e accuratezza di YOLO26n sul dataset COCO128 per tutti i formati di esportazione
results = model.benchmark(data="coco128.yaml", imgsz=640)I risultati dei benchmark possono variare in base alla configurazione hardware e software esatta del sistema e al carico di lavoro del sistema al momento dell'esecuzione dei benchmark. Per ottenere risultati più affidabili, usa un dataset con un numero elevato di immagini, ad es. data='coco.yaml' (5000 immagini di convalida).
L'esportazione format=litert (tramite litert-torch) è supportata solo su Linux x86_64 e macOS, non direttamente su Raspberry Pi. Esporta il modello .tflite su un computer Linux x86_64 o un Mac, copialo su Raspberry Pi e usa il Pi per l'inferenza.
Usa la fotocamera Raspberry Pi#
Quando usi Raspberry Pi per progetti di visione artificiale, può essere essenziale acquisire flussi video in tempo reale per eseguire l'inferenza. Il connettore MIPI CSI integrato in Raspberry Pi permette di collegare i moduli fotocamera ufficiali Raspberry Pi. In questa guida abbiamo usato un modulo fotocamera Raspberry Pi 3 per acquisire i flussi video ed eseguire l'inferenza con i modelli YOLO26.
Raspberry Pi 5 usa connettori CSI più piccoli rispetto a Raspberry Pi 4 (22 pin contro 15), quindi per collegare una fotocamera Raspberry Pi ti serve un cavo adattatore da 15 a 22 pin.
Verifica la fotocamera#
Esegui il comando seguente dopo aver collegato la fotocamera a Raspberry Pi. Dovresti vedere il flusso video in diretta della fotocamera per circa 5 secondi.
rpicam-helloScopri di più sull'uso di rpicam-hello nella documentazione ufficiale di Raspberry Pi
Inferenza con la fotocamera#
Esistono due metodi per usare la fotocamera Raspberry Pi ed eseguire l'inferenza sui modelli YOLO26.
Possiamo usare picamera2, preinstallato con Raspberry Pi OS, per accedere alla fotocamera ed eseguire l'inferenza sui modelli YOLO26.
import cv2
from picamera2 import Picamera2
from ultralytics import YOLO
# Inizializza Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()
# Carica il modello YOLO26
model = YOLO("yolo26n.pt")
while True:
# Acquisisci fotogramma per fotogramma
frame = picam2.capture_array()
# Esegui l'inferenza YOLO26 sul fotogramma
results = model(frame)
# Visualizza i risultati sul fotogramma
annotated_frame = results[0].plot()
# Visualizza il fotogramma risultante
cv2.imshow("Camera", annotated_frame)
# Interrompi il ciclo se viene premuto 'q'
if cv2.waitKey(1) == ord("q"):
break
# Rilascia le risorse e chiudi le finestre
cv2.destroyAllWindows()Consulta la documentazione sulle sorgenti di inferenza se vuoi cambiare il tipo di input immagine/video
Procedure consigliate per l'uso di Raspberry Pi#
Per ottenere le massime prestazioni sui Raspberry Pi che eseguono YOLO26, ti consigliamo di seguire alcune buone pratiche.
-
Usa un SSD
Quando usi Raspberry Pi in modo continuativo 24 ore su 24, 7 giorni su 7, ti consigliamo di usare un SSD per il sistema, perché una scheda SD non è in grado di sopportare scritture continue e potrebbe danneggiarsi. Grazie al connettore PCIe integrato in Raspberry Pi 5, ora puoi collegare SSD usando un adattatore come NVMe Base per Raspberry Pi 5.
-
Installa senza interfaccia grafica
Quando installi Raspberry Pi OS, puoi scegliere di non installare l'ambiente desktop (Raspberry Pi OS Lite), risparmiando così un po' di RAM sul dispositivo e lasciando più risorse per l'elaborazione della visione artificiale.
-
Overclock di Raspberry Pi
Se vuoi migliorare leggermente le prestazioni durante l'esecuzione dei modelli Ultralytics YOLO26 su Raspberry Pi 5, puoi aumentare la frequenza della CPU dai 2.4GHz di base a 3.0GHz e quella della GPU da 800MHz a 1GHz. Se il sistema diventa instabile o si blocca, riduci i valori di overclock con incrementi di 100MHz. Assicurati che il raffreddamento sia adeguato, poiché l'overclock aumenta il calore generato e può causare thermal throttling.
a. Aggiorna il software
sudo apt update && sudo apt dist-upgradeb. Apri il file di configurazione per modificarlo
sudo nano /boot/firmware/config.txtc. Aggiungi le righe seguenti in fondo
arm_freq=3000 gpu_freq=1000 force_turbo=1d. Salva ed esci premendo CTRL + X, poi Y e infine INVIO
e. Riavvia Raspberry Pi
Prossimi passaggi#
Hai configurato correttamente YOLO26 su Raspberry Pi. Per approfondire, esplora la modalità Predict per altre opzioni di inferenza, la modalità Export per ulteriori formati di distribuzione oppure la guida a NVIDIA Jetson se hai bisogno di maggiore potenza di calcolo edge. Per consultare la documentazione completa, visita la documentazione di Ultralytics YOLO26.
Ringraziamenti e citazioni#
Questa guida è stata creata inizialmente da Daan Eeltink per Kashmir World Foundation, un'organizzazione impegnata nell'uso di YOLO per la conservazione delle specie in via di estinzione. Riconosciamo il loro lavoro pionieristico e il loro impegno educativo nel campo delle tecnologie di rilevamento degli oggetti.
Per maggiori informazioni sulle attività di Kashmir World Foundation, puoi visitare il loro sito web.
Domande frequenti#
Per configurare Ultralytics YOLO26 su Raspberry Pi senza Docker, segui questi passaggi:
- Aggiorna l'elenco dei pacchetti e installa
pip:sudo apt update sudo apt install python3-pip -y pip install -U pip - Installa il pacchetto Ultralytics:
pip install ultralytics - Riavvia il dispositivo per applicare le modifiche:
sudo reboot
Per istruzioni dettagliate, consulta la sezione Inizia senza Docker.
- Aggiorna l'elenco dei pacchetti e installa
Il formato NCNN di Ultralytics YOLO26 è altamente ottimizzato per le piattaforme mobili e integrate, perciò è ideale per eseguire attività di IA sui dispositivi Raspberry Pi. NCNN massimizza le prestazioni di inferenza sfruttando l'architettura ARM e offre un'elaborazione più rapida ed efficiente rispetto agli altri formati. Per maggiori dettagli sui formati di esportazione supportati, consulta le opzioni di esportazione dei modelli.
Puoi convertire un modello PyTorch YOLO26 nel formato NCNN usando Python o i comandi CLI:
Esempiofrom ultralytics import YOLO # Carica un modello YOLO26n PyTorch model = YOLO("yolo26n.pt") # Esporta il modello nel formato NCNN model.export(format="ncnn") # creates 'yolo26n_ncnn_model' # Carica il modello esportato in NCNN ncnn_model = YOLO("yolo26n_ncnn_model") # Esegui l'inferenza results = ncnn_model("https://ultralytics.com/images/bus.jpg")Per maggiori dettagli, consulta la sezione Usa NCNN su Raspberry Pi.
Le differenze principali includono:
- CPU: Raspberry Pi 4 usa il SoC Broadcom BCM2711 Cortex-A72 a 64 bit, mentre Raspberry Pi 5 usa il SoC Broadcom BCM2712 Cortex-A76 a 64 bit.
- Frequenza massima della CPU: Raspberry Pi 4 ha una frequenza massima di 1.8GHz, mentre Raspberry Pi 5 raggiunge 2.4GHz.
- Memoria: Raspberry Pi 4 offre fino a 8 GB di SDRAM LPDDR4-3200, mentre Raspberry Pi 5 dispone di SDRAM LPDDR4X-4267, disponibile nei tagli da 2 GB, 4 GB, 8 GB e 16 GB.
Questi miglioramenti contribuiscono a ottenere benchmark prestazionali migliori per i modelli YOLO26 su Raspberry Pi 5 rispetto a Raspberry Pi 4. Consulta la tabella Confronto tra le serie Raspberry Pi per maggiori dettagli.
Esistono due metodi per configurare una fotocamera Raspberry Pi per l'inferenza con YOLO26:
-
Usando
picamera2:import cv2 from picamera2 import Picamera2 from ultralytics import YOLO picam2 = Picamera2() picam2.preview_configuration.main.size = (1280, 720) picam2.preview_configuration.main.format = "RGB888" picam2.preview_configuration.align() picam2.configure("preview") picam2.start() model = YOLO("yolo26n.pt") while True: frame = picam2.capture_array() results = model(frame) annotated_frame = results[0].plot() cv2.imshow("Camera", annotated_frame) if cv2.waitKey(1) == ord("q"): break cv2.destroyAllWindows() -
Usando uno stream TCP:
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("tcp://127.0.0.1:8888")
Per istruzioni dettagliate sulla configurazione, visita la sezione Inferenza con fotocamera.
-