【无标题】

主要为了tensorrt的部署加速

课程来自linkhttps://ke.qq.com/course/4993141?quicklink=1#term_id=105165326
这里使用的是[yolov5-6.0 地址linkhttps://github.com/ultralytics/yolov5/tree/v6.0
yolov5的训练就不细讲了,这里假设你已经训练好了自己的模型

1.修改export.py

只将batch的维度设为动态,其他维度固定,
在第73行修改为

torch.onnx.export(model, im, f, verbose=False, opset_version=opset,
                          training=torch.onnx.TrainingMode.TRAINING if train else torch.onnx.TrainingMode.EVAL,
                          do_constant_folding=not train,
                          input_names=['images'],
                          output_names=['output'],
                          dynamic_axes={'images': {0: 'batch'},  # shape(1,3,640,640)
                                        'output': {0: 'batch'}  # shape(1,25200,85)
                                        } if dynamic else None)

原模型

修改后模型

2.修改model文件下yolo.py

36行找到Detect类,没有 control f 搜索detect ,
将56行中

bs, _, ny, nx = x[i].shape

修改为

bs, _, ny, nx = map(int,x[i].shape)

修改72行 ,原因和第一条一致只降batch维度设为动态

z.append(y.view(bs, self.na*ny*nx, self.no))

修改74行 ruturn 主要是原来yolo模型输出为4 ,但是只需要一个输出

return x if self.training else torch.cat(z, 1)

最后修改63行 ,原因是作者原来的 anchor_grid 会生成一堆节点

anchor_grid = (self.anchors[i].clone() * self.stride[i]).view(1,-1,1,1,2)

最后导出命令为
python export.py --weights=./runs/train/exp2/weights/last.pt --dynamic --include=onnx --opset=11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值