Экспорт Ultralytics YOLO в DEEPX
Для развертывания моделей компьютерного зрения на специализированном оборудовании с NPU требуется совместимый и оптимизированный формат модели. Экспорт моделей Ultralytics YOLO в формат DEEPX обеспечивает эффективный инференс с квантованием INT8 на ускорителях DEEPX NPU. В этом руководстве описано преобразование моделей YOLO в формат DEEPX и их развертывание на оборудовании DEEPX.
Что такое DEEPX?#
DEEPX — компания-разработчик полупроводников для ИИ и партнер Ultralytics, специализирующийся на нейропроцессорах (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 автоматически устанавливается из PyPI при первом экспорте. DX-COM 2.5.0 предоставляет пакеты wheel для Python 3.8–3.14 под Linux x86-64 с glibc 2.31 или новее и требует не менее 16 ГБ оперативной памяти. Чтобы предварительно установить зависимости для экспорта:
pip install "ultralytics[export-deepx]"Для установки репозитория в редактируемом режиме замени "ultralytics[export-deepx]" на -e ".[export-base,export-deepx]". Чтобы в точности воспроизвести окружение Python 3.14 и тестовый экспорт, используемые в CI, запусти имеющийся сборщик окружения из корневого каталога репозитория:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepxДля сборщика окружения нужны uv и установленная копия Ultralytics. Он автоматически применяет проверенные ограничения версий зависимостей.
DX-COM 2.5.0 создает файлы формата .dxnn версии 9, которые загружаются только в DX-RT 3.5.0 или новее. Установи соответствующую среду выполнения DEEPX, описанную в разделе Установка среды выполнения, и перед обновлением отдельных компонентов проверь матрицу совместимости версий DEEPX.
Использование#
Формат DEEPX поддерживает режимы экспорта, предсказания и валидации. Инференс и валидация выполняются на NPU-оборудовании DEEPX. Экспортируй модель, затем загрузи экспортированную модель для инференса или проверки ее точности.
Для Predict и Validate требуется устройство DEEPX NPU с установленной средой выполнения DEEPX (см. раздел Установка среды выполнения). Экспорт выполняется на хосте Linux x86-64 без NPU; скопируй экспортированный каталог _deepx_model/ на устройство 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' | Целевой формат экспортированной модели, определяющий совместимость с NPU-оборудованием DEEPX. |
imgsz | int или tuple | 640 | Требуемый размер входного изображения модели. Для экспорта в DEEPX нужен квадратный вход: передай целое число (например, 640) или кортеж, в котором высота равна ширине. |
quantize | int или str | 8/авто | Точность квантования. Для экспорта в DEEPX требуется 8 (INT8); если параметр не указан, этот режим включается автоматически. Заменяет устаревшие флаги half/int8. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
opset | int | None | Задаёт версию ONNX opset для промежуточного графа ONNX. Если параметр не задан, используется opset 18 (более низкий для PyTorch < 2.4), но не выше установленной версии 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 следующий шаг — развернуть эти модели на NPU-оборудовании DEEPX.
Установка среды выполнения#
Для инференса требуются драйвер DEEPX NPU (v2.7.0 или новее), среда выполнения DX-RT (v3.5.0 или новее), прошивка NPU v2.7.6 или новее и пакет Python dx_engine. Это версии, необходимые для запуска моделей, скомпилированных с помощью DX-COM 2.5.0.
Среда выполнения DEEPX поддерживает Linux x86-64 и ARM64 (например, Raspberry Pi 5).
Установи драйвер NPU и пакет среды выполнения libdxrt-bin одним из следующих способов.
Вариант A: установка из пакетов GitHub Release#
Скачай пакеты драйвера и среды выполнения .deb из репозиториев DEEPX-AI на GitHub и установи их. Пакет среды выполнения предоставляется отдельно для каждой архитектуры CPU (amd64 или arm64):
# Install the NPU driver and DX-RT runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.7.0/dxrt-driver-dkms_2.7.0-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.7.0-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.5.0/libdxrt-bin_3.5.0_$(dpkg --print-architecture).deb
sudo apt install ./libdxrt-bin_3.5.0_$(dpkg --print-architecture).debВариант B: установка из репозитория DEEPX apt#
Один раз добавь репозиторий DEEPX apt, затем установи и обнови драйвер и среду выполнения с помощью apt:
# Add the DEEPX apt repository
wget -O - https://apt.releases.deepx.ai/gpg | sudo gpg --dearmor -o /usr/share/keyrings/deepx-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/deepx-archive-keyring.gpg] https://apt.releases.deepx.ai $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") main" | sudo tee /etc/apt/sources.list.d/deepx.list
# Install the NPU driver and DX-RT runtime
sudo apt update
sudo apt install dxrt-driver-dkms libdxrt-binПосле установки драйвера перезагрузи хост, чтобы загрузить новый модуль ядра перед запуском dxcli.
Пакет Python и прошивка#
Пакет libdxrt-bin содержит пакеты wheel dx_engine для Python 3.8–3.14 в /usr/share/libdxrt-bin/python/, но не устанавливает их. Установи пакет wheel, соответствующий версии Python, в среде, где установлены Ultralytics и NumPy:
python -m pip install --upgrade --no-index --find-links /usr/share/libdxrt-bin/python dx_engineДля DX-RT 3.5.0 требуется прошивка NPU v2.7.6 или новее. Проверь версию прошивки и идентификатор устройства с помощью dxcli -s и, если прошивка устарела, обнови ее, используя образ прошивки для своего модуля. В модулях DX-M1 и DX-M1M M.2 используются разные образы прошивки, поэтому скачивай только образ для своего модуля; dxcli -s указывает модуль как M1 или M1M в информации об устройстве:
# Download the firmware image matching your module (DX-M1 shown)
wget -O dx-m1-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1/2.7.6/mdot2/fw.bin
# wget -O dx-m1m-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1m/2.7.6/mdot2/fw.bin # DX-M1M
# Update the selected device; replace DEVICE_ID with its ID from dxcli -s
sudo systemctl stop dxrt.service
dxcli -d DEVICE_ID -u dx-m1-2.7.6.bin # for DX-M1M use dx-m1m-2.7.6.bin insteadПосле прошивки полностью отключи питание хоста и снова включи его, прежде чем проверять версию прошивки. Если физически отключить питание невозможно, перезагрузи хост, как описано в руководстве по устранению неполадок DEEPX.
Проверь установку с помощью dxcli -s: эта команда выводит версии среды выполнения, драйвера и прошивки для каждого устройства. import dx_engine выдает ошибку RuntimeError, если версии среды выполнения libdxrt и установленного пакета wheel dx_engine различаются, поэтому после обновления среды выполнения переустанови пакет wheel из /usr/share/libdxrt-bin/python/.
После установки среды выполнения запускай инференс и валидацию на устройстве DEEPX так же, как описано выше в разделе «Использование»: экспортированная модель _deepx_model напрямую загружается с помощью YOLO(...).
Проверка скомпилированной модели#
В DX-COM 2.5.0 средство визуализации графов DX-TRON заменено интерактивным HTML-отчетом о сводке компиляции, в котором показана структура скомпилированной модели и распределение нагрузки между CPU и NPU. При необходимости создай его, повторно скомпилировав промежуточную модель ONNX, сохраненную в ходе экспорта, с помощью CLI dxcom на хосте экспорта x86-64:
dxcom -m yolo26n.onnx -c yolo26n_deepx_model/config.json -o yolo26n_deepx_report --export_htmlОткрой yolo26n_deepx_report/yolo26n_summary.html в браузере, чтобы просмотреть отчет.
Бенчмарки#
Команда 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 для сегментации, ImageNet100 для классификации, COCO8-pose для оценки позы и 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"Рекомендуемый рабочий процесс#
- Обучи модель с помощью режима Train Ultralytics
- Экспортируй модель в формат DEEPX с помощью
model.export(format="deepx") - Проверь точность с помощью
yolo val, чтобы убедиться, что потери при квантовании минимальны - Выполни предсказание с помощью
yolo predictдля качественной проверки - Разверни экспортированный каталог
_deepx_model/на NPU-оборудовании DEEPX с помощью среды выполненияdx_engine
Применение в реальных условиях#
Модели YOLO, развернутые на NPU-оборудовании DEEPX, хорошо подходят для самых разных приложений периферийного ИИ:
- Интеллектуальное видеонаблюдение: обнаружение объектов в реальном времени для систем безопасности и мониторинга с низким энергопотреблением и без зависимости от облака.
- Промышленная автоматизация: контроль качества, обнаружение дефектов и мониторинг производственных процессов непосредственно на устройстве.
- Робототехника: навигация на основе компьютерного зрения, обход препятствий и распознавание объектов на автономных роботах и дронах.
- Умное сельское хозяйство: мониторинг состояния посевов, обнаружение вредителей и оценка урожайности с помощью компьютерного зрения в сельском хозяйстве.
- Аналитика в розничной торговле: анализ потоков покупателей, мониторинг полок и отслеживание запасов с помощью инференса на периферийных устройствах в реальном времени.
Итоги#
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO в формат DEEPX и развертывать их на NPU-оборудовании DEEPX. В конвейере экспорта используются калибровка INT8 и компилятор dx_com для создания оптимизированного для оборудования бинарного файла .dxnn, а за инференс на устройстве отвечает среда выполнения dx_engine.
Вместе Ultralytics YOLO и NPU DEEPX позволяют выполнять задачи компьютерного зрения на встроенных и периферийных устройствах с высокой пропускной способностью и низким энергопотреблением для приложений реального времени.
Подробнее об использовании см. на официальном сайте DEEPX.
Часто задаваемые вопросы#
Ты можешь экспортировать модель с помощью метода
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— метаданные модели, включая имена классов и размер изображения
Да. На NPU-оборудовании DEEPX можно развернуть любую модель, обученную с помощью режима обучения Ultralytics и экспортированную с помощью
format="deepx", если в ней используются поддерживаемые операции слоев. Экспорт поддерживает все семь задач Ultralytics: обнаружение, сегментацию экземпляров, семантическую сегментацию, оценку глубины, классификацию, оценку позы и обнаружение ориентированных ограничивающих рамок (OBB).Конвейер экспорта DEEPX настраивает компилятор
dx_comна 100 шагов калибровки EMA по изображениям из набора данных для калибровки. Для хорошей точности квантования обычно достаточно нескольких сотен изображений. Если время компиляции больших наборов данных вызывает опасения, укажи вdataнабор данных меньшего размера.Среда выполнения DEEPX не входит в пакет
ultralyticsи должна быть установлена отдельно перед запуском инференса. На компьютерах с Linux x86-64 и Linux ARM64 (например, Raspberry Pi 5) установи драйвер NPU (dxrt-driver-dkms) и среду выполнения (libdxrt-bin) из пакетов выпуска DEEPX-AI на GitHub или из репозитория DEEPX apt, при необходимости обнови прошивку NPU до версии v2.7.6 или новее и установи входящий в комплект пакет wheel Pythondx_engineв свою среду. Для моделей, экспортированных с помощью DX-COM 2.5.0, требуется DX-RT 3.5.0 или новее. Пошаговые команды см. в разделе Установка среды выполнения выше.
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.
