【论文阅读笔记】Yolov4:Optimal Speed and Accuracy of Object Detection

论文地址:YOLOv4

论文总结

  yolov4并没提出什么创新性的东西,论文中更多的是将当前目标检测各方向的方法进行了个汇合,比如数据增强、网络结构等。经过试验后,作者选出一组其认为适用的方法组合,通过结合各种tricks得到的特征得到一个好结果。其目标是一个能较高效率应用于GPU上的网络,而不是一些参数,比如BFLOPs。

方法介绍

Bag of freebies

  Bag of freebies(Bof),表示的是那些只通过改变训练策略或只增加训练成本的方法,即不添加推理时间。目标检测的Bof方法一般是数据增强,即增加输入的多样性,比如光照变形,几何变形等。

  光照变形和几何变形是pixel-wise的数据增强,有一些数据增强时针对目标遮挡问题的,比如random erasecutout。这两种方法可以随机选择方形区域填充随机值或0。

  Drop方法是feature map上随机补0的体现,比如DropOut,DropConnect,DropBlock方法。

  MixUp使用不同权重系数把两张图片进行加权和,且依据权重系数来调整标签。CutMix将裁剪后的图片覆盖到其他图像的矩阵区域,并对这块覆盖区域进行标签的调整。style transfer GAN用于降低CNN的纹理偏差。

  有一些工作致力于数据集中的语义分布偏差问题,其中一个非常重要问题是类别不平衡问题。这问题一般在two-stage中通过硬负样本缩减(hard negative example mining)完成,但这需要在密集预测框架中才能使用,不适用于one-stage检测器。one-stage检测器可用focal loss解决该问题。另一个非常重要的问题为,one-shot编码难以辨识不同类别间的关联度,其将不同类别之间视为间距相等的对象,这是不合常理的。label 平滑方法将hard label 转成soft label。Islam 使用知识蒸馏来设计label refinement network

  损失函数方面,对于Bounding Box的回归问题,传统的目标检测使用MSE损失函数来直接回归BBox( x c e n t e r , y c e n t e r , w , h x_{center}, y_{center}, w, h xcenter,ycenter,w,h)或( x t o p _ l e f t , y t o p _ l e f t , x b o t t o m _ r i g h t , x b o t t o m _ l e f t x_{top\_left},y_{top\_left},x_{bottom\_right}, x_{bottom\_left} xtop_leftytop_leftxbottom_rightxbottom_left),但这种单独回归bbox点的值,没有考虑对象的完整性。所以,有一些文章就将目标瞄向了IoU上。IoU是与对象大小无关的,所以其更能精确地衡量不同目标的尺寸问题。IoU-Net提出了最基本的IoU loss,其提出了基于IoU的回归方法。而GIoU包括了目标形状和方向信息,它们提议使用找到最小区域的BBox,可以同时覆盖预测BBox和Gt bbox,用这个BBox作为分母,取代IoU loss原来使用的分母。DIoU loss考虑了目标的中心距离;CIoU loss同时考虑了重叠区域中心点之间的距离和宽高比。在BBox的回归问题上,CIoU可以取得更好的收敛速度和精度

Bag of specials

  Bag of specials(Bos),只增加少量推理成本,但能显著增加检测精度的插件模块和后处理方法。插件模块一般为加强特定属性,比如增大感受野,引入attention机制,加强特征集成表达能力。后处理方法,是筛选模型检测结果的一种方法。

  一般加强感受野的通用模块有SPP,ASPP和RFBSE module在Imagenet上能提高ResNet 1 % 1\% 1%的精度,增加了 2 % 2\% 2%的计算量。但在单个GPU上增加推理成本为 10 % 10\% 10%,因此作者认为这可能更适用于移动设备。对于SAM只需要 0.1 % 0.1\% 0.1%额外计算就能增加ResNet50-SE 0.5 % 0.5\% 0.5%的top-1精度。SAM最好的一面是其不会影响GPU的运行速度。

  在特征融合方面,一开始使用的是skip connection来完成low-level物理信息和high-level语义信息的融合。在多尺度预测方法,比如FPN变得就行之后,有越来越多light-weight的模块来集成不同的特征。SFAM利用SE模块来为multi-scale concatenated feature maps赋予权重。BiFPN对多个输入feature maps进行标量权重的re-weight(然后论文说有多个尺度,但EfficientDet论文中最后采用了标量的weight)。

  在激活函数方面,有ReLU、LReLU、PReLU、ReLU6、SELU、Swish、hard-Swish和Mish。其中ReLU6和hard-swish是为量化网络设计的SELU、swish和Mish是连续可微的

  常见的BBox后处理是NMS,NMS的改进和优化函数是一致的。soft-NMS考虑置信度随着IoU下降的问题;DIoU NMS在soft-NMS上添加了中心点距离的信息。由于后处理方法都没有直接使用image features,所以在anchor free方法中不再需要后处理方案。

论文框架

  Yolov4的基本目标是可以快速运行的神经网络,可以并行计算的优化,而不是低计算量理论指标(BFLOPs)。
  对于GPU,作者选择数组卷积层(1-8):CSPResNeXt50/CSPDarknet53
  对于VPU,作者选择group conv,但作者避免使用SE blocks,特别是以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3;

