Ultralytics YOLO27:

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.
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 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 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, SoC Cortex-A53 de 64 bitsBroadcom BCM2711, SoC Cortex-A72 de 64 bitsBroadcom BCM2712, SoC Cortex-A76 de 64 bits
Frecuencia máxima de la CPU1.4GHz1.8GHz2.4GHz
GPUVideocore IVVideocore VIVideoCore VII
Frecuencia máxima de la GPU400Mhz500Mhz800Mhz
Memoria1 GB de SDRAM LPDDR21 GB, 2 GB, 4 GB, 8 GB de SDRAM LPDDR4-32004 GB, 8 GB de SDRAM LPDDR4X-4267
PCIeN/AN/AInterfaz PCIe 2.0 1x
Consumo máximo2.5A@5V3A@5V5A@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 $t

La 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.

  1. 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
  2. Instalar el paquete pip ultralytics

    pip install ultralytics
  3. 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:

Ejemplo
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")
Consejo

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.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.14
Rendimiento
ModelomAP50-95(B)Tiempo de inferencia (ms/im)
YOLO26n40.1128.42
YOLO26s47.8352.84
YOLO26m52.5993.78
YOLO26l54.41259.46
YOLO26x56.92636.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.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.108

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.

Rendimiento
FormatoEstadoTamaño en disco (MB)mAP50-95(B)Tiempo de inferencia (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

Evaluado con Ultralytics 8.4.108

Nota

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:

Ejemplo
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).

La exportación a LiteRT se ejecuta fuera del dispositivo

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.

Consejo
Nota

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-hello
Consejo

Inferencia con la cámara#

Hay dos métodos para utilizar la cámara de Raspberry Pi y ejecutar inferencias con modelos YOLO26.

Ejecuta inferencias con la cámara de Raspberry Pi

Podemos utilizar picamera2, que viene preinstalado con Raspberry Pi OS, para acceder a la cámara y ejecutar inferencias con modelos YOLO26.

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 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()
Consejo

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.

  1. 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.

  2. 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.

  3. 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-upgrade

    b. Abre el archivo de configuración para editarlo

    sudo nano /boot/firmware/config.txt

    c. Añade las siguientes líneas al final

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1

    d. 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:

    1. Actualiza la lista de paquetes e instala pip:
      sudo apt update
      sudo apt install python3-pip -y
      pip install -U pip
    2. Instala el paquete Ultralytics:
      pip install ultralytics
    3. Reinicia el dispositivo para aplicar los cambios:
      sudo reboot

    Para obtener instrucciones detalladas, consulta la sección Iniciar sin Docker.

  • 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:

    Ejemplo
    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, 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:

    1. 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()
    2. Usando un flujo 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")

    Para consultar instrucciones detalladas de configuración, visita la sección Inferencia con cámara.

Comentarios