【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装

前言

这是我根据 B 站土堆的 目标检测 YOLOv5 开源代码项目调试与讲解实战 整理撰写的第一篇文章,具体介绍了 YOLOv5 项目中 detect.py 文件的参数,同时也大致讲解了 lux ( annie ) 下载神器的安装过程,所有代码均为视频演示版,非本人原创。在看这篇文章前,请公主王子们确保自己的 YOLOv5 已经配置完成,且项目中的 detect.py 文件也能够成功运行哦~如果在配置 YOLOv5 的过程中遇到问题,可以参考我的上一篇文章,链接放在这里啦:

【土堆】史上最全 YOLOv5 配置问题总结 AttributeError & RuntimeError & AssertionError-CSDN博客文章浏览阅读618次,点赞16次,收藏17次。这篇文章主要记录了作者在配置 YOLOv5 时遇到的问题以及解决方式,作者小白,请多包涵!https://blog.csdn.net/nanzhou520/article/details/134587856

一、利用 YOLOv5 预测

在这个章节,我们将具体讲解 YOLOv5 项目中 detect.py 文件的参数。我参考了土堆的视频教程以及下面这篇博客:

YOLOv5 detect.py文件部分参数使用-CSDN博客文章浏览阅读5.9k次,点赞8次,收藏70次。parser = argparse.ArgumentParser() parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model.pt path(s)') parser.add_argument('--source', type=str, default='data/images', help='source') # file/folder, 0 for webcam .https://blog.csdn.net/qq_44989881/article/details/119275231

如下图所示,这些就是 detect.py 文件中我们需要大致了解的参数。

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第1张图片

1、weights

这个 weights 参数用于指定网络模型,默认设置的是 yolov5s.pt, 如果想要使用其他网络模型,可以打开 GitHub 的 YOLOv5 官方开源项目,在 Release 中找到对应版本的模型进行下载,如下图所示:

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第2张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第3张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第4张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第5张图片

2、source

这个 source 参数用于给网络模型指定输入,可以对图片,视频等进行目标检测。

parser.add_argument('--source', type=str, default='data/images', help='source')  # file/folder, 0 for webcam
default 值 检测对象
data/images images 文件夹下的所有图片
data/images/bus.jpg images 文件夹下的 bus.jpg
data/video/demo.mp4 video 文件夹下的所有视频
0 调用笔记本摄像头
1 调用 USB 摄像头

【补充】当我们对视频进行目标检测时,通常会在运行时调用 view-img 参数,从而能够实时查看视频每一帧的检测效果。

3、img-size

这个 img-size 参数用于将图片缩放后放入神经网络模型中,通过训练确定标注框的位置,然后将标注框等比例缩放,画在原图片上,因此输入图片的尺寸和输出图片的尺寸相同,未发生改变。在 GitHub 的 YOLOv5 官方开源项目的 Release 中,我们可以看到不同 .pt 模型所对应的 img-size ,例如,由于 yolov5s.pt 模型是在 640 分辨率下进行训练的,所以使用该模型时应将 img-size 设为 640 。

parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
img-size 网络模型的类型
640 yolov5s.pt
yolov5m.pt
yolov5l.pt
yolov5x.pt
1280 yolov5s6.pt
yolov5m6.pt
yolov5l6.pt
yolov5x6.pt

4、conf-thres

这个 conf-thres 参数用于设置置信度,当检测目标的概率大于 default 默认值时,就会在图片中被标注出来。

parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')
  • default = 0.25:检测目标的概率大于 0.25 时,就会在图片中被标注出来
  • default = 0:无论检测目标的概率多少,图片中所有的检测框都被标注出来
  • default = 1:无论检测目标的概率多少,图片中所有的检测框都 不 被标注出来

【补充】为了让大家更加直观地感受 conf-thres 参数中 default 值的作用,我将分别展示 default 为 0.25、0 和 1 时的运行情况。

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第6张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第7张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第8张图片

