作者有话说:我是个小白,这个是我的学习记录,以便以后回过头来看的时候能看懂;-),希望也可以帮助到大家别杠杠就是你对哈哈哈哈哈哈
目录
一、yolov5项目的克隆
二、yolov5项目代码的介绍
三、环境的安装和依赖的安装
四、数据集和预训练权重的准备
五、将数据集和预训练权重放到yolov5工程中去
六、修改配置参数
七、训练自己的模型
八、运行的时候出现的错误
九、通过tensorbord产看参数
十、利用训练好的yolov5模型做推理
!!后续来了!
打开yolov5的github官网,界面如下:
按右上角的code,将代码下载下来
1.首先将下载好的代码解压,使用pycharm打开
2.进到pycharm页面后,点击右下角进行环境的选择(前面已经搭建好了)
3.选择show all
4.选择之前搭建好的环境
5.yolov5项目的结构
(1)data文件夹里放着yaml的参数配置文件
(2)models文件夹里放着
(3)weights文件夹里放着训练好的权重参数
(4)train.py文件是进行训练自己的数据集的函数
(5)detect.py文件是利用训练好的权重参数进行目标检测
(6)test.py文件是用来测试训练的结果的函数
(7)requirement.txt文件
环境的安装是之前文章里已经安装好的,现在进行一些依赖的安装
1.打开requirement.txt这个文件,里面包含很多依赖库和对应版本,打开pycharm的终端,复制下面这串代码,运行安装。
pip install -r requirements.txt
这里需要注意的是需要将这个文件里最下面那串代码删掉,具体原因我还没找到,好像是pycocotools没有提供windows的,因为我之前安装的时候报了错,所以这里我把它删掉。
终端如图所示
将代码复制运行,它就会开始安装包。
1.这里训练自己的数据集,
2.获得预训练权重
为了缩短我们训练时间,我们可以加载一些预训练权重来进行训练,yolov5提供了几个预训练权重,可以根据不同的需求选择不同的版本区进行训练。本章选择训练自己的数据集,可以用预训练权重yolov5s.pt。
打开yolov5提供的预训练权重进行下载,如图所示:
1.首先将训练好的数据(VOCdevkit)先放进去,如图所示
2.将刚下载好的预训练权重yolov5s.pt放到weights文件夹下,如图所示
3.训练集和训练权重都有了
改相应的配置参数,就可以训练了~
1.修改数据配置参数文件
(1)找到下图的文件,复制
(2)粘贴到data文件夹下,修改名称
(3)在dog.yaml文件里进行修改
这里需要注释掉下图框出的代码
(4)修改训练集和验证集的路径
复制训练集和验证集的路径
粘贴到代码,如图所示
(5)修改类的数量,我这里是dog和cat两类,所以填2
(6)修改类的名称,我这里是cat和dog
这个文件就改好啦
2.修改model配置文件
(1)复制下图文件
(2)粘贴到models文件夹下
(3)在dog.yaml文件里修改
修改这里,改为2(因为我这里是两个类),就改完了~
(1)找到训练的这个文件
(2)在train.py文件里修改
主要修改如下几个参数
第一个是权重的路径,复制权重路径,粘贴
第二个是模型的yaml文件,复制路径,粘贴
第三个是数据的yaml文件,复制路径,粘贴
修改好啦~
还可以修改训练的轮数
还可修改每次输入的图片张数
改完后,就可以运行这个.py文件啦~它就开始训练了~
1.错误一
我在网上找到,说是要去Tags6里面的model/common.py里面去找到这个SPPF的类,把它拷过来到你这个Tags5的model/common.py里面,这样你的代码就也有这个类了,还要引入一个warnings包就行了!
这段代码如下:
import warnings
class SPPF(nn.Module):
# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13))
super().__init__()
c_ = c1 // 2 # hidden channels
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c_ * 4, c2, 1, 1)
self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
def forward(self, x):
x = self.cv1(x)
with warnings.catch_warnings():
warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning
y1 = self.m(x)
y2 = self.m(y1)
return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))
复制到你们的common.py里面即可,记得把import warnings放在上面去!!
操作如图所示:
(1)打开common.py文件
(2)把上面那段代码复制粘贴
(3)最后重新回到train.py文件运行就行啦~
2.错误二:
(1)打开这个文件
(2)81行进行修改
(1)打开pycharm的控制端,复制下面这串代码,就可以看到训练的过程。(因为yolov5里有写好的tensorbord函数,可以直接调用)
tensorboard --logdir=runs/train
(2)打开这串网址
(3)训练好了还可以复制这串代码来查看这个模型的训练过程
tensorboard --logdir=runs
上面训练好之后,会出现一个runs文件夹,里面有权重的文件夹,best是最好的权重,last是最后一次训练的权重。
它会自动做验证,参数之类的
接下来进行推理
(1)复制训练好的best权重
(2)粘贴到weights文件夹下
(3)打开detect.py做推理的这个文件
(4)将best权重的路径复制粘贴到下图中
(5)复制一张图片的路径到上图第二个框中
(6)加上这串展现推理结果
(6)运行后的结果保存在这里
(7)这里会出现一个问题就是运行结果没有框出值,这里降低置信度:将detect.py中的置信度值和IOU值都降低,再运行,就会有结果啦,但是可信度太低了!!!
某天,用了舍友的电脑跑了12轮..没记错的话,那个精确度就上来了些许~
然后测试了一下
!!!!从0.07——>0.71