Guía de inicio rápido: Raspberry Pi con Ultralytics YOLO11
Esta completa guía ofrece un recorrido detallado para implementar Ultralytics YOLO11 en dispositivos Raspberry Pi. Además, presenta pruebas de rendimiento para demostrar las capacidades de YOLO11 en estos pequeños y potentes dispositivos.
Observa: Actualizaciones y mejoras de Raspberry Pi 5.
Nota
Esta guía ha sido probada con Raspberry Pi 4 y Raspberry Pi 5 ejecutando el último Raspberry Pi OS Bookworm (Debian 12). Se espera que el uso de esta guía para dispositivos Raspberry Pi más antiguos, como el Raspberry Pi 3, funcione siempre y cuando esté instalado el mismo Raspberry Pi OS Bookworm.
¿Qué es Raspberry Pi?
Raspberry Pi es un pequeño y asequible ordenador de placa única. Se ha hecho 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 gran 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. Existen diferentes modelos con distintas especificaciones, pero todos comparten la misma filosofía básica de diseño: bajo coste, compacto y versátil.
Comparación 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 |
CPU Frecuencia máxima | 1,4 GHz | 1,8 GHz | 2,4 GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
GPU Frecuencia máxima | 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 máximo | 2,5A@5V | 3A@5V | 5A@5V (PD activado) |
¿Qué es Raspberry Pi OS?
Raspberry Pi OS (antes 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 Fundación Raspberry Pi. Raspberry Pi OS está altamente optimizado para la Raspberry Pi con CPU ARM y utiliza un entorno de escritorio LXDE modificado con el gestor de ventanas apilables Openbox. Raspberry Pi OS está en desarrollo activo, con énfasis en mejorar la estabilidad y el rendimiento de tantos paquetes Debian como sea posible en Raspberry Pi.
Flash Raspberry Pi OS a Raspberry Pi
Lo primero que hay que hacer después de conseguir una Raspberry Pi es flashear una tarjeta micro-SD con Raspberry Pi OS, insertarla en el dispositivo y arrancar el sistema operativo. Sigue la detallada documentación de inicio de Raspberry Pi para preparar tu dispositivo para el primer uso.
Puesta en marcha Ultralytics
Hay dos maneras de configurar el paquete Ultralytics en Raspberry Pi para construir su próximo proyecto de Visión por Computador. Puedes utilizar cualquiera de ellas.
Empezar con Docker
La forma más rápida de empezar con Ultralytics YOLO11 en Raspberry Pi es ejecutar con una imagen docker pre-construida para Raspberry Pi.
Ejecute el siguiente comando para extraer el contenedor Docker y ejecutarlo en Raspberry Pi. Esto se basa en arm64v8/debian imagen docker que contiene Debian 12 (Bookworm) en un entorno Python3.
Una vez hecho esto, vaya a la sección Utilizar NCNN en Raspberry Pi.
Empezar sin Docker
Instale el paquete Ultralytics
Aquí instalaremos el paquete Ultralytics en la Raspberry Pi con dependencias opcionales para que podamos exportar los PyTorch modelos a otros formatos diferentes.
-
Actualizar la lista de paquetes, instalar pip y actualizar a la última versión
-
Instale
ultralytics
Paquete pip con dependencias opcionales -
Reiniciar el dispositivo
Utilice NCNN en Raspberry Pi
De todos los formatos de exportación de modelos soportados por Ultralytics, NCNN ofrece el mejor rendimiento de inferencia cuando se trabaja con dispositivos Raspberry Pi porque NCNN está altamente optimizado para plataformas móviles/incorporadas (como la arquitectura ARM). Por lo tanto, nuestra recomendación es utilizar NCNN con Raspberry Pi.
Convierta el modelo a NCNN y ejecute la inferencia
El modelo YOLO11n en formato PyTorch se convierte a NCNN para ejecutar la inferencia con el modelo exportado.
Ejemplo
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_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, visite la página de documentación deUltralytics sobre opciones de implantación.
Raspberry Pi 5 YOLO11 Puntos de referencia
YOLO11 El equipo de Ultralytics ejecutó pruebas comparativas en nueve formatos de modelo diferentes para medir la velocidad y la precisión: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN. Las pruebas se ejecutaron en una Raspberry Pi 5 con precisión FP32 y un tamaño de imagen de entrada predeterminado de 640.
Cuadro comparativo
Sólo hemos incluido los puntos de referencia de los modelos YOLO11n y YOLO11s porque los tamaños de otros modelos son demasiado grandes para ejecutarlos en la Raspberry Pis y no ofrecen un rendimiento decente.
Cuadro comparativo detallado
La siguiente tabla representa los resultados del benchmark para dos modelos diferentes (YOLO11n, YOLO11s) a través de nueve formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN), ejecutándose en una Raspberry Pi 5, dándonos el estado, tamaño, métrica mAP50-95(B) y tiempo de inferencia para cada combinación.
Rendimiento
Formato | Estado | Tamaño en disco (MB) | mAP50-95(B) | Tiempo de inferencia (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.6100 | 405.238 |
TorchScript | ✅ | 10.5 | 0.6082 | 526.628 |
ONNX | ✅ | 10.2 | 0.6082 | 168.082 |
OpenVINO | ✅ | 10.4 | 0.6082 | 81.192 |
TF SavedModel | ✅ | 25.8 | 0.6082 | 377.968 |
TF GraphDef | ✅ | 10.3 | 0.6082 | 487.244 |
TF Lite | ✅ | 10.3 | 0.6082 | 317.398 |
PaddlePaddle | ✅ | 20.4 | 0.6082 | 561.892 |
MNN | ✅ | 10.1 | 0.6106 | 112.554 |
NCNN | ✅ | 10.2 | 0.6106 | 88.026 |
Formato | Estado | Tamaño en disco (MB) | mAP50-95(B) | Tiempo de inferencia (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.7526 | 1011.60 |
TorchScript | ✅ | 36.5 | 0.7416 | 1268.502 |
ONNX | ✅ | 36.3 | 0.7416 | 324.17 |
OpenVINO | ✅ | 36.4 | 0.7416 | 179.324 |
TF SavedModel | ✅ | 91.1 | 0.7416 | 714.382 |
TF GraphDef | ✅ | 36.4 | 0.7416 | 1019.83 |
TF Lite | ✅ | 36.4 | 0.7416 | 849.86 |
PaddlePaddle | ✅ | 72.5 | 0.7416 | 1276.34 |
MNN | ✅ | 36.2 | 0.7409 | 273.032 |
NCNN | ✅ | 36.2 | 0.7419 | 194.858 |
Comparado con Ultralytics 8.3.39
Reproduzca nuestros resultados
Para reproducir las pruebas anteriores de Ultralytics en todos los formatos de exportación, ejecute este código:
Ejemplo
Ten en cuenta que los resultados de las pruebas comparativas pueden variar en función de la configuración exacta de hardware y software de un sistema, así como de la carga de trabajo actual del sistema en el momento de ejecutar las pruebas comparativas. Para obtener resultados más fiables, utilice un conjunto de datos con un gran número de imágenes, es decir data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 imágenes val).
Utilizar la cámara Raspberry Pi
Cuando se utiliza la Raspberry Pi para proyectos de Visión por Computador, puede ser esencial tomar imágenes de vídeo en tiempo real para realizar inferencias. El conector MIPI CSI integrado en la Raspberry Pi permite conectar módulos de cámara oficiales de Raspberry PI. En esta guía, hemos utilizado un módulo de cámara Raspberry Pi 3 para tomar imágenes de vídeo y realizar inferencias utilizando modelos YOLO11 .
Consejo
Obtenga más información sobre los diferentes módulos de cámara que ofrece Raspberry Pi y también sobre cómo empezar a utilizar los módulos de cámara de Raspberry Pi.
Nota
La 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á un cable adaptador de 15 pines a 22 pines para conectarse a una cámara Raspberry Pi.
Probar la cámara
Ejecute el siguiente comando después de conectar la cámara a la Raspberry Pi. Deberías ver un vídeo en directo de la cámara durante unos 5 segundos.
Consejo
Más información rpicam-hello
uso en la documentación oficial de Raspberry Pi
Inferencia con cámara
Existen 2 métodos para utilizar la cámara Raspberry Pi para inferir modelos YOLO11 .
Utilización
Podemos utilizar picamera2
que viene preinstalado con Raspberry Pi OS para acceder a los modelos de cámara e inferencia YOLO11 .
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 YOLO11 model
model = YOLO("yolo11n.pt")
while True:
# Capture frame-by-frame
frame = picam2.capture_array()
# Run YOLO11 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()
Necesitamos iniciar un flujo TCP con rpicam-vid
de la cámara conectada para que podamos utilizar esta URL de flujo como entrada cuando estemos haciendo inferencias más tarde. Ejecute el siguiente comando para iniciar el flujo TCP.
Más información rpicam-vid
uso en la documentación oficial de Raspberry Pi
Consejo
Consulte nuestro documento sobre Fuentes de inferencia si desea cambiar el tipo de entrada de imagen/vídeo
Buenas prácticas al utilizar Raspberry Pi
Hay un par de buenas prácticas a seguir para permitir el máximo rendimiento en Raspberry Pis ejecutando YOLO11.
-
Utilice un SSD
Cuando se utiliza la Raspberry Pi para un uso continuado 24x7, se recomienda utilizar un SSD para el sistema, ya que una tarjeta SD no podrá soportar escrituras continuas y podría romperse. Con el conector PCIe integrado en la Raspberry Pi 5, ahora puedes conectar SSD utilizando un adaptador como el NVMe Base para Raspberry Pi 5.
-
Flash sin GUI
Cuando se flashea Raspberry Pi OS, se puede optar por no instalar el entorno de escritorio (Raspberry Pi OS Lite) y esto puede ahorrar un poco de RAM en el dispositivo, dejando más espacio para el procesamiento de visión por ordenador.
Próximos pasos
¡Enhorabuena por haber configurado con éxito YOLO en su Raspberry Pi! Para más información y ayuda, visite Ultralytics YOLO11 Docs y Kashmir World Foundation.
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. Agradecemos su labor pionera y su enfoque educativo en el ámbito de las tecnologías de detección de objetos.
Para más información sobre las actividades de la Fundación Mundial Cachemira, puede visitar su sitio web.
PREGUNTAS FRECUENTES
¿Cómo puedo configurar Ultralytics YOLO11 en una Raspberry Pi sin utilizar Docker?
Para configurar Ultralytics YOLO11 en una Raspberry Pi sin Docker, siga estos pasos:
- Actualizar la lista de paquetes e instalar
pip
: - Instale el paquete Ultralytics con las dependencias opcionales:
- Reinicie el dispositivo para aplicar los cambios:
Para obtener instrucciones detalladas, consulte la sección Arrancar sin Docker.
¿Por qué debería utilizar el formato NCNN de Ultralytics YOLO11 en Raspberry Pi para tareas de IA?
Ultralytics YOLO11 NCNN está altamente optimizado para plataformas móviles e integradas, por lo que es ideal para ejecutar tareas de IA en dispositivos Raspberry Pi. 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 información sobre las opciones NCNN de exportación compatibles, visite la página de documentación de sobre opciones de implementaciónUltralytics .
¿Cómo puedo convertir un modelo YOLO11 al formato NCNN para utilizarlo en Raspberry Pi?
Puede convertir un modelo PyTorch YOLO11 al formato NCNN utilizando los comandos Python o CLI :
Ejemplo
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Para más detalles, consulte la sección Utilizar NCNN en Raspberry Pi.
¿Cuáles son las diferencias de hardware entre Raspberry Pi 4 y Raspberry Pi 5 relevantes para ejecutar YOLO11?
Las principales diferencias son:
- CPU: Raspberry Pi 4 utiliza Broadcom BCM2711, Cortex-A72 64-bit SoC, mientras que Raspberry Pi 5 utiliza Broadcom BCM2712, Cortex-A76 64-bit SoC.
- Frecuencia máxima 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 8 GB de SDRAM LPDDR4-3200, mientras que Raspberry Pi 5 cuenta con SDRAM LPDDR4X-4267, disponible en variantes de 4 GB y 8 GB.
Estas mejoras contribuyen a mejorar los puntos de referencia de rendimiento para los modelos YOLO11 en Raspberry Pi 5 en comparación con Raspberry Pi 4. Consulte la tabla comparativa de las series Raspberry Pi para obtener más detalles.
¿Cómo puedo configurar un módulo de cámara Raspberry Pi para que funcione con Ultralytics YOLO11 ?
Existen dos métodos para configurar una cámara Raspberry Pi para la inferencia YOLO11 :
-
Utilizando
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("yolo11n.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()
-
Utilización de un flujo TCP:
Para obtener instrucciones detalladas de configuración, visite la sección Inferencia con cámara.