Sony IMX500 Exportación para Ultralytics YOLOv8
Esta guía cubre la exportación e implementación de modelos Ultralytics YOLOv8 a las cámaras Raspberry Pi AI que cuentan con el sensor Sony IMX500.
La implementación de modelos de visión por ordenador en dispositivos con potencia de cálculo limitada, como la cámara Raspberry Pi AI, puede resultar complicada. Utilizar un formato de modelo optimizado para un rendimiento más rápido marca una gran diferencia.
El formato del modelo IMX500 está diseñado para consumir la mínima energía a la vez que ofrece un rendimiento rápido para redes neuronales. Le permite optimizar sus modelos Ultralytics YOLOv8 modelos para inferencias de alta velocidad y bajo consumo. En esta guía, te guiaremos a través de la exportación y el despliegue de tus modelos al formato IMX500, facilitando al mismo tiempo que tus modelos tengan un buen rendimiento en la Raspberry Pi AI Camera.
¿Por qué exportar a IMX500?
El sensor de visión inteligente IMX500 de Sony es una pieza de hardware revolucionaria en el procesamiento de inteligencia artificial. Es el primer sensor de visión inteligente del mundo con funciones de IA integradas en el chip. Este sensor ayuda a superar muchos retos de la IA periférica, como los cuellos de botella en el procesamiento de datos, los problemas de privacidad y las limitaciones de rendimiento.
Mientras que otros sensores se limitan a transmitir imágenes y fotogramas, el IMX500 cuenta una historia completa. Procesa los datos directamente en el sensor, lo que permite a los dispositivos generar información en tiempo real.
Exportación de IMX500 de Sony para los modelos YOLOv8
El IMX500 está diseñado para transformar la forma en que los dispositivos manejan los datos directamente en el sensor, sin necesidad de enviarlos a la nube para su procesamiento.
La IMX500 trabaja con modelos cuantizados. La cuantización hace que los modelos sean más pequeños y rápidos sin perder mucha precisión. Es ideal para los recursos limitados de edge computing, ya que permite que las aplicaciones respondan con rapidez al reducir la latencia y permitir un procesamiento rápido de los datos a nivel local, sin depender de la nube. El procesamiento local también mantiene la privacidad y seguridad de los datos del usuario, ya que no se envían a un servidor remoto.
IMX500 Características principales:
- Salida de metadatos: En lugar de transmitir sólo imágenes, la IMX500 puede emitir tanto imágenes como metadatos (resultado de la inferencia), y puede emitir sólo metadatos para minimizar el tamaño de los datos, reducir el ancho de banda y disminuir los costes.
- Resuelve los problemas de privacidad: Al procesar los datos en el dispositivo, la IMX500 aborda los problemas de privacidad, ideal para aplicaciones centradas en el ser humano como el recuento de personas y el seguimiento de la ocupación.
- Procesamiento en tiempo real: El procesamiento rápido y en el sensor permite tomar decisiones en tiempo real, lo que resulta perfecto para aplicaciones de IA avanzadas, como los sistemas autónomos.
Antes de empezar: Para obtener los mejores resultados, asegúrese de que su modelo YOLOv8 está bien preparado para la exportación siguiendo nuestra Guía de formación de modelos, la Guía de preparación de datos y la Guía de ajuste de hiperparámetros.
Ejemplos de uso
Exporte un modelo Ultralytics YOLOv8 al formato IMX500 y ejecute la inferencia con el modelo exportado.
Nota
Aquí realizamos la inferencia sólo para asegurarnos de que el modelo funciona como se espera. Sin embargo, para el despliegue y la inferencia en la cámara Raspberry Pi AI, por favor vaya a Usando IMX500 Export en la sección de Despliegue.
Ejemplo
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
El proceso de exportación creará un modelo ONNX para la validación de la cuantificación, junto con un directorio denominado <model-name>_imx_model
. Este directorio incluirá los archivos packerOut.zip
que es esencial para empaquetar el modelo para su despliegue en el hardware IMX500. Además, el archivo <model-name>_imx_model
contendrá un archivo de texto (labels.txt
) que enumera todas las etiquetas asociadas al modelo.
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
Argumentos
Al exportar un modelo al formato IMX500, puedes especificar varios argumentos:
Clave | Valor | Descripción |
---|---|---|
format |
imx |
Formato de exportación (imx) |
int8 |
True |
Activar la cuantización INT8 para el modelo (por defecto: True ) |
imgsz |
640 |
Tamaño de la imagen para la entrada del modelo (por defecto: 640 ) |
Utilización de la exportación IMX500 en la implantación
Tras exportar el modelo Ultralytics YOLOv8n al formato IMX500, puede desplegarse en la cámara Raspberry Pi AI para su inferencia.
Requisitos previos de hardware
Asegúrese de que dispone del hardware que se indica a continuación:
- Raspberry Pi 5 o Raspberry Pi 4 Modelo B
- Cámara Raspberry Pi AI
Conectar la cámara Raspberry Pi AI al conector MIPI CSI de 15 pines de la Raspberry Pi y encender la Raspberry Pi.
Requisitos previos de software
Nota
Esta guía ha sido probada con Raspberry Pi OS Bookworm ejecutándose en una Raspberry Pi 5
Paso 1: Abra una ventana de terminal y ejecute los siguientes comandos para actualizar el software de la Raspberry Pi a la última versión.
Paso 2: Instale el firmware IMX500 necesario para el funcionamiento del sensor IMX500 junto con una herramienta de empaquetado.
Paso 3: Instalar los requisitos previos para ejecutar picamera2
aplicación. Utilizaremos esta aplicación más adelante para el proceso de despliegue.
Paso 4: Reinicie la Raspberry Pi para que los cambios surtan efecto
Empaquetar el modelo y desplegarlo en la cámara AI
Tras obtener packerOut.zip
del proceso de conversión de IMX500, puede pasar este archivo a la herramienta de empaquetado para obtener un archivo RPK. A continuación, este archivo puede desplegarse directamente en la cámara AI utilizando picamera2
.
Paso 1: empaquetar el modelo en un archivo RPK
Lo anterior generará un network.rpk
dentro de la carpeta de salida especificada.
Paso 2: Clonar picamera2
instálelo y vaya a los ejemplos imx500
git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Paso 3: Ejecute la detección de objetos de YOLOv8 , utilizando el archivo labels.txt que se ha generado durante la exportación de IMX500.
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>
A continuación, podrá ver el resultado de la inferencia en directo de la siguiente manera
Puntos de referencia
YOLOv8 El equipo de Ultralytics ejecutó las siguientes pruebas en la Raspberry Pi AI Camera con imx
formato de modelo que mide la velocidad y la precisión.
Modelo | Formato | Estado | Tamaño (MB) | mAP50-95(B) | Tiempo de inferencia (ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 66.66 |
Nota
La validación de la referencia anterior se realizó con el conjunto de datos coco8
¿Qué hay bajo el capó?
Kit de herramientas de compresión de modelos (MCT) de Sony
Model Compression Toolkit (MCT) de Sony es una potente herramienta para optimizar los modelos de aprendizaje profundo mediante la cuantización y la poda. Es compatible con varios métodos de cuantización y proporciona algoritmos avanzados para reducir el tamaño del modelo y la complejidad computacional sin sacrificar significativamente la precisión. MCT es especialmente útil para desplegar modelos en dispositivos con recursos limitados, garantizando una inferencia eficiente y una latencia reducida.
Funciones compatibles con MCT
El MCT de Sony ofrece una serie de funciones diseñadas para optimizar los modelos de redes neuronales:
- Optimizaciones gráficas: Transforma los modelos en versiones más eficientes plegando capas como la normalización de lotes en capas precedentes.
- Búsqueda de parámetros de cuantificación: Minimiza el ruido de cuantización utilizando métricas como Error Cuadrático Medio, No-Clipping y Error Medio-Promedio.
- Algoritmos de cuantización avanzados:
- Corrección del desplazamiento negativo: Soluciona los problemas de rendimiento derivados de la cuantificación simétrica de la activación.
- Filtrado de valores atípicos: Utiliza z-score para detectar y eliminar valores atípicos.
- Agrupación: Utiliza rejillas de cuantificación no uniformes para un mejor ajuste de la distribución.
- Búsqueda de precisión mixta: Asigna diferentes anchos de bits de cuantificación por capa en función de la sensibilidad.
- Visualización: Utilice TensorBoard para observar el rendimiento del modelo, las fases de cuantificación y las configuraciones de ancho de bits.
Cuantización
MCT admite varios métodos de cuantificación para reducir el tamaño del modelo y mejorar la velocidad de inferencia:
- Cuantificación posterior al entrenamiento (PTQ):
- Disponible a través de las API de Keras y PyTorch .
- Complejidad: Baja
- Coste computacional: Bajo (CPU minutos)
- Cuantificación posterior al entrenamiento basada en gradientes (GPTQ):
- Disponible a través de las API de Keras y PyTorch .
- Complejidad: Media
- Coste computacional: Moderado (2-3 GPU horas)
- Formación consciente de la cuantización (QAT):
- Complejidad: Alta
- Coste computacional: Alto (12-36 GPU horas)
MCT también admite varios esquemas de cuantificación para pesos y activaciones:
- Potencia de dos (compatible con hardware)
- Simétrico
- Uniforme
Poda estructurada
MCT introduce una poda de modelos estructurada y adaptada al hardware, diseñada para arquitecturas de hardware específicas. Esta técnica aprovecha las capacidades de instrucción única y datos múltiples (SIMD) de la plataforma de destino mediante la poda de grupos SIMD. Esto reduce el tamaño y la complejidad del modelo a la vez que optimiza la utilización de los canales, en consonancia con la arquitectura SIMD para una utilización específica de los recursos de la huella de memoria de pesos. Disponible a través de las API de Keras y PyTorch .
Herramienta de conversión IMX500 (compilador)
La herramienta IMX500 Converter Tool forma parte del conjunto de herramientas IMX500 y permite compilar modelos para su implementación en el sensor IMX500 de Sony (por ejemplo, cámaras Raspberry Pi AI). Esta herramienta facilita la transición de los modelos Ultralytics YOLOv8 procesados a través del software Ultralytics , garantizando que sean compatibles y funcionen eficazmente en el hardware especificado. El procedimiento de exportación tras la cuantización del modelo implica la generación de archivos binarios que encapsulan los datos esenciales y las configuraciones específicas del dispositivo, agilizando el proceso de despliegue en la Raspberry Pi AI Camera.
Casos prácticos reales
La exportación al formato IMX500 tiene una amplia aplicabilidad en todos los sectores. He aquí algunos ejemplos:
- Edge AI e IoT: Permite la detección de objetos en drones o cámaras de seguridad, donde es esencial el procesamiento en tiempo real en dispositivos de bajo consumo.
- Dispositivos portátiles: Despliegue de modelos optimizados para el procesamiento de IA a pequeña escala en wearables de control sanitario.
- Ciudades inteligentes: Utilice los modelos YOLOv8 exportados por IMX500 para la supervisión del tráfico y el análisis de la seguridad con un procesamiento más rápido y una latencia mínima.
- Análisis del comercio minorista: Mejore la supervisión en tienda desplegando modelos optimizados en sistemas de punto de venta o estanterías inteligentes.
Conclusión
La exportación de los modelos de Ultralytics YOLOv8 al formato IMX500 de Sony le permite desplegar sus modelos para una inferencia eficaz en cámaras basadas en IMX500. Gracias a las técnicas avanzadas de cuantización, puede reducir el tamaño del modelo y mejorar la velocidad de inferencia sin comprometer significativamente la precisión.
Para obtener más información y directrices detalladas, consulte el sitio web IMX500 de Sony.
PREGUNTAS FRECUENTES
¿Cómo puedo exportar un modelo YOLOv8 al formato IMX500 para la cámara Raspberry Pi AI?
Para exportar un modelo YOLOv8 al formato IMX500, utilice la API Python o el comando CLI :
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="imx") # Exports with PTQ quantization by default
El proceso de exportación creará un directorio que contendrá los archivos necesarios para la implantación, entre ellos packerOut.zip
que puede utilizarse con la herramienta de empaquetado IMX500 en Raspberry Pi.
¿Cuáles son las principales ventajas de utilizar el formato IMX500 para la implantación de la IA en los bordes?
El formato IMX500 ofrece varias ventajas importantes para la implantación en los bordes:
- El procesamiento de IA en chip reduce la latencia y el consumo de energía
- Muestra tanto la imagen como los metadatos (resultado de la inferencia) en lugar de sólo las imágenes.
- Mayor privacidad al procesar los datos localmente sin depender de la nube
- Capacidades de procesamiento en tiempo real ideales para aplicaciones sensibles al tiempo.
- Cuantización optimizada para un despliegue eficaz de modelos en dispositivos con recursos limitados
¿Qué requisitos previos de hardware y software se necesitan para implantar IMX500?
Para desplegar los modelos IMX500, necesitarás:
Hardware:
- Raspberry Pi 5 o Raspberry Pi 4 Modelo B
- Cámara Raspberry Pi AI con sensor IMX500
Software:
- Raspberry Pi OS Bookworm
- Firmware y herramientas IMX500 (
sudo apt install imx500-all imx500-tools
) - Python paquetes para
picamera2
(sudo apt install python3-opencv python3-munkres
)
¿Qué rendimiento puedo esperar de los modelos YOLOv8 en la IMX500?
Basado en Ultralytics benchmarks on Raspberry Pi AI Camera:
- YOLOv8n logra un tiempo de inferencia de 66,66 ms por imagen
- mAP50-95 de 0,522 en el conjunto de datos COCO8
- Tamaño del modelo de sólo 2,9 MB tras la cuantización
Esto demuestra que el formato IMX500 proporciona una inferencia eficiente en tiempo real al tiempo que mantiene una buena precisión para las aplicaciones de IA de borde.
¿Cómo empaqueto y despliego mi modelo exportado a la cámara Raspberry Pi AI?
Después de exportar al formato IMX500:
-
Utilice la herramienta de empaquetado para crear un archivo RPK:
-
Clona e instala picamera2:
-
Ejecute la inferencia utilizando el archivo RPK generado: