Ultralytics YOLO27: 加入候补名单。
Get Started

Ultralytics YOLO 模型的 DEEPX 导出#

在专用 NPU 硬件上部署计算机视觉模型,需要使用兼容且经过优化的模型格式。将 Ultralytics YOLO 模型导出为 DEEPX 格式后,即可在 DEEPX NPU 加速器上高效执行 INT8 量化推理。本指南将介绍如何将 YOLO 模型转换为 DEEPX 格式,并部署到由 DEEPX 驱动的硬件上。

什么是 DEEPX?#

DEEPX NPU Inference

DEEPX 是一家 AI 半导体公司,专门开发神经网络处理器(NPU),用于在边缘设备上以高能效执行深度学习推理。DEEPX NPU 专为要求严苛的嵌入式和工业 AI 应用设计,能够以极低的功耗提供高吞吐量。其硬件非常适合云连接不稳定或不适用的部署场景,例如机器人、智能摄像头和工业自动化系统。

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,因为只有 YOLO26 系列提供这两种任务头。

任务YOLOv8YOLO11YOLO26
检测✅✅✅
分割✅✅✅
语义分割❌❌✅
深度估计❌❌✅
分类✅✅✅
姿态✅✅✅
OBB✅✅✅

导出到 DEEPX:转换你的 YOLO 模型#

将 Ultralytics YOLO 模型导出为 DEEPX 格式,并使用导出的模型运行推理。

注意

DEEPX 导出仅支持在 x86-64 Linux 机器上进行。导出步骤不支持 ARM64 (aarch64)。不过,导出的 dxnn 模型完全兼容 ARM64 平台,并可在其上运行。

安装#

运行以下命令安装所需的软件包:

安装
# Install the required package for YOLO
pip install ultralytics

首次导出时,系统会自动从 PyPI 安装 dx_com 编译器。DX-COM 2.4.1 为使用 glibc 2.31 或更高版本的 x86-64 Linux 提供 Python 3.8–3.14 的 wheel。若要预先安装导出依赖项:

pip install "ultralytics[export-deepx]"

若要以可编辑模式安装仓库,请将 "ultralytics[export-deepx]" 替换为 -e ".[export-base,export-deepx]"。若要复现 CI 使用的 Python 3.14 环境和冒烟导出,请从仓库根目录运行现有的环境构建器:

ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx

环境构建器需要 uv 和已安装的 Ultralytics 代码库检出版本。它会自动应用经过测试的依赖项约束。

用法#

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")

导出参数#

参数类型默认值说明
formatstr'deepx'导出模型的目标格式,用于定义与 DEEPX NPU 硬件的兼容性。
imgszint 或 tuple640模型输入所需的图像尺寸。DEEPX 导出要求输入为正方形——传入整数(例如 640)或高度等于宽度的元组。
quantizeint 或 str8/自动量化精度。DEEPX 导出必须使用 8 (INT8),未指定时会自动启用。此设置会替代已弃用的 half/int8 标志。
simplifyboolTrue使用 onnxslim 简化中间 ONNX 图。
opsetintNone指定中间 ONNX 图的 ONNX opset 版本。若未设置,则使用最新的受支持版本。
datastrNone用于 INT8 校准的数据集 YAML;分类任务则使用数据集目录或内置数据集名称。如果使用 quantize=8 时未提供此项,Ultralytics 会根据模型任务选择默认校准数据集。
devicestrNone指定导出设备:GPU (device=0) 或 CPU (device=cpu)。
optimizeboolFalse启用更高级别的编译器优化,以降低推理延迟,但会增加编译时间。
提示

始终在 x86-64 Linux 主机上运行 DEEPX 导出。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 运行时和 dx_engine Python 包。

注意

DEEPX 运行时同时支持 x86-64 Linux 和 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 模型。

在 x86-64 Linux 上安装 dxtron:从 DEEPX SDK 下载 .deb 软件包,然后通过 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.dxnn
注意

dxtron 同时适用于 x86-64 和 aarch64 平台。

基准测试#

Ultralytics 团队对 YOLO26 模型进行了基准测试,比较 PyTorch 和 DEEPX 之间的速度与准确率。

性能
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
模型格式状态大小 (MB)metrics/mAP50-95(B)推理时间 (ms/im)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
模型格式状态大小 (MB)准确率 (top1)准确率 (top5)推理时间 (ms/im)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.7
注意

