Vai al contenuto

Guida Rapida: Raspberry Pi con Ultralytics YOLO26

Questa guida completa fornisce una procedura dettagliata per il deployment di Ultralytics YOLO26 su dispositivi Raspberry Pi. Inoltre, presenta benchmark di performance per dimostrare le capacità di YOLO26 su questi dispositivi piccoli e potenti.



Guarda: Aggiornamenti e miglioramenti di 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). Si prevede che l'utilizzo di questa guida per dispositivi Raspberry Pi più vecchi, come Raspberry Pi 3, funzioni purché sia installato lo stesso Raspberry Pi OS Bookworm.

Cos'è Raspberry Pi?

Raspberry Pi è un computer a scheda singola, piccolo ed economico. È diventato popolare per una vasta gamma di progetti e applicazioni, dall'automazione domestica amatoriale 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 variabili, ma condividono tutti la stessa filosofia di progettazione di base: essere economici, compatti e versatili.

Confronto tra le serie Raspberry Pi

Raspberry Pi 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, Cortex-A53 SoC a 64 bitBroadcom BCM2711, Cortex-A72 SoC a 64 bitBroadcom BCM2712, Cortex-A76 SoC a 64 bit
Frequenza massima della CPU1.4GHz1.8GHz2.4GHz
GPUVideocore IVVideocore VIVideoCore VII
Frequenza massima della GPU400Mhz500Mhz800Mhz
Memoria1GB LPDDR2 SDRAM1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM4GB, 8GB LPDDR4X-4267 SDRAM
PCIeN/AN/AInterfaccia 1xPCIe 2.0
Assorbimento massimo di potenza2.5A@5V3A@5V5A@5V (PD abilitato)

Cos'è Raspberry Pi OS?

Raspberry Pi OS (precedentemente noto come Raspbian) è un sistema operativo di tipo Unix basato sulla distribuzione Debian GNU/Linux per la famiglia Raspberry Pi di computer a scheda singola compatti 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 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 di Raspberry Pi OS 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 ed eseguire l'avvio nel sistema operativo. Segui la documentazione introduttiva dettagliata di Raspberry Pi per preparare il dispositivo al primo utilizzo.

Configura Ultralytics

Esistono due modi per configurare il pacchetto Ultralytics su Raspberry Pi per realizzare il tuo prossimo progetto di Computer Vision. Puoi utilizzare uno qualsiasi di essi.

Inizia con Docker

Il modo più rapido per iniziare con Ultralytics YOLO26 su Raspberry Pi è eseguirlo con un'immagine Docker pre-costruita per Raspberry Pi.

Esegui il comando seguente per estrarre il container Docker ed eseguirlo su Raspberry Pi. Questo si basa sull'immagine docker arm64v8/debian che contiene Debian 12 (Bookworm) in un ambiente Python3.

t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t

Dopo aver fatto ciò, passa alla sezione Usa NCNN su Raspberry Pi.

Inizia senza Docker

Installa il pacchetto Ultralytics

Qui installeremo il pacchetto Ultralytics su Raspberry Pi con dipendenze opzionali in modo da poter esportare i modelli PyTorch in altri formati diversi.

  1. Aggiorna l'elenco dei pacchetti, installa pip ed esegui l'aggiornamento all'ultima versione

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installa ultralytics pacchetto pip con dipendenze opzionali

    pip install ultralytics[export]
    
  3. Riavvia il dispositivo

    sudo reboot
    

Utilizzare NCNN su Raspberry Pi

Tra tutti i formati di esportazione di 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).

Convertire il modello in NCNN ed eseguire l'inferenza

Il modello YOLO26n in formato PyTorch viene convertito in NCNN per eseguire l'inferenza con il modello esportato.

Esempio

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")
# Export a YOLO26n PyTorch model to NCNN format
yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolo26n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'

Suggerimento

Per maggiori dettagli sulle opzioni di esportazione supportate, visita la pagina della documentazione di Ultralytics sulle opzioni di distribuzione.

Raspberry Pi 5 Benchmark YOLO26

I benchmark YOLO26 sono stati eseguiti dal Ultralytics su dieci diversi formati di modelli, misurandone la velocità e la precisione: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF , MNN, NCNN, ExecuTorch. I benchmark sono stati eseguiti su un Raspberry Pi 5 con precisione FP32 e dimensione predefinita dell'immagine di input pari a 640.

Tabella comparativa

Abbiamo incluso solo i benchmark per i modelli YOLO26n e YOLO26s perché gli altri modelli sono troppo grandi per essere eseguiti su Raspberry Pi e non offrono prestazioni adeguate.

