Экспорт DEEPX для моделей Ultralytics YOLO#
Развертывание моделей компьютерного зрения на специализированном оборудовании NPU требует совместимого и оптимизированного формата модели. Экспорт моделей Ultralytics YOLO в формат DEEPX обеспечивает эффективный вывод с INT8-квантизацией на NPU-ускорителях DEEPX. В этом руководстве ты узнаешь, как преобразовать модели YOLO в формат DEEPX и развернуть их на оборудовании с поддержкой DEEPX.
Что такое DEEPX?#
DEEPX — полупроводниковая компания в области ИИ, специализирующаяся на нейронных процессорах (NPU), предназначенных для энергоэффективного вывода моделей глубокого обучения на периферийных устройствах. 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 автоматически устанавливается из репозитория DEEPX SDK при первом экспорте. Текущий рабочий процесс экспорта использует DX-COM 2.3.0, который предоставляет колеса для Python 3.8–3.12 на x86-64 Linux с glibc 2.31 или новее.
Релизы компилятора на PyPI отозваны. Чтобы предварительно установить зависимости экспорта, предоставьте страницу колес 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
# 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")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'deepx' | Целевой формат экспортированной модели, определяющий совместимость с оборудованием DEEPX NPU. |
imgsz | int или tuple | 640 | Желаемый размер изображения на входе модели. Для экспорта DEEPX требуется квадратный вход: передай целое число (например, 640) или кортеж, в котором высота равна ширине. |
quantize | int или str | 8/auto | Точность квантизации. Для экспорта DEEPX требуется 8 (INT8); если параметр не указан, он включается автоматически. Заменяет устаревшие флаги half/int8. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
opset | int | None | Задает версию opset для промежуточного графа ONNX. Если параметр не задан, используется последняя поддерживаемая версия. |
data | str | None | YAML-файл набора данных, используемый для INT8-калибровки; для классификации вместо него указывается каталог набора данных или имя встроенного набора данных. Если параметр не указан вместе с quantize=8, Ultralytics выбирает набор данных калибровки по умолчанию для данной задачи модели. |
device | str | None | Задает устройство для экспорта: GPU (device=0) или CPU (device=cpu). |
optimize | bool | False | Включает более высокий уровень оптимизации компилятора, что уменьшает задержку вывода и увеличивает время компиляции. |
Всегда выполняй экспорт DEEPX на хосте с x86-64 Linux. Компилятор 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 из DEEPX SDK и установив его с помощью 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: если ты запросишь другую точность, она будет заменена с выводом предупреждения.Экспорт (компиляция) модели DEEPX требует хост с x86-64 Linux. Этап экспорта не поддерживается на 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 используются все изображения из набора данных калибровки с методом калибровки EMA. Для хорошей точности квантизации обычно достаточно нескольких сотен изображений. Если компиляция больших наборов данных занимает слишком много времени, укажи для
dataменьший набор данных.Среда выполнения DEEPX не входит в состав
ultralyticsи должна быть установлена отдельно до запуска вывода. На машинах с Linux x86-64 и ARM64 Linux (например, Raspberry Pi 5) установи драйвер NPU (dxrt-driver-dkms) и среду выполнения (libdxrt) из релизов DEEPX-AI на GitHub, а затем установи поставляемый пакет Pythondx_engine. Пошаговые команды см. в расположенном выше разделе «Установка среды выполнения».