RDKx5导出yolo模型

type
status
date
slug
summary
tags
category
icon
password

1、一些概念

OE开发包
Docker镜像
rdk_model_zoo
yolo11代码库

2、Docker安装环境

以windows电脑举例,win11安装wsl(Ubuntu22.04),在其中安装docker,配置好nvidia-docker驱动
前期docker安装可参考
下载OE包并解压,然后下载Docker包,然后安装到docker环境中
接下来执行
启动docker,进入到rdkx5

3、相关介绍

OE包:结合docker使用,用于处理训练好的模型导出为rdkx5可以使用的bin文件
rdk_model_zoo:提供训练demo,以及模型转换步骤
yolo11代码库:使用原版代码训练模型

4、数据采集

关于小车如何采集数据,思路为采集视频,然后截取图片
提供一个标注软件,开箱即用
截图命令,及分割为图片
打开X-AnyLabeling进行标注,推荐使用segment anything 2.1 base模型
标出完成之后用yolo格式导出即可

5、训练

相关python代码
zoo来改变模型
模型导出
注: 此操作在x86机器进行, 推荐使用Ubuntu 22.04, Python 3.10的环境.
进入本地仓库, 下载ultralytics官方的预训练权重, 这里以YOLO11n-Detect模型为例.
在Ultralytics YOLO的训练环境中, 运行RDK Model Zoo 提供的一键YOLO导出脚本对模型进行导出.
这个脚本会使用ultralytics.YOLO类对YOLO的pt模型进行加载, 使用猴子补丁(Monkey Patch)的方法对模型在PyTorch层面进行替换, 进行并调用ultralytics.YOLO.export方法对模型进行导出. 导出的ONNX模型会保存在pt模型同级目录下.
 

6、板卡量化

还是参考zoo文档中的内容,下载mapper.py代码,拷贝到oe包中
注意:之后的操作要在docker中进行操作
创建一个data文件夹,放入50张之前收集的数据集
PTQ方案量化转化
参考天工开物工具链手册和OE包,对模型进行检查,所有算子均在BPU上,进行编译即可。
创建yaml文件,参考:
模型编译:
移除bbox信息3个输出头的反量化节点
查看bbox信息的3个输出头的反量化节点名称 通过hb_mapper makerbin时的日志(就是上一步输出)
看到大小为[1, 80, 80, 64], [1, 40, 40, 64], [1, 20, 20, 64]的三个输出的名称为475, 497, 519.
进入编译产物的目录
查看可以被移除的反量化节点
在生成的hb_model_modifier.log文件中,找到以下信息。主要是找到大小为[1, 80, 80, 64], [1, 40, 40, 64], [1, 20, 20, 64]的三个输出头的名称。当然,也可以通过netron等工具查看onnx模型,获得输出头的名称。 此处的名称为:
使用以下命令移除上述三个反量化节点,注意,导出时这些名称可能不同,请仔细确认。
移除成功会显示以下日志
接下来得到的bin模型名称为yolo11n_detect_bayese_640x640_nv12_modified.bin, 这个是最终的模型。
Loading...
     
     
     
       
         

           © ursusx 2021-2025