YOLOv4改进
1、Mosaic data augmentation(马赛克数据增强)
实现:参考CutMix将四张图像拼成一张进行训练;
2、DropBlock
实现:类似于Dropout,但是从随机选点变成随机选块;
3、Label Smoothing(标签平滑)
作用:解决过拟合的问题,让网络不过于"自信";
实现:例如将原来的标签(0,1)—> (0.05,0.95);
结果:使用了标签平滑能够使得同类别更紧密,不同类别间更分离;
4、损失优化
-
IOU损失(1-IOU)
说明:在V3版本中用的位置损失函数;
存在问题:两个框没有相交则IOU为0无法计算梯度,相同的IOU无法反映不同情况;
-
GIOU损失
作用:在不重叠的情况下能让预测框尽可能朝真实框靠近;
存在问题:遇到重叠的情况,GIOU都相同;
-
DIOU损失
分母为能够覆盖预测框与真实框的最小Box的对角线长度c;
作用:直接优化距离,速度更快,并且解决GIOU中重叠问题;
-
CIOU(V4版本中使用的)
位置损失函数需要考虑的因素:重叠面积、中心点距离、长宽比;
上面公式中的α可以看作一个权重参数;
5、NMS优化
6、CSPNet(Cross Stage Partial Network)
实现:每一个block按照特征图的channel维度拆分成两个部分,一部分走正常网络,一部分直接concat到这个block的输出;
7、CBAM(注意力机制)
实现:对每一个通道学习其权重;
当然,学习通道的权重耗时较长,在V4版本中采用SAM,也就是对特征点学习权重;
也就是上图中的下面部分,改进了原始的SAM,提高了效率;
8、PAN(Path Aggregation Network 路径聚合网络)
作用:引入了自底向上的路径,使得底层信息更容易传到顶部;
从上图可知,绿色自底向上采用了一种捷径的方式,只用四步就完成;
在V4版本中,PAN最后一步采用的不是加法,而是拼接;
9、Mish激活函数
作用:相比ReLU激活函数好一些,提升了一点效果,但计算量增加了一点;
10、整体网络架构图