Экспорт DEEPX для моделей Ultralytics YOLO#
Развертывание моделей компьютерного зрения на специализированном аппаратном обеспечении NPU требует совместимого и оптимизированного формата моделей. Экспорт моделей Ultralytics YOLO в формат DEEPX обеспечивает эффективный инференс с квантованием INT8 на ускорителях DEEPX NPU. В этом руководстве описано, как конвертировать модели YOLO в формат DEEPX и развертывать их на оборудовании с поддержкой DEEPX.
Что такое DEEPX?#
DEEPX — это компания по производству полупроводников для ИИ, специализирующаяся на нейронных процессорах (NPU), разработанных для энергоэффективного инференса deep learning на периферии (edge). Чипы DEEPX NPU созданы для требовательных встраиваемых и промышленных приложений ИИ, обеспечивая высокую пропускную способность при минимальном энергопотреблении. Их аппаратное обеспечение отлично подходит для сценариев развертывания, где облачное подключение ненадежно или нежелательно, таких как робототехника, умные камеры и системы промышленной автоматизации.
Формат экспорта 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, единственным семейством, в котором есть эти головы.
Экспорт в 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 при первом экспорте. Подробные инструкции и лучшие практики, связанные с процессом установки, можно найти в нашем руководстве по установке Ultralytics. Если при установке необходимых пакетов для YOLO ты столкнешься с какими-либо трудностями, обратись к нашему руководству по частым проблемам за решениями и советами.
Использование#
Формат DEEPX поддерживает режимы Export, Predict и Validate. Инференс и валидация выполняются на аппаратном обеспечении 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' | Целевой формат для экспортированной модели, определяющий совместимость с NPU-оборудованием DEEPX. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входа модели. Для экспорта в DEEPX требуется квадратный вход — передай целое число (например, 640) или кортеж, где высота равна ширине. |
quantize | int или str | 8/auto | Точность квантования. 8 (INT8) требуется для экспорта DEEPX и включается автоматически, если не указано иное. Заменяет устаревшие флаги half/int8. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
opset | int | None | Указывает версию ONNX 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, следующим шагом будет развертывание этих моделей на NPU-оборудовании DEEPX.
Установка среды выполнения#
Для инференса требуются драйвер 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 на x86-64 Linux, загрузив пакет .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.
| Модель | Формат | Статус | Размер (МБ) | метрики/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 |
| Модель | Формат | Статус | Размер (МБ) | acc (top1) | acc (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. Ожидаемая скорость — 8 ГТ/с для PCIe Gen3.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Рекомендуемый рабочий процесс#
- Обучай (Train) свою модель с помощью режима обучения Ultralytics
- Экспортируй (Export) в формат DEEPX с помощью
model.export(format="deepx") - Проверяй (Validate) точность с помощью
yolo val, чтобы убедиться в минимальной потере качества при квантовании - Предсказывай (Predict) с помощью
yolo predictдля качественной проверки - Развертывай (Deploy) экспортированный каталог
_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, посети нашу страницу руководства по интеграции. Там ты найдешь множество полезных ресурсов и идей.
FAQ#
Ты можешь экспортировать модель с помощью метода
export()в Python или через CLI. Экспорт автоматически включает квантование INT8 и использует калибровочный датасет для минимизации потерь точности. Пакет компилятораdx_comустанавливается автоматически, если он еще не установлен.Примерfrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")Чипы DEEPX NPU предназначены для выполнения вычислений INT8 с максимальной эффективностью. Компилятор
dx_comквантует модель во время экспорта с использованием калибровки на основе EMA с реальными изображениями из датасета, позволяя NPU раскрыть всю свою производительность. INT8 всегда является обязательным для экспорта в DEEPX — если ты запросишь другую точность, она будет заменена с выдачей предупреждения.Экспорт (компиляция) модели 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и должна быть установлена отдельно перед запуском инференса. На машинах x86-64 Linux и ARM64 Linux (например, Raspberry Pi 5) установи драйвер NPU (dxrt-driver-dkms) и среду выполнения (libdxrt) из релизов DEEPX-AI на GitHub, а затем установи прилагаемый Python-wheeldx_engine. Пошаговые команды см. в разделе Установка среды выполнения выше.