yolov5-1

Yolo v5 (v6.1)解析(一)

本文对YOLOv5模型的detect.py文件的参数进行了详细阐述,笔者以后会定期讲解关于模型的其他的模块与相关技术,笔者也建立了一个关于目标检测的交流群:781334731,大家也可扫描最下面图片加入qq群,欢迎大家踊跃加入,一起学习鸭

1.项目地址

源码地址:https://github.com/ultralytics/yolov5

打开网址后,点击master可选取不同版本的分支,本文对Yolov5最新版本v6.1解析
yolov5-1_第1张图片

2.环境搭建

在配置Conda环境后就可以进入项目了,可以通过作者提供的requirements.txt文件进行快速安装

即在终端中键入如下指令:pip install -r requirements.txt
yolov5-1_第2张图片

3.代码运行

yolov5-1_第3张图片
如上是官方给出的代码运行方式,我们可利用Yolov5模型预测图像、视频、摄像头、网站视频、RTSP流文件等,模型会自动下载权重文件(yolov5s.pt、yolov5m.pt、yolov5l.pt等),预测后的结果会自动保存到runs/detect/exp目录下,下次运行结果会保存在runs/detect/exp1目录下,依次类推;下图给出yolov5模型的权重和尺寸,更具体信息请参考:https://github.com/ultralytics/yolov5/releases
yolov5-1_第4张图片

4.模型推理

首先我们可以利用PyTorch Hub工具加载Yolov5模型(如果没下载,会自动下载模型权重到根目录下),之后加载需要检测的图片,最后利用封装好的模型推理检测结果,下图给出具体的实现步骤。
yolov5-1_第5张图片

5. detect.py文件解读

5.1 检测结果

我们可以直接运行detect.py文件试试效果,运行后系统会把检测结果保存在runs\detect\exp3路径下(之前自己跑过)
yolov5-1_第6张图片
下图就是检测结果:
yolov5-1_第7张图片

5.2 参数详解

打开detect.py文件,定位到213行:
yolov5-1_第8张图片

5.2.1 weights

yolov5-1_第9张图片
这个就是指定网络权重的路径,默认是“yolov5s.pt”(default是默认的参数,即使我们在运行时不指定具体参数,那么系统也会执行默认的值);官方提供了很多的版本,需要更换时直接按照替换成对应Model的名字就可以了(当然使用自己训练的模型也是可以的),他会自动的下载对应的权重(如果下载太慢或者失败只能去官网下载了,下载好了直接放到根目录下就可以);下图给出对应模型及其实验结果
yolov5-1_第10张图片

5.2.2 source

这个参数是指定网络输入的路径,默认指定的是文件夹,也可以指定具体的文件或者扩展名等,具体参数可参考上节模型推理
在这里插入图片描述

5.2.3 data

这个就是配置文件的一个路径,配置文件里面包含了下载路径和一些数据集基本信息(在训练时如果不自己指定数据集,系统会自己下载coco128数据集)
在这里插入图片描述
yolov5-1_第11张图片

5.2.4 imgsz, img, img-size

在这里插入图片描述
这个参数是模型在检测图片前会把图片resize成640的尺寸,然后再送进网络中(并不是说会把们最终得到的结果resize成640)

5.2.5 conf-thres

在这里插入图片描述
这个参数是置信度的阈值,置信度通俗来说就是网络对检测目标相信的程度,通常如果设置太小会产生较多的检测框,如果设置过高则可能会过滤掉正确的预测框(因此需要实际根据自己的数据集设置相当的值)

5.2.6 iou-thres

在这里插入图片描述
这个参数是调节IoU的阈值,在NMS(非极大值抑制)后处理用到,NMS具体步骤如下

  • 对 BBox 按置信度排序,选取置信度最高的 BBox(所以一开始置信度最高的 BBox 一定会被留下来)
  • 对剩下的 BBox 和已经选取的 BBox 计算 IOU,抑制IOU 大于设定阈值的 BBox
  • 重复上述两个步骤,直到所有的 BBox 都被处理完,这时候每一轮选取的 BBox 就是最后结果
  • 具体操作可参考下图
在这里插入图片描述
NMS操作流程

5.2.7 max-det

在这里插入图片描述
这个参数是最大检测目标数量,默认是最多检测1000个目标(按照检测置信分排序给出)

5.2.8 device

在这里插入图片描述
这个参数是指定GPU数量,如果不指定的话,他会自动检测

5.2.9 action=‘store_true参数说明

