YOLO Vision 2026:

Guida rapida: Raspberry Pi con Ultralytics YOLO26#

Raspberry Pi è un computer piccolo ed economico che esegue Ultralytics YOLO26 per il rilevamento di oggetti in tempo reale al limite (edge) — senza bisogno di GPU. Questa guida ti accompagna nella distribuzione di YOLO26 su Raspberry Pi 4 e 5: scrittura del sistema operativo, installazione di Ultralytics, esportazione in NCNN per la massima velocità di inferenza su ARM ed esecuzione di previsioni su un feed di telecamera in diretta. Include anche benchmark delle prestazioni su otto formati di esportazione in modo da poter scegliere il miglior compromesso tra velocità e precisione per il tuo hardware.

Vai direttamente alla configurazione di Ultralytics, all'esportazione in NCNN e all'esecuzione dell'inferenza, ai benchmark o all'inferenza da telecamera.



Watch: Raspberry Pi 5 updates and improvements.
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'uso di questa guida per dispositivi Raspberry Pi meno recenti come il Raspberry Pi 3 dovrebbe funzionare purché sia installato lo stesso Raspberry Pi OS Bookworm.

Cos'è il Raspberry Pi?#

Raspberry Pi è un computer a scheda singola piccolo ed economico. È 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 variabili, ma condividono tutti la stessa filosofia di design di base: essere a basso costo, compatti e versatili.

Confronto della serie Raspberry Pi#

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

Cos'è il 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 di computer compatti a scheda singola Raspberry Pi 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 gestore di finestre a stack Openbox. Raspberry Pi OS è in attivo sviluppo, con un'enfasi sul miglioramento della stabilità e delle prestazioni del maggior numero possibile di pacchetti Debian su Raspberry Pi.

Flashare Raspberry Pi OS su Raspberry Pi#

La prima cosa da fare dopo aver messo le mani su un Raspberry Pi è scrivere un'immagine del sistema Raspberry Pi OS su una scheda micro-SD, inserita nel dispositivo e avviata nel sistema operativo. Segui la dettagliata Documentazione di Introduzione di Raspberry Pi per preparare il tuo 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ù veloce per iniziare con Ultralytics YOLO26 su Raspberry Pi è utilizzare un'immagine Docker predefinita per Raspberry Pi.

Esegui il comando seguente per scaricare il contenitore Docker ed eseguirlo su Raspberry Pi. Questo 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 $t

L'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 sul Raspberry Pi con dipendenze opzionali in modo da poter esportare i modelli PyTorch in altri formati.

  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 il pacchetto pip ultralytics con le dipendenze opzionali

    pip install ultralytics[export]
  3. 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 piattaforme mobili/incorporate come l'architettura ARM. Converti il tuo modello YOLO26n PyTorch in NCNN, quindi esegui 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")
Suggerimento

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 essere eseguito su dispositivi con vincoli hardware come il Raspberry Pi 5. Rispetto a YOLO11n, YOLO26n ottiene un aumento di circa il 15% in FPS (6.79 → 7.79) offrendo al contempo un mAP più elevato (40.1 contro 39.5) a una dimensione di input di 640 con modelli esportati in ONNX su Raspberry Pi 5. La tabella e il grafico seguenti mostrano questo confronto.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.14
Performance
ModellomAP50-95(B)Tempo di inferenza (ms/im)
YOLO26n40.1128.42
YOLO26s47.8352.84
YOLO26m52.5993.78
YOLO26l54.41259.46
YOLO26x56.92636.26

Benchmark effettuato con Ultralytics 8.4.14.

Benchmark di YOLO26 su Raspberry Pi 5#

I benchmark di YOLO26 sono stati eseguiti dal team di Ultralytics su otto diversi formati di modelli misurando velocità e precisione: PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch, LiteRT. I benchmark sono stati eseguiti su un Raspberry Pi 5 a precisione FP32 con una dimensione dell'immagine di input predefinita di 640.

Tabella di confronto#

Abbiamo incluso solo i benchmark per i modelli YOLO26n e YOLO26s perché le altre dimensioni dei modelli sono troppo grandi per essere eseguite su Raspberry Pi e non offrono prestazioni decenti.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.108

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), in esecuzione su un Raspberry Pi 5, fornendoci lo stato, la dimensione, la metrica mAP50-95(B) e il tempo di inferenza per ogni combinazione.

Performance
FormatoStatoDimensione su disco (MB)mAP50-95(B)Tempo di inferenza (ms/im)
PyTorch5.30.4760299.09
TorchScript9.80.4734353.20
ONNX9.50.4734125.99
OpenVINO9.60.4734104.55
MNN9.40.474991.87
NCNN9.40.478467.03
ExecuTorch9.40.4772144.83
LiteRT9.80.4730123.30