5、iou-thres

这个 iou-thres 参数是交并比阈值,交并比大于 default 阈值的将被视作同一个物体,需要 nms 选取最佳框,小于 default 阈值的则被视作不同物体,不需要做处理,下面的说明可能有点绕口,大家可以看补充的图~

  • iou-thres 值 越大 ,则容易将 同一物体 的不同预测结果当成对 多个物体 的不同预测结果,导致同一物品出现了多个预测结果
  • iou-thres 值 越小 ,则容易将 多个物体 的不同预测结果当成对 同一物体 的不同预测结果,导致不同物品只出现一个预测结果
parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')

【补充】为了让大家更加直观地了解 IoU 交并比的意义,我在这里贴了视频教程的相关截图,第二张图包含了 IoU 的计算公式。

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第9张图片

【说明】在上面的示例图中,同一 Person 有三个框,若要选择最佳的框,可采用 IoU 的方法选取与真实标注框交并比最大的那个框。

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第10张图片

【补充】为了让大家更加直观地感受 iou-thres 参数中 default 值的作用,我将分别展示 default 为 0.45、0 和 1 时的运行情况。

6、device

这个 device 参数用于选择代码运行所使用的设备,例如 cuda 或者 cpu ,若 default 默认值为空,则会自动检测。

parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')

7、view-img

这个 view-img 参数没有 default 默认值,只有 action 值,若在终端运行时指定了这个参数,就被设置为 True,从而能在运行过程中实时显示图片或者视频的检测结果,若在终端运行时未指定这个参数,则被设置为 False 。

parser.add_argument('--view-img', action='store_true', help='display results')

通常来说,我们指定 view-img 参数的方式有以下两种:

  1.  直接在 PyCharm 的 Terminal 终端运行 python detect.py --view-img 命令
  2.  打开 PyCharm 右上角的 Edit Configuration 窗口,在 Parameters 中设置 --view-img 参数

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第11张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第12张图片

【注意】我们通常借助 view-img 参数来实时查看视频的检测情况,且 view-img 参数被调用后会设置为 True ,具体效果如下所示:

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第13张图片

8、save-txt

这个 save-txt 参数用于将检测结果保存为 txt 文件,具体的参数设置与运行效果如下图所示:

parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第14张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第15张图片

9、*save-conf

这个 save-conf 参数用于确认是否以 .txt 格式保存目标的置信度,必须与 save-txt 参数配合使用,具体如图所示:

parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第16张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第17张图片

10、*nosave

这个 nosave 参数用于不对预测结果进行保存,但仍会生成空的 exp 文件夹,我们平时对 nosave 调用不多,但如果在对视频进行检测时,将其与 view-img 配合使用,就可以不用保存很多 txt 文件啦~

parser.add_argument('--nosave', action='store_true', help='do not save images/videos')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第18张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第19张图片

11、classes

这个 classes 参数用于指定想要检测的类别,如果只想检测这个类别,我们可以调用 --classes 0 ,具体运行效果如下图所示:

parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')

12、*agnostic-nms

这个 agnostic-nms 参数是增强版的 nms ,可以提高检测框框右上角的置信度,具体运行效果如下图所示(但是我的效果不太明显):

parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')

13、*augment

这个 augment 参数也是用于增强的,同样可以提高检测框框右上角的置信度,具体运行效果如下图所示(这个效果明显点):

parser.add_argument('--augment', action='store_true', help='augmented inference')

14、update

这个 update 参数用于对所有模型进行 strip_optimizer 操作,去除 .pt 文件中的优化器等不必要的信息。

parser.add_argument('--update', action='store_true', help='update all models')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第20张图片

15、project

这个 project 参数就是我们预测结果保存的路径。

parser.add_argument('--project', default='runs/detect', help='save results to project/name')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第21张图片

16、name

这个 name 参数就是我们预测结果保存的文件夹名字。

