YOLOV4整体上可以分为以下4个部分,主干网络CSPDarknet53,特征金字塔SPP,PANet,预测部分YoloHead。
一、主干网络概述
YOLOV3中使用Darknet53网络作为特征提取网络。
YOLOV4中使用CSPDarknet53网络作为特征提取网络。
CSPDarknet53网络的改进主要是分为两点:
(1)采用CSPNET网络融合Darknet53网络,也就是在残差块的部分采用CSPNET中的残差块。
左图是传统ResNe(X)t残差网络的示意图,右边是CSPNet的示意图。
在左图结构中,输入信息经过多个残差块层层向后传递。
在右图结构中,输入信息一分为二,一部分经过残差块向后传播,一部分经过跨阶段层次结构直接与残差块的输出进行合并。
这种结构的好处在于大大降低了网络参数量和计算量,增加了梯度组合的多样性,有利于提高学习能力。
(2)在激活函数中采用Mish函数取代了LeakyReLU函数。
二、特征金字塔
特征金字塔实际上就是对各个层次能提取到的他特征,进行各种方式的特征融合。
(1)SPP(空间金字塔池化)
SPP结构在CSPDarkNet53网络的最后一个特征层的卷积里。
首先数据经过最后一个残差网络后,进行三次Conv-BN-Leaky卷积后,对数据进行四次不同尺度的最大池化处理,池化核的大小为13x13,9x9,5x5,1x1。然后再Concat拼接在一起。
这样的好处是能够极大的增大感受野,分离出上下文特征。
(这里值得注意的是SPP本身是用来解决任意图像输入线性层,保持大小一致等问题的,但是YOLO里其实并没有做到这些,YOLO只是借鉴了SPP的思想,实现了局部特征和全局特征的融合,丰富了表达能力)
(2)PANet(路径聚合网络)
PANet实际上就是对特征进行反复提取然后融合。
比如对于26x26x512这一层,首先与下一层13x13x1024的上采样结果进行Concat,因为13x13上采样会变为26x26所以能与上一层Concat,同理在与52x52x256层的下采样数据进行融合,52x52下采样后也是26x26。
所以对于中下层的Yolo Head实际上是对三层不同维度的数据进行特征融合的结果。
三、Yolo Head
如果把网络当做黑盒,CSPDarknet53网络最后会输出三个Yolo Head。
对于416x416x3的输入图片,并采用voc数据集。那么三个输出层的大小分别为(52,52,75),(26,26,75),(13,13,75)。
这里和YOLOV3是一样的,产生三个层次的GC,对应大物体,中物体,小物体的检测。每一个GC产生3个Anchor,每一个Anchor4个维度+1个置信度+20的标签概率。
四、后处理
大体上YOLOV4的后处理和YOLOV3差不多,也是要进行置信度处理和非极大值抑制。
五、YOLOV4的一些Trick(并非全部的)
(1)Mosaic数据增强
Mosaic数据增强参考了CutMix数据增强。
其操作是对四张图片进行了裁剪,翻转,缩放,色域变换等方法,最后再将图片拼成一张。
采用Mosaic数据增强的好处在于:
①增加数据的多样性,丰富图片背景
②增加目标个数
③图片拼接在一起提高了Batch_size,在进行BN操作的时候可以更好的统计均值和方差。
(2)Label Smoothing标签平滑
这个就不用多说了。主要是解决过拟合的问题
(3)CIOU
(参考:https://www.bilibili.com/video/BV1yi4y1g7ro)
首先需要知道的是CIOU这一方法最后呈现的效果是,让预测框更加符合物体真实的轮廓。
从:IOU --> GIOU --> DIOU -->CIOU的演变讲起
①IOU损失函数
传统的IOU是要计算真实框和预测框的交并比,由于我们需要优化框,所以需要建立损失函数,但是传统的损失函数和IOU之间是不完全等价的。具体的可以看下图的演示。
我们可以看到,这三个图的L2损失是一样的,但是明显他们的IOU完全不同。所以我们需要引起新的IOU损失函数。
IOU损失函数就是:用两个方框相交的面积/两个方框合并的面积,将得到的值取以e为底对数,前面添上负号就得到了IOU损失函数。
②GIOU损失函数
绿色是真实框,红色预测框,蓝色是框柱红绿框的最小框。
IOU是交并比,Ac是蓝色矩形框的面积,u对应红绿矩形的并集面积
但是,GIOU也存在它的缺点:当两个预测框高宽相同,且处于同一水平面时,GIOU就退化为IOU。此外,GIOU和IOU还有两个缺点:收敛较慢、回归不够准确。
③DIOU损失函数
从效果来看,三个图中,预测框和实际框的IOU是相同的,但是对于IOU损失和GIOU损失,他们的损失是相同的,但是明显的第三个图两个框的中心点重合的较好,是我们更想要的结果,这个时候使用DIOU损失函数明显更好。
b:代表预测中心坐标的参数,也就是黑框的中心点
bgt:代表真实目标边界框中心的参数,即绿框中心点ρ^2:就是两个中心点距离的平方
c:代表两个矩形的最小外接矩形对角线(蓝线)长度
④CIOU损失函数
CIOU本质上是对DIOU的一个优化和进本,
在论文中,作者表示一个优秀的回归定位损失应该考虑三种几何参数:重叠面积、中心点距离、长宽比。CIoU就是在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。
CIOU的三项恰好对应IOU,中心点距离,长宽比的计算。
α和v为长宽比,计算公式如上图所示:w、h和w(gt)、h(gt)分别代表预测框的高宽和真实框的高宽。
(4)学习率余弦退火衰减
这个很容易理解,训练过程,每个阶段中采用不同的学习率。
六、YOLOV4的损失函数
(1)实际存在的框,CIOU LOSS。
(2)实际存在的框,预测结果中置信度的值与1对比
(3)实际不存在的框,预测结果中置信度的值与0对比,该部分要去除被忽略的不包含目标的框。
(4)实际存在的框,种类预测结果与实际结果的对比。
这里的损失函数和YOLOV3最大的不同就是上述所讲的的引入CIOU后,损失函数的变化。