关于YOLOv4理论

YOLOv4论文链接:https://arxiv.org/pdf/2004.10934.pdf

1.原论文中的知识点

1.1 引言

1.1.1 YOLOv3的回顾

①backbone:darknet53
②anchor boxes
​③batch normalization
④​multi-scale (test544)
​⑤取消了pooling层,改用卷积核步长进行降采样
⑥​logistics代替softmax

1.1.2 关于YOLOv4

在YOLOv4中,作者做了很多实验,把近几年的一些方法加入yolo中,最终取得了效果和速度的提升。通过了解YOLOv4,可以很好的知道近几年有哪些方法被提出来,整篇论文更像是一篇综述,但和绝大多数综述不同的是,作者是有做实验从而提炼出一个优秀的模型。
Weighted-Residual-Connections
Cross-Stage-Partial-connections
​Cross mini-Batch Normalization
Self-adversarial-training
Mish activation
Mosaic data augmentation
DropBlock regularization
CIoU loss

1.2 Bag of freebies(BOF)

理解:只会增加训练时候的成本与时间,但不会影响测试时候的FPS和精度。

1.2.2 提出数据的预处理(pixel-wise调整):数据扩充

①光度畸变:调整图像的亮度、对比度、色调、饱和度和噪声。
②几何畸变:加入随机缩放、剪切、翻转和反旋。

1.2.3 模拟对象遮挡

①random erase,CutOut:可以随机选择图像中的矩形区域,并填充一 个随机的或互补的零值。
②hide-and-seek、grid mask:随机或均匀地选择图像中的多个矩形区 域,并将其全部替换为0。

1.2.4 特征矩阵

​DropOut、DropConnect和DropBlock(YOLOv4)。

1.2.5 结合多幅图像进行数据扩充

MixUp、CutMix

1.2.6 Style Transfer GAN

1.2.7 解决类别不平衡

解决数据分布不平衡:在实际的训练过程中,正负样本总是相差悬殊的,通过设置损失函数前面的权重来解决。
hard negative example mining (只适用两阶段)
​online hard example mining (只适用两阶段)
focal loss

1.2.8 Label smoothing(标签平滑处理)

用于解决one-hot类别之间没有关联

1.2.9 BBox回归

①IoU_loss
②GIoU_loss
③DIoU_loss
④CIoU_loss(YOLOv4)

YOLOv4采用的

​CutMix and Mosaic data augmentation
DropBlock regularization
Class label smoothing
CIoU-loss
CmBN
Self-Adversarial Training
Eliminate grid sensitivity
Using multiple anchors for a single ground truth
Cosine annealing scheduler
Optimal hyperparameters
Random training shapes

1.3 Bag of specials(BOS)

理解:​只会增加少量推理成本但却能显著提高对象检测精度的plugin modules和post-processing methods。

1.3.1 enhance receptive field(提升模型感受野)

作用:加速模型对核心特征的提取。
SPP(一堆池化的组合)
ASPP,RFB

1.3.2 attention module(注意力机制)

①Squeeze-and-Excitation (SE):可以改善resnet50在分类任务上提高1%精度,但是会增加GPU推理时间10%。
②Spatial Attention Module (SAM):可以改善resnet50在分类任务上提高0.5%精度,并且不增加GPU推理时间。

1.3.3 feature integration(特征融合)

早期使用skip connection、hyper-column。随着FPN等多尺度方法的流行,提出了许多融合不同特征金字塔的轻量级模型。SFAM、ASFF、BiFPN。SFAM的主要思想是利用SE模块对多尺度拼接的特征图进行信道级配重权。 ASFF使用softmax作为点向水平重加权,然后添加不同尺度的特征映射。BiFPN提出了多输入加权剩余连接来执行按比例加权的水平重加权,然后加入不同比例的特征映射。

1.3.4 activation function(激活函数)

​ReLU解决了tanh和sigmoid的梯度消失问题。
LReLU , PReLU , ReLU6 ,SELU, Swish , hard-Swish , Mish 其中 Swish和Mish都是连续可微的函数。

1.3.5 post-processing method(后处理方法)

NMS:置信度处理分类的概率
​soft-nms:解决对象的遮挡问题
​DIoU nms:将中心点分布信息添加到BBox筛选过程中

YOLOv4采用的

Mish activation
CSP
MiWRC(Multi-input Weighted Residual Connection)多输入加权残差连接
SPP-block
SAM
PAN
DIoU-NMS

1.4 网络结构上的选择

在ILSVRC2012 (ImageNet)数据集上的分类任务,CSPResNext50要比CSPDarknet53好得多。然而,在COCO数据集上的检测任务,CSP+Darknet53比CSPResNext50更好。

YOLOv4采用的

​backbone:CSP+Darknet53
​additional module:SPP
​neck:PANet
head:YOLOv3 (anchor based)

1.5 进一步的改进

​为了使检测器更适合于单GPU上的训练,做了如下补充设计和改进:
①引入了一种新的数据增强方法Mosaic和自对抗训练(SAT)
②在应用遗传算法的同时选择最优超参数
③修改了一些现有的方法,如:SAM,PAN,CmBN

2.YOLOv4采用的Tricks解析

2.1 Mosaic data augmentation(马赛克数据增强)