yolov5-1_第12张图片
这个类型的参数和之前的默认有很大区别,其相当于一个“开关”,当我们运行程序的时候如果指定了带有action='store_true’类型的参数,那么就相当于启动这个参数所对应的功能,反之则不

5.2.10 view-img

在这里插入图片描述
这个参数是检测时是否实时的把检测结果显示出来,因为是action='store_true’类型的参数,如果需要在检测时实时显示结果即在终端中输入以下指令 :python detect.py --view-img

5.2.11 save-txt

在这里插入图片描述
这个参数是是否把检测结果保存成一个txt格式的文件,如果需要保存检测结果即在终端中输入以下指令 :python detect.py --save-txt

在文件输出目录runs/detect/exp目录下会生成labels文件夹,这个文件夹下会生成对应图像名的txt文件,里面保存了一些类别信息和边框的位置信息

5.2.12 save-conf

在这里插入图片描述
这个参数是是否以txt格式的文件保存目标的置信度得分,如果单独指定这个命令是没有效果的,需要必须和–save-txt配合使用,即在终端中输入以下指令: python detect.py --save-txt --save-conf

5.2.13 save-crop

在这里插入图片描述
这个参数是是否把模型检测的物体裁剪下来,如果开启了这个参数会在runs/detect/exp/crops文件夹下看到几个以类别命名的文件夹,里面保存的都是裁剪下来的图片

5.2.14 nosave


这个参数是不保存预测的结果,但是还会生成runs/detect/exp文件夹,只不过是一个空的exp

5.2.15 classes

yolov5-1_第13张图片
这里又出现一个新的参数nargs,它的意思就是我们可以给变量指定多个赋值,也就是说我们可以把0赋值给classes,也可以把0、1、2都赋值给classes
在这里插入图片描述
这个参数是只检测给定类别的目标,使用方式是在终端输入:python detect.py --classes 0

5.2.16 agnostic-nms

在这里插入图片描述
这个参数是是否使用增强版的nms,一个trick(笔记使用与不使用这个参数效果相差不大)

5.2.17 augment

在这里插入图片描述
这个参数是在推理时是否使用数据增强方法(对于特定效果会有很好的效果)

5.2.18 visualize

在这里插入图片描述
这个参数是是否把特征图可视化出来,如果开启了这个参数可以看到runs/detect/exp文件夹下又多了一些文件,其中.npy格式的文件就是保存的模型文件,可以使用numpy读写.png就是图片文件

5.2.19 update

在这里插入图片描述
这个参数是对模型进行strip_optimizer操作,去除pt文件中的优化器等信息

5.2.20 project

在这里插入图片描述
这个参数是我们预测结果保存的路径:runs/detect

5.2.21 name

在这里插入图片描述
这个参数是预测结果保存的文件夹名字,默认是exp(第一次是exp,下一次就是exp1),与上面联系起来保存文件路径就是runs/detect/exp

5.2.22 exist-ok

在这里插入图片描述
这个参数是每次预测模型的结果是否保存在原来的文件夹,如果指定了这个参数的话,那么本次预测的结果还是保存在上一次保存的文件夹里;如果不指定就是每次预测结果保存一个新的文件夹下

5.2.23 line-thickness

在这里插入图片描述
这个参数是调节预测框线条粗细

5.2.24 hide-labels

在这里插入图片描述
这个参数是隐藏结果标签(即不显示检测目标类别名)

5.2.25 hide-conf

在这里插入图片描述
这个参数是隐藏标签的置信度(即不显示检测类别置信分)

5.2.26 half

在这里插入图片描述
这个参数是是否使用 FP16 半精度推理;在训练阶段,梯度的更新往往是很微小的,需要相对较高的精度,一般要用到FP32以上;在推理的时候,精度要求没有那么高,一般F16(半精度)就可以,甚至可以用INT8(8位整型),精度影响不会很大;同时低精度的模型占用空间更小了,有利于部署在嵌入式模型里面

5.2.27 dnn

在这里插入图片描述
这个参数是是否使用 OpenCV DNN(Deep Neural Networks)进行 ONNX 推理

参考资料

源码地址:https://github.com/ultralytics/yolov5/tree/master

彩蛋

本文对YOLOv5模型的detect.py文件的参数进行了详细阐述,笔者以后会定期讲解关于模型的其他的模块与相关技术,笔者也建立了一个关于目标检测的交流群:781334731,大家也可扫描下面这张图片加入,欢迎大家踊跃加入,一起学习鸭!
yolov5-1_第14张图片

你可能感兴趣的:(yolov5,目标检测,深度学习,算法,计算机视觉,人工智能,目标检测)