Link to this sectionGuía de inicio rápido: Raspberry Pi con Ultralytics YOLO26#
Raspberry Pi es un ordenador pequeño y asequible que ejecuta Ultralytics YOLO26 para detección de objetos en tiempo real en el borde (edge) — sin necesidad de GPU. Esta guía te explica cómo implementar YOLO26 en Raspberry Pi 4 y 5: cómo flashear el SO, instalar Ultralytics, exportar a NCNN para obtener la inferencia más rápida en ARM y ejecutar predicciones en una señal de cámara en directo. También incluye benchmarks de rendimiento en diez formatos de exportación para que puedas elegir el mejor equilibrio entre velocidad y precisión para tu hardware.
Salta a configurar Ultralytics, exportar a NCNN y ejecutar inferencia, benchmarks o inferencia con 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 versión más reciente 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 que esté instalado el mismo Raspberry Pi OS Bookworm.
Link to this section¿Qué es Raspberry Pi?#
Raspberry Pi es un ordenador de placa única pequeño y asequible. Se ha vuelto popular para una amplia gama de proyectos y aplicaciones, desde la domótica para aficionados hasta usos industriales. Las placas Raspberry Pi son capaces de ejecutar una variedad de sistemas operativos y ofrecen pines GPIO (General Purpose Input/Output) que permiten una fácil integración con sensores, actuadores y otros componentes de hardware. Vienen en diferentes modelos con especificaciones variables, pero todos comparten la misma filosofía de diseño básico: ser de bajo coste, compactos y versátiles.
Link to this sectionComparativa 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 CPU | 1.4GHz | 1.8GHz | 2.4GHz |
| GPU | Videocore IV | Videocore VI | VideoCore VII |
| Frecuencia máxima de 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 | Interfaz 1xPCIe 2.0 |
| Consumo de energía máx. | 2.5A@5V | 3A@5V | 5A@5V (PD habilitado) |
Link to this section¿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 de ordenadores de placa única compactos Raspberry Pi, distribuido por la Raspberry Pi Foundation. Raspberry Pi OS está altamente optimizado para Raspberry Pi con CPUs ARM y utiliza un entorno de escritorio LXDE modificado con el gestor de ventanas de apilamiento Openbox. Raspberry Pi OS está bajo desarrollo activo, con énfasis en mejorar la estabilidad y el rendimiento de tantos paquetes Debian como sea posible en Raspberry Pi.
Link to this sectionInstalar 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 de inicio de Raspberry Pi para preparar tu dispositivo para el primer uso.
Link to this sectionConfigurar Ultralytics#
Puedes configurar el paquete Ultralytics en Raspberry Pi de dos formas para tu próximo proyecto de Visión Artificial:
Link to this sectionEmpezar con Docker#
La forma más rápida de empezar con Ultralytics YOLO26 en Raspberry Pi es ejecutarlo con una imagen de Docker preconfigurada 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, por lo que puedes pasar directamente a exportar tu modelo a NCNN.
Link to this sectionEmpezar sin Docker#
Link to this sectionInstalar el paquete Ultralytics#
Aquí instalaremos el paquete Ultralytics en la Raspberry Pi con dependencias opcionales para que podamos exportar los modelos de PyTorch a otros formatos.
-
Actualiza la lista de paquetes, instala pip y actualiza a la última versión
sudo apt update sudo apt install python3-pip -y pip install -U pip -
Instala el paquete pip
ultralyticscon dependencias opcionalespip install ultralytics[export] -
Reinicia el dispositivo
sudo reboot
Link to this sectionUsar 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 porque está altamente optimizado para plataformas móviles/integradas como la arquitectura ARM. Convierte tu modelo YOLO26n de PyTorch a NCNN y luego ejecuta 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 detalles sobre las opciones de exportación compatibles, consulta la guía de opciones de despliegue de modelos.
Link to this sectionMejoras de rendimiento de YOLO26 respecto a YOLO11#
YOLO26 está diseñado específicamente para ejecutarse en dispositivos con hardware limitado, como Raspberry Pi 5. En comparación con YOLO11n, YOLO26n logra un aumento de ~15% en FPS (6.79 → 7.79) mientras que ofrece un mAP mayor (40.1 frente a 39.5) con un tamaño de entrada de 640 usando modelos exportados en ONNX en Raspberry Pi 5. La tabla y el gráfico a continuación 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.
Link to this sectionPruebas de rendimiento de YOLO26 en Raspberry Pi 5#
Los benchmarks de YOLO26 fueron realizados por el equipo de Ultralytics en diez formatos de modelo diferentes midiendo la velocidad y la precisión: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, MNN, NCNN, ExecuTorch. Los benchmarks se ejecutaron en una Raspberry Pi 5 a precisión FP32 con un tamaño de imagen de entrada predeterminado de 640.
Link to this sectionGráfico comparativo#
Solo hemos incluido pruebas para los modelos YOLO26n y YOLO26s porque otros tamaños de modelos son demasiado grandes para ejecutarse en las Raspberry Pis y no ofrecen un rendimiento decente.
Link to this sectionTabla comparativa detallada#
La siguiente tabla representa los resultados de las pruebas para dos modelos diferentes (YOLO26n, YOLO26s) en diez formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, MNN, NCNN, ExecuTorch), ejecutándose en una Raspberry Pi 5, mostrándonos el estado, el tamaño, la métrica mAP50-95(B) y el tiempo de inferencia para cada combinación.
| Formato | Estado | Tamaño en disco (MB) | mAP50-95(B) | Tiempo de inferencia (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4798 | 302.15 |
| TorchScript | ✅ | 9.8 | 0.4764 | 357.58 |
| ONNX | ✅ | 9.5 | 0.4764 | 130.33 |
| OpenVINO | ✅ | 9.6 | 0.4818 | 70.74 |
| TF SavedModel | ✅ | 24.6 | 0.4764 | 213.58 |
| TF GraphDef | ✅ | 9.5 | 0.4764 | 213.5 |
| TF Lite | ✅ | 9.9 | 0.4764 | 251.41 |
| MNN | ✅ | 9.4 | 0.4784 | 90.89 |
| NCNN | ✅ | 9.4 | 0.4805 | 67.69 |
| ExecuTorch | ✅ | 9.4 | 0.4764 | 148.36 |
Evaluado con Ultralytics 8.4.1
El tiempo de inferencia no incluye el preprocesamiento ni el postprocesamiento.
Link to this sectionReproduce nuestros resultados#
Para reproducir las pruebas 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 del benchmarking pueden variar según la configuración exacta de hardware y software de un sistema, así como de la carga de trabajo actual del sistema en el momento en que se ejecutan los benchmarks. Para obtener resultados más fiables, utiliza un conjunto de datos con un gran número de imágenes, p. ej., data='coco.yaml' (5000 imágenes de validación).
Link to this sectionUsar la cámara de Raspberry Pi#
Al usar Raspberry Pi para proyectos de Computer Vision, puede ser esencial capturar fuentes de vídeo en tiempo real para realizar la inferencia. El conector MIPI CSI integrado en la Raspberry Pi te 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 fuentes de vídeo y realizar la inferencia usando modelos YOLO26.
Aprende más sobre los diferentes módulos de cámara ofrecidos por Raspberry Pi y también cómo empezar con los módulos de cámara de Raspberry Pi.
Raspberry Pi 5 utiliza conectores CSI más pequeños que la Raspberry Pi 4 (15 pines frente a 22 pines), por lo que necesitarás un cable adaptador de 15 a 22 pines para conectar a una cámara de Raspberry Pi.
Link to this sectionProbar la cámara#
Ejecuta el siguiente comando después de conectar la cámara a la Raspberry Pi. Deberías ver una fuente de vídeo en directo de la cámara durante unos 5 segundos.
rpicam-helloAprende más sobre el uso de rpicam-hello en la documentación oficial de Raspberry Pi
Link to this sectionInferencia con cámara#
Existen dos métodos para usar la cámara de Raspberry Pi para ejecutar inferencias en modelos YOLO26.
Podemos usar picamera2, que viene preinstalado con Raspberry Pi OS, para acceder a la cámara y ejecutar inferencias en 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 deseas cambiar el tipo de entrada de imagen/vídeo
Link to this sectionMejores prácticas al usar Raspberry Pi#
Existen un par de mejores prácticas a seguir para permitir el máximo rendimiento en Raspberry Pis que ejecutan YOLO26.
-
Usa un SSD
Cuando uses Raspberry Pi para un uso continuo 24x7, se recomienda usar un SSD para el sistema, ya que una tarjeta SD no podrá soportar escrituras continuas y podría dañarse. Con el conector PCIe integrado en la Raspberry Pi 5, ahora puedes conectar SSD usando un adaptador como la NVMe Base para Raspberry Pi 5.
-
Instala sin interfaz gráfica (GUI)
Al instalar Raspberry Pi OS, puedes elegir no instalar el entorno de escritorio (Raspberry Pi OS Lite), lo que puede ahorrar un poco de RAM en el dispositivo, dejando más espacio para el procesamiento de visión artificial.
-
Haz overclock a tu Raspberry Pi
Si quieres un pequeño aumento en el rendimiento mientras ejecutas modelos Ultralytics YOLO26 en Raspberry Pi 5, puedes hacer overclock a la CPU desde su base de 2.4GHz a 2.9GHz y a la GPU desde 800MHz a 1GHz. Si el sistema se vuelve inestable o falla, reduce los valores de overclock en incrementos de 100MHz. Asegúrate de que haya una refrigeración adecuada, ya que el overclock 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 presionando CTRL + X, luego Y, y pulsa ENTER
e. Reinicia la Raspberry Pi
Link to this sectionSiguientes pasos#
Has configurado correctamente YOLO26 en tu Raspberry Pi. Para ir más allá, explora el Modo Predicción para obtener más opciones de inferencia, el Modo Exportación para obtener formatos de despliegue adicionales, o la guía de NVIDIA Jetson si necesitas más potencia de cálculo en el borde. Para obtener la documentación completa, visita los Docs de Ultralytics YOLO26.
Link to this sectionReconocimientos y citas#
Esta guía fue creada inicialmente por Daan Eeltink para la 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 enfoque educativo en el ámbito de las tecnologías de detección de objetos.
Para obtener más información sobre las actividades de la Kashmir World Foundation, puedes visitar su sitio web.
Link to this sectionFAQ#
Link to this section¿Cómo configuro Ultralytics YOLO26 en una Raspberry Pi sin usar Docker?#
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 con dependencias opcionales:
pip install ultralytics[export] - Reinicia el dispositivo para aplicar los cambios:
sudo reboot
Para obtener instrucciones detalladas, consulta la sección Iniciar sin Docker.
Link to this section¿Por qué debería usar el formato NCNN de Ultralytics YOLO26 en Raspberry Pi para tareas de IA?#
El formato NCNN de Ultralytics YOLO26 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 aprovechando la arquitectura ARM, lo que proporciona un procesamiento más rápido y eficiente en comparación con otros formatos. Para obtener más detalles sobre los formatos de exportación compatibles, consulta las opciones de exportación de modelos.
Link to this section¿Cómo puedo convertir un modelo YOLO26 al formato NCNN para usarlo en Raspberry Pi?#
Puedes convertir un modelo PyTorch YOLO26 al formato NCNN usando Python o comandos CLI:
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 más detalles, consulta la sección Usar NCNN en Raspberry Pi.
Link to this section¿Cuáles son las diferencias de hardware entre Raspberry Pi 4 y Raspberry Pi 5 relevantes para ejecutar YOLO26?#
Las diferencias clave incluyen:
- CPU: Raspberry Pi 4 usa un SoC Broadcom BCM2711, Cortex-A72 de 64 bits, mientras que Raspberry Pi 5 usa un SoC Broadcom BCM2712, Cortex-A76 de 64 bits.
- Frecuencia máxima de 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 LPDDR4-3200 SDRAM, mientras que Raspberry Pi 5 cuenta con LPDDR4X-4267 SDRAM, disponible en variantes de 4GB y 8GB.
Estas mejoras contribuyen a mejores puntos de referencia de rendimiento para los modelos YOLO26 en Raspberry Pi 5 en comparación con Raspberry Pi 4. Consulta la tabla de Comparación de series de Raspberry Pi para obtener más detalles.
Link to this section¿Cómo puedo configurar un módulo de cámara de Raspberry Pi para que funcione con Ultralytics YOLO26?#
Hay dos métodos para configurar una cámara de Raspberry Pi para la inferencia con 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 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 de configuración detalladas, visita la sección Inferencia con cámara.