上述基准测试的验证使用了 COCO128 进行检测、COCO128-seg 进行分割、COCO8-pose 进行姿态估计、ImageNet100 进行分类,以及 DOTA128 进行 OBB 模型测试。推理时间不包括预处理和后处理。

性能优化技巧

要充分发挥连接到 Raspberry Pi 5 的 DX-M1 NPU 的推理吞吐量,请打开启动配置文件并启用 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"
  1. 使用 Ultralytics 训练模式训练模型
  2. 使用 model.export(format="deepx") 将模型导出为 DEEPX 格式
  3. 使用 yolo val 验证精度,确认量化损失最小
  4. 使用 yolo predict 预测以进行定性验证
  5. 使用 dx_engine 运行时,将导出的 _deepx_model/ 目录部署到 DEEPX NPU 硬件

实际应用#

部署在 DEEPX NPU 硬件上的 YOLO 模型非常适合各种边缘 AI 应用:

  • 智能监控:用于安全和监控系统的实时目标检测,功耗低且无需依赖云端。
  • 工业自动化:在工厂环境中进行设备端质量控制、缺陷检测和流程监控。
  • 机器人:在自主机器人和无人机上实现基于视觉的导航、避障和物体识别。
  • 智慧农业:利用农业计算机视觉监测作物健康状况、检测害虫并估算产量。
  • 零售分析:通过实时边缘推理分析客流、监控货架并跟踪库存。

总结#

在本指南中,你已经了解如何将 Ultralytics YOLO 模型导出为 DEEPX 格式,并部署到 DEEPX NPU 硬件上。导出流程使用 INT8 校准和 dx_com 编译器,生成针对硬件优化的 .dxnn 二进制文件,而 dx_engine 运行时则负责在设备上执行推理。

Ultralytics YOLO 与 DEEPX 的 NPU 技术相结合,为在嵌入式和边缘设备上运行高级计算机视觉工作负载提供了有效方案,能够以低功耗为实时应用带来高吞吐量。

如需了解更多用法详情,请访问 DEEPX 官方网站。

此外,如果你想进一步了解其他 Ultralytics YOLO 集成,请访问我们的集成指南页面。你可以在那里找到许多实用资源和见解。

常见问题#

  • 你可以在 Python 中使用 export() 方法或通过 CLI 导出模型。导出时会自动启用 INT8 量化,并使用校准数据集来尽量减少准确率损失。如果尚未安装 dx_com 编译器软件包,系统会自动安装。

    示例
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • DEEPX NPU 专为以最高效率执行 INT8 运算而设计。dx_com 编译器会在导出时使用基于 EMA 的校准和真实数据集图像对模型进行量化,使 NPU 能够发挥全部性能。DEEPX 导出始终强制使用 INT8——如果你请求其他精度,系统会发出警告并改用 INT8。

  • 导出(编译)DEEPX 模型需要使用 x86-64 Linux 主机。导出步骤不支持 ARM64 (aarch64) 和 Windows 机器。使用导出的 .dxnn 模型运行推理时,只要 Linux 平台(x86-64 或 ARM64)受 dx_engine 运行时支持,就可以运行。

  • 导出会创建一个目录(例如 yolo26n_deepx_model/),其中包含:

    • yolo26n.dxnn — 编译后的 NPU 二进制文件
    • config.json — 校准和预处理设置
    • metadata.yaml — 模型元数据,包括类别名称和图像尺寸
  • 可以。任何使用 Ultralytics 训练模式训练并通过 format="deepx" 导出的模型,只要使用受支持的层操作,就可以部署到 DEEPX NPU 硬件上。导出支持 Ultralytics 的全部七种任务:检测、实例分割、语义分割、深度估计、分类、姿态估计和有向边界框 (OBB)。

  • DEEPX 导出流程会将 dx_com 编译器配置为使用校准数据集中的图像进行 100 个 EMA 校准步骤。通常,几百张图像就足以获得良好的量化准确率。如果大型数据集导致编译时间过长,请将 data 指向较小的数据集。

  • DEEPX 运行时不包含在 ultralytics 中,运行推理前必须单独安装。在 x86-64 Linux 机器和 ARM64 Linux 机器(例如 Raspberry Pi 5)上,请从 DEEPX-AI GitHub Releases 安装 NPU 驱动程序 (dxrt-driver-dkms) 和运行时 (libdxrt),然后安装随附的 dx_engine Python wheel。有关分步命令,请参阅上文的运行时安装部分。

评论