登录/注册
小张
1699
占位
2
占位
0
浏览量
占位
粉丝
占位
关注
计算机视觉——yolov5回归与跨网格预测、训练技巧(下篇)
小张
2023-04-25 15:43:32 2023-04-25
0
0

yolov5

1. yolov5网络架构与组件

1.1 网络可视化工具 netron

在线版本:浏览器中输入链接: https://lutzroeder.github.io/netron/

netron官方的Github链接:https://github.com/lutzroeder/netron

1.2 不同模型的配置

image-20230330125609425

1.3 Focus 模块

image-20230330125649829

一个小实验:

image-20230330125759484

Focus()模块是为减少错误和提高速度而设计的,而不是提高精度。

image-20230330125817968

1.4 CSPNet 跨阶段局部网络

image-20230330130033908

1.5 SPP 空间金字塔池化

在CSP上添加SPP块,因为它显着地增加了接收字段,分离出了最重要的内容,几乎没有降低网络的操作速度。

image-20230330130227107

1.6 PANet 路径聚合网络

在这里插入图片描述

2. 损失函数

image-20230330132632064

2.1 类别预测

image-20230330132725856

2.2 边界框回归

image-20230330132834504

2.3 回顾IoU

image-20230330132939901

2.4 IoU推广——GIoU loss

image-20230330133049144

image-20230330133128505

C 框是包围A、B的最小的框

2.5 IoU推广——DIoU loss

image-20230330133321890

蓝色为对角线,两框中心点的距离为d

image-20230330133417955

在IoU和GIoU一样的情况下,DIoU还有变化。

2.6 IoU推广——CIoU loss

image-20230330134044029

优化的偏导数

image-20230330134111209

2.7 总结

image-20230330133521568

还有CIoU等等,大家感兴趣可以自己了解。

image-20230330133750549

DIoU波动稳定,对不同值的适应能力比较强;实验比较G&C:CIoU的表现比较好,YOLOv5默认用CIoU计算Loss

image-20230330133841706

3. YOLOv5目标框回归与跨网格预测策略

3.1 回顾:目标框PASCAL VOC标注格式

左上角为坐标原点

image-20230411130856440

3.2 标记文件

image-20230411130758602

图右框住的部分可以看出,框的宽高等做了归一化;两种标记文件是可以转换的

一个例子

image-20230411131155876

3.3 目标框回归

image-20230411131242684

蓝色是预测框,虚线是先验框(anchor)

image-20230411131537172

两个模型的计算方式出现了改变;原始的yolo / darknet框方程式存在严重缺陷。宽度和高度完全不受限制,它可能导致失控的梯度、不稳定、NaN损失并最终完全失去训练。

对于yolov5,确保通过sigmoid所有模型输出来修补此错误,同时还要确保中心点保持不变1=fcn (0) ,因此模型的标称零输出将导致使用标称锚框大小(即预先设置的锚框)。当前的方程式将锚点的倍数从最小0限制为最大4(这个地方的解释:sigmoid函数取值[0,1],因此其平方乘以2 的取值范围就是[0,4]),并且锚框-目标匹配也已更新为基于宽度-高度倍数,标称上限阈值超参数为4.0。

image-20230411131755033

3.4 YOLOv5跨网格匹配策略

image-20230411133646563

4. YOLOv5 训练技巧

4.1 训练预热warmup

刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡)。选择warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XNOeFks2-1681870777889)(C:/Users/dell/AppData/Roaming/Typora/typora-user-images/image-20230411134042225.png)]

0-30个epoches的warmup,学习率从很小增加很快,第三张图是不同的预热策略。

例子:余弦退火调整学习率。

image-20230411134459791

4.2 自动计算锚框

Anchor给出了目标宽高的初始值,需要回归的是目标真实宽高与初始宽高的偏移量,而不使用anchor的做法需要回归宽高的绝对量。

Autoanchor only runs when the best possible recall (BPR,最大可能召回率) is under threshold;在yolov5中,BPR小于98%就会自动计算锚框。

image-20230411134658548

也可以自己禁用这一功能,自动计算的锚框信息会保存在模型的权重文件中。

4.3 超参数进化

在yolov5中采用类似GA遗传算法来进行优化,但yolov5无交配这一操作。

image-20230411134851198

4.4 自动混合精度训练

image-20230411135027934

如何使用呢?

image-20230411135219448

4.5 断点续训 !!!

image-20230411135522128

4.6 多GPU训练

image-20230411135801847

推荐的模式:

image-20230411135819929

4.7 并行数据加载

多线程加载数据从而加快速度,最下面的是并行流水线加载

image-20230411135840504

DDP模式

image-20230411140013152

可以在github上看详细命令和介绍 点击跳转

暂无评论