教你如何将yolov8训练好的文件部署在RDK上
一、通用第一步:PC 端把.pt 导出 ONNX
因为我的训练文件是.pt文件
先装好 ultralytics,没装先执行:pip install ultralytics onnx onnxsim
这一步你可能会出错,因为你没装cmake,编译安装 onnxsim 需要cmake工具
如果出错就执行pip install cmake然后pip install onnxsim就成功了
再通过你的终端cd到你训练文件所在的文件夹比如我的:
cd C:\Users\123\ultralytics-main\runs\detect\train-3\weights
然后运行一个命令:yolo export model=best.pt format=onnx imgsz=640 simplify=True opset=17 dynamic=False
会自动生成一个onnx文件,然后再次精简 ONNX(必做,解决后续量化报错)
当前目录已经有best.onnx,执行简化:会生成一个best_simplified.onnx
二、准备校准图片,开始量化
从你之前训练用的图片里,随便复制 100~200 张原图,新建文件夹
calib新建
dataset.txt文本,每一行粘贴一张图片的完整路径 示例:示例:C:\train\calib\img1.jpg C:\train\calib\img2.jpg把三样东西放同一个文件夹:
best_simplified.onnx+ calib 图片文件夹 + dataset.txt对于粘贴路径你可以在Windows照片文件夹里上一位文件夹里新建文本,改名
gen_txt.bat写入下面代码:@echo off dir /s /b calib\*.jpg > dataset_win.txt双击运行这个 bat,自动生成dataset_win.txt,里面全部是图片完整 Windows 路径。把 Windows 路径转成 WSL 识别路径
打开 dataset_win.txt,Ctrl+H 全局替换:
查找:
C:\替换为:/mnt/c/查找:
\替换为:/保存为dataset.txt,直接给 Docker 用,几百张图 10 秒搞定安装 Docker,导入地平线 X5 工具镜像,启动容器,把上面存放模型、校准图的本地文件夹映射进容器 sudo docker run -it --rm --gpus all \
-v /本地文件夹路径:/open_explorer/user_data \ openexplorer/ai_toolchain_ubuntu_20_x5_gpu:v1.2.8-py310
在容器内写转换脚本,填入 onnx 路径、图片文件、归一化参数、硬件型号 X5
运行脚本自动完成两件事:
遍历 dataset.txt 里所有图片,输入模型统计每层数值范围(校准)
根据统计数据把浮点模型转为 INT8 整数模型,输出
yolo8.bin作用:适配 RDK X5 芯片,大幅提升运行速度,降低功耗最后将.bin文件拷到RDK上就行
当然如果你不想在WSL或者ubuntu中量化你也可以选择直接在RDK上量化只是因为开发板性能比较弱,WSL/ubuntu用几分钟,开发板用几十分钟吧
