Link to this section面向 Ultralytics YOLO 模型的 DEEPX 导出#
在专用 NPU 硬件上部署计算机视觉模型需要兼容且优化的模型格式。将 Ultralytics YOLO 模型导出为 DEEPX 格式,即可在 DEEPX NPU 加速器上实现高效的 INT8 量化推理。本指南将引导你完成将 YOLO 模型转换为 DEEPX 格式并将其部署在搭载 DEEPX 的硬件上的过程。
Link to this section什么是 DEEPX?#
DEEPX 是一家 AI 半导体公司,专注于为边缘端的节能 深度学习 推理设计神经网络处理器 (NPU)。DEEPX NPU 专为严苛的嵌入式和工业 AI 应用而打造,能以极低的功耗提供高吞吐量。其硬件非常适合云连接不可靠或不理想的部署场景,例如机器人、智能摄像头和工业自动化系统。
Link to this sectionDEEPX 导出格式#
DEEPX 导出生成一个经过编译的 .dxnn 模型二进制文件,该文件已针对在 DEEPX NPU 硬件上的执行进行了优化。编译流水线使用 dx_com 工具包来执行 INT8 量化和特定于硬件的优化,生成一个随时可供部署的独立模型目录。
Link to this sectionDEEPX 模型的主要特性#
DEEPX 模型为边缘部署提供了多项优势:
- INT8 量化:模型在导出过程中被量化为 INT8 精度,显著减小了模型大小并最大化了 NPU 吞吐量。了解更多关于 模型量化 的信息。
- NPU 优化:
.dxnn格式专为 DEEPX NPU 硬件编译,利用专用加速单元实现快速、高效的推理。 - 低功耗:通过将推理卸载到 NPU,DEEPX 模型的功耗远低于等效的 CPU 或 GPU 推理。
- 基于校准的准确性:导出过程使用基于 EMA 的校准和真实数据集图像,以最大限度地减少量化期间的准确性损失。
- 独立输出:导出的模型目录捆绑了编译后的二进制文件、校准配置和元数据,以便直接部署。
Link to this section支持的任务#
所有标准的 Ultralytics 任务均支持 DEEPX 导出,涵盖 YOLO26、YOLO11 和 YOLOv8 模型系列。
Link to this section导出至 DEEPX:转换你的 YOLO 模型#
将 Ultralytics YOLO 模型导出为 DEEPX 格式,并使用导出的模型运行推理。
DEEPX 导出仅支持 x86-64 Linux 机器。导出步骤不支持 ARM64 (aarch64)。但是,导出的 dxnn 模型在 ARM64 平台上是完全兼容且可执行的。
Link to this section安装#
要安装所需的软件包,请运行:
# Install the required package for YOLO
pip install ultralyticsdx_com 编译器包将在首次导出时自动从 DEEPX SDK 存储库中安装。有关安装过程的详细说明和最佳实践,请查看我们的 Ultralytics 安装指南。在安装 YOLO 所需软件包时,如果遇到任何困难,请参考我们的 常见问题指南 获取解决方案和提示。
Link to this section用法#
DEEPX 格式支持 导出、预测 和 验证 模式。推理和验证在 DEEPX NPU 硬件上运行。导出你的模型,然后加载导出的模型以运行推理或验证其准确性。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to DEEPX format (int8=True 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")Link to this section导出参数#
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
format | str | 'deepx' | 导出模型的目标格式,定义与 DEEPX NPU 硬件的兼容性。 |
imgsz | int 或 tuple | 640 | 模型输入所需的图像大小。DEEPX 导出需要方形输入——传入一个整数(例如 640)或一个高度等于宽度的元组。 |
int8 | bool | True | 启用 INT8 量化。DEEPX 导出所必需——如果未指定,则自动设置为 True。 |
data | str | 'coco8.yaml' | 用于 INT8 校准的数据集配置文件。指定校准图像源。 |
device | str | None | 指定用于导出的设备:GPU (device=0) 或 CPU (device=cpu)。 |
optimize | bool | False | 启用更高级的编译器优化,这会减少推理延迟并增加编译时间。 |
请务必在 x86-64 Linux 主机上运行 DEEPX 导出。dx_com 编译器不支持 ARM64。
有关导出过程的更多详细信息,请访问 Ultralytics 导出文档页面。
Link to this section输出结构#
成功导出后,将创建一个具有以下布局的模型目录:
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 推理流水线使用的其他信息。
Link to this section部署导出的 YOLO DEEPX 模型#
成功将 Ultralytics YOLO 模型导出为 DEEPX 格式后,下一步是在 DEEPX NPU 硬件上部署这些模型。
Link to this section运行时安装#
推理需要 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(...) 加载。
Link to this section使用 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.dxnndxtron 适用于 x86-64 和 aarch64 平台。
Link to this section基准测试#
Ultralytics 团队对 YOLO26 模型进行了基准测试,比较了 PyTorch 和 DEEPX 之间的速度和准确性。
| 模型 | 格式 | 状态 | 大小 (MB) | 指标/mAP50-95(B) | 推理时间 (ms/im) |
|---|---|---|---|---|---|
| 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 |
| 模型 | 格式 | 状态 | 大小 (MB) | 准确率 (top1) | 准确率 (top5) | 推理时间 (ms/im) |
|---|---|---|---|---|---|---|
| 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 模型测试。推理时间不包含预处理/后处理。
为了从连接到 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"Link to this section推荐工作流程#
- 训练 你的模型,使用 Ultralytics 训练模式
- 导出 为 DEEPX 格式,使用
model.export(format="deepx") - 验证 准确性,使用
yolo val以确认极小的量化损失 - 预测,使用
yolo predict进行定性验证 - 部署 导出的
_deepx_model/目录到 DEEPX NPU 硬件,使用dx_engine运行时
Link to this section实际应用场景#
部署在 DEEPX NPU 硬件上的 YOLO 模型非常适合广泛的 边缘 AI 应用:
- 智能监控:用于安防和监控系统的实时 目标检测,具有低功耗且无需依赖云端的特点。
- 工业自动化:工厂环境中的设备端质量控制、缺陷检测和过程监控。
- 机器人技术:自主机器人和无人机上的基于视觉的导航、避障和对象识别。
- 智慧农业:使用 农业计算机视觉 进行作物健康监测、害虫检测和产量估算。
- 零售分析:利用实时边缘推理进行客流分析、货架监控和库存追踪。
Link to this section总结#
在本指南中,你学习了如何将 Ultralytics YOLO 模型导出为 DEEPX 格式并部署到 DEEPX NPU 硬件上。导出流水线使用 INT8 校准和 dx_com 编译器来生成硬件优化的 .dxnn 二进制文件,同时 dx_engine 运行时负责在设备上进行推理。
Ultralytics YOLO 与 DEEPX 的 NPU 技术相结合,为在嵌入式和边缘设备上运行高级 计算机视觉 工作负载提供了有效的解决方案——为实时应用提供高吞吐量和低功耗的表现。
有关使用的更多详情,请访问 DEEPX 官方网站。
此外,如果你想了解更多关于其他 Ultralytics YOLO 集成的信息,请访问我们的 集成指南页面。你会在那里找到许多有用的资源和见解。
Link to this section常见问题解答#
Link to this section我该如何将我的 Ultralytics YOLO 模型导出为 DEEPX 格式?#
你可以使用 Python 中的 export() 方法或通过 CLI 导出你的模型。导出过程会自动启用 INT8 量化,并使用校准数据集来最大限度地减少精度损失。如果尚未安装 dx_com 编译器包,它会自动进行安装。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="deepx")Link to this section为什么 DEEPX 导出需要 INT8 量化?#
DEEPX NPU 旨在以最高效率执行 INT8 计算。dx_com 编译器在导出过程中使用基于 EMA 的真实数据集图像校准来对模型进行量化,使 NPU 能够发挥其全部性能。DEEPX 导出强制执行 INT8——如果你传入 int8=False,它将被覆盖并显示警告。
Link to this sectionDEEPX 导出支持哪些平台?#
DEEPX 模型导出(编译)需要 x86-64 Linux 主机。导出步骤在 ARM64 (aarch64) 和 Windows 机器上不受支持。使用导出的 .dxnn 模型进行的推理可以在 dx_engine 运行时支持的任何 Linux 平台(x86-64 和 ARM64)上运行。
Link to this sectionDEEPX 导出的输出是什么?#
导出将创建一个目录(例如 yolo26n_deepx_model/),其中包含:
yolo26n.dxnn— 已编译的 NPU 二进制文件config.json— 校准和预处理设置metadata.yaml— 包括类名和图像尺寸在内的模型元数据
Link to this section我可以在 DEEPX 硬件上部署自定义训练的模型吗?#
可以。任何使用 Ultralytics 训练模式 训练并使用 format="deepx" 导出的模型都可以部署在 DEEPX NPU 硬件上,前提是它使用了受支持的层操作。导出支持检测、分割、姿态估计、旋转边界框 (OBB) 和分类任务。
Link to this sectionDEEPX 导出应该使用多少张校准图像?#
DEEPX 导出流水线对校准数据集中的每一张图像都使用 EMA 校准方法。几百张图像通常足以获得良好的量化精度。如果在大数据集上编译时间过长,请将 data 指向较小的数据集。
Link to this section如何安装 DEEPX 运行时以进行推理?#
DEEPX 运行时未与 ultralytics 捆绑,必须在运行推理之前单独安装。在 x86-64 Linux 机器和 ARM64 Linux 机器(例如 Raspberry Pi 5)上,从 DEEPX-AI GitHub 发布版中安装 NPU 驱动程序 (dxrt-driver-dkms) 和运行时 (libdxrt),然后安装捆绑的 dx_engine Python wheel。请参阅上方的 运行时安装 部分了解分步命令。