【技术分享】使用TROS 高效推理 Model Zoo 模型教程

在 TROS 的 Hobot DNN 推理示例中,官方手册通常会提供默认的配置文件。如果您使用的是移除了反量化节点的模型(即当前 Model Zoo 版本交付的标准模型),不能仅替换 .bin 模型文件,必须同步调整相关配置项。

:warning: 前置要求:

hobot_dnn 版本必须 >= 2.6.1。若无法通过包管理工具更新至最新版,请拉取源码进行编译:

:link: GitHub - D-Robotics/hobot_dnn · GitHub


一、 核心规范:切勿直接修改默认配置

:red_exclamation_mark: 强烈建议不要直接修改手册中的默认 config 文件。

原配置可能在运行时被覆盖,或者系统会默认回退加载原配置,导致您的修改“看似生效,实则无效”。

:white_check_mark: 正确做法:新建或复制配置文件

可以参考 hobot_dnn/dnn_node_example/config/x5/yolo26workconfig.json at develop · D-Robotics/hobot_dnn · GitHub

先将原配置文件复制一份,然后在新文件中进行修改,并在启动程序时指定这个新文件。

cp config/original.json config/my_yolo26.json


二、 必须修改的配置项清单

在您新建的配置文件中,请确保以下参数已正确同步:

1. 替换模型路径 (model_file)

将其指向您当前实际使用的 .bin 模型文件路径。

"model_file": "config/yolo26l_detect_bayese_640x640_nv12.bin"

2. 更改解析器 (dnn_parser)

手册的默认配置通常针对包含反量化节点的模型。对于无反量化模型,必须手动指定解析器为 ultralytics_yolo

"dnn_parser": "ultralytics_yolo"

3. 调整回归最大值 (reg_max)

根据您使用的模型类型,严格区分 reg_max 的值:

模型类型 reg_max 取值
YOLO26 模型 1
其他 YOLO 模型 16

4. 适配自定义模型标签(如有需要)

如果您使用的是自己训练的模型,切记同步修改类别数量和标签列表文件:

  • "class_num": 修改为您的实际类别数(例如:80)
  • "cls_names_list": 指向您自定义的标签名称文件(例如:“config/coco.list”)

三、 完整配置示例

以下是 config/my_yolo26.json 的完整参考内容(以 YOLO26 为例):

{
  "model_file": "config/yolo26l_detect_bayese_640x640_nv12.bin",
  "task_num": 4,
  "dnn_parser": "ultralytics_yolo",
  "model_output_count": 6,
  "reg_max": 1,
  "class_num": 80,
  "cls_names_list": "config/coco.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "output_order": [0, 1, 2, 3, 4, 5]
}

(注:如果使用的是非 YOLO26 的其他模型,仅需将上述 JSON 中的 "reg_max": 1 改为 "reg_max": 16,其余保持一致即可。)

1 个赞

使用 RDK Model Zoo做模型验证(python3 Ultralytics_YOLO_Detect_YUV420SP.py --model-path quant.bin --test-img /root/frame_000082.jpg --classes-num 1 --score-thres 0.7)没有问题。但是使用文章中提供的.json文件就会报错(ros2 launch dnn_node_example dnn_node_example.launch.py dnn_example_config_file:=“/root/yolo26.json”)

先确认Tros Hobot Dnn 版本是否为 tros_2.6.1
dnn_example_config_file:=config/yolo26workconfig.json hobot dnn自带案例,推理的模型即为model zoo中提供的yolo26模型

查了一下发现确实是版本的问题,我的版本是2.4.1。请问应该怎么升级呢

这样的话暂时可以先拉 源码编译使用 https://github.com/D-Robotics/hobot_dnn 或者去使用-beta的源:

https://developer.d-robotics.cc/rdk_doc/Robot_development/boxs/spatial/hobot_stereonet#42-系统和功能包版本

版本都是最新的了,但是还是报错,这是为什么啊

Tros Hobot Dnn 版本无法更新到2.6.1,即便是最新版本的镜像。

使用-beta的源也是一样的报错

ultralytics_yolo 为 2.6.1 新加入parser,可以从原始仓库的commit 和 release找到相关内容,整体的TROS还处于测试源中, 若无法直接更新,可以自行拉源码编译来使用