Guida rapida: Raspberry Pi con Ultralytics YOLO26#
Raspberry Pi è un computer piccolo ed economico che esegue Ultralytics YOLO26 per la rilevazione degli oggetti in tempo reale all'edge, senza bisogno di una GPU. Questa guida ti accompagna nella distribuzione di YOLO26 su Raspberry Pi 4 e 5: dalla scrittura del sistema operativo all'installazione di Ultralytics, dall'esportazione in NCNN per ottenere la massima velocità di inferenza su ARM, fino all'esecuzione delle predizioni su un flusso video della fotocamera in diretta. Include anche benchmark delle prestazioni su otto formati di esportazione, così puoi scegliere il compromesso migliore tra velocità e accuratezza per il tuo hardware.
Vai direttamente a configurazione di Ultralytics, esportazione in NCNN ed esecuzione dell'inferenza, benchmark o inferenza con la fotocamera.
Watch: Raspberry Pi 5 updates and improvements.
Questa guida è stata testata con Raspberry Pi 4 e Raspberry Pi 5 che eseguono l'ultima versione di Raspberry Pi OS Bookworm (Debian 12). L'utilizzo di questa guida con dispositivi Raspberry Pi meno recenti, come Raspberry Pi 3, dovrebbe funzionare purché sia installato lo stesso Raspberry Pi OS Bookworm.
Che cos'è Raspberry Pi?#
Raspberry Pi è un computer a scheda singola piccolo ed economico. È diventato popolare per un'ampia gamma di progetti e applicazioni, dalla domotica amatoriale agli impieghi industriali. Le schede Raspberry Pi sono in grado di eseguire diversi sistemi operativi e offrono pin GPIO (input/output per uso generico), che consentono una facile integrazione con sensori, attuatori e altri componenti hardware. Sono disponibili in modelli diversi con specifiche differenti, 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 CPU | 1.4GHz | 1.8GHz | 2.4GHz |
| GPU | Videocore IV | Videocore VI | VideoCore VII |
| Frequenza massima GPU | 400Mhz | 500Mhz | 800Mhz |
| Memoria | SDRAM LPDDR2 da 1 GB | SDRAM LPDDR4-3200 da 1 GB, 2 GB, 4 GB, 8 GB | SDRAM LPDDR4X-4267 da 4 GB, 8 GB |
| PCIe | N/D | N/D | Interfaccia PCIe 2.0 1x |
| Consumo energetico massimo | 2,5 A@5 V | 3 A@5 V | 5 A@5 V (PD abilitato) |
Che cos'è Raspberry Pi OS?#
Raspberry Pi OS (precedentemente noto come Raspbian) è un sistema operativo simile a Unix basato sulla distribuzione Debian GNU/Linux 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 LXDE modificato con il window manager a finestre sovrapposte Openbox. Raspberry Pi OS è in continuo sviluppo, con particolare attenzione al miglioramento della stabilità e delle prestazioni del maggior numero possibile di pacchetti Debian su Raspberry Pi.
Scrivere Raspberry Pi OS su Raspberry Pi#
La prima cosa da fare dopo aver acquistato un Raspberry Pi è scrivere Raspberry Pi OS su una scheda micro-SD, inserirla nel dispositivo e avviare il sistema operativo. Segui la documentazione introduttiva dettagliata 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 è eseguirlo con 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 Docker arm64v8/ubuntu, che esegue Ubuntu 24.04 in un ambiente Python3.
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 a esportare il tuo modello in NCNN.
Inizia senza Docker#
Installare il pacchetto Ultralytics#
Qui installeremo il pacchetto Ultralytics su Raspberry Pi. Le dipendenze per l'esportazione in formati come NCNN vengono installate automaticamente la prima volta che esporti un modello PyTorch, quindi qui è necessario solo il pacchetto di base.
-
Aggiornare l'elenco dei pacchetti, installare pip e aggiornarlo all'ultima versione
sudo apt update sudo apt install python3-pip -y pip install -U pip -
Installare il pacchetto pip
ultralyticspip install ultralytics -
Riavviare 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 piattaforme mobili/embedded come l'architettura ARM. Converti il tuo modello YOLO26n PyTorch in NCNN, quindi esegui l'inferenza con il modello esportato:
from ultralytics import YOLO
# Load a YOLO26n PyTorch 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")Per ulteriori 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 raggiunge un aumento di circa ~15% degli FPS (6.79 → 7.79) offrendo al contempo un mAP più elevato (40.1 contro 39.5) con immagini di input da 640 e modelli esportati in ONNX su Raspberry Pi 5. La tabella e il grafico seguenti mostrano 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 |
Benchmark 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 diversi formati di modello, misurando velocità e accuratezza: PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch, LiteRT. I benchmark sono stati eseguiti su un Raspberry Pi 5 con precisione FP32 e dimensione predefinita dell'immagine di input pari a 640.
Grafico di confronto#
Abbiamo incluso i benchmark solo per i modelli YOLO26n e YOLO26s, perché le altre dimensioni dei modelli sono troppo grandi per essere eseguite sui Raspberry Pi e non offrono prestazioni adeguate.
Tabella di confronto dettagliata#
La tabella seguente rappresenta i risultati dei benchmark per due modelli diversi (YOLO26n, YOLO26s) su otto formati diversi (PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch, LiteRT), eseguiti su un Raspberry Pi 5, e riporta stato, dimensione, metrica mAP50-95(B) e tempo di inferenza per ogni combinazione.
| Formato | Stato | Dimensione 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 |
| MNN | ✅ | 9.4 | 0.4749 | 91.87 |
| NCNN | ✅ | 9.4 | 0.4784 | 67.03 |
| ExecuTorch | ✅ | 9.4 | 0.4772 | 144.83 |
| LiteRT | ✅ | 9.8 | 0.4730 | 123.30 |
Benchmark eseguiti con Ultralytics 8.4.108
Il tempo di inferenza non include la pre-elaborazione e la post-elaborazione.
Riproduci i nostri risultati#
Per riprodurre i benchmark Ultralytics precedenti su tutti i formati di esportazione, esegui questo codice:
from ultralytics import YOLO
# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")
# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)Tieni presente che i risultati dei benchmark possono variare in base alla configurazione hardware e software esatta di un sistema, nonché al carico di lavoro del sistema nel momento in cui vengono eseguiti i benchmark. Per ottenere i risultati più affidabili, usa un dataset con un numero elevato di immagini, ad esempio data='coco.yaml' (5000 immagini di validazione).
litert-converter non include alcun wheel Linux aarch64, quindi l'esportazione format=litert è supportata solo su Linux x86_64 e macOS, non direttamente su Raspberry Pi. Esporta il modello .tflite su una macchina Linux x86_64 o su un Mac, copialo su Raspberry Pi e usa il Pi per l'inferenza.
Usa la fotocamera di 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 consente di collegare i moduli fotocamera ufficiali Raspberry Pi. In questa guida abbiamo usato un Raspberry Pi Camera Module 3 per acquisire i flussi video ed eseguire l'inferenza usando i modelli YOLO26.
Raspberry Pi 5 usa connettori CSI più piccoli rispetto a Raspberry Pi 4 (15 pin contro 22 pin), quindi ti servirà un cavo adattatore da 15 pin a 22 pin per collegare una fotocamera Raspberry Pi.
Testa la fotocamera#
Esegui il comando seguente dopo aver collegato la fotocamera a Raspberry Pi. Dovresti vedere un flusso video in diretta dalla fotocamera per circa 5 secondi.
rpicam-helloScopri di più sull'utilizzo di rpicam-hello nella documentazione ufficiale di Raspberry Pi
Inferenza con la fotocamera#
Esistono due metodi per usare la fotocamera Raspberry Pi per 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
# Initialize the 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()
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
while True:
# Capture frame-by-frame
frame = picam2.capture_array()
# Run YOLO26 inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the resulting frame
cv2.imshow("Camera", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) == ord("q"):
break
# Release resources and close windows
cv2.destroyAllWindows()Consulta il documento sulle sorgenti di inferenza se vuoi cambiare il tipo di input immagine/video
Best practice per l'utilizzo di Raspberry Pi#
Per ottenere le massime prestazioni sui Raspberry Pi che eseguono YOLO26, ci sono alcune best practice da seguire.
-
Usa un SSD
Quando usi Raspberry Pi in modo continuativo 24 ore su 24, 7 giorni su 7, è consigliabile 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 il NVMe Base for Raspberry Pi 5.
-
Scrivi l'immagine senza interfaccia grafica
Quando scrivi Raspberry Pi OS, puoi scegliere di non installare l'ambiente desktop (Raspberry Pi OS Lite), risparmiando così una parte della RAM del dispositivo e lasciando più spazio all'elaborazione di visione artificiale.
-
Overclocca Raspberry Pi
Se vuoi un piccolo incremento delle prestazioni durante l'esecuzione dei modelli di Ultralytics YOLO26 su Raspberry Pi 5, puoi effettuare l'overclock della CPU dalla frequenza base di 2.4GHz a 3.0GHz e della GPU da 800MHz a 1GHz. Se il sistema diventa instabile o si blocca, riduci i valori di overclock con incrementi di 100MHz. Assicurati di disporre di un raffreddamento adeguato, poiché l'overclock aumenta la generazione di calore e potrebbe portare al 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, quindi premi INVIO
e. Riavvia Raspberry Pi
Passaggi successivi#
Hai configurato correttamente YOLO26 sul tuo Raspberry Pi. Per approfondire, esplora la modalità Predict per ulteriori opzioni di inferenza, la modalità Export per altri formati di distribuzione oppure la guida NVIDIA Jetson se ti serve maggiore potenza di calcolo all'edge. Per la documentazione completa, visita la documentazione di Ultralytics YOLO26.
Ringraziamenti e citazioni#
Questa guida è stata inizialmente creata da Daan Eeltink per Kashmir World Foundation, un'organizzazione dedicata all'uso di YOLO per la conservazione delle specie a rischio di estinzione. Riconosciamo il loro lavoro pionieristico e il loro impegno educativo nel campo delle tecnologie di rilevazione degli oggetti.
Per ulteriori informazioni sulle attività di Kashmir World Foundation, puoi visitare il loro sito web.
FAQ#
Per configurare Ultralytics YOLO26 su un 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 Avvio senza Docker.
- Aggiorna l'elenco dei pacchetti e installa
Il formato NCNN di Ultralytics YOLO26 è altamente ottimizzato per le piattaforme mobili ed embedded, il che lo rende ideale per eseguire attività di intelligenza artificiale sui dispositivi Raspberry Pi. NCNN massimizza le prestazioni dell'inferenza sfruttando l'architettura ARM e offre un'elaborazione più rapida ed efficiente rispetto ad altri formati. Per ulteriori dettagli sui formati di esportazione supportati, consulta le opzioni di esportazione del modello.
Puoi convertire un modello YOLO26 PyTorch nel formato NCNN usando Python oppure i comandi CLI:
Esempiofrom ultralytics import YOLO # Load a YOLO26n PyTorch 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")Per ulteriori dettagli, consulta la sezione Usare NCNN su Raspberry Pi.
Le differenze principali includono:
- CPU: Raspberry Pi 4 utilizza il SoC Broadcom BCM2711, Cortex-A72 a 64 bit, mentre Raspberry Pi 5 utilizza 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 8GB di SDRAM LPDDR4-3200, mentre Raspberry Pi 5 dispone di SDRAM LPDDR4X-4267, disponibile nelle varianti da 4GB e 8GB.
Questi miglioramenti contribuiscono a ottenere benchmark delle prestazioni migliori per i modelli YOLO26 su Raspberry Pi 5 rispetto a Raspberry Pi 4. Per ulteriori dettagli, consulta la tabella Confronto tra le serie Raspberry Pi.
Esistono due metodi per configurare una fotocamera Raspberry Pi per l'inferenza di 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.
-