文章目录
- 1.论文
- 2.源码
- 3.内容
- 3.1介绍
- 3.2 论文内容
- 3.2.1一般目标检测结构
- 3.2.2 BOF
- 3.2.3 BoS
- 3.2.4 一般卷积网络的选择
- 3.2.5 YOLOv4的选择
- 3.2.6 注释
- 4.refer 文章
1.论文
2.源码
3.内容
3.1介绍
相比于Joe Redmon的最终作品YOLOv3,Alexey Bochkovskiy为一作的YOLOv4确实取得了非常明显的速度和准确率的提升。有人认为YOLOv4的提升更多的还是一些工程上的奇技淫巧,将最近几年内提出的用于其他模型的方法结合YOLO进行融汇贯通(单这份工作就很值得敬佩)。从数据增强,模型结构和训练方法等都进行了大量的改进,通过本文也可以了解到最近一些年提出的工程上的最佳实践(论文读下来收货颇丰)。
3.2 论文内容
3.2.1一般目标检测结构
3.2.2 BOF
We call these methods that only change the training strategy or only increase the training cost as “bag of freebies.”
1.数据增强
1. 像素级调整:调整样本的光线、亮度、饱和度、对比度等,随机加入噪声,也会进行缩放,裁剪、旋转和翻转等操作。
2. 逻辑性调整:模拟现实中的遮挡等,采用随机擦除(random erase)和CutOut等方法,比如随机选择图片的一个举行区域,全部置白或者置黑等(表现在模型的卷积层中,即针对feature map则体现为DropOut(失活一部分神经元)、DropConnect(失活一部分连接)和DropBlock(失活一整块神经元区域))。
3. 结合多张图片:一种是融合(MixUp),例如两张图片各占比%50融合为一张,再通过比例去确定训练样本的标签;另一种是剪切合并(CutMix),将一个图像的部分剪切下来覆盖到另一张图像上。
4. 图像风格迁移:风格迁移GAN(Style transfer GAN),通过生成对抗网络训练,能够将训练样本之间进行不同风格迁移,生成多样的训练数据。
2.解决样本分布失衡
调整不平衡的数据分布:
难负样本挖掘(hard negative example mining)和在线困难负样本挖掘(online hard negative example mining),
即把错误分类的负样本再次送入分类器进行训练(就像学生做错题集,错的题目多学才能提高能力),
上述两方法只对两阶段目标检测算法有效,因此YOLO不适用。
适用于一阶段目标检测平衡样本分布的方法是使用focal loss来平衡样本数量,该损失函数是对二分类交叉熵损失函数的改进。
3.标签改进
使用软标签代替硬标签(one-hot):
标签平滑(label smoothing)即用“概率”替换“是非”。
4.新的BBox检测目标函数
CIoU损失函数:传统的IoU损失函数可能会由于预测区域和实际区域之间没有交集而产生梯度消失问题,
通过在传统的IoU损失函数基础上做一些改进来避免梯度消失问题。
3.2.3 BoS
For those plugin modules and post-processing methods
that only increase the inference cost by a small amount but can significantly improve the accuracy of object detection, we call them “bag of specials”.
1. 匹配多尺度图像输入:提出了SPP,ASPP,RFP等分割特征图的方法提升模型精度(不适用于全连接层的模型),SPP在YOLOv3-608中被使用,RFB在SSD中被使用。
2. 注意力机制:又被分为channel-wise attention(代表为Squeeze-and-Excitation(SE))和point-wise attention(代表为Spatial Attention Module (SAM)),YOLOv4选择了后者,因为其开销更小。
3. 特征整合:最初的特征整合技术包括跨层连接(skip connection)和hyper-column,将底层的物理特征整合为高层的语义特征。因为FPN的流行,更多整合特征金字塔的轻量级模型被提出,例如SFAM,ASFF,BiFPN,最终目标还是实现多尺度的检测任务。
4. 激活函数改进:ReLU有效改善了tanh和sigmoid的梯度消失问题,还有很多变种LReLU,PReLU,ReLU6,SELU,Swish,hard-sWish和Mish。其中Swish和Mish都是连续可微的激活函数。
5. 后处理方法:NMS能够减少BBox对同一目标物体不好的预测框。使用DIoU-NMS通过计算预测的置信度得分和概率,对同一目标物体的预测框进行排序输出最好的一个。
3.2.4 一般卷积网络的选择
3.2.5 YOLOv4的选择
- YOLOv4的模型结构:
Backbone:CSPDarknet53
Neck:SPP,PAN
Head:YOLOv3
- 使用的BoF和BoS:
1. 对于backbone使用的BoF:
CutMix
Mosaic data augmentation
DropBlock regularization
Class label smoothing
2. 对于backbone使用的BoS:
Mish activation
Cross-stage partial connections (CSP)
Multiinput weighted residual connections (MiWRC)
1. 对于detector使用的BoF:
CIoU-loss
CmBN,DropBlock regularization
Mosaic data augmentation
self-Adversarial Training
Eliminate grid sensitivity
Using multiple anchors for a single ground truth
Cosine annealing scheduler
Optimal hyper-parameters
Random taining Shapes
2. 对于detector使用的BoS:
Mish activation
SPP-block
SAM-block
PAN path-aggregation block
DIoU-NMS。
3.2.6 注释
- CSPDarknet53即是对Darknet53应用跨阶段局部连接技术进行的模型改进;
- SPP:(Spatial Pyramid Pooling)空间金字塔池化
SPP详解 - PAN:path-aggregation block
(PANet,旨在提升基于候选区域的实例分割框架内的信息流传播,具体来说,通过自上而下的路径增强在较低层中的定位信息流,缩短底层特征和高层特征之间的信息路径,从而增强整个特征层次)
Path Aggregation Network 论文解析 - CutMix:就是将一部分区域cut掉但不填充0像素而是随机填充训练集中的其他数据的区域像素值,分类结果按一定的比例分配;
- Mosaic data augmentation:马赛克图像增强
- DropBlock regularization块正则
- Class label smoothing标签平滑
- Mish activation:Mish=x * tanh(ln(1+e^x))
- Cross-stage partial connections (CSP)跨阶段部分连接
- Multiinput weighted residual connections (MiWRC)多输入加权残差连接
- CIoU-loss:进一步增加预测box和标注box之间的重叠区域,然后最小化他们之间的中心点距离,保持box的长宽比一致
- CmBN:只在单个batch中的小mini-batch之间统计信息,CBN属于利用不同的iter数据来变相扩大batchsize从而改进模型的效果
- Mosaic data augmentation:同上
- self-Adversarial Training:SAT,有针对性的数据增强。
- Eliminate grid sensitivity
坐标预测x,y值会经过一个逻辑回归,将预测值拉倒0-1范围,所以当预测的坐标值在每一个grid的边界的时候,需要预测一个非常大的值,为了缓解这种情况,需要在激活函数前面乘上一个大于1的系数。
- Using multiple anchors for a single ground truth:单格多锚
- Cosine annealing scheduler:余弦退火模拟学习率余弦退火CosineAnnealing
- Optimal hyper-parameters:借助遗传算法选择最优超参数
- Random taining Shapes
- Mish activation:同上
- SPP-block:同上
- SAM-block
- PAN path-aggregation block:同上
- DIoU-NMS:包含了两个box之间中心点之间的距离,在最后做NMS的时候,也可以将box之间的中心点距离加入到计算中。实验结果显示对于遮挡情况鲁棒性非常强