地平线征程5-Yolo模型部署-pt转bin

一、ONNX 模型转换

1、下载yolov7

GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors

下载yolov7.pt权重文件和yolov7代码。

2、打开model/yolo.pt文件

在文件中搜索 permute,一共有8处,这里是修改模型输出节点维度信息。

其中7处按照以下修改

#x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
x[i] = x[i].permute(0, 2, 3, 1).contiguous()

1处按照以下修改:

# x[i+self.nl] = x[i+self.nl].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
x[i+self.nl] = x[i+self.nl].permute(0, 2, 3, 1).contiguous()

3、打开 export.py文件,将opset_version=12中的12替换为11

torch.onnx.export(model, img, f, verbose=False, opset_version=11, input_names=['images'],
                          output_names=['classes', 'boxes'] if y is None else ['output'])

在命令行进入自己的虚拟环境,进行模型转换

python export.py --weights ./weights/yolov7.pt --batch-size 1

转换后的模型

二、模型量化

将刚才生成的yolov7.onnx文件放入J5开发机的/home/user/horizon_j5_open_explorer_v1.1.68-py38_20231014/ddk/samples/ai_toolchain/horizon_model_convert_sample/04_detection/yolov7/mapper中,yolov7这个文件夹是我根据/home/user/horizon_j5_open_explorer_v1.1.68-py38_20231014/ddk/samples/ai_toolchain/horizon_model_convert_sample/04_detection/03_yolov5x修改的

 yolov7文件夹我放在了网盘:

在docker环境中进入刚才放onnx文件的位置

 

1.模型校验 01_check.sh

2.准备校准数据 02_preprocess.sh

3.模型编译 03_build.sh

这个过程比较慢

经过13分钟,编译完成

4.模型推理校验 04_inference.sh

在model_output文件夹下会生成量化完成的模型文件

运行04_inference.sh使用原onnx或量化后的onnx模型进行推理测试

sh 04_inference.sh origin  #推理原模型

sh 04_inference.sh quanti  #推理量化后的模型
两个模型的推理结果差不多(有小幅度的模型精度丢失属于正常情况),均达到预期,说明模型转化成功,可以将bin模型放到板端进行推理了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值