parser.add_argument('--name', default='exp', help='save results to project/name')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第22张图片

17、exist-ok

这个 exist-ok 参数用于确认本次预测结果是否保存在原来的文件夹,如果调用这个参数,那么本次预测结果会保存在 name 指定的文件夹中,如果未调用这个参数,则将保存在自动新建的文件夹中,具体运行效果如下图所示:

parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第23张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第24张图片

18、调试看参

通过分析 detect.py 文件可知,所有参数最终都会被放到 opt 中,我们可以通过打断点的方式 调试看参 (前面也用到过):

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第25张图片

二、安装 lux (annie) 下载神器

安装 lux 是为了能够在 B 站下载视频样例,从而更直观地感受 YOLOv5 对视频进行的目标检测,具体安装过程我参考了这篇文章:

视频下载工具lux与ffmpeg的安装与使用_Yukee_的博客-CSDN博客文章浏览阅读128次。一行命令下载全网视频https://blog.csdn.net/Yukee_/article/details/132300561

1、安装 lux (annie)

为了让王子公主们能够更方便地安装 lux,微臣在这里提供了【Releases】按钮,点击就能去对应页面下载 lux 。

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第26张图片

我安装的是 lux_0.22.0_Windows_x86_64,大家可以点击【Download】按钮进行下载,网址我也贴在这里啦:

https://github.com/iawia002/lux/releases/download/v0.22.0/lux_0.22.0_Windows_x86_64.zip

压缩包下载成功后,我将其解压至  E:\YOLOv5\annie 文件夹,然后进行系统环境变量的设置,具体如图所示:

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第27张图片

最后,我们可以在当前目录地址栏直接输入 cmd ,按回车后进入命令行窗口,执行 lux 命令,如果出现下图则说明配置成功:

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第28张图片

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第29张图片

2、安装 ffmpeg

微臣同样提供了 ffmpeg 的【Releases】按钮帮助大家跳转至对应页面进行下载。

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第30张图片

我安装的是 ffmpeg-n6.0-latest-win64-gpl-6.0.zip,大家可以点击【Download】按钮进行下载,网址我也贴在这里啦:

https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n6.0-latest-win64-gpl-6.0.zip

压缩包下载成功后,我将其解压至  E:\YOLOv5\ffmpeg 文件夹,然后进行系统环境变量的设置,注意是 bin 目录路径,具体如图所示:

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第31张图片

最后,我们可以在命令行窗口输入 ffmpeg -version 命令并执行,如果出现下图则说明配置成功:

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第32张图片

3、下载 B 站视频 

 在命令行窗口执行 lux 视频地址 命令下载 B 站视频,注意当前路径应该是你希望视频保存的文件夹路径哟~

【土堆】目标检测 YOLOv5 开源项目入门实战 1(最详尽版)—— 关于 detect.py 参数讲解与 lux ( annie ) & ffmpeg 安装_第33张图片

Ending

因为担心文章篇幅过长,所以我将《目标检测 YOLOv5 开源项目入门实战》这个系列写成了三篇文章:

  • 第一篇 具体介绍了 YOLOv5 项目 Tags5 版本中 detect.py 文件的参数,同时也大致讲解了 lux ( annie ) 的安装过程;
  • 第二篇 具体介绍了 YOLOv5 项目 Tags5 版本中 train.py 文件的参数,大致涵盖了 34 个参数;
  • 第三篇 具体讲解了如何使用云端 GPU 训练 YOLOv5 模型,以及如何自制数据集并对其进行训练。

作者目前还是小白阶段,可能在撰写文章的过程中存在很多不足和问题,请王子公主们多多包涵!当然也欢迎大家提出建议,微臣主打一个听劝!最后非常感谢大家能够阅读我的文章~希望大家生活顺利!

你可能感兴趣的:(深度学习の目标检测,目标检测,YOLO,深度学习,人工智能)