Exportación DEEPX para modelos YOLO de Ultralytics#
Desplegar modelos de visión artificial en hardware NPU especializado requiere un formato de modelo compatible y optimizado. Exportar modelos de Ultralytics YOLO al formato DEEPX permite una inferencia eficiente cuantizada a INT8 en los aceleradores NPU de DEEPX. Esta guía te muestra cómo convertir tus modelos YOLO al formato DEEPX y desplegarlos en hardware potenciado por DEEPX.
¿Qué es DEEPX?#
DEEPX es una empresa de semiconductores de IA especializada en Unidades de Procesamiento Neuronal (NPU) diseñadas para una inferencia de deep learning eficiente en el borde. Las NPU de DEEPX están diseñadas para aplicaciones de IA embebidas e industriales exigentes, ofreciendo un alto rendimiento con un consumo mínimo de energía. Su hardware es ideal para escenarios de despliegue donde la conectividad en la nube no es fiable o no es deseada, como la robótica, las cámaras inteligentes y los sistemas de automatización industrial.
Formato de exportación DEEPX#
La exportación a DEEPX produce un binario de modelo compilado .dxnn que está optimizado para su ejecución en hardware NPU de DEEPX. El proceso de compilación utiliza el kit de herramientas dx_com para realizar la cuantización a INT8 y la optimización específica para el hardware, generando un directorio de modelo independiente listo para el despliegue.
Características clave de los modelos DEEPX#
Los modelos DEEPX ofrecen varias ventajas para el despliegue en el borde:
- Cuantización INT8: Los modelos se cuantizan a precisión INT8 durante la exportación, lo que reduce significativamente el tamaño del modelo y maximiza el rendimiento de la NPU. Obtén más información sobre la cuantización de modelos.
- Optimizado para NPU: El formato
.dxnnestá compilado específicamente para hardware NPU de DEEPX, aprovechando unidades de aceleración dedicadas para una inferencia rápida y eficiente. - Bajo consumo de energía: Al descargar la inferencia a la NPU, los modelos DEEPX consumen mucha menos energía que la inferencia equivalente en CPU o GPU.
- Precisión basada en calibración: La exportación utiliza una calibración basada en EMA con imágenes de conjuntos de datos reales para minimizar la pérdida de precisión durante la cuantización.
- Salida autocontenida: El directorio del modelo exportado agrupa el binario compilado, la configuración de calibración y los metadatos para un despliegue directo.
Tareas compatibles#
La exportación a DEEPX es compatible con las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles en YOLO26, la única familia que incluye esas cabezas.
Exportar a DEEPX: cómo convertir tu modelo YOLO#
Exporta un modelo YOLO de Ultralytics al formato DEEPX y ejecuta la inferencia con el modelo exportado.
La exportación DEEPX solo es compatible con máquinas Linux x86-64. ARM64 (aarch64) no es compatible para el paso de exportación. Sin embargo, los modelos dxnn exportados son totalmente compatibles y ejecutables en plataformas ARM64.
Instalación#
Para instalar los paquetes necesarios, ejecuta:
# Install the required package for YOLO
pip install ultralyticsEl paquete del compilador dx_com se instalará automáticamente desde el repositorio del SDK de DEEPX en la primera exportación. Para obtener instrucciones detalladas y mejores prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalación de Ultralytics. Si encuentras alguna dificultad al instalar los paquetes necesarios para YOLO, consulta nuestra guía de problemas comunes para ver soluciones y consejos.
Uso#
El formato DEEPX admite los modos Export, Predict y Validate. La inferencia y la validación se ejecutan en hardware NPU de DEEPX. Exporta tu modelo y luego cárgalo para ejecutar la inferencia o validar su precisión.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to DEEPX format (quantize=8 is enforced automatically)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argumentos de exportación#
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'deepx' | Formato de destino para el modelo exportado, definiendo la compatibilidad con el hardware NPU de DEEPX. |
imgsz | int o tuple | 640 | Tamaño de imagen deseado para la entrada del modelo. La exportación a DEEPX requiere una entrada cuadrada; pasa un número entero (p. ej., 640) o una tupla donde la altura sea igual al ancho. |
quantize | int o str | 8/auto | Precisión de cuantización. Se requiere 8 (INT8) para la exportación a DEEPX y se activa automáticamente si no se especifica. Reemplaza los flags obsoletos half/int8. |
simplify | bool | True | Simplifica el grafo ONNX intermedio con onnxslim. |
opset | int | None | Especifica la versión del opset de ONNX para el grafo ONNX intermedio. Si no se establece, utiliza la última versión admitida. |
data | str | None | Dataset en formato YAML utilizado para la calibración INT8; la clasificación, por su parte, requiere un directorio de dataset o el nombre de un dataset integrado. Si se omite junto con quantize=8, Ultralytics selecciona el dataset de calibración predeterminado para la tarea del modelo. |
device | str | None | Especifica el dispositivo para la exportación: GPU (device=0) o CPU (device=cpu). |
optimize | bool | False | Habilita una mayor optimización del compilador, lo que reduce la latencia de inferencia y aumenta el tiempo de compilación. |
Ejecuta siempre la exportación a DEEPX en un host x86-64 Linux. El compilador dx_com no es compatible con ARM64.
Para más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.
Estructura de salida#
Tras una exportación exitosa, se crea un directorio de modelo con la siguiente estructura:
yolo26n_deepx_model/
├── yolo26n.dxnn # Compiled DEEPX model binary (NPU executable)
├── config.json # Calibration and preprocessing configuration
└── metadata.yaml # Model metadata (classes, image size, task, etc.)El archivo .dxnn es el binario del modelo compilado que el entorno de ejecución dx_engine carga directamente en la NPU. El archivo metadata.yaml contiene los nombres de las clases, el tamaño de la imagen y otra información utilizada por el pipeline de inferencia de Ultralytics.
Despliegue de modelos YOLO DEEPX exportados#
Una vez que hayas exportado con éxito tu modelo YOLO de Ultralytics al formato DEEPX, el siguiente paso es desplegar estos modelos en hardware NPU de DEEPX.
Instalación del entorno de ejecución#
La inferencia requiere el controlador de la NPU de DEEPX, el entorno de ejecución libdxrt y el paquete de Python dx_engine.
El entorno de ejecución DEEPX es compatible tanto con Linux x86-64 como con ARM64 (por ejemplo, Raspberry Pi 5).
# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb
# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh
# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whlVerifica que el entorno de ejecución esté instalado correctamente con dxrt-cli --version. Deberías ver una salida similar a:
DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6Una vez instalado el entorno de ejecución, ejecuta la inferencia y la validación en tu dispositivo DEEPX exactamente como se muestra en la sección de Uso anterior; el archivo _deepx_model exportado se carga directamente con YOLO(...).
Visualización con dxtron#
dxtron es el visualizador de grafos de DEEPX para inspeccionar el modelo compilado .dxnn.
Instala dxtron en x86-64 Linux descargando el paquete .deb del SDK de DEEPX e instalándolo mediante dpkg:
wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.debA continuación, abre tu modelo exportado:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron está disponible tanto para plataformas x86-64 como aarch64.
Benchmarks#
El equipo de Ultralytics ha evaluado los modelos YOLO26, comparando la velocidad y la precisión entre PyTorch y DEEPX.
| Modelo | Formato | Estado | Tamaño (MB) | métricas/mAP50-95(B) | Tiempo de inferencia (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4760 | 315.2 |
| YOLO26n | DEEPX | ✅ | 6.6 | 0.4660 | 34.6 |
| YOLO26n-seg | PyTorch | ✅ | 6.5 | 0.4080 | 485.4 |
| YOLO26n-seg | DEEPX | ✅ | 7.9 | 0.3920 | 53.8 |
| YOLO26n-pose | PyTorch | ✅ | 7.6 | 0.4230 | 506.3 |
| YOLO26n-pose | DEEPX | ✅ | 8.8 | 0.4590 | 37.6 |
| YOLO26n-obb | PyTorch | ✅ | 5.7 | 0.817 | 1094.4 |
| YOLO26n-obb | DEEPX | ✅ | 7.3 | 0.783 | 56.4 |
| Modelo | Formato | Estado | Tamaño (MB) | acc (top1) | acc (top5) | Tiempo de inferencia (ms/im) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
La validación para los benchmarks anteriores se realizó utilizando coco128 para detección, coco128-seg para segmentación, coco8-pose para estimación de pose, imagenet100 para clasificación y dota128 para modelos OBB. El tiempo de inferencia no incluye preprocesamiento ni posprocesamiento.
Para obtener el mejor rendimiento de inferencia de la NPU DX-M1 conectada a una Raspberry Pi 5, abre el archivo de configuración de arranque y habilita el soporte para PCIe Gen 3.
sudo nano /boot/firmware/config.txtAñade las siguientes líneas al final del archivo:
dtparam=pciex1
dtparam=pciex1_gen=3Guarda y sal (Ctrl+X, luego Y, luego Enter), después reinicia:
sudo rebootComprueba la generación de PCIe. La velocidad esperada es de 8GT/s para PCIe Gen3.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Flujo de trabajo recomendado#
- Entrena tu modelo usando el modo de entrenamiento de Ultralytics
- Exporta al formato DEEPX usando
model.export(format="deepx") - Valida la precisión con
yolo valpara comprobar que la pérdida por cuantización sea mínima - Predice usando
yolo predictpara la validación cualitativa - Despliega el directorio
_deepx_model/exportado en el hardware NPU de DEEPX utilizando el entorno de ejecucióndx_engine
Aplicaciones en el mundo real#
Los modelos YOLO desplegados en hardware NPU de DEEPX son ideales para una amplia gama de aplicaciones de IA en el borde:
- Videovigilancia inteligente: Detección de objetos en tiempo real para sistemas de seguridad y monitorización con un bajo consumo de energía y sin dependencia de la nube.
- Automatización industrial: Control de calidad en el dispositivo, detección de defectos y monitoreo de procesos en entornos de fábrica.
- Robótica: Navegación basada en visión, evitación de obstáculos y reconocimiento de objetos en robots autónomos y drones.
- Agricultura inteligente: Monitorización de la salud de los cultivos, detección de plagas y estimación de rendimientos mediante visión artificial en la agricultura.
- Análisis minorista: Análisis de flujo de clientes, monitoreo de estantes y seguimiento de inventario con inferencia en el borde en tiempo real.
Resumen#
En esta guía, has aprendido a exportar modelos de Ultralytics YOLO al formato DEEPX y a desplegarlos en hardware NPU de DEEPX. El pipeline de exportación utiliza calibración INT8 y el compilador dx_com para producir un binario .dxnn optimizado para hardware, mientras que el entorno de ejecución dx_engine gestiona la inferencia en el dispositivo.
La combinación de Ultralytics YOLO y la tecnología NPU de DEEPX ofrece una solución eficaz para ejecutar cargas de trabajo avanzadas de visión artificial en dispositivos embebidos y de borde, ofreciendo un alto rendimiento con un bajo consumo de energía para aplicaciones en tiempo real.
Para más detalles sobre el uso, visita el sitio web oficial de DEEPX.
Asimismo, si deseas saber más sobre otras integraciones de Ultralytics YOLO, visita nuestra página de la guía de integración. Encontrarás una gran cantidad de recursos y perspectivas útiles allí.
FAQ#
Puedes exportar tu modelo utilizando el método
export()en Python o a través de la CLI. La exportación activa automáticamente la cuantización INT8 y utiliza un dataset de calibración para minimizar la pérdida de precisión. El paquete del compiladordx_comse instala automáticamente si no está presente.Ejemplofrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")Las NPU de DEEPX están diseñadas para ejecutar cálculos INT8 con la máxima eficiencia. El compilador
dx_comcuantiza el modelo durante la exportación utilizando una calibración basada en EMA con imágenes de datasets reales, permitiendo que la NPU ofrezca todo su rendimiento. INT8 es obligatorio para las exportaciones a DEEPX; si solicitas una precisión diferente, se sobrescribirá y se mostrará una advertencia.La exportación (compilación) del modelo DEEPX requiere un host x86-64 Linux. El paso de exportación no es compatible con máquinas ARM64 (aarch64) ni Windows. La inferencia utilizando el modelo
.dxnnexportado se puede ejecutar en cualquier plataforma Linux (x86-64 y ARM64) compatible con el entorno de ejecucióndx_engine.La exportación crea un directorio (p. ej.,
yolo26n_deepx_model/) que contiene:yolo26n.dxnn: el binario NPU compiladoconfig.json: ajustes de calibración y preprocesamientometadata.yaml: metadatos del modelo, incluidos los nombres de las clases y el tamaño de la imagen
Sí. Cualquier modelo entrenado mediante el modo de entrenamiento de Ultralytics y exportado con
format="deepx"se puede desplegar en hardware NPU de DEEPX, siempre que utilice operaciones de capa compatibles. La exportación es compatible con las siete tareas de Ultralytics: detección, segmentación de instancias, segmentación semántica, estimación de profundidad, clasificación, estimación de postura y cuadro delimitador orientado (OBB).El pipeline de exportación de DEEPX utiliza cada imagen del dataset de calibración con el método de calibración EMA. Unos cientos de imágenes suelen ser suficientes para obtener una buena precisión de cuantización. Apunta
dataa un dataset más pequeño si el tiempo de compilación se convierte en un problema con datasets grandes.El entorno de ejecución de DEEPX no viene incluido con
ultralyticsy debe instalarse por separado antes de ejecutar la inferencia. En máquinas x86-64 Linux y ARM64 Linux (p. ej., Raspberry Pi 5), instala el controlador NPU (dxrt-driver-dkms) y el entorno de ejecución (libdxrt) desde los lanzamientos de GitHub de DEEPX-AI, y luego instala el archivo wheel de Pythondx_engineincluido. Consulta la sección de instalación del entorno de ejecución anterior para ver los comandos paso a paso.