本文禁止转载
u版的意思是指Ultralytics开源的yolov5实现
https://github.com/ultralytics/yolov5github.com
1. 缘由
pytorch YOLOv5转换 openvino 的实现在github 上搜下有不少,但是直接拿来用或多或少都有些问题,原因在在于u版YOLOv5更新太快了,很多转换代码有些过时了,同时不同版本的onnx对某些算子无法支持,最重要的是没有一个完整全流程的实现,所以我决定自己撸一把,下面废话少说,直接开干
2. pytorch 转换onnx
下载u版的YOLOv5仓库后,使用自己的数据集,修改对应的yaml,然后训练模型,通过调用detect.py观察模型的检测结果,
python detect.py --source 000201.jpg --weights best.pt --conf 0.25
看起来结果正常,下面开始pytorch转onnx
先简单介绍下模型的配置文件yolov5s.yaml
# parameters
nc: 80 # number of classes 训练数据集的类别数,需要修改
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
# anchors
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
depth_multiple和width_multiple 为模型参数,无需修改
在训练模型开始之前会评估anchor与训练数据集的匹配程度,如果不满足要求则进行锚框的自动计算训练过程,所以在infer的时候anchor可能会发生变化
# YOLOv5 backbone
back