利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型

作者有话说:我是个小白,这个是我的学习记录,以便以后回过头来看的时候能看懂;-),希望也可以帮助到大家别杠杠就是你对哈哈哈哈哈哈

目录

一、yolov5项目的克隆

二、yolov5项目代码的介绍

三、环境的安装和依赖的安装

四、数据集和预训练权重的准备

 五、将数据集和预训练权重放到yolov5工程中去

六、修改配置参数

七、训练自己的模型

 八、运行的时候出现的错误

 九、通过tensorbord产看参数

十、利用训练好的yolov5模型做推理

!!后续来了!


一、yolov5项目的克隆

打开yolov5的github官网,界面如下:

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第1张图片

按右上角的code,将代码下载下来

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第2张图片

二、yolov5项目代码的介绍

1.首先将下载好的代码解压,使用pycharm打开

 2.进到pycharm页面后,点击右下角进行环境的选择(前面已经搭建好了)

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第3张图片

 3.选择show all

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第4张图片

 4.选择之前搭建好的环境

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第5张图片

 5.yolov5项目的结构

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第6张图片

(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的,因为我之前安装的时候报了错,所以这里我把它删掉。

 终端如图所示

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第7张图片

 将代码复制运行,它就会开始安装包。

四、数据集和预训练权重的准备

1.这里训练自己的数据集,

2.获得预训练权重

        为了缩短我们训练时间,我们可以加载一些预训练权重来进行训练,yolov5提供了几个预训练权重,可以根据不同的需求选择不同的版本区进行训练。本章选择训练自己的数据集,可以用预训练权重yolov5s.pt。

        打开yolov5提供的预训练权重进行下载,如图所示:

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第8张图片

 五、将数据集和预训练权重放到yolov5工程中去

1.首先将训练好的数据(VOCdevkit)先放进去,如图所示

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第9张图片

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第10张图片

 2.将刚下载好的预训练权重yolov5s.pt放到weights文件夹下,如图所示

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第11张图片

 3.训练集和训练权重都有了

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第12张图片

六、修改配置参数

改相应的配置参数,就可以训练了~

1.修改数据配置参数文件

(1)找到下图的文件,复制

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第13张图片

(2)粘贴到data文件夹下,修改名称

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第14张图片

 (3)在dog.yaml文件里进行修改

这里需要注释掉下图框出的代码

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第15张图片

 (4)修改训练集和验证集的路径

        复制训练集和验证集的路径

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第16张图片

        粘贴到代码,如图所示

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第17张图片

 (5)修改类的数量,我这里是dog和cat两类,所以填2

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第18张图片

(6)修改类的名称,我这里是cat和dog

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第19张图片

 这个文件就改好啦

2.修改model配置文件

(1)复制下图文件

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第20张图片

 (2)粘贴到models文件夹下

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第21张图片

 (3)在dog.yaml文件里修改

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第22张图片

 修改这里,改为2(因为我这里是两个类),就改完了~

七、训练自己的模型

(1)找到训练的这个文件

 (2)在train.py文件里修改

主要修改如下几个参数

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第23张图片

 第一个是权重的路径,复制权重路径,粘贴

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第24张图片

第二个是模型的yaml文件,复制路径,粘贴

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第25张图片

第三个是数据的yaml文件,复制路径,粘贴

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第26张图片

 修改好啦~

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第27张图片

 还可以修改训练的轮数

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第28张图片

 还可修改每次输入的图片张数

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第29张图片

 改完后,就可以运行这个.py文件啦~它就开始训练了~

 八、运行的时候出现的错误

1.错误一

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第30张图片

我在网上找到,说是要去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文件

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第31张图片

 (2)把上面那段代码复制粘贴

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第32张图片

(3)最后重新回到train.py文件运行就行啦~

2.错误二:

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第33张图片

 (1)打开这个文件

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第34张图片

 (2)81行进行修改

 九、通过tensorbord产看参数

(1)打开pycharm的控制端,复制下面这串代码,就可以看到训练的过程。(因为yolov5里有写好的tensorbord函数,可以直接调用)

tensorboard --logdir=runs/train

(2)打开这串网址

(3)训练好了还可以复制这串代码来查看这个模型的训练过程

tensorboard --logdir=runs

十、利用训练好的yolov5模型做推理

上面训练好之后,会出现一个runs文件夹,里面有权重的文件夹,best是最好的权重,last是最后一次训练的权重。

它会自动做验证,参数之类的

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第35张图片

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第36张图片

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第37张图片

 利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第38张图片

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第39张图片

接下来进行推理

(1)复制训练好的best权重

(2)粘贴到weights文件夹下

(3)打开detect.py做推理的这个文件

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第40张图片

(4)将best权重的路径复制粘贴到下图中

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第41张图片

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第42张图片

 (5)复制一张图片的路径到上图第二个框中

(6)加上这串展现推理结果

 (6)运行后的结果保存在这里

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第43张图片

(7)这里会出现一个问题就是运行结果没有框出值,这里降低置信度:将detect.py中的置信度值和IOU值都降低,再运行,就会有结果啦,但是可信度太低了!!!

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第44张图片

!!后续来了!

某天,用了舍友的电脑跑了12轮..没记错的话,那个精确度就上来了些许~

阿!找到截图了利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第45张图片

然后测试了一下

!!!!从0.07——>0.71

 

利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第46张图片利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第47张图片利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型_第48张图片

 

 

 

 

你可能感兴趣的:(目标检测,pycharm,python)