利用yolov实现目标检测 您所在的位置:网站首页 狗和猫图片 利用yolov实现目标检测

利用yolov实现目标检测

2023-08-15 17:43| 来源: 网络整理| 查看: 265

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

目录

一、yolov5项目的克隆

二、yolov5项目代码的介绍

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

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

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

六、修改配置参数

七、训练自己的模型

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

 九、通过tensorbord产看参数

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

!!后续来了!

一、yolov5项目的克隆

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

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

二、yolov5项目代码的介绍

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提供的预训练权重进行下载,如图所示:

 五、将数据集和预训练权重放到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行进行修改

 九、通过tensorbord产看参数

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

tensorboard --logdir=runs/train

(2)打开这串网址

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

tensorboard --logdir=runs 十、利用训练好的yolov5模型做推理

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

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

 

接下来进行推理

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

(2)粘贴到weights文件夹下

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

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

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

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

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

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

!!后续来了!

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

阿!找到截图了

然后测试了一下

!!!!从0.07——>0.71

 

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有