最近yolov9的发布可以说再次点燃cv界关于目标检测的热情,作为object detection的新SOTA,友友我赶紧训练自己的数据集并导出onnx文件,onnx文件在export.py下运行获得。在运行代码的过程中碰到了一些问题,在这里友友我带大家一步一步修改并导出自己的模型。
1.程序运行位置
首先要在GitHub上下载文件,链接:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
下载好后打开文件,训练好自己的模型,保存的pt文件位置在runs/train/exp6/weights下
要导出模型onnx文件,在yolov9\export.py的路径可以找到
2.需修改的参数
第567行是相关参数配置,如图
这里要将569行data.yaml文件改成自己的yaml路径,570行修改成自己的pt文件路径
593行default=[' ']输入onnx
这样基本配置就完成了。
3.运行时可能出现的问题
1.将export.py文件的第497行换成 if isinstance(m, Detect):
2.将507行
shape = tuple((y[0] if isinstance(y, tuple) else y).shape) # model output shape
改为
shape = tuple(y[0].shape) if isinstance(y, (tuple, list)) and y and isinstance(y[0], torch.Tensor) else tuple( y.shape) if isinstance(y, torch.Tensor) else None # model output shape
3.配置onnx
在终端输入pip install onnx(若下载慢,则加上清华源i https://pypi.tuna.tsinghua.edu.cn/simple)
以上问题解决后,运行应该没什么问题,最终结果如下
生成文件
4.查看模型结构
在Netron网站导入自己的模型文件,即可查看结构(pt模型同样ok)
结语:以上就是友友给大家带来的导出yolov9的onnx文件教程,如果还有遇到的问题欢迎来评论区留言。