YOLO v4详解

  • Post author:
  • Post category:其他


1.主要贡献

1.开发了一个高效而强大的目标检测模型。它使每个人都可以使用一个1080 Ti或2080 Ti GPU来训练一个超快和准确的目标探测器。

2.验证了state-of-the-art Bag-of Freebies and Bag-of-Specials对目标检测的影响。

3.修改了最先进的方法,使其更有效,更适合于单一的GPU训练,包括CBN[89],PAN[49],SAM[85]等。


2.Bag of freebies(BOF)


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


数据增强:调整亮度、对比度、色调、随机缩放、剪切、翻转、旋转


网络正则化的方法:Dropout、Dropblock等


类别不平衡,损失函数设计


在bof中,YOLO v4使用的是Mosaic data augmentation



Self-adversarial-training(SAT)、dropblock、labelsmooth、CIOU、DIOU-NMS

(1)数据增强


Mosaic data augmentation

首先将四张图片进行各自的数据增强,然后将四张图像拼接在一起


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


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



Self-adversarial-training(SAT)


通过引入噪音点进行数据增强


DropBlock


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



Label Smoothing


例如原来标签为(0,1):


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

CIOU


IOU损失



也经常1-IOU作为IOU loss


问题:

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


GIOU损失


公式:


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


但是在两个预测框完全重叠的情况下,不能反映出实际情况


DIOU损失


公式:


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


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

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


CIOU损失


公式:


损失函数必须考虑三个几何因素:重叠面积,中心点距离,长宽比


其中α可以当做权重参数

NMS


DIOU-NMS


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


公式:



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


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


SOFT-NMS

对于重合度较大的不是直接剔除,而是施加惩罚。


3.

Bag of specials(BOS)


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


网络细节部分加入了很多改进,引入了各种能让特征提取更好的方法


注意力机制,网络细节设计,特征金字塔等。


YOLO V4使用SPPNet、


CSPNet、SAM、PAN、Mish、eliminate grid sensitivity


SPPNet(Spatial Pyramid Pooling)


V3中为了更好满足不同输入大小,训练的时候要改变输入数据的大小


SPP其实就是用最大池化来满足最终输入特征一致即可


CSPNet(Cross Stage Partial Network)


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


一份正常走网络,另一份直接concat到这个block的输出


CBAM


不仅每个通道有注意力,而且特征图每个位置有注意力



V4中用的是SAM,也就是空间的注意力机制,只有位置Attention




YOLOV4中的Spatial attention module

去除池化层和卷积层


PAN(Path Aggregation Network)

FPN:

自顶向下的模式,将高层特征传下来


PAN(Path Aggregation Network)


引入了自底向上的路径,使得底层信息更容易传到顶部


YOLOV4中并不是加法,而是拼接


Mish:


Relu在小于0时完全杀死了梯度,不太符合实际情况


公式:


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


eliminate grid sensitivity


坐标回归预测值都在0-1之间,如果在grid边界怎么表示,此时就需要非常大的数值才可以达到边界,为了缓解这种情况可以在激活函数前加上 一个系数(大于1的):

4.

整体网络架构



版权声明:本文为qq_52053775原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。