yolov5调试全过程
一、源码和预训练模型的链接
1.源码链接这里这里这里这里哦O(∩_∩)O~~~~
2.预训练模型我选择的是yolov5s这里这里哦O(∩_∩)O(感谢分享预训练模型的这位博主)~~~
二、使用的环境(建议使用Conda,CUDA10.0以上版本)
- Win10:CUDA10.1 Linux:CUDA10.2
- Win10:Miniconda3 Linux:Miniconda3
- Win10:RTX 2060 Linux:RTX2080ti
三、项目的依赖
Python 3.7
Torch>=1.7.0
Torchvision>=0.8.1
Numpy>=1.18.5
Opencv-python>=4.1.2
Pycocotools>=2.0
可以直接运行指令 pip install -r requirements.txt
注:Windows系统安装pycocotools的时候可能会报这个错:ModuleNotFoundError: No module named 'pycocotools’
解决办法:git clone https://github.com/pdollar/coco.git下载源码放到无中文的路经下,进入文件夹cocoapi/PythonAPI下
运行指令:python setup.py build_ext --inplace
如果出现cl.exe的错,don’t worry!! 打开cocoapi/PythonAPI文件夹下的setup.py,删除前两个参数如下(画框那两个删了):
重新运行:python setup.py build_ext --inplace
如果上面解决了 紧接着再运行:python setup.py build_ext install
安装完成~
四、数据的搜取与制作
由于DOTA数据过于大,所以要进行切分;如果要用Yolo训练的话,还要把labels转成yolo格式的。整个过程相对于比较麻烦费时间,所以大家可以参考这篇文章来下载数据集和制作数据集。(这位博主已经把数据处理过了哦~~)
https://zhuanlan.zhihu.com/p/172283684
数据集是参照coco的形式做的,如果不是这种形式会报错哦~
labels里面存放的格式:
生成图片路径(train.txt和val.txt)的代码:
# coding: utf-8
import os
def createFilelist(images_path, text_save_path):
# 打开图片列表清单txt文件
file_name = open(text_save_path, "w")
# 查看文件夹下的图片
images_name = os.listdir(images_path)
# 遍历所有文件
for eachname in images_name:
# 按照需要的格式写入目标txt文件
file_name.write(images_path + '/' + eachname + '\n')
print('生成txt成功!')
file_name.close()
if __name__ == "__main__":
# txt文件存放目录
txt_path = r'D:\python_project\yolov5-master\coco\data'
# 图片存放目录
images_path = r'D:\python_project\yolov5-master\coco\data\val\images'
# 生成图片列表文件命名
txt_name = 'val.txt'
if not os.path.exists(txt_name):
os.mkdir(txt_name)
# 生成图片列表文件的保存目录
text_save_path = txt_path + '/' + txt_name
# 生成txt文件
createFilelist(images_path, text_save_path)
五、数据的训练
1.修改data/coco.yaml:
2.修改 models yolov5s.yaml:
3.修改train.py(我画白箭头的地方都需要修改,修改完这里训练指令就不需要很长了~)
注:epochs根据自己的数据集来定!
batch_size和图像尺寸 根据自己的显卡来定!
device 是根据自己的显卡个数来定,如果就1块的话,就写0,以此类推~
这里面我疑惑的是,我Windows系统显卡型号也不低,CUDA也安装成功了,但是batch_size最高就能设置2,训练的时候显卡占用率也很低,据网上说 YOLOV5数据读取和处理的方式是用cpu处理的 才会导致这样。
4.好了,开始输入指令训练了:python train.py
5.我训了60个epoch,map67%(未优化):
六、模型的测试
1.修改detect.py
2.输入指令python detect.py就Ok了
测试结果:
看起来效果还Okey~ yolov5训练出来的模型很小的,所以说测试的速度也很快哦~~
有问题可以私信我,也可以评论区见哦~ 本人还属于小白,希望各路大神多多指点~