Testato con Ultralytics 8.4.108

Nota

Il tempo di inference non include pre/post-processing.

Riproduci i nostri risultati#

Per riprodurre i suddetti benchmark di Ultralytics 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)

Nota che i risultati dei benchmark 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 risultati più affidabili, usa un dataset con un numero elevato di immagini, ad esempio data='coco.yaml' (5000 immagini di validazione).

L'esportazione LiteRT viene eseguita fuori dispositivo

litert-converter non include alcun pacchetto wheel Linux per aarch64, quindi l'esportazione format=litert è supportata solo su Linux x86_64 e macOS, non direttamente sul Raspberry Pi. Esporta il modello .tflite su una macchina Linux x86_64 o su un Mac, copialo sul 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 sul Raspberry Pi ti consente di collegare moduli di telecamera ufficiali Raspberry Pi. In questa guida, abbiamo utilizzato un Modulo Telecamera Raspberry Pi 3 per acquisire i flussi video ed eseguire l'inferenza utilizzando i modelli YOLO26.

Suggerimento
Nota

Raspberry Pi 5 utilizza connettori CSI più piccoli rispetto al Raspberry Pi 4 (da 15 pin anziché 22 pin), quindi avrai bisogno di un cavo adattatore da 15 pin a 22 pin per connetterti a una telecamera Raspberry Pi.

Prova la fotocamera#

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

rpicam-hello
Suggerimento

Scopri di più sull'uso di rpicam-hello nella documentazione ufficiale di Raspberry Pi.

Inferenza con fotocamera#

Esistono due metodi per utilizzare la Raspberry Pi Camera per eseguire l'inference sui modelli YOLO26.

Esegui l'inference con la videocamera Raspberry Pi

Possiamo usare picamera2 che viene fornito preinstallato con Raspberry Pi OS per accedere alla telecamera 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()
Suggerimento

Consulta il nostro documento sulle Fonti di Inferenza se desideri modificare il tipo di input di immagine/video.

Best practice durante l'utilizzo di Raspberry Pi#

Ci sono alcune best practice da seguire per ottenere le massime prestazioni su Raspberry Pi che eseguono YOLO26.

  1. Usa un SSD

    Quando si utilizza Raspberry Pi per un uso continuo 24 ore su 24, 7 giorni su 7, si consiglia di utilizzare un SSD per il sistema perché una scheda SD non sarà in grado di resistere a scritture continue e potrebbe rompersi. Con il connettore PCIe integrato sul Raspberry Pi 5, ora puoi collegare SSD utilizzando un adattatore come la Base NVMe per Raspberry Pi 5.

  2. Installa senza GUI

    Quando installi Raspberry Pi OS, puoi 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 visione artificiale.

  3. Overclock del Raspberry Pi

    Se vuoi un piccolo incremento di prestazioni durante l'esecuzione dei modelli Ultralytics YOLO26 su Raspberry Pi 5, puoi effettuare l'overclock della CPU dalla base di 2.4GHz a 2.9GHz 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 che sia presente un raffreddamento adeguato, poiché l'overclock aumenta la generazione di calore e può portare al thermal throttling.

    a. Aggiorna il software

    sudo apt update && sudo apt dist-upgrade

    b. Apri il file di configurazione per modificarlo

    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

Passaggi successivi#

Hai configurato con successo YOLO26 sul tuo Raspberry Pi. Per andare oltre, esplora la Modalità Predizione per ulteriori opzioni di inferenza, la Modalità di Esportazione per formati di distribuzione aggiuntivi o la guida NVIDIA Jetson se hai bisogno di maggiore capacità di calcolo al limite (edge). Per la documentazione completa, visita i Documenti di Ultralytics YOLO26.

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

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

FAQ#

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

    1. Aggiorna l'elenco 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, fai riferimento alla sezione Inizia senza Docker.

  • Il formato NCNN di Ultralytics YOLO26 è altamente ottimizzato per piattaforme mobili e integrate, rendendolo ideale per l'esecuzione di attività di IA su dispositivi Raspberry Pi. NCNN massimizza le prestazioni di inferenza sfruttando l'architettura ARM, offrendo un'elaborazione più rapida ed efficiente rispetto ad altri formati. Per maggiori dettagli sui formati di esportazione supportati, consulta le opzioni di esportazione del modello.

  • Puoi convertire un modello PyTorch YOLO26 nel formato NCNN utilizzando i 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")

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

  • Le differenze chiave includono:

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

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

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

    1. Uso 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 di configurazione dettagliate, visita la sezione Inferenza con Telecamera.

Commenti