Benchmark YOLO26 su RPi 5
Testato con Ultralytics .4.1

Tabella comparativa dettagliata

La tabella sottostante riporta i risultati dei benchmark per due diversi modelli (YOLO26n, YOLO26s) in dieci diversi formati (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF , MNN, NCNN, ExecuTorch), eseguiti su un Raspberry Pi 5, fornendoci lo stato, le dimensioni, la metrica mAP50(B) e il tempo di inferenza per ciascuna combinazione.

Prestazioni

FormatoStatoDimensione su disco (MB)mAP50-95(B)Tempo di inferenza (ms/im)
PyTorch5.30.4798302.15
TorchScript9.80.4764357.58
ONNX9.50.4764130.33
OpenVINO9.60.481870.74
TF SavedModel24.60.4764213.58
TF GraphDef9.50.4764213.5
TF Lite9.90.4764251.41
MNN9.40.478490.89
NCNN9.40.480567.69
ExecuTorch9.40.4764148.36
FormatoStatoDimensione su disco (MB)mAP50-95(B)Tempo di inferenza (ms/im)
PyTorch19.50.5740836.54
TorchScript36.80.56651032.25
ONNX36.50.5665351.96
OpenVINO36.70.5654158.6
TF SavedModel92.20.5665507.6
TF GraphDef36.50.5665525.64
TF Lite36.90.5665805.3
MNN36.40.5644236.47
NCNN36.40.5697168.47
ExecuTorch36.50.5665388.72

Testato con Ultralytics .4.1

Nota

Il tempo di inferenza non include il pre/post-processing.

Riproduci i nostri risultati

Per riprodurre i benchmark Ultralytics di cui sopra su tutti i formati di esportazione, esegui questo codice:

Esempio

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)
# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
yolo benchmark model=yolo26n.pt data=coco128.yaml imgsz=640

Si noti che i risultati del benchmarking potrebbero 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 i risultati più affidabili, utilizzare un dataset con un gran numero di immagini, ad esempio, data='coco.yaml' (5000 immagini val).

Utilizzare la fotocamera 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 sul Raspberry Pi consente di collegare moduli fotocamera ufficiali 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 YOLO26.

Nota

Raspberry Pi 5 utilizza connettori CSI più piccoli rispetto a Raspberry Pi 4 (15 pin contro 22 pin), quindi sarà necessario un cavo adattatore da 15 a 22 pin per connettersi a una Raspberry Pi Camera.

Testare la fotocamera

Esegui il comando seguente dopo aver collegato la fotocamera al Raspberry Pi. Dovresti vedere un feed video in diretta dalla fotocamera per circa 5 secondi.

rpicam-hello

Inferenza con la fotocamera

Esistono 2 metodi per utilizzare la fotocamera Raspberry Pi per eseguire l'inferenza sui modelli YOLO26.

Utilizzo

Possiamo usare picamera2 che viene preinstallato con Raspberry Pi OS per accedere alla fotocamera ed eseguire l'inferenza sui modelli YOLO26.

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 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()

Dobbiamo avviare uno stream TCP con rpicam-vid dalla telecamera connessa, in modo da poter utilizzare questo URL di stream come input quando eseguiamo l'inferenza in seguito. Esegui il comando seguente per avviare lo stream TCP.

rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

Scopri di più su rpicam-vid utilizzo nella documentazione ufficiale di Raspberry Pi

Esempio

from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo26n.pt source="tcp://127.0.0.1:8888"

Suggerimento

Consulta il nostro documento sulle Sorgenti di inferenza se desideri modificare il tipo di input immagine/video.

Best practice per l'utilizzo di Raspberry Pi

