本文档记录 DamoYOLO TinyNAS 人头检测模型在昇腾 NPU (Ascend 910B3) 上的迁移适配与精度验证结果。
DamoYOLO 是达摩院提出的高效目标检测框架,本模型使用 TinyNAS 搜索出的轻量化骨干网络配合 GiraffeNeckV2 颈部结构和 ZeroHead 检测头,专用于人头检测任务。
相关获取地址:
参考文档:
| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
modelscope | 1.37.0 |
timm | latest |
opencv-python-headless | 4.13.0 |
Ascend 910B3,单卡推理[1, 3, 640, 640] RGB 图像pip install torch==2.8.0 torch_npu==2.8.0.post4 \
-i https://mirrors.huaweicloud.com/repository/pypi/simple \
--trusted-host mirrors.huaweicloud.com
pip install modelscope==1.37.0 opencv-python-headless numpy \
timm thop easydict matplotlib \
-i https://mirrors.huaweicloud.com/repository/pypi/simple \
--trusted-host mirrors.huaweicloud.commodelscope download --model damo/cv_tinynas_head-detection_damoyolo \
--local_dir ./cv_tinynas_head-detection_damoyolopython inference.py --image scene.jpg --device npufrom inference import run_inference
result = run_inference("scene.jpg", device="npu")
print(f"检测到 {len(result['boxes'])} 个人头, 耗时 {result['time_ms']:.1f}ms")python evaluate.py验证结果:
[1, 128, 80, 80],正常测试条件:input [1, 3, 640, 640],30 轮取平均。
| 指标 | CPU | NPU (Ascend 910B3) |
|---|---|---|
| 平均耗时 (完整模型) | 10961.4 ms | 26.3 ms |
| 中位耗时 (完整模型) | 11085.5 ms | 25.8 ms |
| 加速比 | — | 416.1x |
对比 CPU 与 NPU 在相同随机输入下骨干网络 (TinyNAS backbone) 的输出特征图,统计 |value| > 0.01 的鲁棒平均相对误差。
| 指标 | 数值 |
|---|---|
| 特征图形状 | [1, 128, 80, 80] |
| 鲁棒平均相对误差 | 0.2050% |
| 精度要求 | 平均相对误差 < 1% |
| 精度评测 | 通过 |
timm、thop、easydict 等额外依赖,首次加载需 trust_remote_code=Truesafety-helmet)、人体检测 (human-detection)、无人机检测 (uav-detection) 三个同架构模型,适配方式完全一致DetectionOutput 包含 boxes 和 scores