YOLOv5(v6.1)解析(四)超参数进化
本文对YOLOv5项目的超参数算法进行详细阐述,笔者以后会定期讲解关于模型的其他的模块与相关技术,笔者也建立了一个关于目标检测的交流群:781334731,欢迎大家踊跃加入,一起学习鸭!
1.项目地址
源码地址:https://github.com/ultralytics/yolov5
打开网址后,点击master可选取不同版本的分支,本文对Yolov5最新版本v6.1解析
2.环境搭建
在配置Conda环境后就可以进入项目了,可以通过作者提供的requirements.txt文件进行快速安装,即在终端中键入如下指令:pip install -r requirements.txt
3.代码运行
如上是官方给出的代码运行方式,我们可利用Yolov5模型预测图像、视频、摄像头、网站视频、RTSP流文件等,模型会自动下载权重文件(yolov5s.pt、yolov5m.pt、yolov5l.pt等),预测后的结果会自动保存到runs/detect/exp目录下,下次运行结果会保存在runs/detect/exp1目录下,依次类推;下图给出yolov5模型的权重和尺寸,更具体信息请参考:https://github.com/ultralytics/yolov5/releases
4.模型推理
首先我们可以利用PyTorch Hub工具加载Yolov5模型(如果没下载,会自动下载模型权重到根目录下),之后加载需要检测的图片,最后利用封装好的模型推理检测结果,下图给出具体的实现步骤。
5. 检测结果
我们可以直接运行detect.py文件试试效果,运行后系统会把检测结果保存在runs\detect\exp3路径下(之前自己跑过试试)
下图就是检测结果:
6. 超参数进化Hyperparameter Evolution
yolov5提供了一种超参数优化的方法Hyperparameter Evolution,即超参数进化;超参数进化是一种利用遗传算法(GA) 进行超参数优化的方法,我们可以通过该方法选择更加合适自己的超参数;模型提供的默认参数是通过在COCO数据集上使用超参数进化得来的(由于超参数进化会耗费大量的资源和时间,如果默认参数训练出来的结果能满足你的使用,使用默认参数也是不错的选择)
6.1 初始化超参数
YOLOv5有28个用于各种训练设置的超参数,它们定义在/data/hyps目录下的yaml文件中;好的初始参数值将产生更好的最终结果,因此在演进之前正确初始化这些值是很重要的;如果有不清楚怎么初始化,只需使用默认值,这些值是针对COCO训练优化得到的(如yolov5/data/hyps/hyp.scratch.yaml文件)
6.2 参考指标
在YOLOv5模型中,定义了一个fitness函数对各项指标进行加权得到当前拟合度
6.3 超参数进化
yolov5/train.py文件中的超参数进化列表,括号里分别为(突变规模, 最小值,最大值)
超参数进化算法:
根据之前训练时的hyp来确定一个base hyp再进行突变,再通过之前每次进化得到的results来确定之前每个hyp的权重,得到每个hyp和每个hyp的权重之后有两种进化方式:
- 根据每个hyp的权重随机选择一个之前的hyp作为base hyp,random.choices(range(n), weights=w)
- 根据每个hyp的权重对之前所有的hyp进行融合获得一个base hyp,(x * w.reshape(n, 1)).sum(0) / w.sum()
evolve.txt会记录每次进化之后的results+hyp,每次进化时,hyp会根据之前的results进行从大到小的排序,再根据fitness函数计算之前每次进化得到的hyp的权重;再确定哪一种进化方式,从而进行进化
6.4 超参数进化实验
设置每75轮进化一次,epoch为300:python train.py --evolve 75 ;在进化之后可得到28个超参数的值
这些超参数的值也会保存在/runs/evolve/exp/hyp.evolve.yaml文件中(好像也没啥变化,一定是我数据集的问题。。。)
官方资料:https://github.com/ultralytics/yolov5/issues/607文章来源:https://www.toymoban.com/news/detail-494545.html
彩蛋
本文对YOLOv5项目的超参数算法进行了详细阐述,笔者以后会定期讲解关于模型的其他的模块与相关技术,笔者也建立了一个关于目标检测的交流群:781334731,大家也可扫描下面这张图片加入,欢迎大家踊跃加入,一起学习鸭!
文章来源地址https://www.toymoban.com/news/detail-494545.html
到了这里,关于YOLOv5(v6.1)解析(四)超参数进化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!