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: instalar el sistema operativo, instalar Ultralytics, exportar a NCNN para obtener la inferencia más rápida en ARM y ejecutar predicciones con la señal de una cámara en directo. También incluye pruebas de rendimiento en ocho formatos de exportación para que elijas el equilibrio entre velocidad y precisión más adecuado para tu hardware.
Ve directamente a configurar Ultralytics, exportar a NCNN y ejecutar la inferencia, las pruebas de rendimiento o la inferencia con cámara.
Ver: Novedades y mejoras de Raspberry Pi 5.
Esta guía se ha probado con Raspberry Pi 4 y Raspberry Pi 5 con la última versión de Raspberry Pi OS Bookworm (Debian 12). Se espera que esta guía también funcione con dispositivos Raspberry Pi antiguos, como Raspberry Pi 3, siempre que tengan instalado Raspberry Pi OS Bookworm.
¿Qué es Raspberry Pi?#
Raspberry Pi es un ordenador de placa única pequeño y asequible. Se ha popularizado en 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 cuentan con pines GPIO (entrada/salida de propósito general), que permiten integrarlas fácilmente con sensores, actuadores y otros componentes de hardware. Hay distintos modelos con especificaciones variadas, pero todos comparten la misma filosofía de diseño: 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 GPU | 400MHz | 500MHz | 800MHz |
| Memoria | SDRAM LPDDR2 de 1 GB | SDRAM LPDDR4-3200 de 1 GB, 2 GB, 4 GB y 8 GB | SDRAM LPDDR4X-4267 de 2 GB, 4 GB, 8 GB y 16 GB |
| PCIe | N/D | N/D | Interfaz PCIe 2.0 1x |
| Consumo máximo | 2.5A@5V | 3A@5V | 5A@5V (PD habilitado) |
¿Qué es Raspberry Pi OS?#
Raspberry Pi OS (antes conocido como Raspbian) es un sistema operativo similar a Unix basado en la distribución GNU/Linux Debian para la familia de ordenadores compactos de placa única Raspberry Pi, distribuidos por la Raspberry Pi Foundation. Raspberry Pi OS está muy optimizado para Raspberry Pi con CPU ARM y utiliza un entorno de escritorio ligero que se ejecuta en Wayland de forma predeterminada en Raspberry Pi 4 y 5. Raspberry Pi OS está en desarrollo activo, con especial atención a mejorar la estabilidad y el rendimiento de tantos paquetes de Debian como sea posible en Raspberry Pi.
Graba Raspberry Pi OS en Raspberry Pi#
Lo primero que debes hacer cuando tengas una Raspberry Pi es grabar Raspberry Pi OS en una tarjeta micro-SD, insertarla en el dispositivo e iniciar el sistema operativo. Sigue la documentación detallada para empezar de Raspberry Pi para preparar el 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:
Empieza con Docker#
La forma más rápida de empezar a usar Ultralytics YOLO26 en Raspberry Pi es ejecutar una imagen Docker precompilada para Raspberry Pi.
Ejecuta el siguiente comando para descargar el contenedor Docker y ejecutarlo en Raspberry Pi. Se basa en la imagen oficial de Python 3.13-slim-trixie, que ejecuta Debian 13 con Python 3.13.
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $tLa imagen Docker ya incluye Ultralytics, así que puedes pasar directamente a exportar tu modelo a NCNN.
Empieza sin Docker#
Instala el paquete 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, así que aquí solo hace falta el paquete base.
-
Actualiza la lista de paquetes, instala pip y actualízalo a la última versión
sudo apt update sudo apt install python3-pip -y pip install -U pip -
Instala el paquete pip
ultralyticspip install ultralytics -
Reinicia el dispositivo
sudo reboot
Usa NCNN en Raspberry Pi#
De todos los formatos de exportación compatibles con Ultralytics, NCNN ofrece el mejor rendimiento de inferencia en dispositivos Raspberry Pi, ya que está muy optimizado para plataformas móviles e integradas, como la arquitectura ARM. Convierte tu modelo YOLO26n PyTorch a NCNN y, después, ejecuta la inferencia con el modelo exportado:
from ultralytics import YOLO
# Carga un modelo YOLO26n de PyTorch
model = YOLO("yolo26n.pt")
# Exporta el modelo al formato NCNN
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'
# Carga el modelo exportado a NCNN
ncnn_model = YOLO("yolo26n_ncnn_model")
# Ejecutar inferencia
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 respecto a YOLO11#
YOLO26 está diseñado específicamente para ejecutarse en dispositivos con recursos de hardware limitados, como Raspberry Pi 5. En comparación con YOLO11n, YOLO26n aumenta los FPS en un ~15 % (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 |
Pruebas realizadas con Ultralytics 8.4.14.
Pruebas de YOLO26 en Raspberry Pi 5#
El equipo de Ultralytics realizó las pruebas de rendimiento de YOLO26 con ocho formatos de modelo distintos para medir la velocidad y la precisión: PyTorch, TorchScript, ONNX, OpenVINO, LiteRT, MNN, NCNN y ExecuTorch. Las pruebas se realizaron en una Raspberry Pi 5 con precisión FP32 y un tamaño de imagen de entrada predeterminado de 640.
Gráfico comparativo#
Solo hemos incluido pruebas de los modelos YOLO26n y YOLO26s, ya que los demás tamaños de modelo son demasiado grandes para ejecutarse en las Raspberry Pi y no ofrecen un rendimiento adecuado.
Tabla comparativa detallada#
La siguiente tabla muestra los resultados de las pruebas de dos modelos distintos (YOLO26n, YOLO26s) en ocho formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO, LiteRT, MNN, NCNN y ExecuTorch), ejecutados en una Raspberry Pi 5. Incluye 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 |
| LiteRT | ✅ | 9.8 | 0.4730 | 123.30 |
| MNN | ✅ | 9.4 | 0.4749 | 91.87 |
| NCNN | ✅ | 9.4 | 0.4784 | 67.03 |
| ExecuTorch | ✅ | 9.4 | 0.4772 | 144.83 |
Pruebas realizadas con Ultralytics 8.4.108
El tiempo de inferencia no incluye el preprocesamiento ni el posprocesamiento.
Reproduce nuestros resultados#
Para reproducir las pruebas de Ultralytics anteriores con todos los formatos de exportación, ejecuta este código:
from ultralytics import YOLO
# Carga un modelo YOLO26n de PyTorch
model = YOLO("yolo26n.pt")
# Prueba la velocidad y la precisión de YOLO26n en el conjunto de datos COCO128 con todos los formatos de exportación
results = model.benchmark(data="coco128.yaml", imgsz=640)Ten en cuenta que los resultados de las pruebas de rendimiento pueden variar según la configuración exacta de hardware y software del sistema, así como la carga de trabajo del sistema en el momento de ejecutar las pruebas. Para obtener los resultados más fiables, usa un conjunto de datos con muchas imágenes, p. ej., data='coco.yaml' (5000 imágenes de validación).
La exportación a format=litert (mediante litert-torch) solo es compatible con Linux x86_64 y macOS, no con la propia Raspberry Pi. Exporta el modelo .tflite en un equipo 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 usar Raspberry Pi para proyectos de visión artificial, puede ser esencial obtener 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 una Raspberry Pi Camera Module 3 para obtener las transmisiones de vídeo y realizar inferencias con modelos YOLO26.
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 (22 pines frente a 15), así 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-helloMá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 usar 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
# Inicializa 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()
# Carga el modelo YOLO26
model = YOLO("yolo26n.pt")
while True:
# Captura fotogramas uno a uno
frame = picam2.capture_array()
# Ejecuta la inferencia de YOLO26 en el fotograma
results = model(frame)
# Visualiza los resultados en el fotograma
annotated_frame = results[0].plot()
# Muestra el fotograma resultante
cv2.imshow("Camera", annotated_frame)
# Interrumpe el bucle si se pulsa 'q'
if cv2.waitKey(1) == ord("q"):
break
# Libera los recursos y cierra las ventanas
cv2.destroyAllWindows()Consulta nuestro documento sobre fuentes de inferencia si quieres cambiar el tipo de entrada de imagen o vídeo.
Buenas prácticas para usar Raspberry Pi#
Hay varias buenas prácticas que conviene seguir para obtener el máximo rendimiento en Raspberry Pi con YOLO26.
-
Usa un SSD
Si vas a utilizar Raspberry Pi de forma continuada las 24 horas del día, se recomienda usar un SSD para el sistema, ya que una tarjeta SD no soporta escrituras continuas y podría estropearse. Gracias al conector PCIe integrado en Raspberry Pi 5, ahora puedes conectar SSD con un adaptador como el NVMe Base para Raspberry Pi 5.
-
Graba el sistema sin interfaz gráfica
Al grabar Raspberry Pi OS, puedes optar por no instalar el entorno de escritorio (Raspberry Pi OS Lite), lo que ahorra algo de RAM en el dispositivo y deja más espacio para el procesamiento de visión artificial.
-
Haz overclocking en Raspberry Pi
Si quieres mejorar un poco el rendimiento al ejecutar modelos Ultralytics YOLO26 en Raspberry Pi 5, puedes aumentar la frecuencia de la CPU de sus 2.4GHz de base a 3.0GHz y la de la GPU de 800MHz a 1GHz. Si el sistema se vuelve inestable o se bloquea, reduce los valores de overclocking en incrementos de 100MHz. Asegúrate de que la refrigeración sea 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, luego Y y, por último, ENTER
e. Reinicia Raspberry Pi
Próximos pasos#
Ya has configurado YOLO26 correctamente en Raspberry Pi. Para seguir explorando, consulta el modo Predict para ver más opciones de inferencia, el modo Export para conocer otros formatos de implementación o la guía de NVIDIA Jetson si necesitas más capacidad de cálculo en el perímetro. 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 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 Empieza sin Docker.
- Actualiza la lista de paquetes e instala
El formato NCNN de Ultralytics YOLO26 está muy 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 inferencia al aprovechar la arquitectura ARM y ofrece un procesamiento más rápido y eficiente que otros formatos. Para obtener más información sobre los formatos de exportación compatibles, consulta las opciones de exportación de modelos.
Puedes convertir un modelo YOLO26 de PyTorch al formato NCNN con comandos de Python o de CLI:
Ejemplofrom ultralytics import YOLO # Carga un modelo YOLO26n de PyTorch model = YOLO("yolo26n.pt") # Exporta el modelo al formato NCNN model.export(format="ncnn") # creates 'yolo26n_ncnn_model' # Carga el modelo exportado a NCNN ncnn_model = YOLO("yolo26n_ncnn_model") # Ejecutar inferencia results = ncnn_model("https://ultralytics.com/images/bus.jpg")Para obtener más información, consulta la sección Usa NCNN en Raspberry Pi.
Estas son las principales diferencias:
- CPU: Raspberry Pi 4 utiliza Broadcom BCM2711, un SoC Cortex-A72 de 64 bits, mientras que Raspberry Pi 5 utiliza Broadcom BCM2712, un SoC Cortex-A76 de 64 bits.
- Frecuencia máxima de la CPU: Raspberry Pi 4 alcanza una frecuencia máxima de 1.8GHz, mientras que Raspberry Pi 5 llega a 2.4GHz.
- 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 2 GB, 4 GB, 8 GB y 16 GB.
Estas mejoras contribuyen a que los modelos YOLO26 obtengan mejores resultados en las pruebas de rendimiento en Raspberry Pi 5 que en Raspberry Pi 4. Consulta la tabla Comparación de la serie Raspberry Pi para obtener más información.
Hay dos métodos para configurar una cámara Raspberry Pi para la inferencia con YOLO26:
-
Con
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() -
Con una transmisión 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 obtener instrucciones detalladas de configuración, consulta la sección Inferencia con cámara.
-