YOLOv4简述

引言

  最精确的现代神经网络无法实时运行,需要使用大量的GPU进行大量的mini-batch-size训练。本文通过创建在常规GPU上实时运行的CNN来解决此类问题,并且该训练仅需要一个传统的GPU。
在这里插入图片描述
  本文的主要目标是在生产系统中设计一个运行速度快的目标探测器,并对并行计算进行优化,而不是设计一个低计算量的理论指标(BFLOP)。
  如图1中的YOLOv4结果所示,作者希望任何人使用传统的GPU进行训练和测试,都可以获得实时、高质量和令人信服的目标检测结果。

相关工作

  Object detection models
在这里插入图片描述
作者将检测模型总结为图2,分为Input、Backbone、Neck、Heads
  Input: Image,Patches,图像金字塔
  Backbone: VGG16,ResNet-50,SpineNet,EfficientNet-B0 / B7,CSPResNeXt50,CSPDarknet53
  Neck:
  ①Additional blocks: SPP, ASPP, RFB, SAM
  ②Path-aggregation blocks: FPN, PAN,NAS-FPN, Fully-connected FPN, BiFPN, ASFF, SFAM
  Head:
   ①Dense Prediction (one-stage): RPN, SSD, YOLO(这里我有意见,我之前了解的是YOLOv1是属于anchor free思想的,只有yolov2后的变体才开始属于anchor based思想), RetinaNet (anchor based)
   CornerNet, CenterNet, MatrixNet, FCOS (anchor free)
   ②Sparse Prediction (two-stage): Faster R-CNN,R-FCN,Mask R-CNN(anchor based)
  RepPoints(anchor free)
  Bag of freebies:通常,传统的物体检测器是离线训练的。因此,研究人员一直喜欢采用这种优势并开发出更好的训练方法,从而可以使目标检测器获得更好的精度而又不会增加推理cost。作者称这些仅改变训练策略或仅增加训练成本的方法为“Bag of freebies”。
  比如数据增强就属于这种方法,数据增强的目的是增加输入图像的可变性,从而使设计的检测模型对从不同环境获得的图像具有更高的鲁棒性。常用的数据增强方法有光度变换和几何变换,光度变换中,调整图像的亮度,对比度,色相,饱和度和噪声点;在几何变换中,添加随机缩放,裁剪,翻转和旋转。
  上面提到的数据增强方法是像素级的调整,还有一些研究人员将重点放在模拟对象遮挡问题上;
  风格迁移也可用于数据扩充,这种用法可以有效地减少CNN所学习的纹理偏差;
  还有为了解决不同类别之间存在数据不平衡的问题,这一问题通常是通过two-stage中的难分样本挖掘(hard negative example mining)来解决的,但是实例挖掘(example mining)方法不适用于one-stage目标检测器,因为这种检测器属于密集预测架构,因此《Focal loss for dense object detection》提出了焦点损失(focal loss),以解决各个类别之间存在的数据不平衡问题;
  另一个非常重要的问题是,很难用one-hot representation来表达不同类别之间的关联度,解决办法是使用label smoothing方案将硬标签转化为软标签进行训练,为了获得更好的软标签,《Label refinement network for coarse-to-fine semantic segmentation.》引入知识蒸馏的概念设计标签优化网络;
  最后一个是边界框的损失函数:传统的目标检测器通常使用均方误差(MSE)直接对BBox的中心点坐标和高度、宽度进行回归,对于基于anchor的方法,是估计相应的偏移量,然而直接估计BBox中每个点的坐标值是将这些点作为独立变量来处理,而实际上并没有考虑对象本身的完整性。为了更好的处理这个问题,《UnitBox: An advanced object detection network》提出了IoU loss,最近,研究者不断改善IoU loss,例如,GIOU loss(《Generalized intersection over union: A metric and a loss for bounding box regression.》)、 DIoU loss以及CIoU loss(《Distance-IoU Loss: Faster and better learning for bounding box regression》,都是这一篇提出来的)。
   Bag of specials:对于那些仅增加少量推理成本但可以显着提高对象检测准确性的插件模块和后处理方法,论文将其称为“Bag of specials”,一般而言,这些插件模块用于增强模型中的某些属性,例如扩大感受野,引入注意力机制或增强特征集成能力等,而后处理是用于筛选模型预测结果的方法。
  可以用来增强感受野的通用模块是SPP,ASPP和RFB;
  目标检测中常用的注意力模块主要分为通道式(channel-wise)注意力和点式(point-wise)注意力,主要有SE、SAM;
  特征集成方面,早期的实践是使用skip connection或hyper-column,随着FPN的流行,人们提出了许多集成不同特征金字塔的轻量级模块,如SFAM、 ASFF和BiFPN;
  激活函数方面有:ReLU、LReLU、PReLU、ReLU6、SELU、Swish、hard-Swish、Mish;
  后处理方法有:NMS、soft NMS(《Soft-NMS–improving object detection with one line of code》)、DIoU NMS。值得一提的是,由于后处理方法均未直接涉及捕获到的图像特征,因此在anchor free算法开发中不再需要后处理。