在这里插入图片描述
Mosaic方法基于Sangdoo Yun等人于2019年提出的CutMix数据增强方法,CutMix方法只处理合并两张图片,而Mosaic方法读取四张图片,然后分别进行翻转、缩放等操作,接着拼成一张图片。这种方法可以丰富图片背景,大大扩充训练数据集。而且随机缩放操作增加了很多小目标,使得训练出的模型更加鲁棒。使用Mosaic方法在训练时,可一次直接输入4张图片,使得训练时的Mini-batch可以设置得很小,单个GPU就可以进行训练。
在这里插入图片描述

2.2 DropBlock regularization

在这里插入图片描述

在上图中,×格子表示网络层是学习不到的,但可以通过×格子周围的信息来进行学习从而和检测目标关联。
理解:网络会从dropout掉的激活单元附近学习到同样的信息,通过dropout掉一部分相邻的整片区域(比如头和脚),网络就会去注重学习狗的别的部位的特征来实现正确分类,从而表现出更好的泛化能力。

2.3 Class label smoothing(分类标签平滑处理)

比如:
在这里插入图片描述
分类标签的平滑,将0,0,1转变成0.01,0.01,0.98,这样会提高识别精度。
在这里插入图片描述
在这里插入图片描述

2.4 CIoU-loss

https://zhuanlan.zhihu.com/p/94799295
YOLOv4的损失函数在YOLOv3的损失函数基础上使用CIOU(complete intersection over union)误差代替了均方误差(MSE,mean square error)作为回归框预测误差。CIOU解决了一般IOU无法直接优化两个框没有重叠的部分的问题,并且综合考虑了边界框的重叠面积、中心点距离,长宽比等因素,使得预测框回归的速度和精度更高。
在这里插入图片描述
L1,蓝色的线条,表示MAE(平均绝对误差)优点:可以看到,蓝色线条在0左右侧都是直线,意味着不管对于什么样的输入都有着稳定的梯度,下降就很稳,不会出现梯度爆炸和梯度消失的问题。缺点也很明显,在0处,是一个折点,不能求导,不方便求解。
L2,绿色的线条,表示MSE(均方误差),优点:连续平滑,处处可导,方便求解;缺点:在无限小和无限大处,梯度很大甚至会存在梯度爆炸。
smooth L1,红色的线条,综合L1和L2的优点。

2.5 DIoU-NMS

在这里插入图片描述
(其中,M:表示置信度最高的框的四个参数(长、宽、中心点坐标);
Bi:表示其他的框,需要从置信度最高的框开始遍历;ε:设定的阈值)
在原始的NMS中,IoU度量被用来抑制冗余检测盒,其中重叠区域是唯一的因素,在有遮挡的情况下常常产生错误的抑制。
DIoU-NMS不仅考虑了检测区域的重叠,而且还考虑了检测区域间的中心点距离。

2.6 CmBN

在这里插入图片描述
在这里插入图片描述
作用:在批次batch size比较小的情况下,尽量保证精度下降的比较少。这样使检测器更适合于单GPU上的训练。

2.7 Self-Adversarial Training(自对抗训练)

对抗样本的定义:以图像样本为例,在原样本上加入一些轻微的扰动,使得在人眼分辨不出差别的情况下,诱导模型进行错误分类。
作用:使得训练出的模型更加鲁棒。

2.8 Eliminate grid sensitivity(网格消除敏感)

在这里插入图片描述
在这里插入图片描述
通过将sigmoid乘以一个超过1.0的因子来解决这个问题

2.9 Mish activation

在这里插入图片描述
在这里插入图片描述
理论上对负值的轻微允许允许更好的梯度流,而不是像ReLU中那样的硬零边界。
平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

2.10 CSP

在这里插入图片描述
CSPNet可以大大减少计算量,提高推理速度和准确性。

2.11 SPP

在YOLOv4中的SPP网络模型如下:
在这里插入图片描述
作用:提升模型的感受野。
参考博客:https://blog.csdn.net/weixin_42237113/article/details/109348960

感受野的概念
感受野(Receptive Field),指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。
卷积神经网络中,越深层的神经元看到的输入区域越大,即越深层的神经元的感受野越大。
所以,感受野是个相对概念,某层feature map上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域。

所以,在YOLOv4中,对主干网络CSPDarknet53后的特征采用SPP层的方式,能更有效的增加主干网络的感受野,显著的分离最重要的上下文特征。

2.12 SAM-block

在这里插入图片描述
在这里插入图片描述
Spatial Attention Module (SAM):可以改善resnet50在分类任务上提高0.5%精度,并且不增加GPU推理时间。

2.13 PAN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PAN基于FPN和Mask RCNN模型之上提出了三点创新:
①PANet改进了主干网络结构,加强了特征金字塔的结构,缩短了高低层特征融合的路径
②提出了更灵活的RoI池化。之前FPN的RoI池化只从高层特征取值,现在则在各个尺度上的特征里操作;
③预测mask的时候使用一个额外的fc支路来辅助全卷积分割支路的结果。
PANet在COCO 17实例分割竞赛中取得了第一名的成绩,在检测任务中取得了第二的成绩。

Guess you like

Origin blog.csdn.net/qq_45445740/article/details/115962430