从YOLO-V4到YOLO-V7发展过程及改进

V4贡献:

单GPU就能训练的非常好,适合大多数人,不用担心设备

从数据层面和网络设计层面来进行改善,做了很多消融实验,

数据层面

Bag of freebies(BOF):

只增加训练成本,但能显著提高精度,并且不影响推理速度

Mosaic data augmentation(数据增强)

       方法很简单,参考CutMix然后四张图像拼接成一张进行训练

       四个图像先自己做自己的增强,然后再拼成一张,这样做间接的增加了Batch_size,

Random Erase:用随机值或训练集的平均像素值替换图像的区域 

   

Hide and Seek:根据概率设置随机隐藏一些补丁 

Self-adversarial-training(SAT):通过引入噪音点来增加输入难度

DropBlock:

之前的dropout是随机选择点(b),现在吃掉一个区域(c)

Label Smoothing:(标签平滑)

神经网络最大的缺点:容易过拟合,所以为了克服这个问题,标签别太绝对,有一定的容错性

例如原来标签为(0,1) : [0,1] × (1 -0.1)+0.1/2 =[0.05,0.95]

使用之后效果分析(右图)︰簇内更紧密,簇间更分离

损失函数:

IOU损失:(也经常1-IOU)

遇到的问题

没有相交则IOU=0无法梯度计算,相同的IOU却反映不出实际情况到底咋样

公式:

GIOU损失:

公式:

引入了最小封闭形状C(C可以把A,B包含在内,在不重叠情况下能让预测框尽可能朝着真实框前进),下图

缺点:重叠的时候结果相似

DIOU损失:(用距离进行度量)

公式:

其中分子计算预测框与真实框的中心点欧式距离d

分母是能覆盖预测框与真实框的最小BOX的对角线长度c

直接优化距离,速度更快,并解决GIOU问题

CIOU损失:

公式:

∝v 是长宽比

其中α可以当做权重参数

DIOU-NMS:

 之前使用NMS来决定是否删除一个框,现在改用DIOU-NMS

不仅考虑了loU的值,还考虑了两个Box中心点之间的距离

其中M表示高置信度候选框,Bi就是遍历各个框跟置信度高的重合情况

SOFT-NMS:

(DIOU-NMS高度相似,直接剔除)

柔和一点的NMS,更改分数不会直接剔除,更改分数后,看是否达到要求,再考虑是否剔除

网络结构层:

Bag of specials(BOS)

增加稍许推断代价,但可以提高模型精度的方法

SPPNet(Spatial Pyramid Pooling):

增大感受野

V3中为了更好满足不同输入大小,训练的时候要改变输入数据的大小
SPP其实就是用最大池化来满足最终输入特征一致即可

CSPNet (Cross Stage Partial Network):

每一个block按照特征图的channel维度拆分成两部分

一份正常走网络,另一份直接concat到这个block的输出(好处:维度减少,计算量就减少,速度更快,精度并没有下降)

V4中用的是SAM,也就是空间的注意力机制,如下图

针对SAM也进行了一点改进

上图可以看出,以前是2层池化再卷积

现在直接进行了卷积

好处:速度相对能快一点

PAN(Path Aggregation Network):

引入了自底向上的路径,使得底层信息更容易传到顶部(以前是自顶向下)

并且还是一个捷径,红色走个100层(Resnet)到,绿色的几层就到了(下图)

YOLOV4中PAN特征融合时并不是加法,而是拼接

Mish:

公式:

主要作用:给前期学的不好的数据给机会,后期说不定会训练好

Relu有点太绝对了,Mish更符合实际

但是计算量确实增加了,效果会提升一点

YOLO-V4整体网络结构:

YOLO-v5:

Backbone: New CSP-Darknet53

Neck: SPPF, New CSP-PAN

Head: YOLOv3 Head

网络结构:


将Focus模块替换成了6x6的普通卷积层。两者功能相同,但后者效率更高。

Spp->到sppf   并行输入改串行输入,效率更高,速度更快

数据增强- Mosaic:

将四张图片拼成一张,扩充数据多样性

数据增强- Copy paste:

将不同图像目标检测到的目标,复制粘贴合成(要求:有每个目标实例分割的标签)

数据增强-Random affine:

旋转,缩放,平移,错切

数据增强-MixUp:

将两张图片按一定的透明程度合成一张

数据增强- Albumentations

滤波、直方图均衡化以及改变图片质量等等

数据增强- Augment HSV(Hue, Saturation,Value)

色度,饱和度,明度

数据增强-Random horizontal flip:

随机水平翻转

主要训练策略:

  1.  Multi-scale training(0.5~1.5x)  多尺度训练
  2. AutoAnchor(For training custom data)  对于训练自己的数据集(长宽大小和常见目标差异大时,启动它可以生成新的)

     3.Warmup and Cosine LR scheduler:将学习率有小到大,以Cosine的形式慢慢降低学习率

     4.EMA(Exponential Moving Average):给学习变量增加了一个动量,这样在更新参数时会更加平滑

     5.Mixed precision:

减少对GPU显存占用,对于训练大模型很有用,并且加快网络训练,

    6.Evolve hyper-parameters:

YOLOv5的损失主要由三个部分组成:

Classes loss,分类损失,采用的是BCE loss,注意只计算正样本的分类损失。

Objectness loss,obj损失,采用的依然是BCE loss,注意这里的obj指的是网络预测的

目标边界框与GT Box的CIoU。这里计算的是所有样本的obj损失。

Location loss,定位损失,采用的是CIoU loss,注意只计算正样本的定位损失。

针对三个预测特征层(P3,P4, P5)上的obj损失采用不同的权重。

消除Grid敏感度

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值