Ultralytics YOLO27:
Get Started

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

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 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 GPU400MHz500MHz800MHz
MemoriaSDRAM LPDDR2 de 1 GBSDRAM LPDDR4-3200 de 1 GB, 2 GB, 4 GB y 8 GBSDRAM LPDDR4X-4267 de 2 GB, 4 GB, 8 GB y 16 GB
PCIeN/DN/DInterfaz PCIe 2.0 1x
Consumo máximo2.5A@5V3A@5V5A@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 $t

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

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

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

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

YOLO26 benchmarks on RPi 5
Evaluado con 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

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.

YOLO26 benchmarks on RPi 5
Evaluado con Ultralytics 8.4.108

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.

Rendimiento
FormatoEstadoTamaño en disco (MB)mAP50-95(B)Tiempo de inferencia (ms/im)
PyTorch✅5.30.4760299.09
TorchScript✅9.80.4734353.20
ONNX✅9.50.4734125.99
OpenVINO✅9.60.4734104.55
LiteRT✅9.80.4730123.30
MNN✅9.40.474991.87
NCNN✅9.40.478467.03
ExecuTorch✅9.40.4772144.83

Pruebas realizadas 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 Ultralytics anteriores con todos los formatos de exportación, ejecuta este código:

Ejemplo
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 LiteRT se ejecuta fuera del dispositivo

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.

Consejo
Nota

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

Ejecutar inferencias con la cámara de Raspberry Pi

Podemos usar 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

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

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.

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

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

  3. 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-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, 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:

    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 Empieza sin Docker.

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

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

    1. 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()
    2. Con una transmisión 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 obtener instrucciones detalladas de configuración, consulta la sección Inferencia con cámara.

Comentarios