Guía de Inicio Rápido: Raspberry Pi con Ultralytics YOLO11
Esta guía completa proporciona un tutorial detallado para implementar Ultralytics YOLO11 en dispositivos Raspberry Pi. Además, muestra los puntos de referencia de rendimiento para demostrar las capacidades de YOLO11 en estos dispositivos pequeños y potentes.
Ver: Actualizaciones y mejoras de Raspberry Pi 5.
Nota
Esta guía se ha probado con Raspberry Pi 4 y Raspberry Pi 5 ejecutando la última versión de Raspberry Pi OS Bookworm (Debian 12). Se espera que el uso de esta guía para dispositivos Raspberry Pi más antiguos, como la Raspberry Pi 3, funcione siempre y cuando esté instalado el mismo Raspberry Pi OS Bookworm.
¿Qué es Raspberry Pi?
Raspberry Pi es una computadora de placa única, pequeña y asequible. Se ha vuelto popular para una amplia gama de proyectos y aplicaciones, desde la automatización del hogar para aficionados hasta usos industriales. Las placas Raspberry Pi son capaces de ejecutar una variedad de sistemas operativos y ofrecen pines GPIO (Entrada/Salida de Propósito General) que permiten una fácil integración con sensores, actuadores y otros componentes de hardware. Vienen en diferentes modelos con diferentes especificaciones, pero todos comparten la misma filosofía de diseño básico de ser de bajo costo, compactos y versátiles.
Comparación de la serie Raspberry Pi
Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
---|---|---|---|
CPU | Broadcom BCM2837, Cortex-A53 SoC de 64 bits | Broadcom BCM2711, Cortex-A72 SoC de 64 bits | Broadcom BCM2712, Cortex-A76 SoC de 64 bits |
Frecuencia Máxima de la CPU | 1.4GHz | 1.8GHz | 2.4GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
Frecuencia Máxima de la GPU | 400Mhz | 500Mhz | 800Mhz |
Memoria | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | N/A | N/A | 1xPCIe 2.0 Interface |
Consumo Máximo de Energía | 2.5A@5V | 3A@5V | 5A@5V (PD habilitado) |
¿Qué es Raspberry Pi OS?
Raspberry Pi OS (anteriormente conocido como Raspbian) es un sistema operativo tipo Unix basado en la distribución Debian GNU/Linux para la familia Raspberry Pi de computadoras compactas de placa única distribuidas por la Raspberry Pi Foundation. Raspberry Pi OS está altamente optimizado para la Raspberry Pi con CPUs ARM y utiliza un entorno de escritorio LXDE modificado con el administrador de ventanas de apilamiento Openbox. Raspberry Pi OS está en desarrollo activo, con un énfasis en mejorar la estabilidad y el rendimiento de tantos paquetes de Debian como sea posible en Raspberry Pi.
Flashear Raspberry Pi OS a Raspberry Pi
Lo primero que debe hacer después de tener en sus manos una Raspberry Pi es grabar una tarjeta micro-SD con Raspberry Pi OS, insertarla en el dispositivo y arrancar el sistema operativo. Siga la detallada Documentación de inicio de Raspberry Pi para preparar su dispositivo para su primer uso.
Configurar Ultralytics
Existen dos formas de configurar el paquete Ultralytics en Raspberry Pi para construir su próximo proyecto de Visión Artificial. Puede utilizar cualquiera de ellas.
Comenzar con Docker
La forma más rápida de comenzar con Ultralytics YOLO11 en Raspberry Pi es ejecutar con una imagen de Docker precompilada para Raspberry Pi.
Ejecute el siguiente comando para extraer el contenedor Docker y ejecutarlo en Raspberry Pi. Esto se basa en la imagen Docker arm64v8/debian que contiene Debian 12 (Bookworm) en un entorno Python3.
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t
Una vez hecho esto, salta a la sección Usar NCNN en Raspberry Pi.
Comenzar sin Docker
Instalar el paquete Ultralytics
Aquí instalaremos el paquete Ultralytics en la Raspberry Pi con dependencias opcionales para poder exportar los modelos PyTorch a otros formatos diferentes.
-
Actualizar la lista de paquetes, instalar pip y actualizar a la última versión
sudo apt update sudo apt install python3-pip -y pip install -U pip
-
Instalar
ultralytics
paquete pip con dependencias opcionalespip install ultralytics[export]
-
Reiniciar el dispositivo
sudo reboot
Utiliza NCNN en Raspberry Pi
De todos los formatos de exportación de modelos compatibles con Ultralytics, NCNN ofrece el mejor rendimiento de inferencia cuando se trabaja con dispositivos Raspberry Pi porque NCNN está altamente optimizado para plataformas móviles/integradas (como la arquitectura ARM).
Convertir el modelo a NCNN y ejecutar la inferencia
El modelo YOLO11n en formato PyTorch se convierte a NCNN para ejecutar la inferencia con el modelo exportado.
Ejemplo
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")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn # creates 'yolo11n_ncnn_model'
# Run inference with the exported model
yolo predict model='yolo11n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'
Consejo
Para obtener más detalles sobre las opciones de exportación admitidas, visita la página de documentación de Ultralytics sobre las opciones de implementación.
Benchmarks de YOLO11 en Raspberry Pi 5
El equipo de Ultralytics ejecutó benchmarks de YOLO11 en diez formatos de modelo diferentes, midiendo la velocidad y la precisión: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN. Los benchmarks se ejecutaron en una Raspberry Pi 5 con precisión FP32 con un tamaño de imagen de entrada predeterminado de 640.
Gráfico comparativo
Solo hemos incluido pruebas de rendimiento para los modelos YOLO11n e YOLO11s porque otros tamaños de modelos son demasiado grandes para ejecutarse en las Raspberry Pi y no ofrecen un rendimiento decente.