方法

  网络结构选择
  分类最佳的参考模型对于检测任务并非总是最佳的。与分类器相比,检测器需要满足以下条件:
  ①更大的尺寸(分辨率):输入,用于检测很多小目标
  ②更多的层:以获得更大的感受野来覆盖增大的输入图像
  ③更多的参数:为了增强从单张图像中检测出不同大小的多个对象的能力
  假设可以选择感受野较大(卷积层数为3×3)和参数量较多的模型作为backbone。表1显示了CSPResNeXt50、CSPDarknet53和EfficientNet B3的信息。CSPResNext50只包含16个卷积层3×3,425×425感受野和20.6M参数,而CSPDarknet53包含29个卷积层3×3,725×725感受野和27.6M参数。
在这里插入图片描述
  不同大小的感受野对检测效果的影响如下:
  ①达到目标大小:允许查看整个对象;
  ②达到网络大小:允许查看对象周围的上下文;
  ③超过网络大小:增加图像点和最终激活之间的联系;
  最后,本文选择了CSPDarknet53作为backbone;将SPP模块添加到CSPDarknet53上,因为它大大增加了感受野,分离出最重要的context特征,几乎不会导致降低网络运行速度;使用PANet作为来自不同backbone的参数聚合方法;再加上YOLOv3(anchor based)head作为YOLOv4架构。
  BoF和BoS的选择
  这里首先科普了很多CNN常用的方法,然后指出对于激活函数PReLU和SELU更难训练,并且ReLU6是专门为量化网络设计的,正则化(regularization)方法里,Drop-Block与其他方法比较效果较好。
  额外提升
  主要是以下三种方式:
  ①引入了一种新的数据增强方法:Mosaic, Self-Adversarial Training (SAT);
  ②在应用遗传算法时,选择最优的超参数
  ③修改了一些现有方法,使设计适合进行有效的训练和检测:改进的SAM,改进的PAN ,以及跨小批量标准化 Cross mini-Batch Normalization(CmBN)
  其中,Mosaic是一种新的混合4幅训练图像的数据增强方法,使四个不同的上下文信息被混合,如图3所示:
在这里插入图片描述
  自对抗训练(SAT)也代表了一种新的数据增强技术,它在两个前向后向阶段运行。在第一阶段,神经网络改变原始图像而不是网络权重。通过这种方式,神经网络对其自身执行对抗性攻击,改变原始图像以制造图像上没有所需对象的欺骗。在第二阶段,训练神经网络去以正常的方式在修改后的图像上检测目标。
  CmBN表示CBN的修改版本,如图4所示,定义为交叉小批量规范化(Cross mini-Batch Normalization,CMBN)。此方法仅在单个batch内的mini-batches之间收集统计信息。
在这里插入图片描述
  SAM从空间注意(spatial-wise attention)修改为点式注意(pointwise attention),如图5 所示:
在这里插入图片描述
  将PAN的shortcut connection分别替换为concatenation,如图6所示:
在这里插入图片描述
  YOLOv4
  总结来说,YOLOv4的组成:
  Backbone: CSPDarknet53
  Neck: SPP, PAN
  Head: YOLOv3
  BoF for backbone:CutMix and Mosaic data augmentation,DropBlock regularization,Class label smoothing
  BoS for backbone:Mish activation,Cross-stage partial connections (CSP),Multi-input weighted residual connections (MiWRC)
  BoF for detector: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 training shapes
  BoS for detector:Mish activation,SPP-block,SAM-block,PAN path-aggregation block,DIoU-NMS

实验

  本文在ImageNet (ILSVRC 2012 Val)数据集上测试了不同训练改进技术对分类器精度的影响,然后在MS Coco(test-dev 2017)数据集上测试了不同训练改进技术对检测器精度的影响。
  为研究不同技巧(原文用的是feature,但后面举的实例我认为是方法)对分类器训练的影响,具体来说是class label smoothing的影响,不同数据增强技术的影响,双边模糊(bilateral blurring),MixUp, CutMix和Mosaic以及不同激活的影响,如Leaky-ReLU(默认),Swish和Mish。如图7所示:
在这里插入图片描述
  实验结果如表2和表3所示,通过引入诸如:CutMix和Mosaic数据增强、class label smoothing和Mish激活等特征,提高了分类器的精度。
在这里插入图片描述
  进一步探寻不同技巧对探测器的训练影响,如表4和表5所示:
在这里插入图片描述
在这里插入图片描述
  研究不同backbone和预训练权重对检测器训练的影响结果,如表6所示:
在这里插入图片描述
  最后不同 mini-batch size 对检测训练的影响结果如表7所示:
在这里插入图片描述
  YOLOv4与其他模型的效果对比如图8:
在这里插入图片描述

总结

  这篇论文很有创新性,但又很有综述性。论文包含很多知识点,但又不会让我对知识点不了解而影响阅读,论文把目标检测分成四部分Input、Backbone、Neck、Heads来讲,总结了近几年大量的深度学习tricks,组合试验。
  论文的创新点在于:Mosaic数据增强;Self-Adversarial Training(SAT, 自对抗训练);跨最小批的归一化(Cross mini-batch Normal),在CBN的基础上改进;修改SAM,从SAM的逐空间的attention,到逐点的attention;修改PAN,把通道从addition改变为concatenation。
  论文里还提到:具有最佳分类精度的模型在检测器精度方面并不总是最佳。尽管与CSPDarknet53模型相比,CSPResNeXt50模型的分类精度更高,但CSPDarknet53模型在目标检测方面显示出更高的精确度。
  还有一点有争议,论文里将YOLO(而且原文参考文献也链接到了v1)列入了anchor-based,但我经了解,YOLOv1是anchor-free,而v2和v3才是anchor-based。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值