Экспорт DEEPX для моделей Ultralytics YOLO#
Для развертывания моделей компьютерного зрения на специализированном оборудовании с NPU требуется совместимый и оптимизированный формат модели. Экспорт моделей Ultralytics YOLO в формат DEEPX обеспечивает эффективный инференс с квантованием INT8 на ускорителях DEEPX NPU. В этом руководстве описано, как преобразовать модели YOLO в формат DEEPX и развернуть их на оборудовании с DEEPX.
Что такое DEEPX?#
DEEPX — компания-разработчик полупроводников для ИИ, специализирующаяся на нейропроцессорных блоках (NPUs), предназначенных для энергоэффективного инференса глубокого обучения на периферийных устройствах. NPU DEEPX созданы для ресурсоемких встроенных и промышленных приложений ИИ: они обеспечивают высокую пропускную способность при минимальном энергопотреблении. Это оборудование хорошо подходит для развертывания в условиях, когда подключение к облаку ненадежно или нежелательно, например в робототехнике, интеллектуальных камерах и системах промышленной автоматизации.
Формат экспорта DEEPX#
При экспорте в DEEPX создается скомпилированный двоичный файл модели .dxnn, оптимизированный для выполнения на оборудовании DEEPX NPU. В конвейере компиляции используется инструментарий dx_com для квантования INT8 и оптимизации под конкретное оборудование. В результате создается самодостаточная директория модели, готовая к развертыванию.
Основные преимущества моделей DEEPX#
Модели DEEPX дают ряд преимуществ при развертывании на периферийных устройствах:
- Квантование INT8: при экспорте модели квантуются до точности INT8, что значительно уменьшает размер модели и повышает пропускную способность NPU. Подробнее о квантовании моделей.
- Оптимизация для NPU: формат
.dxnnспециально компилируется для оборудования DEEPX NPU и задействует выделенные блоки ускорения для быстрого и эффективного инференса. - Низкое энергопотребление: благодаря переносу инференса на NPU модели DEEPX потребляют значительно меньше энергии, чем эквивалентный инференс на CPU или GPU.
- Точность благодаря калибровке: при экспорте используется калибровка на основе EMA и реальные изображения из набора данных, чтобы свести к минимуму снижение точности при квантовании.
- Самодостаточный результат: в экспортированную директорию модели входят скомпилированный двоичный файл, конфигурация калибровки и метаданные, что упрощает развертывание.
Поддерживаемые задачи#
Экспорт DEEPX поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только для YOLO26 — единственного семейства, в котором предусмотрены соответствующие выходные блоки.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Обнаружение | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Оценка глубины | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Оценка позы | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт в DEEPX: преобразование модели YOLO#
Экспортируй модель Ultralytics YOLO в формат DEEPX и выполни инференс с помощью экспортированной модели.
Экспорт DEEPX поддерживается только на машинах с Linux x86-64. Экспорт на ARM64 (aarch64) не поддерживается. Однако экспортированные модели dxnn полностью совместимы с платформами ARM64 и могут на них выполняться.
Установка#
Чтобы установить необходимые пакеты, выполни команду:
# Install the required package for YOLO
pip install ultralyticsПри первом экспорте компилятор dx_com автоматически устанавливается из репозитория SDK DEEPX. В текущем процессе экспорта используется DX-COM 2.3.0 с пакетами wheel для Python 3.8–3.12 на Linux x86-64 с glibc версии 2.31 или новее.
Релизы компилятора в PyPI отозваны. Чтобы заранее установить зависимости для экспорта, укажи страницу пакетов wheel SDK с помощью --find-links; это работает и с pip, и с uv pip:
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.htmlДля установки репозитория в режиме редактирования замени "ultralytics[export-deepx]" на -e ".[export-base,export-deepx]". Чтобы воспроизвести среду Python 3.12 и пробный экспорт, используемые в CI, запусти существующий скрипт настройки среды из корневой директории репозитория:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepxДля работы скрипта настройки среды нужны uv и установленная копия репозитория Ultralytics. Скрипт устанавливает компилятор из источника SDK и автоматически применяет проверенные ограничения зависимостей.
Использование#
Формат DEEPX поддерживает режимы Экспорт, Предсказание и Валидация. Инференс и валидация выполняются на оборудовании DEEPX NPU. Экспортируй модель, а затем загрузи экспортированную модель для инференса или проверки ее точности.
from ultralytics import YOLO
# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")
# Экспорт модели в формат DEEPX (параметр quantize=8 включается автоматически)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Загрузка экспортированной модели DEEPX
model = YOLO("yolo26n_deepx_model")
# Запустить инференс
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Загрузка экспортированной модели DEEPX
model = YOLO("yolo26n_deepx_model")
# Проверь точность на наборе данных COCO8
metrics = model.val(data="coco8.yaml")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'deepx' | Целевой формат экспортированной модели, определяющий совместимость с оборудованием DEEPX NPU. |
imgsz | int или tuple | 640 | Требуемый размер входного изображения модели. Для экспорта в DEEPX нужен квадратный вход: укажи целое число (например, 640) или кортеж, в котором высота равна ширине. |
quantize | int или str | 8/авто | Точность квантования. Для экспорта DEEPX требуется 8 (INT8); если параметр не указан, он включается автоматически. Заменяет устаревшие флаги half/int8. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
opset | int | None | Задает версию opset ONNX для промежуточного графа ONNX. Если значение не задано, используется последняя поддерживаемая версия. |
data | str | None | Файл YAML набора данных для калибровки INT8; для классификации вместо него укажи директорию набора данных или название встроенного набора данных. Если параметр quantize=8 не задан, Ultralytics выбирает набор данных для калибровки по умолчанию для соответствующей задачи модели. |
device | str | None | Задает устройство для экспорта: GPU (device=0) или CPU (device=cpu). |
optimize | bool | False | Включает более высокий уровень оптимизации компилятора, что снижает задержку инференса, но увеличивает время компиляции. |
Всегда выполняй экспорт DEEPX на хосте с Linux x86-64. Компилятор dx_com не поддерживает ARM64.
Подробнее о процессе экспорта см. на странице документации Ultralytics об экспорте.
Структура выходных данных#
После успешного экспорта создается директория модели со следующей структурой:
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.)Файл .dxnn — это скомпилированный двоичный файл модели, который среда выполнения dx_engine напрямую загружает на NPU. Файл metadata.yaml содержит названия классов, размер изображения и другие данные, используемые конвейером инференса Ultralytics.
Развертывание экспортированных моделей YOLO DEEPX#
После успешного экспорта модели Ultralytics YOLO в формат DEEPX можно перейти к развертыванию модели на оборудовании DEEPX NPU.
Установка среды выполнения#
Для инференса нужны драйвер DEEPX NPU, среда выполнения libdxrt и пакет Python dx_engine.
Среда выполнения DEEPX поддерживает Linux x86-64 и ARM64 (например, 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-*.whlУбедись, что среда выполнения установлена правильно, выполнив dxrt-cli --version. Ты должен увидеть примерно такой вывод:
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: v6После установки среды выполнения запусти инференс и валидацию на устройстве DEEPX, как описано выше в разделе Использование: экспортированная модель _deepx_model напрямую загружается с помощью YOLO(...).
Визуализация с помощью dxtron#
dxtron — это визуализатор графов DEEPX для изучения скомпилированной модели .dxnn.
Установи dxtron в Linux x86-64: скачай пакет .deb из SDK DEEPX и установи его с помощью 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.debЗатем открой экспортированную модель:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron доступен для платформ x86-64 и aarch64.
Бенчмарки#
Команда Ultralytics провела бенчмаркинг моделей YOLO26, сравнив скорость и точность PyTorch и DEEPX.
| Модель | Формат | Статус | Размер (МБ) | metrics/mAP50-95(B) | Время вывода (мс/изобр.) |
|---|---|---|---|---|---|
| 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 |
| Модель | Формат | Статус | Размер (МБ) | точность (top1) | точность (top5) | Время вывода (мс/изобр.) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
Для проверки результатов бенчмаркинга выше использовались COCO128 для детекции, COCO128-seg для сегментации, COCO8-pose для оценки позы, ImageNet100 для классификации и DOTA128 для моделей OBB. Время инференса не включает пред- и постобработку.
Чтобы получить максимальную пропускную способность инференса от NPU DX-M1, подключенного к Raspberry Pi 5, открой файл конфигурации загрузки и включи поддержку PCIe Gen 3.
sudo nano /boot/firmware/config.txtДобавь в конец файла следующие строки:
dtparam=pciex1
dtparam=pciex1_gen=3Сохрани файл и выйди (Ctrl+X, затем Y, затем Enter), после чего перезагрузи устройство:
sudo rebootПроверь поколение PCIe. Ожидаемая скорость для PCIe Gen3 — 8GT/s.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Рекомендуемый порядок работы#
- Обучи модель с помощью режима обучения Ultralytics
- Экспортируй модель в формат DEEPX с помощью
model.export(format="deepx") - Проверь точность с помощью
yolo val, чтобы убедиться, что потери при квантовании минимальны - Выполни предсказание с помощью
yolo predictдля качественной проверки - Разверни экспортированную директорию
_deepx_model/на оборудовании DEEPX NPU с помощью среды выполненияdx_engine
Применение в реальных условиях#
Модели YOLO, развернутые на оборудовании DEEPX NPU, хорошо подходят для самых разных приложений ИИ на периферии:
- Умное видеонаблюдение: обнаружение объектов в реальном времени для систем безопасности и мониторинга с низким энергопотреблением и без зависимости от облака.
- Промышленная автоматизация: контроль качества, обнаружение дефектов и мониторинг процессов непосредственно на устройстве в производственных условиях.
- Робототехника: навигация на основе компьютерного зрения, обход препятствий и распознавание объектов на автономных роботах и дронах.
- Умное сельское хозяйство: мониторинг состояния посевов, обнаружение вредителей и оценка урожайности с помощью компьютерного зрения в сельском хозяйстве.
- Аналитика в розничной торговле: анализ потока покупателей, мониторинг полок и отслеживание запасов с помощью инференса на периферии в реальном времени.
Итоги#
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO в формат DEEPX и развертывать их на оборудовании DEEPX NPU. В конвейере экспорта используются калибровка INT8 и компилятор dx_com, которые создают оптимизированный для оборудования двоичный файл .dxnn; инференс на устройстве выполняется средой dx_engine.
Сочетание Ultralytics YOLO и технологии NPU от DEEPX — эффективное решение для запуска ресурсоемких задач компьютерного зрения на встроенных и периферийных устройствах. Оно обеспечивает высокую пропускную способность и низкое энергопотребление для приложений реального времени.
Подробнее об использовании смотри на официальном сайте DEEPX.
Если хочешь узнать больше о других интеграциях Ultralytics YOLO, посети нашу страницу с руководствами по интеграции. Там ты найдешь множество полезных ресурсов и советов.
Часто задаваемые вопросы#
Ты можешь экспортировать модель с помощью метода
export()в Python или через CLI. При экспорте автоматически включается квантование INT8 и используется набор данных для калибровки, чтобы свести к минимуму снижение точности. Если пакет компилятораdx_comеще не установлен, он будет установлен автоматически.Примерfrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")NPU DEEPX предназначены для максимально эффективного выполнения вычислений INT8. При экспорте компилятор
dx_comквантует модель с помощью калибровки на основе EMA и реальных изображений из набора данных, благодаря чему NPU может работать с полной производительностью. При экспорте в DEEPX всегда используется INT8: если ты запросишь другую точность, она будет заменена на INT8 с предупреждением.Для экспорта (компиляции) моделей DEEPX нужен хост с Linux x86-64. Экспорт не поддерживается на ARM64 (aarch64) и Windows. Инференс с экспортированной моделью
.dxnnможно запускать на любой платформе Linux (x86-64 и ARM64), которую поддерживает среда выполненияdx_engine.При экспорте создается директория (например,
yolo26n_deepx_model/), содержащая:yolo26n.dxnn— скомпилированный двоичный файл для NPUconfig.json— настройки калибровки и предобработкиmetadata.yaml— метаданные модели, включая названия классов и размер изображения
Да. Любую модель, обученную с помощью режима обучения Ultralytics и экспортированную с помощью
format="deepx", можно развернуть на оборудовании DEEPX NPU при условии, что в ней используются поддерживаемые операции слоев. Экспорт поддерживает все семь задач Ultralytics: детекцию, сегментацию экземпляров, семантическую сегментацию, оценку глубины, классификацию, оценку позы и обнаружение объектов с ориентированными ограничивающими рамками (OBB).При экспорте DEEPX компилятор
dx_comнастраивается на 100 шагов калибровки EMA для изображений из набора данных калибровки. Для хорошей точности квантования обычно достаточно нескольких сотен изображений. Если компиляция больших наборов данных занимает слишком много времени, укажи дляdataнабор данных меньшего размера.Среда выполнения DEEPX не входит в состав
ultralyticsи должна быть установлена отдельно до запуска инференса. На машинах с Linux x86-64 и Linux ARM64 (например, Raspberry Pi 5) установи драйвер NPU (dxrt-driver-dkms) и среду выполнения (libdxrt) из релизов DEEPX-AI на GitHub, а затем установи входящий в комплект пакет wheel Pythondx_engine. Пошаговые команды смотри в разделе Установка среды выполнения выше.