Exportación de DEEPX para modelos Ultralytics YOLO#
Implementar modelos de visión artificial en hardware NPU especializado requiere un formato de modelo compatible y optimizado. Exportar modelos Ultralytics YOLO al formato DEEPX permite realizar inferencias eficientes cuantizadas a INT8 en aceleradores NPU DEEPX. Esta guía te explica cómo convertir tus modelos YOLO al formato DEEPX e implementarlos en hardware con DEEPX.
¿Qué es DEEPX?#
DEEPX es una empresa de semiconductores de IA especializada en unidades de procesamiento neuronal (NPUs) diseñadas para realizar inferencias de aprendizaje profundo en el edge con un consumo eficiente de energía. Las NPU de DEEPX están diseñadas para aplicaciones de IA integradas e industriales exigentes y ofrecen un alto rendimiento con un consumo de energía mínimo. Su hardware es ideal para escenarios de implementación en los que la conectividad a la nube no es fiable o no se desea, como la robótica, las cámaras inteligentes y los sistemas de automatización industrial.
Formato de exportación de DEEPX#
La exportación a DEEPX genera un binario de modelo .dxnn compilado y optimizado para ejecutarse en hardware NPU DEEPX. El proceso de compilación utiliza el kit de herramientas dx_com para realizar la cuantización INT8 y la optimización específica para el hardware, y genera un directorio de modelo independiente listo para la implementación.
Características principales de los modelos DEEPX#
Los modelos DEEPX ofrecen varias ventajas para la implementación en el edge:
- Cuantización INT8: Los modelos se cuantizan a precisión INT8 durante la exportación, lo que reduce considerablemente su tamaño y maximiza el rendimiento de la NPU. Obtén más información sobre la cuantización de modelos.
- Optimizado para NPU: El formato
.dxnnse compila específicamente para hardware NPU DEEPX y aprovecha las unidades de aceleración dedicadas para realizar inferencias rápidas y eficientes. - Bajo consumo de energía: Al descargar la inferencia en 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 independiente: El directorio del modelo exportado incluye el binario compilado, la configuración de calibración y los metadatos para facilitar la implementación.
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 con YOLO26, la única familia que incluye esos cabezales.
| Tarea | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semántica | ❌ | ❌ | ✅ |
| Profundidad | ❌ | ❌ | ✅ |
| Clasificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar a DEEPX: convertir tu modelo YOLO#
Exporta un modelo Ultralytics YOLO al formato DEEPX y ejecuta inferencias con el modelo exportado.
La exportación a DEEPX solo es compatible con máquinas Linux x86-64. ARM64 (aarch64) no es compatible con el proceso 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 compilador dx_com se instala automáticamente desde el repositorio del SDK de DEEPX en la primera exportación. El flujo de trabajo de exportación actual utiliza DX-COM 2.3.0, que proporciona paquetes wheel para Python 3.8–3.12 en Linux x86-64 con glibc 2.31 o posterior.
Las versiones del compilador publicadas en PyPI se han retirado. Para preinstalar las dependencias de exportación, proporciona la página de paquetes wheel del SDK con --find-links; esto funciona tanto con pip como con uv pip:
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.htmlPara instalar el repositorio en modo editable, sustituye "ultralytics[export-deepx]" por -e ".[export-base,export-deepx]". Para reproducir el entorno de Python 3.12 y la prueba rápida de exportación utilizados por CI, ejecuta el generador de entornos existente desde la raíz del repositorio:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepxEl generador de entornos requiere uv y una instalación local de Ultralytics. Instala el compilador desde el origen del SDK y aplica automáticamente las restricciones de dependencias probadas.
Uso#
El formato DEEPX es compatible con los modos Export, Predict y Validate. La inferencia y la validación se ejecutan en hardware NPU DEEPX. Exporta tu modelo y, después, carga el modelo exportado para ejecutar inferencias o validar su precisión.
from ultralytics import YOLO
# Cargar un modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporta el modelo al formato DEEPX (quantize=8 se aplica automáticamente)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Carga el modelo DEEPX exportado
model = YOLO("yolo26n_deepx_model")
# Ejecutar inferencia
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carga el modelo DEEPX exportado
model = YOLO("yolo26n_deepx_model")
# Validar la precisión con el conjunto de datos COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportación#
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'deepx' | Formato de destino del modelo exportado, que define la compatibilidad con el hardware NPU 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 entero (p. ej., 640) o una tupla en la que la altura sea igual al ancho. |
quantize | int o str | 8/auto | Precisión de cuantización. 8 (INT8) es obligatorio para la exportación a DEEPX y se activa automáticamente si no se especifica. Sustituye a las marcas obsoletas half/int8. |
simplify | bool | True | Simplifica el grafo ONNX intermedio con onnxslim. |
opset | int | None | Especifica la versión del conjunto de operaciones de ONNX para el grafo ONNX intermedio. Si no se establece, se utiliza la última versión compatible. |
data | str | None | Archivo YAML del conjunto de datos utilizado para la calibración INT8; en clasificación, se utiliza en su lugar un directorio de conjunto de datos o el nombre de un conjunto de datos integrado. Si se omite con quantize=8, Ultralytics selecciona el conjunto de datos 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 | Activa una optimización superior del compilador, que reduce la latencia de inferencia y aumenta el tiempo de compilación. |
Ejecuta siempre la exportación a DEEPX en un host Linux x86-64. El compilador dx_com no es compatible con ARM64.
Para obtener más información sobre el proceso de exportación, visita la página de la documentación de Ultralytics sobre exportación.
Estructura de salida#
Tras una exportación correcta, 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. metadata.yaml contiene los nombres de las clases, el tamaño de imagen y otra información que utiliza el proceso de inferencia de Ultralytics.
Implementación de modelos YOLO DEEPX exportados#
Una vez que hayas exportado correctamente tu modelo Ultralytics YOLO al formato DEEPX, el siguiente paso es implementarlo en hardware NPU DEEPX.
Instalación del entorno de ejecución#
La inferencia requiere el controlador NPU de DEEPX, el entorno de ejecución libdxrt y el paquete Python dx_engine.
El entorno de ejecución de DEEPX es compatible con Linux x86-64 y ARM64 (p. ej., 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-*.whlComprueba que el entorno de ejecución se haya instalado correctamente con dxrt-cli --version. Deberías ver un resultado 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 inferencias y validaciones en tu dispositivo DEEPX tal como se indica en la sección Uso anterior: el modelo exportado _deepx_model se carga directamente con YOLO(...).
Visualización con dxtron#
dxtron es el visualizador de grafos de DEEPX para inspeccionar el modelo .dxnn compilado.
Instala dxtron en Linux x86-64 descargando el paquete .deb del SDK de DEEPX e instalándolo con 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 el modelo exportado:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron está disponible para plataformas x86-64 y aarch64.
Benchmarks#
El equipo de Ultralytics evaluó modelos YOLO26 y comparó la velocidad y la precisión de PyTorch y DEEPX.
| Modelo | Formato | Estado | Tamaño (MB) | metrics/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) | precisión (top1) | precisión (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 de las evaluaciones anteriores se realizó con 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 el preprocesamiento ni el posprocesamiento.
Para obtener el máximo rendimiento de inferencia de la NPU DX-M1 conectada a una Raspberry Pi 5, abre el archivo de configuración de arranque y activa la compatibilidad con 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 y, por último, 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 con el modo de entrenamiento de Ultralytics
- Exporta al formato DEEPX con
model.export(format="deepx") - Valida la precisión con
yolo valpara verificar que la pérdida por cuantización sea mínima - Realiza predicciones con
yolo predictpara la validación cualitativa - Implementa el directorio
_deepx_model/exportado en hardware NPU DEEPX con el entorno de ejecucióndx_engine
Aplicaciones en el mundo real#
Los modelos YOLO implementados en hardware NPU DEEPX son ideales para una amplia gama de aplicaciones de IA en el edge:
- Vigilancia inteligente: Detección de objetos en tiempo real para sistemas de seguridad y supervisión, con bajo consumo de energía y sin depender de la nube.
- Automatización industrial: Control de calidad en el dispositivo, detección de defectos y supervisión 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: Supervisión del estado de los cultivos, detección de plagas y estimación del rendimiento mediante visión artificial en la agricultura.
- Analítica para el comercio minorista: Análisis del flujo de clientes, supervisión de estanterías y seguimiento del inventario con inferencia en tiempo real en el edge.
Resumen#
En esta guía has aprendido a exportar modelos Ultralytics YOLO al formato DEEPX e implementarlos en hardware NPU DEEPX. El proceso de exportación utiliza la calibración INT8 y el compilador dx_com para generar un binario .dxnn optimizado para el 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 integrados y edge, con un alto rendimiento y un bajo consumo de energía para aplicaciones en tiempo real.
Para obtener más información sobre el uso, visita el sitio web oficial de DEEPX.
Además, si quieres saber más sobre otras integraciones de Ultralytics YOLO, visita nuestra página de guías de integración. Allí encontrarás muchos recursos e información útiles.
Preguntas frecuentes#
Puedes exportar tu modelo con el método
export()en Python o mediante la CLI. La exportación activa automáticamente la cuantización INT8 y utiliza un conjunto de datos de calibración para minimizar la pérdida de precisión. El paquete del compiladordx_comse instala automáticamente si aún 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 mediante una calibración basada en EMA con imágenes de conjuntos de datos reales, lo que permite que la NPU ofrezca todo su rendimiento. La exportación a DEEPX siempre aplica INT8: si solicitas una precisión distinta, se sustituirá y se mostrará una advertencia.La exportación de modelos DEEPX (compilación) requiere un host Linux x86-64. El paso de exportación no es compatible con máquinas ARM64 (aarch64) ni Windows. La inferencia con el modelo
.dxnnexportado puede ejecutarse 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— la configuración de calibración y preprocesamientometadata.yaml— los metadatos del modelo, incluidos los nombres de las clases y el tamaño de imagen
Sí. Cualquier modelo entrenado con el modo Train de Ultralytics y exportado con
format="deepx"puede implementarse en hardware NPU 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 pose y cuadro delimitador orientado (OBB).El proceso de exportación a DEEPX configura el compilador
dx_compara realizar 100 pasos de calibración EMA con imágenes del conjunto de datos de calibración. Por lo general, unos cientos de imágenes son suficientes para lograr una buena precisión de cuantización. Si el tiempo de compilación supone un problema con conjuntos de datos grandes, apuntadataa un conjunto de datos más pequeño.El entorno de ejecución DEEPX no se incluye con
ultralyticsy debe instalarse por separado antes de ejecutar inferencias. En máquinas Linux x86-64 y ARM64 (p. ej., Raspberry Pi 5), instala el controlador NPU (dxrt-driver-dkms) y el entorno de ejecución (libdxrt) desde las versiones de DEEPX-AI en GitHub y, después, instala el paquete wheel de Pythondx_engineincluido. Consulta la sección Instalación del entorno de ejecución anterior para ver los comandos paso a paso.