更改yolov5结构
本系列先前对yolov5中的detect.py和train.py中的代码进行了解析,
后又使用yolov5对图片及视频进行了测试,本节将继续学习yolo的模型结构该如何更改。(以写论文为目的创建创新点)
修改网络结构
首先找一个代码结构进行借鉴,这里选取yolov8代码进行修改测试,源码地址https://github.com/ultralytics/ultralytics,进入后按照下图将文件下载
下载完成后,为了操作方便我将其解压到yolov5-master文件夹中。
修改顺序如下:
- models/commons.py --加入新增的网络结构
- models/yolo.py–设定网络结构的传参
- models/yolov5*.yaml–修改现有模型的配置文件
- train.py–训练时指定模型的配置文件
有了大致流程那让我们开始
第一步:加入新增的网络结构
在pycharm中打开yolov5-master文件夹
粘贴完成后可以发现如下状况,这是因为v5中没有定义k这个变量,所以我们还需要在v8中把下图Bottleneck这个类也复制粘贴一下,去block.py中复制粘贴
同时为了避免和v5原有的类冲突,我们加一个前缀变为C2f_Bottleneck,别忘了把C2f那行也改了
第二步:设定网络结构的传参
打开yolov5中yolo.py
第三步:修改现有模型的配置文件
以yolov5s.yaml为例,复制一份yolov5s.yaml文件,命名为C2f_yolov5s.yaml,将其中的C3全部改为C2f,如图所示
第四步:训练时指定模型的配置文件
打开train.py
最后进行训练,查看数据,对比你更改的网络结构是否效果更佳,这就是更改模型结构的一般步骤
OK 也不知道我写清楚了没有