YOLO系列文章阅读--yolov4

Abstract

大概就是说很多trick只会在某些模型或者某个场景效果好加了会让模型效果好,而有些特性,如批处理规范化(BN)和残差连接(residual-connect)。然后这里用了Weighted-Residual-Connections (WRC)加权残差连接,Cross-Stage-Partial-connections (CSP)跨阶段部分连接, Cross mini-Batch Normalization (CmBN)小批处理, Self-adversarial-training (SAT) 自对抗训练and Mish-activation激活.

Introduction

大概就说了,速度快准确,大家都用的起,配置随便搞搞就好了。

Related work

Obeject detection models

其实就是综述一下,现代的检测器通常由两个部分组成,一个是在ImageNet上预先训练的主干网络,一个是用于预测对象的类别和bounding box的回归的头部。对于头部部分,通常分为一步目标检测器和二步目标检测器两种。对于一步二步看下下面的图就知道了。
YOLO系列文章阅读--yolov4_第1张图片
近年来,无锚单步目标检测器得到了发展。这类探测器是CenterNet , cornnet, FCOS等。
近年来发展起来的目标检测器通常在主干和头部之间插入一些层,这些层通常用于收集不同阶段的特征图。我们可以称之为物体探测器的颈部通常,一个颈由多条自底向上的路径和多条自顶向下的路径组成。具有该机制的网络包括:特征金字塔网络(FPN)、路径聚合网络(PAN)、BiFPN和NAS-FPN。

Bag of freebis

什么是Bof呢?传统的物体检测器是离线训练的,因此,研究人员总是喜欢利用这一优势,开发更好的训练方法,使目标检测器在不增加推理成本的情况下获得更好的精度。把这些只改变训练策略或只增加训练成本的方法称为“Bag of freebis”。
最常用的就是数据增强(data augmentation)。数据增强的目的是增加输入图像的多样性,使所设计的目标检测模型对来自不同环境的图像具有更高的鲁棒性。 一些数据增强方法为按像素调整,并保留调整区域内的所有原始像素信息;还有一些数据增强是模拟物体遮挡(例如,随机擦除呀,cutout呀)。
还有一些BoF呢,是解决数据集中的语义分布可能存在的偏差。在处理这类问题的时候啊,一个关键点在于,不同类之间的存在数据不平衡的问题。这一问题通常通过两步目标检测器中的hard negative example mining 或online hard example mining来解决。但由于一级目标检测器属于密集预测体系结构,因此example mining method不适用于这种检测器。因此有人提出了focal loss来处理不同类之间存在的数据不平衡的问题。
最后一个BoF,是关于Bouding box 的回归问题。传统的目标检测器通常采用均方误差(MSE)直接对BBox的中心点坐标和高度宽度进行回归(或者左上点和右下点)。而anchor-based的方法,则是估计相应的偏移量。但是,要直接估计BBox各点的坐标值是把这些点看作自变量,但实际上并不考虑对象本身的完整性。 这里引入IOU loss来完成计算。由于IoU是尺度不变表示,可以解决传统方法计算{x, y, w, h}的l1或l2损失时,损失随尺度增大而增大的问题。

Bag of specials

那什么又是BoS呢?对于那些只增加了少量推理成本但却能显著提高目标检测精度的插件模块和后处理方法。一般来说,这些插件模块是为了增强模型中的某些属性,如扩大感受野(SPP、ASPP、RFP),引入注意机制,或增强特征集成能力等,后处理是一种筛选模型预测结果的方法。
在目标检测中经常使用的注意模块主要分为通道注意和点注意,这两种注意模型的代表分别是挤压激励(squeeze -and- stimulation, SE)和空间注意模块(Spatial attention module, SAM)。
在深度学习的研究中,一些人把研究重点放在寻找好的激活函数上。一个好的激活函数可以使梯度更有效地传播,同时也不会造成过多的额外计算成本
在基于深度学习的对象检测中,常用的后处理方法是NMS,它可以过滤对同一对象预测不佳的bbox,只保留响应较高的候选bbox。NMS试图改进的方法与优化目标函数的方法是一致的。NMS提出的原始方法没有考虑上下文信息,因此Girshick等人在R-CNN中添加了分类置信度作为参考,根据置信度评分的顺序,按照评分由高到低的顺序进行贪婪NMS。对于soft-NMS,考虑了在IoU评分的贪婪NMS中,对象的遮挡可能导致信任评分下降的问题。DIoU NMS开发者的思路是在soft-NMS的基础上,将中心点的距离的信息添加到BBox筛选过程中。值得一提的是,由于上述后处理方法都没有直接引用捕获的图像特征,因此在后续开发无锚方法时不再需要进行后处理。

Methodology

最适合分类任务的模型并不总是最适合检测器。与分类器相比,检测器需要以下条件:

  • 更高的输入网络大小(分辨率)-用于检测多个小尺寸对象
  • 更多的层-以便拥有更高的感受野以覆盖增加的输入网络的大小
  • 更多的参数-以便更好地让一个模型检测多个不同大小的对象在一个单一的图像

不同大小的感受野的影响总结如下:

  • up to 对象大小-允许查看整个对象
  • up to 网络大小-允许查看对象周围的上下文
  • 超过网络大小——增加图像点和最终激活之间的连接数量
    本文在CSPDarknet53上添加了SPP块,因为它显著增加了接受域,分离出了最重要的上下文特征,并且几乎没有导致网络运行速度的降低。我们没有采用YOLOv3中的FPN,而是采用PANet作为来自不同骨干层的不同检测器级别的参数聚合方法。
    最后,我们选择了CSPDarknet53主干、SPP附加模块、PANet路径聚合颈和YOLOv3(基于有锚的)头作为yolo4的体系结构。

CNN常使用的提高检测训练的方法
YOLO系列文章阅读--yolov4_第2张图片

Additional improvements

为了使所设计的检测器更适合在单一GPU上训练,我们做了如下额外的设计和改进:

  • 引入了一种新的数据增强拼接方法和自对抗训练(SAT)
  • 利用遗传算法选择最优超参数
  • 我们修改了一些现有的方法,使我们的设计有效的训练和检测,改进SAM、改进PAN和交叉小批归一化(CmBN)
    **自我对抗训练(SAT)**也是一种新的数据增强技术,它分为前后两个阶段。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自己执行了一种对抗性攻击,改变原始图像,从而产生图像上没有目标的错觉。第二阶段训练神经网络以正常的方式对修改后的图像进行目标检测

YOLOv4总体结构:
YOLO系列文章阅读--yolov4_第3张图片

YOLOv4使用的tricks
YOLO系列文章阅读--yolov4_第4张图片

你可能感兴趣的:(计算机视觉)