YOLOv4: Optimal Speed and Accuracy of Object Detection
参考
Introduction
-
-
主要贡献:
- 1.一个高效、强大的目标检测模型。它使每个人都可以使用1080 Ti或2080 Ti GPU来train一个超快速和精确的目标探测器。
- 2.在detector train期间,验证了最先进的Bag-of-Freebies 和 Bag-of-Specials对目标探测方法的影响。
- 3.修改了最先进的方法,使其更加有效,并适用于单个GPU培训,包括CBN、PAN、SAM等
-
主要改进
-
1、主干特征提取网络:DarkNet53 => CSPDarkNet53 2、特征金字塔:SPP,PAN 3、大量的目标检测提点技巧:Bag of Freebies和Bag of Specials、 4、论文中提到的SAM,作者自己的源码也没有使用。
Related work
Bag of freebies
-
指不增加推理成本就能提高检测精度的方法,多指data augmentation,关于这部分,可以参考这篇一文总结YOLOv4所列的Bag of freebies总结,此处就简单列举 -
像素级
- 光学畸变:亮度、色调、对比度、饱和度、噪声
- 几何畸变:缩放、裁剪、反转、旋转
-
遮挡:遮挡操作是对输入图片进行遮挡来进行数据增强。
- Random Erase:随机擦除,随机选择一个区域,采用随机值进行覆盖,所选区域一定在图像内。
- CutOut:随机选择一个固定大小的正方形区域,像素值全部用0填充即可,但为了避免0填充对训练数据有影响,需要对训练数据进行归一化处理,norm到0,但需要注意的是,随机选择的区域可能不在图像内,也就是说正方形区域可能只有部分处理图像内,因而模拟了任意形状的擦除操作。
- Hide-and-Seek:将图像切分成S*S网络,每个网络使用一定概率进行遮挡,从而模拟出Random Erase和CutOut的效果。
但是遮挡值设置为何值比较关键,如果填0或者255都可能改变训练集的数据分布,经过计算,采用整个数据集的均值影响最小。
- GridMask:结构化drop操作,例如均匀分布地删除正方形区域,并且通过控制密度和size参数,来达到平衡,密度就是正方形个数,size就是正方形大小。避免把图像的可判别区域全部删除或者保留。
-
正则化:类似于输入图像遮挡,在特征图上丢弃某些信息的方法常叫做正则化,最终目的还是防止模型过拟合
- Dropout:在训练过程中随意按概率丢弃一些神经元,丢弃的神经元输出置0
- DropConnect:思路和Dropout类似,但是DropConnect是在训练过程中把神经元的输入权值按概率置0,由于DropConnect处理起来比Dropout麻烦,效果和Dropout差不多
- DropBlock:在卷积层一块一块地随意丢弃,迫使网络去学习到更加鲁棒的特征。
原文链接:https://blog.csdn.net/weixin_38688399/article/details/106692156
- 论文:DropBlock: A regularization method for convolutional networks
- arxiv:https://arxiv.org/pdf/1810.12890.pdf
- github源码:https://github.com/miguelvr/dropblock
-
多图数据增强:多图数据增强一般是指将多张图片融合一起的数据增强操作。
-
Mixup:Mixup就是将两张图片采用比例混合,label也按照比例混合。
- 论文:mixup: BEYOND EMPIRICAL RISK MINIMIZATION
arxiv:https://arxiv.org/pdf/1710.09412.pdf -
CutMix:CutMix是CutOut和Mixup的结合,将图片的一部分区域擦除并随机填充训练集中的其他数据区域像素值。
- 论文:CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features
arxiv:https://arxiv.org/pdf/1905.04899.pdf github源码:https://github.com/clovaai/CutMix-PyTorch -
Mosaic数据增强:YOLOv4的创新点,是CutMix的拓展,混合了四张具有不同语义信息的图片,可以让检测器检测出超乎常规语境的目标,增强鲁棒性,并减少对大的mini-batch的依赖。 -
Style Transfer GAN:通过GAN随机将物体的纹理替换,从而增强网络的学习特征能力
- 论文:ImageNet-trained cnns are biased towards texture; increasing shape bias improves accuracy and robustness
- 论文发现了一个结论:CNN训练学习到的实际是纹理特征(texture bias)而不是形状特征,这与人类的认知相反,因而通过gan引入风格化的ImageNet数据集,平衡纹理和形状偏置,提高模型的泛化能力。
-
数据分布不均衡
- two stage
- Hard Negative Example Mining
- Online Hard Example Mining
- 核心思想都是将误分类的图片再次输入网络进行训练。
- one stage
- Focal Loss
- 核心思想是降低易分类样本的下降的损失(表现为权重下降),让网络关注困难的、错分的样本。
-
类别之间没有关联
-
BBox回归
-
IOU Loss
- IOU Loss就是比较真实框与预测框交集和并集之比。
-
GIOU Loss
-
当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。 -
假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的。 -
GIOU的实现方式就是找到真实框和预测框外接的最小矩形C,用C减去真实框和预测框的并集再除以C得到一个数值,再用真实框和预测框的IOU减去这个数值得到GIOU。 -
- (三种不同相对位置的框拥有相同的IoU=0.33值,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些。)
-
DIOU Loss
-
当真实框完全包裹预测框的时候,IoU和GIoU的值都一样,此时GIoU退化为IoU, 无法区分其相对位置关系。 -
-
好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比。 -
- (上图中绿色框为目标框,黑色框为预测框,灰色框为两者的最小外界矩形框,d表示目标框和真实框的中心点距离,c表示最小外界矩形框的距离。)
-
定义为:
-
CIOU Loss
Bag of specials
Methodology
YOLOv4架构
BackBone——CSPDarknet53
-
在YOLOv3点DarkNet53的基础上,使用了CSPnet结构。此时YOLOV4当中的Darknet53被修改成了CSPDarknet53。
-
另一个点就是,激活函数由原来的Leaky ReLU改为Mish
-
作者给了CSPDarknet53在classification任务重的对比,以此来说明此backbone的性能(注:参数量、FPS等,应该是为了说明backbone前推快吧)
金字塔池化——SPP
特征金字塔——PATNet
其他改进
Mosaic数据增强
SAT——对抗训练
- 在第一阶段,神经网络改变原始图像,而不是网络权重。通过这种方式,神经网络对自身执行对抗性攻击,改变原始图像,从而产生图像上没有所需对象的欺骗。在第二阶段,训练神经网络,以正常方式在修改后的图像上检测目标
- 这个给我的感觉就是GAN的思想,分别为Generator 和 Discriminator,前者用于生成图片,后者用于检测图片是否是Generator生成的。只不过SAT这里的Generator(给我的感觉)是用来生成干扰(也就是用于data augmentation)
Cross mini-Batch Normalization(CmBN)
SAM
- Modified SAM是YOLOv4的一个创新点,称为像素注意力机制,它的思路也非常简单,就是把SAM模块的池化层全部去除,对C×H×W的特征图进行1×1卷积(既没有降通道也没有升通道),得到C×H×W的输出特征图,然后使用Sigmoid激活,再与原来的C×H×W进行像素点相乘。
PAN
性能
|