Guía de inicio rápido: Raspberry Pi con Ultralytics YOLO26#
Raspberry Pi es un ordenador pequeño y asequible que ejecuta Ultralytics YOLO26 para la detección de objetos en tiempo real en el edge, sin necesidad de GPU. Esta guía te explica cómo implementar YOLO26 en Raspberry Pi 4 y 5: grabar el sistema operativo, instalar Ultralytics, exportar a NCNN para obtener la inferencia más rápida en ARM y ejecutar predicciones con una transmisión de cámara en directo. También incluye pruebas de rendimiento en ocho formatos de exportación para que puedas elegir el mejor equilibrio entre velocidad y precisión para tu hardware.
Ve directamente a configurar Ultralytics, exportar a NCNN y ejecutar inferencias, consultar las pruebas de rendimiento o realizar inferencias con la cámara.
Watch: Raspberry Pi 5 updates and improvements.
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 esta guía funcione en dispositivos Raspberry Pi más antiguos, como Raspberry Pi 3, siempre que tengan instalado el mismo Raspberry Pi OS Bookworm.
¿Qué es Raspberry Pi?#
Raspberry Pi es un ordenador pequeño, asequible y de placa única. Se ha hecho popular para una amplia variedad de proyectos y aplicaciones, desde la domótica para aficionados hasta usos industriales. Las placas Raspberry Pi pueden ejecutar diversos sistemas operativos y ofrecen pines GPIO (Entrada/salida de propósito general) que permiten integrarlas fácilmente con sensores, actuadores y otros componentes de hardware. Existen distintos modelos con especificaciones diferentes, pero todos comparten la misma filosofía de diseño básica: bajo coste, tamaño compacto y versatilidad.
Comparativa de la serie Raspberry Pi#
| Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
|---|---|---|---|
| CPU | Broadcom BCM2837, SoC Cortex-A53 de 64 bits | Broadcom BCM2711, SoC Cortex-A72 de 64 bits | Broadcom BCM2712, SoC Cortex-A76 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 | 1 GB de SDRAM LPDDR2 | 1 GB, 2 GB, 4 GB, 8 GB de SDRAM LPDDR4-3200 | 4 GB, 8 GB de SDRAM LPDDR4X-4267 |
| PCIe | N/A | N/A | Interfaz PCIe 2.0 1x |
| Consumo máximo | 2.5A@5V | 3A@5V | 5A@5V (PD activado) |
¿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 ordenadores compactos de placa única, distribuidos por la Raspberry Pi Foundation. Raspberry Pi OS está altamente optimizado para Raspberry Pi con CPU ARM y utiliza un entorno de escritorio LXDE modificado con el gestor de ventanas de apilamiento Openbox. Raspberry Pi OS se encuentra en desarrollo activo, con especial atención a mejorar la estabilidad y el rendimiento del mayor número posible de paquetes de Debian en Raspberry Pi.
Graba Raspberry Pi OS en Raspberry Pi#
Lo primero que debes hacer después de conseguir una Raspberry Pi es grabar una tarjeta micro-SD con Raspberry Pi OS, insertarla en el dispositivo e iniciar el sistema operativo. Sigue la documentación detallada de introducción de Raspberry Pi para preparar tu dispositivo para el primer uso.
Configura Ultralytics#
Puedes configurar el paquete Ultralytics en Raspberry Pi de dos formas para tu próximo proyecto de visión artificial:
Empezar con Docker#
La forma más rápida de empezar a utilizar Ultralytics YOLO26 en Raspberry Pi es ejecutar una imagen de Docker precompilada para Raspberry Pi.
Ejecuta el siguiente comando para descargar el contenedor de Docker y ejecutarlo en Raspberry Pi. Se basa en la imagen de Docker arm64v8/ubuntu, que ejecuta Ubuntu 24.04 en un entorno Python3.
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $tLa imagen de Docker ya incluye Ultralytics, así que puedes pasar directamente a exportar tu modelo a NCNN.
Empezar sin Docker#
Instalar el paquete de Ultralytics#
Aquí instalaremos el paquete Ultralytics en Raspberry Pi. Las dependencias de exportación para formatos como NCNN se instalan automáticamente la primera vez que exportas un modelo PyTorch, por lo que aquí solo necesitas el paquete base.
-
Actualizar la lista de paquetes, instalar pip y actualizarlo a la última versión
sudo apt update sudo apt install python3-pip -y pip install -U pip -
Instalar el paquete pip
ultralyticspip install ultralytics -
Reiniciar el dispositivo
sudo reboot
Usa NCNN en Raspberry Pi#
De todos los formatos de exportación de modelos compatibles con Ultralytics, NCNN ofrece el mejor rendimiento de inferencia en dispositivos Raspberry Pi, ya que está altamente optimizado para plataformas móviles/embebidas, como la arquitectura ARM. Convierte tu modelo YOLO26n de PyTorch a NCNN y ejecuta después la inferencia con el modelo exportado:
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")Para obtener más información sobre las opciones de exportación compatibles, consulta la guía de opciones de implementación de modelos.
Mejoras de rendimiento de YOLO26 con respecto a YOLO11#
YOLO26 está diseñado específicamente para ejecutarse en dispositivos con recursos limitados, como Raspberry Pi 5. En comparación con YOLO11n, YOLO26n logra un aumento de ~15 % en FPS (6.79 → 7.79) y ofrece un mAP superior (40.1 frente a 39.5) con un tamaño de entrada de 640 y modelos exportados a ONNX en Raspberry Pi 5. La tabla y el gráfico siguientes muestran esta comparación.
| Modelo | mAP50-95(B) | Tiempo de inferencia (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 |
Evaluado con Ultralytics 8.4.14.
Pruebas de rendimiento de YOLO26 en Raspberry Pi 5#
Las pruebas de rendimiento de YOLO26 fueron realizadas por el equipo de Ultralytics en ocho formatos de modelo diferentes, midiendo la velocidad y la precisión: PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch y LiteRT. Las pruebas se realizaron en una Raspberry Pi 5 con precisión FP32 y el tamaño de imagen de entrada predeterminado de 640.
Gráfico comparativo#
Solo hemos incluido las pruebas de rendimiento de los modelos YOLO26n y YOLO26s porque los demás tamaños de modelo son demasiado grandes para ejecutarse en Raspberry Pi y no ofrecen un rendimiento adecuado.
Tabla comparativa detallada#
La tabla siguiente representa los resultados de las pruebas de rendimiento de dos modelos diferentes (YOLO26n y YOLO26s) en ocho formatos distintos (PyTorch, TorchScript, ONNX, OpenVINO, MNN, NCNN, ExecuTorch y LiteRT), ejecutados en una Raspberry Pi 5, y muestra el estado, el tamaño, la métrica mAP50-95(B) y el tiempo de inferencia de cada combinación.
| Formato | Estado | Tamaño en disco (MB) | mAP50-95(B) | Tiempo de inferencia (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 |
Evaluado con Ultralytics 8.4.108
El tiempo de inferencia no incluye el preprocesamiento ni el posprocesamiento.
Reproduce nuestros resultados#
Para reproducir las pruebas de rendimiento de Ultralytics anteriores en todos los formatos de exportación, ejecuta este código:
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)Ten en cuenta que los resultados de las pruebas de rendimiento pueden variar en función del hardware y la configuración de software exactos del sistema, así como de la carga de trabajo actual del sistema en el momento de realizar las pruebas. Para obtener resultados más fiables, utiliza un conjunto de datos con un gran número de imágenes, por ejemplo, data='coco.yaml' (5000 imágenes de validación).
litert-converter no incluye ninguna wheel de Linux de aarch64, por lo que la exportación a format=litert solo es compatible con Linux x86_64 y macOS, no con la propia Raspberry Pi. Exporta el modelo .tflite en una máquina Linux x86_64 o un Mac, cópialo a la Raspberry Pi y utiliza la Pi para la inferencia.
Usa la cámara de Raspberry Pi#
Al utilizar Raspberry Pi en proyectos de visión artificial, puede ser esencial capturar transmisiones de vídeo en tiempo real para realizar inferencias. El conector MIPI CSI integrado en Raspberry Pi permite conectar módulos de cámara oficiales de Raspberry Pi. En esta guía hemos utilizado un Raspberry Pi Camera Module 3 para capturar las transmisiones de vídeo y realizar inferencias con modelos YOLO26.
Obtén más información sobre los distintos módulos de cámara que ofrece Raspberry Pi y sobre cómo empezar a utilizar los módulos de cámara de Raspberry Pi.
Raspberry Pi 5 utiliza conectores CSI más pequeños que Raspberry Pi 4 (15 pines frente a 22), por lo que necesitarás un cable adaptador de 15 a 22 pines para conectar una cámara Raspberry Pi.
Prueba la cámara#
Ejecuta el siguiente comando después de conectar la cámara a Raspberry Pi. Deberías ver una transmisión de vídeo en directo de la cámara durante unos 5 segundos.
rpicam-helloObtén más información sobre el uso de rpicam-hello en la documentación oficial de Raspberry Pi
Inferencia con la cámara#
Hay dos métodos para utilizar la cámara de Raspberry Pi y ejecutar inferencias con modelos YOLO26.
Podemos utilizar picamera2, que viene preinstalado con Raspberry Pi OS, para acceder a la cámara y ejecutar inferencias con modelos 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 nuestro documento sobre Fuentes de inferencia si quieres cambiar el tipo de entrada de imagen/vídeo.
Buenas prácticas al utilizar Raspberry Pi#
Hay un par de buenas prácticas que debes seguir para obtener el máximo rendimiento en Raspberry Pi con YOLO26.
-
Usa un SSD
Si utilizas Raspberry Pi de forma continua las 24 horas del día, los 7 días de la semana, se recomienda usar un SSD para el sistema, ya que una tarjeta SD no podrá soportar escrituras continuas y podría averiarse. Gracias al conector PCIe integrado en Raspberry Pi 5, ahora puedes conectar SSD mediante un adaptador como el NVMe Base para Raspberry Pi 5.
-
Graba el sistema sin GUI
Al grabar Raspberry Pi OS, puedes optar por no instalar el entorno de escritorio (Raspberry Pi OS Lite), lo que puede ahorrar algo de RAM en el dispositivo y dejar más espacio para el procesamiento de visión artificial.
-
Haz overclocking en Raspberry Pi
Si quieres un pequeño impulso en el rendimiento al ejecutar modelos de Ultralytics YOLO26 en Raspberry Pi 5, puedes hacer overclocking en la CPU desde sus 2,4 GHz base hasta 3,0 GHz y en la GPU desde 800 MHz hasta 1 GHz. Si el sistema se vuelve inestable o se bloquea, reduce los valores de overclocking en incrementos de 100 MHz. Asegúrate de contar con una refrigeración adecuada, ya que el overclocking aumenta la generación de calor y puede provocar estrangulamiento térmico.
a. Actualiza el software
sudo apt update && sudo apt dist-upgradeb. Abre el archivo de configuración para editarlo
sudo nano /boot/firmware/config.txtc. Añade las siguientes líneas al final
arm_freq=3000 gpu_freq=1000 force_turbo=1d. Guarda y sal pulsando CTRL + X, después Y y, por último, ENTER
e. Reinicia Raspberry Pi
Siguientes pasos#
Has configurado correctamente YOLO26 en tu Raspberry Pi. Para seguir avanzando, explora el modo Predict para consultar más opciones de inferencia, el modo Export para conocer formatos de implementación adicionales o la guía de NVIDIA Jetson si necesitas más capacidad de cálculo en el edge. Para consultar la documentación completa, visita la documentación de Ultralytics YOLO26.
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#
Para configurar Ultralytics YOLO26 en una Raspberry Pi sin Docker, sigue estos pasos:
- Actualiza la lista de paquetes e instala
pip:sudo apt update sudo apt install python3-pip -y pip install -U pip - Instala el paquete Ultralytics:
pip install ultralytics - Reinicia el dispositivo para aplicar los cambios:
sudo reboot
Para obtener instrucciones detalladas, consulta la sección Iniciar sin Docker.
- Actualiza la lista de paquetes e instala
El formato NCNN de Ultralytics YOLO26 está altamente optimizado para plataformas móviles e integradas, por lo que es ideal para ejecutar tareas de IA en dispositivos Raspberry Pi. NCNN maximiza el rendimiento de la inferencia al aprovechar la arquitectura ARM y proporciona un procesamiento más rápido y eficiente en comparación con otros formatos. Para obtener más información sobre los formatos de exportación compatibles, consulta las opciones de exportación del modelo.
Puedes convertir un modelo YOLO26 de PyTorch al formato NCNN usando comandos de Python o CLI:
Ejemplofrom 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")Para obtener más información, consulta la sección Usar NCNN en Raspberry Pi.
Las diferencias principales son:
- CPU: Raspberry Pi 4 utiliza un SoC Broadcom BCM2711 Cortex-A72 de 64 bits, mientras que Raspberry Pi 5 utiliza un SoC Broadcom BCM2712 Cortex-A76 de 64 bits.
- Frecuencia máxima de la CPU: Raspberry Pi 4 tiene una frecuencia máxima de 1.8GHz, mientras que Raspberry Pi 5 alcanza los 2.4GHz.
- Memoria: Raspberry Pi 4 ofrece hasta 8GB de SDRAM LPDDR4-3200, mientras que Raspberry Pi 5 incorpora SDRAM LPDDR4X-4267, disponible en variantes de 4GB y 8GB.
Estas mejoras contribuyen a obtener mejores resultados en las pruebas de rendimiento de los modelos YOLO26 en Raspberry Pi 5 que en Raspberry Pi 4. Consulta la tabla Comparativa de la serie Raspberry Pi para obtener más información.
Hay dos métodos para configurar una cámara de Raspberry Pi para la inferencia de 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 un flujo 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")
Para consultar instrucciones detalladas de configuración, visita la sección Inferencia con cámara.
-