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]等。
只增加训练成本,但是能显著提高精度,并不影响推理速度
数据增强:调整亮度、对比度、色调、随机缩放、剪切、翻转、旋转
网络正则化的方法:Dropout、Dropblock等
类别不平衡,损失函数设计
在bof中,YOLO v4使用的是Mosaic data augmentation 、 Self-adversarial-training(SAT)、dropblock、labelsmooth、CIOU、DIOU-NMS
首先将四张图片进行各自的数据增强,然后将四张图像拼接在一起
Random Erase:用随机值或训练集的平均像素值替换图像的区域
Hide and Seek:根据概率设置随机隐藏一些补丁
Self-adversarial-training(SAT)
之前的dropout是随机选择点(b),现在随机选择一个区域
例如原来标签为(0,1):
使用之后效果分析(右图):簇内更紧密,簇间更分离
问题:没有相交则IOU=0无法梯度计算,相同的IOU却反映不出实际情况
公式:
引入了最小封闭形状C(C可以把A,B包含在内),在不重叠情况下能让预测框尽可能朝着真实框前进
但是在两个预测框完全重叠的情况下,不能反映出实际情况
其中分子计算预测框与真实框的中心点欧式距离d
损失函数必须考虑三个几何因素:重叠面积,中心点距离,长宽比
之前使用NMS来决定是否删除一个框,现在改用DIOU-NMS
公式:
不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离
对于重合度较大的不是直接剔除,而是施加惩罚。
增加稍许推断代价,但可以提高模型精度的方法
网络细节部分加入了很多改进,引入了各种能让特征提取更好的方法
注意力机制,网络细节设计,特征金字塔等。
YOLO V4使用SPPNet、 CSPNet、SAM、PAN、Mish、eliminate grid sensitivity
V3中为了更好满足不同输入大小,训练的时候要改变输入数据的大小
SPP其实就是用最大池化来满足最终输入特征一致即可
每一个block按照特征图的channel维度拆分成两部分
一份正常走网络,另一份直接concat到这个block的输出
不仅每个通道有注意力,而且特征图每个位置有注意力 V4中用的是SAM,也就是空间的注意力机制,只有位置Attention
YOLOV4中的Spatial attention module
去除池化层和卷积层
FPN:自顶向下的模式,将高层特征传下来
PAN(Path Aggregation Network)
YOLOV4中并不是加法,而是拼接
Relu在小于0时完全杀死了梯度,不太符合实际情况
但是计算量确实增加了,效果会提升一点
坐标回归预测值都在0-1之间,如果在grid边界怎么表示,此时就需要非常大的数值才可以达到边界,为了缓解这种情况可以在激活函数前加上 一个系数(大于1的):