用于 Ultralytics YOLO 模型的 DeepX 导出
在专业 NPU 硬件上部署计算机视觉模型需要兼容且经过优化的模型格式。将 Ultralytics YOLO 模型导出为 DeepX 格式,可以实现 DeepX NPU 加速器上的高效 INT8 量化推理。本指南将引导你完成将 YOLO 模型转换为 DeepX 格式并将其部署在搭载 DeepX 硬件上的过程。
什么是 DeepX?
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 的校准,并结合真实数据集图像,以最大限度地减少量化过程中的准确性损失。
- 自包含输出:导出的模型目录整合了编译后的二进制文件、校准配置和元数据,以便于直接部署。
支持的任务
所有标准的 Ultralytics 任务均支持 YOLO26、YOLO11 和 YOLOv8 模型系列的 DeepX 导出。
导出到 DeepX:转换你的 YOLO 模型
将 Ultralytics YOLO 模型导出为 DeepX 格式,并使用导出的模型进行推理。
DeepX 导出仅支持 x86-64 Linux 机器。ARM64 (aarch64) 不支持导出步骤。
安装
要安装所需的包,请运行:
# Install the required package for YOLO
pip install ultralytics该 dx_com 编译器包将在首次导出时从 DeepX SDK 存储库自动安装。有关安装过程的详细说明和最佳实践,请查看我们的 Ultralytics 安装指南。在为 YOLO 安装所需包时,如果遇到任何困难,请查阅我们的 常见问题指南 以获取解决方案和提示。
使用方法
from ultralytics import YOLO
# Load the 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/'导出参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
format | str | 'deepx' | 导出模型的目标格式,定义与 DeepX NPU 硬件的兼容性。 |
imgsz | int 或 tuple | 640 | 模型输入所需的图像尺寸。DeepX 导出需要方形输入——传入一个整数(例如 640)或一个高度等于宽度的元组。 |
int8 | bool | True | 启用 INT8 量化。这是 DeepX 导出所必需的——如果未指定,将自动设置为 True。 |
data | str | 'coco128.yaml' | 用于 INT8 校准的数据集配置文件。指定校准图像的来源。 |
device | str | None | 指定导出的设备:GPU (device=0) 或 CPU (device=cpu). |
optimize | bool | False | 启用更高的编译器优化,这会减少推理延迟并增加编译时间。 |
务必在 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 Debian Trixie 机器(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.0/dxrt-driver-dkms_2.4.0-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.0-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使用方法
from ultralytics import YOLO
# Load the exported DeepX model
model = YOLO("yolo26n_deepx_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
# Process results
for r in results:
print(f"Detected {len(r.boxes)} objects")
r.show()使用 dxtron 进行可视化
dxtron 是 DeepX 的图形可视化工具,用于检查编译后的 .dxnn 模型。
安装 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 Linux。不支持 ARM64/aarch64 和非 Linux 平台。
基准测试
Ultralytics 团队对 YOLO26 模型进行了基准测试,比较了 PyTorch 和 DeepX 之间的速度和准确性。
| 模型 | 格式 | 状态 | 大小 (MB) | metrics/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) | acc (top1) | acc (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,再按回车),然后重启:
sudo reboot推荐工作流程
- Train 使用 Ultralytics 训练模式
- Export 将模型导出为 DeepX 格式,使用
model.export(format="deepx") - 验证 准确率,使用
yolo val以验证最小量化损失 - Predict 使用
yolo predict进行定性验证 - 部署 将导出的
_deepx_model/目录部署到 DeepX NPU 硬件,使用dx_engine运行时
实际应用
部署在 DeepX NPU 硬件上的 YOLO 模型非常适用于广泛的 边缘 AI 应用:
- 智能监控:用于安全和监控系统的实时 目标检测,具有低功耗且无需依赖云端等优势。
- 工业自动化:工厂环境中的设备端质量控制、缺陷检测和过程监控。
- 机器人技术:自主机器人和无人机上的视觉导航、避障和对象识别。
- 智能农业:使用 计算机视觉在农业中的应用.
- 进行作物健康监测、害虫检测和产量估算。零售分析
:利用实时边缘推理进行客流分析、货架监控和库存跟踪。
总结dx_com在本指南中,你已了解如何将 Ultralytics YOLO 模型导出为 DeepX 格式并部署在 DeepX NPU 硬件上。导出流水线使用 INT8 校准和 .dxnn 编译器来生成硬件优化的 dx_engine 二进制文件,而
运行时负责设备上的推理。Ultralytics YOLO的组合与 DeepX 的 NPU 技术为在嵌入式和边缘设备上运行高级 计算机视觉 工作负载提供了有效的解决方案——为实时应用提供高吞吐量和低功耗。
有关用法的更多详细信息,请访问 DeepX 官方网站.
此外,如果你想了解有关其他 Ultralytics YOLO 集成的更多信息,请访问我们的 集成指南页面。你会在那里找到大量有用的资源和见解。
常见问题 (FAQ)
我该如何将我的 Ultralytics YOLO 模型导出为 DeepX 格式?
你可以使用 Python 中的 export() 方法或通过 CLI 导出你的模型。该导出过程会自动启用 INT8 量化并使用校准数据集,以最小化准确率损失。如果尚未安装,dx_com 编译器包将自动安装。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="deepx")为什么 DeepX 导出需要 INT8 量化?
DeepX NPU 旨在以最高效率执行 INT8 计算。dx_com编译器在导出期间使用基于 EMA 的校准以及真实数据集图像对模型进行量化,使 NPU 能够发挥其全部性能。DeepX 导出始终强制要求使用 INT8 — 如果你传递 int8=False,它将被覆盖并显示警告。
DeepX 导出支持哪些平台?
DeepX 模型导出(编译)需要 x86-64 Linux 主机。ARM64 (aarch64) 和 Windows 机器不支持导出步骤。使用导出的 .dxnn 模型进行推理可以在 dx_engine 运行时支持的任何 Linux 平台(x86-64 和 ARM64)上运行。
DeepX 导出的输出是什么?
导出将创建一个目录(例如 yolo26n_deepx_model/),其中包含:
yolo26n.dxnn— 编译后的 NPU 二进制文件config.json— 校准和预处理设置metadata.yaml— 包含类名和图像尺寸的模型元数据
我可以在 DeepX 硬件上部署自定义训练的模型吗?
可以。任何使用 Ultralytics Train Mode 训练并使用 format="deepx" 导出的模型,只要它使用支持的层操作,就可以在 DeepX NPU 硬件上部署。导出支持检测、分割、姿态估计、旋转边界框 (OBB) 和分类任务。
DeepX 导出应该使用多少张校准图像?
DeepX 导出流水线使用校准数据集中的每张图像(在 fraction 过滤后)进行 EMA 校准。几百张图像通常足以保证良好的量化精度。如果在大数据集上编译时间成为关注点,请将 data 指向一个较小的数据集(或设置 fraction 低于 1.0)。
如何安装 DeepX 运行时以进行推理?
DeepX 运行时不随 ultralytics 捆绑提供,必须在运行推理前单独安装。在 x86-64 Linux 机器和 ARM64 Debian Trixie 机器(Raspberry Pi 5)上,从 DEEPX-AI GitHub 发布页面安装 NPU 驱动程序 (dxrt-driver-dkms) 和运行时 (libdxrt),然后安装捆绑的 dx_engine Python wheel。请参阅上方的 运行时安装 部分获取分步命令。