目标检测(8)—— YOLOV5代码调试及参数解析

一、下载及项目介绍

  • 打开github搜索YOLOV5,我这里选择最新版本6.2,大家直接戳链接下载https://github.com/ultralytics/yolov5/tree/v6.2

目标检测(8)—— YOLOV5代码调试及参数解析_第1张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第2张图片

  • 点击右边的release,查看项目介绍
  • 在当前文件中发布的权重文件

目标检测(8)—— YOLOV5代码调试及参数解析_第3张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第4张图片

  • 网络介绍

目标检测(8)—— YOLOV5代码调试及参数解析_第5张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第6张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第7张图片
举例:
目标检测(8)—— YOLOV5代码调试及参数解析_第8张图片

二、环境配置

  • 用pycharm打开,先配置解释器,再启动环境
  • 安装项目需要的库,在终端运行

目标检测(8)—— YOLOV5代码调试及参数解析_第9张图片

  • 安装pycocotools会报错,单独在终端运行
pip install pycocotools-windows

三、detect.py参数解析(测试文件)

环境配置好后,运行一下detect.py文件进行测试,能跑通说明没问题。

目标检测(8)—— YOLOV5代码调试及参数解析_第10张图片

详细看一下main中的配置参数是什么:

目标检测(8)—— YOLOV5代码调试及参数解析_第11张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第12张图片

main函数中,default代表该参数有默认值,action代表可选,只有在运行的时候指定带action的参数,这个参数才生效。

  • weights:default=‘yolov5s.pt’,默认使用这个权重文件

修改成yolov5m.pt测试一下:

在这里插入图片描述
开始下载(m比s大很多)并预测:

目标检测(8)—— YOLOV5代码调试及参数解析_第13张图片
m的效果比s好。

模型的选择如下:

目标检测(8)—— YOLOV5代码调试及参数解析_第14张图片
手动下载:下载l(l比m和s都要大),复制控制台的下载路径放到迅雷里下载,下载完后复制到根目录里,运行就会显示下载完成

目标检测(8)—— YOLOV5代码调试及参数解析_第15张图片

  • source:指定要检测文件(图片/视频)的路径,给网络指定一个输入,当指定是文件夹的时候,就把文件夹下面的所有文件进行检测,并把结果保存起来。
  • 可以只检测一张图片,写成相对路径的格式

在这里插入图片描述

  • 检测视频

在这里插入图片描述
结果:

  • 摄像头实时监测:手机上下载ip摄像头,路径改为http://admin:密码@手机上打开之后显示的ip地址,手机要和电脑在一个wifi下。

  • imgsz:送入训练网络图片的大小

在这里插入图片描述
图片size最好是匹配的,随便改也没有关系。

5l、5m…这些使用在图片size为640的img中,5l6…这些使用在size为1280的img中。虽然指定了“输入神经网络的图片”尺寸,但是经过神经网络输出后的图片尺寸大小恢复至原来的大小。(矩形框和图片等比例的放大)

  • conf-thres:置信度,default=0.25,当置信度>0.25的时候,才相信这是一个目标,矩形框才显示

默认值改成0(表示有一丁点概率,就将矩形框显示出来)


参数根据实际情况调整就可以。

  • iou-thres:非极大值抑制

在这里插入图片描述

比如说在下图(左边),三个矩形框都代表的是一张人脸,需要在三个框中选出一个最优的框。
给定一个阈值,当iou大于这个阈值(理解为两个框相交到一定的程度),就保留效果最好的框,小于这个框的时候,就对这些框不做处理。

目标检测(8)—— YOLOV5代码调试及参数解析_第16张图片
iou的计算公式:

目标检测(8)—— YOLOV5代码调试及参数解析_第17张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第18张图片

将参数设置成1看一下,代表框完全相同的时候,才选择合适的框。

  • device:GPU或者CPU,会自行检测

在这里插入图片描述

  • view-img:是否显示结果

在这里插入图片描述

action代表在执行的时候指定这个参数,参数才会生效

在命令行里执行:不指定参数

目标检测(8)—— YOLOV5代码调试及参数解析_第19张图片

在命令行里执行:指定参数,会快速的将结果显示,然后关闭

目标检测(8)—— YOLOV5代码调试及参数解析_第20张图片

一般情况下在这里设置参数,设置好后,直接run(这种情况下,要把电脑开成性能模式,省电模式下出不来)

目标检测(8)—— YOLOV5代码调试及参数解析_第21张图片
可以用这个参数进行视频的实时监测

  • save-txt:是否将结果保存成txt,类别,x,y,height,width

目标检测(8)—— YOLOV5代码调试及参数解析_第22张图片

  • classes:可以给classes指定多个赋值,可以给class只赋值0这个类别,也可以把0,2,3都赋给这个类别。

对目标进行过滤,选定class=0这个类别的话,就只保留0类别的东西,其余类别的都不要了。

在这里插入图片描述
指定参数运行:
在这里插入图片描述
只保留了类别为0的目标:

  • agnostic-nms:增强,对结果提升的方式