模型架构的选择

  目标是在输入分辨率,channel 数,卷积层数量,参数数量中找到最优平衡。在Imagenet(分类)上 ,CSPResNext50较好;在COCO(目标检测)上,CSPDarknet较好。
  下一个目标是选择额外的增强感受野的块,比如FPN、PAN、ASFF、BiFPN。

  对于分类较好的网络并不总是在检测器中表现良好。与分类不同,检测器更需要如下特征:

  1. 更高的网络输入分辨率,为了检测更小的对象;
  2. 更多的layers,以覆盖更大的Input,带来更大的感受野;
  3. 更多的参数,以产生更大容量的模型,去检测单张图片的不同size的多个对象;

  总的来说,检测器的backbone需要更大的感受野(大量的3x3)和大量的参数。由下图可以得知,CSPDarknet53更适合作为检测器的backbone

  不同感受野带来的影响可以总结如下:

  • 达到目标大小,可以看到整个目标;
  • 达到网络大小,可以看到目标的背景;
  • 超过网络大小,增加了图像的点到最后激活值之间联系;

  为了增加感受野,作者添加SPP模块在CSPDarknet53上。作者认为SPP的添加可以分离最重要的上下文特征,且基本不会增加网络运行时间。

  最后模型的组成,作者选择CSPDarknet53作为backbone,SPP addtional module, PANet作为特征集成器(neck),Yolov3的detector head组成Yolov4的模型结构。

  之所以不适用CGBN和SyncBN之类的东西,是因为作者想让网络可以训练和检测在普通的GPU上,让大家都可以有一个较好的结果。。。

BoF和BoS的选择

  由于PReLU和SELU较难训练,ReLU6为量化设计,所以这些激活函数不在选择范围内。而DropBlock方法提出的论文做了详细的比较,所以直接选择DropBlock方法。而模型选择的目标之一值在单个GPU上训练,所以syncBN也不在考虑之内。

Additional improvements
  • 引入数据增强方法Moosaic自对抗训练(Self-Adversarial Training,SAT)
  • 应用遗传算法找最优超参数;
  • 一些现存方法的修改:modified SAM,modified PAN, Cross mini-Batch Normalization(CmBN)

  Mosaic提出mixes4张训练图片的数据增强方法,因此mixes了4个不同的上下文信息;而CutMix只Mix了两张输入图片。Mosaic是拼接图片,CutMix是覆盖图片。这允许目标对象增强背景信息。此外,Mosaic的应用该减少了BN层所需要更大mini-batch的需求。Mosaic方法表现如下图所示。

  SAT是一种新的数据增强技术,暂不了解,不乱下定论了。
  CmBN是CBN的修改版本,如下图所示。

  修改的SAM方法地方为spatial-wise attention改为point-wise attention修改的PAN的地方为shortcut conection改为concat;如下图所示。

YOLOv4

  Yolov4网络的组成

  • Backbone:CSPDarknet53
  • Neck:SPP,PAN
  • Head:YOLOv3

  使用的策略

  • Bag of Freebies (BoF) for backbone:CutMix和Mosaic 数据增强,DropBlock 正则化,类别标签平滑(class label smoothing)
  • Bag of Specials (BoS) for backbone:Mish 激活函数,Cross-stage partial conections(CSP),Multi-input weighted residual connections(MiWRC)
  • Bag of Freebies (BoF) for detector:CIoU-loss,CmBN,DropBlock 正则化,Mosaic 数据增强,SAT, Eliminate grid sensitivity, Using multiple anchors for a single ground truth,Cosine anneling shceduler,Optimal hyper-parameters,Random training shape。
  • Bag of Freebies (BoF) for detector:Mish 激活函数,SPP-block,SAM-block,PAN 特征集成,DIoU-NMS。

论文实验

  BoS实验,使用一样的超参数;BoF实验,使用更多 50 % 50\% 50%的训练周期。
  在BoF实验中,验证MixUp,CutMix,Mosaic,Bluring 数据增强和类别表情平滑正则化方法。在BoS试验中,比较LReLU,Swish和Mish激活函数。

Influence of different features on Classifier training

  不同特征对分类器训练的影响:类别表情平滑,不同的数据增强技术,bilateral blurring(双边模糊),MixUp,CutMix和Mosaic。不同方法如下图所示,实验如下表所示。

  从实验结果,可以得出以下结论:MixUp,Blurring,Swish方法不好用,CutMix,Mosaic,Label Smoothing和Mish方法有效;

Influence of different features on Detector training

  BoF-detector的训练实验列表如下图所示,实验结果如下表所示:

  BoS-detector的训练结果如下表所示:

Influence of different backbones and pretrained weightings on Detector training

  结论:分类准确率搞的,应用在检测器上不一定准确率搞
  CSPResNext50使用BoF和Mish在分类训练中应用会提升准确率,但将分类训练的预训练权重应用到检测训练上,会降低检测准确度。但用CSPDarkNet53却都能提升,如果也使用分类训练的预训练权重的话。这是因为CSPDarknet53更是英语检测器,CSPDark53展现了其强大的增强检测器准确率的能力。实验结果如下图所示:

Influence of different minibatch size on Detector training

  从下表的实验数据可以看出,对于检测器来说batch确实是有影响的,但增加了BoF/BoS方法后就没有影响了。因此可以得出结论:使用BoF/BoS方法,使用便宜的GPU也可以进行训练了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值