Ci sono diverse buone pratiche da seguire per abilitare le massime prestazioni sui Raspberry Pi che eseguono YOLO26.

  1. Utilizzare un SSD

    Quando si utilizza Raspberry Pi per un uso continuativo 24 ore su 24, 7 giorni su 7, si consiglia di utilizzare un SSD per il sistema perché una scheda SD non sarebbe in grado di sopportare scritture continue e potrebbe rompersi. Con il connettore PCIe integrato sul Raspberry Pi 5, ora è possibile collegare SSD utilizzando un adattatore come NVMe Base per Raspberry Pi 5.

  2. Flash senza GUI

    Quando si esegue il flashing di Raspberry Pi OS, è possibile scegliere di non installare l'ambiente Desktop (Raspberry Pi OS Lite) e questo può risparmiare un po' di RAM sul dispositivo, lasciando più spazio per l'elaborazione della computer vision.

  3. Overclock di Raspberry Pi

    Se desideri un piccolo aumento delle prestazioni durante l'esecuzione dei modelli Ultralytics YOLO26 su Raspberry Pi 5, puoi overcloccare la CPU dalla sua base di 2.4GHz a 2.9GHz e la GPU da 800MHz a 1GHz. Se il sistema diventa instabile o si blocca, riduci i valori di overclock con incrementi di 100MHz. Assicurati che sia presente un raffreddamento adeguato, poiché l'overclocking aumenta la generazione di calore e può portare a un throttling termico.

    a. Aggiorna il software

    sudo apt update && sudo apt dist-upgrade
    

    b. Apri per modificare il file di configurazione

    sudo nano /boot/firmware/config.txt
    

    c. Aggiungi le seguenti righe in fondo

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1
    

    d. Salva ed esci premendo CTRL + X, poi Y, e premi INVIO

    e. Riavvia il Raspberry Pi

Prossimi passi

Hai configurato con successo YOLO sul tuo Raspberry Pi. Per ulteriore apprendimento e supporto, visita Ultralytics YOLO26 Docs e Kashmir World Foundation.

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 in via di estinzione. Riconosciamo il loro lavoro pionieristico e l'attenzione educativa nel campo delle tecnologie di object detection.

Per maggiori informazioni sulle attività di Kashmir World Foundation, puoi visitare il loro sito web.

FAQ

Come si configura Ultralytics YOLO26 su un Raspberry Pi senza utilizzare Docker?

Per configurare Ultralytics YOLO26 su un Raspberry Pi senza Docker, segui questi passaggi:

  1. Aggiorna la lista dei pacchetti e installa pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installa il pacchetto Ultralytics con le dipendenze opzionali:
    pip install ultralytics[export]
    
  3. Riavvia il dispositivo per applicare le modifiche:
    sudo reboot
    

Per istruzioni dettagliate, fare riferimento alla sezione Avvio senza Docker.

Perché dovrei utilizzare il formato NCNN di Ultralytics YOLO26 su Raspberry Pi per i task di IA?

Il formato NCNN di Ultralytics YOLO26 è altamente ottimizzato per piattaforme mobili ed embedded, rendendolo ideale per l'esecuzione di task di IA su dispositivi Raspberry Pi. NCNN massimizza le prestazioni di inferenza sfruttando l'architettura ARM, fornendo un'elaborazione più rapida ed efficiente rispetto ad altri formati. Per maggiori dettagli sulle opzioni di esportazione supportate, visita la pagina della documentazione Ultralytics sulle opzioni di deployment.

Come posso convertire un modello YOLO26 nel formato NCNN per l'utilizzo su Raspberry Pi?

È possibile convertire un modello PyTorch YOLO26 nel formato NCNN utilizzando comandi Python o CLI:

Esempio

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")
# Export a YOLO26n PyTorch model to NCNN format
yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolo26n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'

Per maggiori dettagli, consulta la sezione Usa NCNN su Raspberry Pi.

Quali sono le differenze hardware tra Raspberry Pi 4 e Raspberry Pi 5 rilevanti per l'esecuzione di YOLO26?

Le differenze principali includono:

  • CPU: Raspberry Pi 4 utilizza Broadcom BCM2711, Cortex-A72 SoC a 64 bit, mentre Raspberry Pi 5 utilizza Broadcom BCM2712, Cortex-A76 SoC a 64 bit.
  • Frequenza massima della 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 è dotato di SDRAM LPDDR4X-4267, disponibile nelle varianti da 4 GB e 8 GB.

Questi miglioramenti contribuiscono a migliori benchmark di performance per i modelli YOLO26 su Raspberry Pi 5 rispetto a Raspberry Pi 4. Fai riferimento alla tabella Confronto Serie Raspberry Pi per maggiori dettagli.

Come posso configurare un modulo fotocamera Raspberry Pi per funzionare con Ultralytics YOLO26?

Esistono due metodi per configurare una fotocamera Raspberry Pi per l'inferenza YOLO26:

  1. L'utilizzo di 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()
    
  2. Utilizzo di uno Stream TCP:

    rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
    
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    results = model("tcp://127.0.0.1:8888")
    

Per istruzioni dettagliate sulla configurazione, visitare la sezione Inferenza con Camera.



📅 Creato 2 anni fa ✏️ Aggiornato 7 giorni fa
glenn-jocherlakshanthadlakshanthadpderrengerLaughing-qerfan-zekriMatthewNoyceUltralyticsAssistantRizwanMunawarIvorZhu331

Commenti