在这里插入图片描述

  • augment:同上,增强的话效果会更好

在这里插入图片描述

  • update:只保留预测时使用的优化器,不用管

在这里插入图片描述

  • project:结果的保存位置

在这里插入图片描述

  • name:保存结果的文件名

在这里插入图片描述

  • exist-ok:不设置的话,新的一次预测,在原来的文件夹后新建一个文件夹,设置后,新的预测在原来的文件夹上覆盖

在这里插入图片描述
打断点debug一下,就可以看到参数的状态:

目标检测(8)—— YOLOV5代码调试及参数解析_第23张图片

四、train.py参数解析(训练文件)

在运行之前,注意修改两个参数:

  • 把线程数改为0
  • 把batch_size改小

否则显卡会爆

在这里插入图片描述
在这里插入图片描述
点击运行,开始下载数据集(COCO数据集前128张)并进行训练:

目标检测(8)—— YOLOV5代码调试及参数解析_第24张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第25张图片

训练保存的结果:(暂停了,没有训练完)

目标检测(8)—— YOLOV5代码调试及参数解析_第26张图片

总体参数概览:

目标检测(8)—— YOLOV5代码调试及参数解析_第27张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第28张图片

  • weights:指定一个训练好的模型的路径,用这个模型初始化要训练网络的参数(迁移学习)

可以改成yolov5m.pt、s、l、x、n等等,也可以用自己训练好的模型,写路径即可。
从头开始训练的话,为空。

在这里插入图片描述

  • cfg:模型的一些配置

在这里插入图片描述
模型参数的配置在models里:.yaml文件,下面5种是可以填的参数

目标检测(8)—— YOLOV5代码调试及参数解析_第29张图片
.yaml配置文件中:
目标检测(8)—— YOLOV5代码调试及参数解析_第30张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第31张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第32张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第33张图片
写成这样代表不进行参数的初始化,网络架构训练成yolov5s这样的

在这里插入图片描述

  • data:指定的训练数据集

在这里插入图片描述
打开coco128.yaml

目标检测(8)—— YOLOV5代码调试及参数解析_第34张图片
在这里插入图片描述
还可以使用如下的数据集进行训练:(可以填的参数)

目标检测(8)—— YOLOV5代码调试及参数解析_第35张图片

  • hyp:超参数

在这里插入图片描述
目标检测(8)—— YOLOV5代码调试及参数解析_第36张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第37张图片
目标检测(8)—— YOLOV5代码调试及参数解析_第38张图片

  • epochs:训练的轮数

在这里插入图片描述

  • batch_size:一次送入神经网络多少张图片

在这里插入图片描述

  • imgsz:设置送入神经网络的大小,送入神经网络后resize成640,(最后会还原成原始图片的大小)

在这里插入图片描述

  • rect:矩形的训练方式

在这里插入图片描述
不用把图片强制变成正方形,可以只加一点点的边框,节省了空间,加快了模型的训练过程

目标检测(8)—— YOLOV5代码调试及参数解析_第39张图片

  • resume:是否从当前已经训练的模型中,继续训练

把False改成想继续训练模型的所在地方(路径),是训练模型的pt

在这里插入图片描述
指定后,就在指定的pt上继续训练
目标检测(8)—— YOLOV5代码调试及参数解析_第40张图片
在这里插入图片描述

  • nosave:指定的话只保存最后一个epoch的模型、权重数据等

在这里插入图片描述

  • noval:指定的话只在最后一个epoch上进行测试,一般在每个epoch上都要进行测试

在这里插入图片描述

  • noautoanchor:是否采用锚点(锚框)进行训练。指定了就取消了,但是我们需要,就不管了

在这里插入图片描述
之前采用滑动窗口等,现在都采用锚框

  • evolve:对参数进行净化,超参数调优的一种方式

在这里插入图片描述

  • cache:对图片进行缓存

在这里插入图片描述

  • image-weights:在测试中,那一张图片的效果不太好,就在下一次训练过程中加一些权重

在这里插入图片描述

  • multi-scale:对图片的尺寸进行变换

在这里插入图片描述

  • single-cls:是单类别还是多类别,默认情况下是false,是多类别的

在这里插入图片描述

  • optimizer:优化器的选择,默认是SGD

在这里插入图片描述

  • 带有DDP的参数可以不用看,是多GPU使用的参数,采用分布式训练

在这里插入图片描述

  • project:项目训练保存在哪里

在这里插入图片描述

  • name:文件名字

在这里插入图片描述

  • exist-ok:不设置的话文件exp增加,设置的话在当前的exp直接覆盖

在这里插入图片描述

  • quad:数据加载

在这里插入图片描述

  • linear-lr:学习率的调整方式,余弦退火

在这里插入图片描述

  • label-smoothing:标签平滑,防止过拟合现象的产生

在这里插入图片描述

  • save_period:对模型打一些日志

在这里插入图片描述

你可能感兴趣的:(目标检测,目标检测,python,深度学习)