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

500 阅读3分钟

YOLO v5 (v6.1)解析(二)

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

1.项目地址

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

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

image-20220427193834219.png

2.环境搭建

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

即在终端中键入如下指令:pip install -r requirements.txt

image-20220427194120530.png

3.代码运行

image-20220427194309785.png

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

image-20220427194827037.png

4.模型推理

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

image-20220427195125517.png

5. detect.py文件解读🚀

5.1 检测结果

我们可以直接运行detect.py文件试试效果,运行后系统会把检测结果保存在runs\detect\exp3路径下(之前自己跑过试试)

image-20220427195712184.png

下图就是检测结果:

zidane.jpg

5.2 参数读取

image-20220427200141772.png

之前博客已完成对detect.py文件的参数详细介绍,本篇博客对detect.py的关键代码逻辑阐述。

5.2 run函数

image-20220428194016946.png 运行detect.py首先会解析参数,其次利用得到的参数运行main函数(检测环境并将解析得到的参数传入run函数中),接下来让我们康康run函数(其实就是输入之前解析的参数),接下来我们来具体康康下面的代码逻辑

image-20220504100630457.png

5.2.1 初始化配置信息

首先第一部分是初始化模型配置信息,依据传入的解析参数确定图片路径、是否保存图像、保存目录等信息,具体细节请看下面贴出的代码碎片

image-20220504100707637.png

5.2.2 加载模型和参数

第二部分是载入模型和参数,具体包括当前设备、导入的模型、步长、图像尺寸等信息

image-20220504100834348.png

5.2.3 加载推理数据

第三部分是从流数据或者图像数据加载推理图像,后续会具体分析LoadStreams和LoadImages类

image-20220504101004508.png

5.2.4 推理前测试

第四部分是在正式推理前先测试模型法能否跑通

image-20220504101548595.png

5.2.5 正式推理

(1)第五部分首先是先处理每张图像和视频

image-20220504101836151.png

(2)其次是对每张图片/视频进行前向推理

image-20220504101936835.png

(3)接着使用NMS去除冗余的检测框框

image-20220504102132505.png

(4)最后保存和打印预测模型预测信息(这部分不是重点)

image-20220504102348429.png

总结

detect.py文件大体包括如下的几部分:

  • 加载配置文件与读取参数信息
  • 初始化模型配置等信息
  • 加载YOLOv5检测模型和参数信息
  • 读取推理数据(单张图像、目录图像、摄像头、流媒体等)
  • 推理前测试模型与正式推理(图像处理、模型推理、NMS去重与保存打印结果信息)

彩蛋

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