Guida rapida: Raspberry Pi con Ultralytics YOLO11
Questa guida completa fornisce una guida dettagliata per l'implementazione di Ultralytics YOLO11 sui dispositivi Raspberry Pi. Inoltre, mostra i benchmark delle prestazioni per dimostrare le capacità di YOLO11 su questi piccoli e potenti dispositivi.
Guarda: Aggiornamenti e miglioramenti del Raspberry Pi 5.
Nota
Questa guida è stata testata con Raspberry Pi 4 e Raspberry Pi 5 con l'ultima versione di Raspberry Pi OS Bookworm (Debian 12). L'utilizzo di questa guida per dispositivi Raspberry Pi più vecchi, come il Raspberry Pi 3, dovrebbe funzionare a condizione che sia installato lo stesso Raspberry Pi OS Bookworm.
Che cos'è Raspberry Pi?
Raspberry Pi è un computer a scheda singola di piccole dimensioni e dal prezzo accessibile. È diventato popolare per un'ampia gamma di progetti e applicazioni, dall'automazione domestica per hobbisti agli usi industriali. Le schede Raspberry Pi sono in grado di eseguire una varietà di sistemi operativi e offrono pin GPIO (General Purpose Input/Output) che consentono una facile integrazione con sensori, attuatori e altri componenti hardware. Sono disponibili in diversi modelli con specifiche diverse, ma tutti condividono la stessa filosofia di progettazione di base: basso costo, compattezza e versatilità.
Serie Raspberry Pi a confronto
Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
---|---|---|---|
CPU | Broadcom BCM2837, SoC Cortex-A53 a 64 bit | Broadcom BCM2711, SoC Cortex-A72 a 64 bit | Broadcom BCM2712, SoC Cortex-A76 a 64 bit |
CPU Frequenza massima | 1.4GHz | 1,8GHz | 2,4 GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
GPU Frequenza massima | 400Mhz | 500Mhz | 800Mhz |
Memoria | 1GB LPDDR2 SDRAM | SDRAM DA 1GB, 2GB, 4GB, 8GB LPDDR4-3200 | 4GB, 8GB SDRAM LPDDR4X-4267 |
PCIe | N/D | N/D | Interfaccia 1xPCIe 2.0 |
Potenza massima assorbita | 2,5A@5V | 3A@5V | 5A@5V (PD abilitato) |
Che cos'è il sistema operativo Raspberry Pi?
Raspberry Pi OS (precedentemente noto come Raspbian) è un sistema operativo di tipo Unix basato sulla distribuzione Debian GNU/Linux per la famiglia di computer single-board compatti Raspberry Pi, distribuiti dalla Raspberry Pi Foundation. Raspberry Pi OS è altamente ottimizzato per il Raspberry Pi con CPU ARM e utilizza un ambiente desktop LXDE modificato con il gestore di finestre Openbox. Raspberry Pi OS è in fase di sviluppo attivo, con particolare attenzione al miglioramento della stabilità e delle prestazioni del maggior numero possibile di pacchetti Debian su Raspberry Pi.
Flash del sistema operativo Raspberry Pi su Raspberry Pi
La prima cosa da fare dopo aver messo le mani su un Raspberry Pi è flashare una scheda micro-SD con Raspberry Pi OS, inserirla nel dispositivo e avviare il sistema operativo. Seguite la dettagliata Documentazione introduttiva di Raspberry Pi per preparare il dispositivo al primo utilizzo.
Impostazione Ultralytics
Esistono due modi per configurare il pacchetto Ultralytics su Raspberry Pi per realizzare il vostro prossimo progetto di Computer Vision. È possibile utilizzare uno dei due.
Iniziare con Docker
Il modo più veloce per iniziare a utilizzare Ultralytics YOLO11 su Raspberry Pi è quello di eseguire un'immagine docker precostituita per Raspberry Pi.
Eseguire il comando seguente per estrarre il contenitore Docker ed eseguirlo su Raspberry Pi. Questo è basato sull'immagine docker arm64v8/debian che contiene Debian 12 (Bookworm) in un ambiente Python3.
Dopo aver fatto questo, passare alla sezione Utilizzare NCNN su Raspberry Pi.
Avvio senza Docker
Installare il pacchetto Ultralytics
Qui installeremo il pacchetto Ultralytics su Raspberry Pi con le dipendenze opzionali in modo da poter esportare i modelli in altri formati. PyTorch modelli in altri formati diversi.
-
Aggiornare l'elenco dei pacchetti, installare pip e passare all'ultimo aggiornamento
-
Installare
ultralytics
pacchetto pip con dipendenze opzionali -
Riavviare il dispositivo
Utilizzare NCNN su Raspberry Pi
Tra tutti i formati di esportazione dei modelli supportati da Ultralytics, NCNN offre le migliori prestazioni di inferenza quando si lavora con dispositivi Raspberry Pi, perché NCNN è altamente ottimizzato per piattaforme mobili/ embedded (come l'architettura ARM). Si consiglia pertanto di utilizzare NCNN con Raspberry Pi.
Convertire il modello in NCNN ed eseguire l'inferenza
Il modello YOLO11n in formato PyTorch viene convertito in NCNN per eseguire l'inferenza con il modello esportato.
Esempio
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Suggerimento
Per maggiori dettagli sulle opzioni di esportazione supportate, visitate la pagina di documentazioneUltralytics sulle opzioni di distribuzione.
Raspberry Pi 5 YOLO11 Parametri di riferimento
YOLO11 I benchmark sono stati eseguiti dal team di Ultralytics su nove diversi formati di modello, misurando velocità e precisione: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN. I benchmark sono stati eseguiti su un Raspberry Pi 5 con precisione FP32 e dimensioni predefinite dell'immagine in ingresso pari a 640.
Tabella di confronto
Abbiamo incluso i benchmark solo per i modelli YOLO11n e YOLO11s, perché le dimensioni degli altri modelli sono troppo grandi per essere eseguite su Raspberry Pis e non offrono prestazioni decenti.
Tabella di confronto dettagliata
La tabella seguente rappresenta i risultati del benchmark per due diversi modelli (YOLO11n, YOLO11s) attraverso nove diversi formati (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN), eseguiti su un Raspberry Pi 5, fornendo lo stato, la dimensione, la metrica mAP50-95(B) e il tempo di inferenza per ogni combinazione.
Prestazioni
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.6100 | 405.238 |
TorchScript | ✅ | 10.5 | 0.6082 | 526.628 |
ONNX | ✅ | 10.2 | 0.6082 | 168.082 |
OpenVINO | ✅ | 10.4 | 0.6082 | 81.192 |
TF SavedModel | ✅ | 25.8 | 0.6082 | 377.968 |
TF GraphDef | ✅ | 10.3 | 0.6082 | 487.244 |
TF Lite | ✅ | 10.3 | 0.6082 | 317.398 |
PaddlePaddle | ✅ | 20.4 | 0.6082 | 561.892 |
MNN | ✅ | 10.1 | 0.6106 | 112.554 |
NCNN | ✅ | 10.2 | 0.6106 | 88.026 |
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.7526 | 1011.60 |
TorchScript | ✅ | 36.5 | 0.7416 | 1268.502 |
ONNX | ✅ | 36.3 | 0.7416 | 324.17 |
OpenVINO | ✅ | 36.4 | 0.7416 | 179.324 |
TF SavedModel | ✅ | 91.1 | 0.7416 | 714.382 |
TF GraphDef | ✅ | 36.4 | 0.7416 | 1019.83 |
TF Lite | ✅ | 36.4 | 0.7416 | 849.86 |
PaddlePaddle | ✅ | 72.5 | 0.7416 | 1276.34 |
MNN | ✅ | 36.2 | 0.7409 | 273.032 |
NCNN | ✅ | 36.2 | 0.7419 | 194.858 |
Benchmark con Ultralytics 8.3.39
Riprodurre i risultati
Per riprodurre i benchmark di Ultralytics su tutti i formati di esportazione, eseguite questo codice:
Esempio
Si noti che i risultati dei benchmark possono variare in base all'esatta configurazione hardware e software di un sistema, nonché al carico di lavoro corrente del sistema al momento dell'esecuzione dei benchmark. Per ottenere i risultati più affidabili, utilizzare un set di dati con un numero elevato di immagini, ad es. data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 immagini val).
Utilizzare la fotocamera di Raspberry Pi
Quando si utilizza Raspberry Pi per progetti di Computer Vision, può essere essenziale acquisire feed video in tempo reale per eseguire l'inferenza. Il connettore MIPI CSI integrato in Raspberry Pi consente di collegare i moduli telecamera ufficiali di Raspberry PI. In questa guida, abbiamo utilizzato un modulo fotocamera Raspberry Pi 3 per acquisire i feed video ed eseguire l'inferenza utilizzando i modelli YOLO11 .
Suggerimento
Scoprite di più sui diversi moduli fotocamera offerti da Raspberry Pi e su come iniziare a utilizzare i moduli fotocamera di Raspberry Pi.
Nota
Raspberry Pi 5 utilizza connettori CSI più piccoli rispetto a Raspberry Pi 4 (15 pin contro 22 pin), pertanto è necessario un cavo adattatore da 15 pin a 22 pin per collegarsi a una fotocamera Raspberry Pi.
Prova della telecamera
Eseguire il seguente comando dopo aver collegato la telecamera a Raspberry Pi. Si dovrebbe vedere un video in diretta dalla telecamera per circa 5 secondi.
Suggerimento
Per saperne di più rpicam-hello
utilizzo nella documentazione ufficiale di Raspberry Pi
Inferenza con telecamera
Esistono due metodi per utilizzare la fotocamera di Raspberry Pi per dedurre i modelli di YOLO11 .
Utilizzo
Possiamo utilizzare picamera2
che viene preinstallato con Raspberry Pi OS per accedere alla fotocamera e ai modelli di inferenza YOLO11 .
Esempio
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 YOLO11 model
model = YOLO("yolo11n.pt")
while True:
# Capture frame-by-frame
frame = picam2.capture_array()
# Run YOLO11 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()
Dobbiamo avviare un flusso TCP con rpicam-vid
dalla telecamera connessa, in modo da poter utilizzare l'URL di questo flusso come input durante le successive operazioni di inferenza. Eseguire il seguente comando per avviare il flusso TCP.
Per saperne di più rpicam-vid
utilizzo nella documentazione ufficiale di Raspberry Pi
Suggerimento
Se si desidera modificare il tipo di ingresso immagine/video, consultare il documento Sorgenti di inferenza.
Migliori pratiche per l'utilizzo di Raspberry Pi
Ci sono un paio di buone pratiche da seguire per ottenere le massime prestazioni su Raspberry Pis con YOLO11.
-
Utilizzare un'unità SSD
Quando si utilizza Raspberry Pi per un uso continuo 24 ore su 24, 7 giorni su 7, è consigliabile utilizzare un'unità SSD per il sistema, poiché una scheda SD non è in grado di sopportare scritture continue e potrebbe rompersi. Grazie al connettore PCIe integrato nel Raspberry Pi 5, ora è possibile collegare le unità SSD utilizzando un adattatore come la base NVMe per Raspberry Pi 5.
-
Flash senza interfaccia grafica
Quando si esegue il flashing di Raspberry Pi OS, si può scegliere di non installare l'ambiente Desktop (Raspberry Pi OS Lite) e ciò consente di risparmiare un po' di RAM sul dispositivo, lasciando più spazio per l'elaborazione della computer vision.
I prossimi passi
Congratulazioni per aver configurato con successo YOLO sul vostro Raspberry Pi! Per ulteriori informazioni e supporto, visitate Ultralytics YOLO11 Docs e Kashmir World Foundation.
Ringraziamenti e citazioni
Questa guida è stata inizialmente creata da Daan Eeltink per la Kashmir World Foundation, un'organizzazione dedicata all'uso di YOLO per la conservazione delle specie in pericolo. Riconosciamo il loro lavoro pionieristico e la loro attenzione educativa nel campo delle tecnologie di rilevamento degli oggetti.
Per ulteriori informazioni sulle attività della Kashmir World Foundation, è possibile visitare il loro sito web.
FAQ
Come si configura Ultralytics YOLO11 su un Raspberry Pi senza usare Docker?
Per configurare Ultralytics YOLO11 su un Raspberry Pi senza Docker, seguire questi passaggi:
- Aggiornare l'elenco dei pacchetti e installare
pip
: - Installare il pacchetto Ultralytics con le dipendenze opzionali:
- Riavviare il dispositivo per applicare le modifiche:
Per istruzioni dettagliate, consultare la sezione Avvio senza Docker.
Perché dovrei usare il formato Ultralytics YOLO11 's NCNN su Raspberry Pi per le attività di intelligenza artificiale?
Ultralytics YOLO11Il formato NCNN è altamente ottimizzato per le piattaforme mobili ed embedded, il che lo rende ideale per l'esecuzione di attività di intelligenza artificiale su dispositivi Raspberry Pi. NCNN massimizza le prestazioni di inferenza sfruttando l'architettura ARM, fornendo un'elaborazione più veloce ed efficiente rispetto ad altri formati. Per maggiori dettagli sulle opzioni di esportazione supportate, visitate la pagina della documentazione diUltralytics sulle opzioni di distribuzione.
Come posso convertire un modello YOLO11 in formato NCNN per utilizzarlo su Raspberry Pi?
È possibile convertire un modello PyTorch YOLO11 nel formato NCNN utilizzando i comandi Python o CLI :
Esempio
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Per maggiori dettagli, consultare la sezione Utilizzo di NCNN su Raspberry Pi.
Quali sono le differenze hardware tra Raspberry Pi 4 e Raspberry Pi 5 per l'esecuzione di YOLO11?
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 CPU : Raspberry Pi 4 ha una frequenza massima di 1,8GHz, mentre Raspberry Pi 5 raggiunge i 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 nelle varianti da 4 GB e 8 GB.
Questi miglioramenti contribuiscono a migliorare le prestazioni dei benchmark per i modelli YOLO11 su Raspberry Pi 5 rispetto a Raspberry Pi 4. Per maggiori dettagli, consultare la tabella comparativa della serie Raspberry Pi.
Come posso configurare un modulo fotocamera Raspberry Pi in modo che funzioni con Ultralytics YOLO11 ?
Esistono due metodi per configurare una telecamera Raspberry Pi per l'inferenza di YOLO11 :
-
Utilizzo
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("yolo11n.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()
-
Utilizzo di un flusso TCP:
Per istruzioni dettagliate sulla configurazione, visitate la sezione Inferenza con telecamera.