Tabla de comparación detallada
La siguiente tabla representa los resultados de referencia para dos modelos diferentes (YOLO11n, YOLO11s) en diez formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN), que se ejecutan en una Raspberry Pi 5, lo que nos da el estado, el tamaño, la métrica mAP50-95(B) y el tiempo de inferencia para cada combinación.
Rendimiento
Formato | Estado | Tamaño en disco (MB) | mAP50-95(B) | Tiempo de inferencia (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.5101 | 387.63 |
TorchScript | ✅ | 10.5 | 0.5077 | 457.84 |
ONNX | ✅ | 10.2 | 0.5077 | 191.09 |
OpenVINO | ✅ | 10.4 | 0.5058 | 84.76 |
TF SavedModel | ✅ | 25.9 | 0.5077 | 306.94 |
TF GraphDef | ✅ | 10.3 | 0.5077 | 309.82 |
TF Lite | ✅ | 10.3 | 0.5077 | 425.77 |
PaddlePaddle | ✅ | 20.5 | 0.5077 | 463.93 |
MNN | ✅ | 10.1 | 0.5059 | 114.97 |
NCNN | ✅ | 10.2 | 0.5031 | 94.03 |
Formato | Estado | Tamaño en disco (MB) | mAP50-95(B) | Tiempo de inferencia (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.5791 | 962.69 |
TorchScript | ✅ | 36.5 | 0.5782 | 1181.94 |
ONNX | ✅ | 36.3 | 0.5782 | 449.85 |
OpenVINO | ✅ | 36.4 | 0.5810 | 181.53 |
TF SavedModel | ✅ | 91.0 | 0.5782 | 660.62 |
TF GraphDef | ✅ | 36.4 | 0.5782 | 669.23 |
TF Lite | ✅ | 36.3 | 0.5782 | 1093.41 |
PaddlePaddle | ✅ | 72.6 | 0.5782 | 1140.61 |
MNN | ✅ | 36.2 | 0.5805 | 274.63 |
NCNN | ✅ | 36.2 | 0.5784 | 224.20 |
Puesto a prueba con Ultralytics 8.3.152
Nota
El tiempo de inferencia no incluye el pre/post-procesamiento.
Reproducir nuestros resultados
Para reproducir los benchmarks de Ultralytics anteriores en todos los formatos de exportación, ejecuta este código:
Ejemplo
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco128.yaml imgsz=640
Tenga en cuenta que los resultados de los benchmarks pueden variar según la configuración exacta de hardware y software de un sistema, así como la carga de trabajo actual del sistema en el momento en que se ejecutan los benchmarks. Para obtener los resultados más fiables, utilice un conjunto de datos con un gran número de imágenes, es decir, data='coco.yaml'
(5000 imágenes de validación).
Utiliza la cámara Raspberry Pi
Al utilizar Raspberry Pi para proyectos de visión artificial, puede ser esencial capturar fuentes de vídeo en tiempo real para realizar inferencias. El conector MIPI CSI integrado en la Raspberry Pi le permite conectar módulos de cámara oficiales de Raspberry PI. En esta guía, hemos utilizado un Módulo de cámara Raspberry Pi 3 para capturar las fuentes de vídeo y realizar la inferencia utilizando modelos YOLO11.
Consejo
Obtenga más información sobre los diferentes módulos de cámara que ofrece Raspberry Pi y también cómo empezar a utilizar los módulos de cámara de Raspberry Pi.
Nota
Raspberry Pi 5 utiliza conectores CSI más pequeños que Raspberry Pi 4 (15 pines frente a 22 pines), por lo que necesitará un cable adaptador de 15 pines a 22 pines para conectarse a una Raspberry Pi Camera.
Probar la cámara
Ejecute el siguiente comando después de conectar la cámara a la Raspberry Pi. Debería ver una transmisión de video en vivo desde la cámara durante unos 5 segundos.
rpicam-hello
Consejo
Más información sobre rpicam-hello
uso en la documentación oficial de Raspberry Pi
Inferencia con Cámara
Hay 2 métodos para usar la cámara Raspberry Pi para la inferencia de modelos YOLO11.
Uso
Podemos usar picamera2
que viene preinstalado con Raspberry Pi OS para acceder a la cámara e inferir modelos YOLO11.
Ejemplo
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()
Necesitamos iniciar un flujo TCP con rpicam-vid
de la cámara conectada, de modo que podamos usar esta URL de transmisión como entrada cuando realicemos la inferencia más adelante. Ejecute el siguiente comando para iniciar la transmisión TCP.
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
Más información sobre rpicam-vid
uso en la documentación oficial de Raspberry Pi
Ejemplo
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo11n.pt source="tcp://127.0.0.1:8888"
Consejo
Consulta nuestro documento sobre Fuentes de Inferencia si deseas cambiar el tipo de entrada de imagen/video
Prácticas recomendadas al usar Raspberry Pi
Existen algunas prácticas recomendadas que se deben seguir para habilitar el máximo rendimiento en Raspberry Pis que ejecutan YOLO11.
-
Use un SSD
Cuando se utiliza Raspberry Pi de forma continua 24x7, se recomienda utilizar un SSD para el sistema, ya que una tarjeta SD no podrá soportar escrituras continuas y podría averiarse. Con el conector PCIe integrado en la Raspberry Pi 5, ahora puede conectar SSD utilizando un adaptador como el NVMe Base para Raspberry Pi 5.
-
Flashear sin GUI
Al flashear Raspberry Pi OS, puede optar por no instalar el entorno de escritorio (Raspberry Pi OS Lite) y esto puede ahorrar un poco de RAM en el dispositivo, dejando más espacio para el procesamiento de visión artificial.
-
Overclock Raspberry Pi
Si desea un pequeño aumento en el rendimiento al ejecutar modelos Ultralytics YOLO11 en Raspberry Pi 5, puede overclockear la CPU desde su base de 2,4 GHz a 2,9 GHz y la GPU de 800 MHz a 1 GHz. Si el sistema se vuelve inestable o se bloquea, reduzca los valores de overclock en incrementos de 100 MHz. Asegúrese de que haya una refrigeración adecuada, ya que el overclocking aumenta la generación de calor y puede provocar una limitación térmica.
a. Actualice el software
sudo apt update && sudo apt dist-upgrade
b. Abrir para editar el archivo de configuración
sudo nano /boot/firmware/config.txt
c. Agregue las siguientes líneas al final
arm_freq=3000 gpu_freq=1000 force_turbo=1
d. Guarde y salga presionando CTRL + X, luego Y, y presione ENTER
e. Reinicia la Raspberry Pi
Próximos pasos
¡Enhorabuena por configurar YOLO correctamente en su Raspberry Pi! Para obtener más información y soporte, visite Ultralytics YOLO11 Docs y Kashmir World Foundation.
Agradecimientos y citas
Esta guía fue creada inicialmente por Daan Eeltink para Kashmir World Foundation, una organización dedicada al uso de YOLO para la conservación de especies en peligro de extinción. Reconocemos su trabajo pionero y su enfoque educativo en el ámbito de las tecnologías de detección de objetos.
Para obtener más información sobre las actividades de Kashmir World Foundation, puedes visitar su sitio web.
Preguntas frecuentes
¿Cómo configuro Ultralytics YOLO11 en una Raspberry Pi sin usar Docker?
Para configurar Ultralytics YOLO11 en una Raspberry Pi sin Docker, sigue estos pasos:
- Actualice la lista de paquetes e instale
pip
:sudo apt update sudo apt install python3-pip -y pip install -U pip
- Instale el paquete Ultralytics con dependencias opcionales:
pip install ultralytics[export]
- Reinicie el dispositivo para aplicar los cambios:
sudo reboot
Para obtener instrucciones detalladas, consulta la sección Comenzar sin Docker.
¿Por qué debería usar el formato NCNN de Ultralytics YOLO11 en Raspberry Pi para tareas de IA?
El formato NCNN de Ultralytics YOLO11 está altamente optimizado para plataformas móviles e integradas, lo que lo hace ideal para ejecutar tareas de IA en dispositivos Raspberry Pi. NCNN maximiza el rendimiento de la inferencia al aprovechar la arquitectura ARM, proporcionando un procesamiento más rápido y eficiente en comparación con otros formatos. Para obtener más detalles sobre las opciones de exportación admitidas, visite la página de documentación de Ultralytics sobre las opciones de implementación.
¿Cómo puedo convertir un modelo YOLO11 al formato NCNN para usarlo en Raspberry Pi?
Puede convertir un modelo PyTorch YOLO11 al formato NCNN utilizando comandos de Python o CLI:
Ejemplo
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")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn # creates 'yolo11n_ncnn_model'
# Run inference with the exported model
yolo predict model='yolo11n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'
Para obtener más detalles, consulta la sección Usar NCNN en Raspberry Pi.
¿Cuáles son las diferencias de hardware entre Raspberry Pi 4 y Raspberry Pi 5 relevantes para ejecutar YOLO11?
Las principales diferencias incluyen:
- CPU: Raspberry Pi 4 utiliza Broadcom BCM2711, Cortex-A72 SoC de 64 bits, mientras que Raspberry Pi 5 utiliza Broadcom BCM2712, Cortex-A76 SoC de 64 bits.
- Frecuencia máxima de la CPU: Raspberry Pi 4 tiene una frecuencia máxima de 1,8 GHz, mientras que Raspberry Pi 5 alcanza los 2,4 GHz.
- Memoria: Raspberry Pi 4 ofrece hasta 8 GB de SDRAM LPDDR4-3200, mientras que Raspberry Pi 5 cuenta con SDRAM LPDDR4X-4267, disponible en variantes de 4 GB y 8 GB.
Estas mejoras contribuyen a obtener mejores puntos de referencia de rendimiento para los modelos YOLO11 en Raspberry Pi 5 en comparación con Raspberry Pi 4. Consulte la tabla de Comparación de la serie Raspberry Pi para obtener más detalles.
¿Cómo puedo configurar un Módulo de Cámara Raspberry Pi para que funcione con Ultralytics YOLO11?
Existen dos métodos para configurar una cámara Raspberry Pi para la inferencia de YOLO11:
-
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("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()
-
Usando un flujo TCP:
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
from ultralytics import YOLO model = YOLO("yolo11n.pt") results = model("tcp://127.0.0.1:8888")
Para obtener instrucciones de configuración detalladas, visita la sección Inferencia con cámara.