YOLOv5(v6.1)解析(四)超参数进化

YOLOv5(v6.1)解析(四)超参数进化

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

1.项目地址

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

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

YOLOv5(v6.1)解析(四)超参数进化

; 2.环境搭建

在配置Conda环境后就可以进入项目了,可以通过作者提供的requirements.txt文件进行快速安装,即在终端中键入如下指令:pip install -r requirements.txt

YOLOv5(v6.1)解析(四)超参数进化

3.代码运行

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

; 4.模型推理

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

5. 检测结果

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

YOLOv5(v6.1)解析(四)超参数进化
下图就是检测结果:
YOLOv5(v6.1)解析(四)超参数进化

; 6. 超参数进化Hyperparameter Evolution

yolov5提供了一种超参数优化的方法Hyperparameter Evolution,即超参数进化;超参数进化是一种利用遗传算法(GA) 进行超参数优化的方法,我们可以通过该方法选择更加合适自己的超参数;模型提供的默认参数是通过在COCO数据集上使用超参数进化得来的(由于超参数进化会耗费大量的资源和时间,如果默认参数训练出来的结果能满足你的使用,使用默认参数也是不错的选择)

6.1 初始化超参数

YOLOv5有28个用于各种训练设置的超参数,它们定义在/data/hyps目录下的yaml文件中;好的初始参数值将产生更好的最终结果,因此在演进之前正确初始化这些值是很重要的;如果有不清楚怎么初始化,只需使用默认值,这些值是针对COCO训练优化得到的(如yolov5/data/hyps/hyp.scratch.yaml文件)

YOLOv5(v6.1)解析(四)超参数进化

; 6.2 参考指标

在YOLOv5模型中,定义了一个fitness函数对各项指标进行加权得到当前拟合度

YOLOv5(v6.1)解析(四)超参数进化

6.3 超参数进化

yolov5/train.py文件中的超参数进化列表,括号里分别为(突变规模, 最小值,最大值)

YOLOv5(v6.1)解析(四)超参数进化
超参数进化算法

根据之前训练时的hyp来确定一个base hyp再进行突变,再通过之前每次进化得到的results来确定之前每个hyp的权重,得到每个hyp和每个hyp的权重之后有两种进化方式:

  1. 根据每个hyp的权重随机选择一个之前的hyp作为base hyp,random.choices(range(n), weights=w)
  2. 根据每个hyp的权重对之前所有的hyp进行融合获得一个base hyp,(x * w.reshape(n, 1)).sum(0) / w.sum()

evolve.txt会记录每次进化之后的results+hyp,每次进化时,hyp会根据之前的results进行从大到小的排序,再根据fitness函数计算之前每次进化得到的hyp的权重;再确定哪一种进化方式,从而进行进化

YOLOv5(v6.1)解析(四)超参数进化

; 6.4 超参数进化实验

设置每75轮进化一次,epoch为300:python train.py –evolve 75 ;在进化之后可得到28个超参数的值

YOLOv5(v6.1)解析(四)超参数进化
这些超参数的值也会保存在/runs/evolve/exp/hyp.evolve.yaml文件中(好像也没啥变化,一定是我数据集的问题。。。)

官方资料:https://github.com/ultralytics/yolov5/issues/607

彩蛋

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

YOLOv5(v6.1)解析(四)超参数进化

Original: https://blog.csdn.net/sc1434404661/article/details/124618306
Author: sc1434404661
Title: YOLOv5(v6.1)解析(四)超参数进化

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/518093/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球