如有排版问题,可知乎查看:zhihu.com/column/c_1255545721723191296
一、目标检测概述
图像数据处理最初是采用传统机器学习方法,随着数据量的持续攀升和应用场景的日益多元化,传统机器学习的不足逐渐显现:一方面,机器学习需要人工设计特征,场景一旦发生变化,可能就需要重新构建特征,比如检测图像中的人脸和检测售货机中的商品,可能需要的特征就存在较大的差异;另一方面,尽管数据量在持续增加,但是机器学习本身的性能不再随着数据量的上升而有大的改观,无法更加充分地利用海量数据。2012年AlexNet[1]一举以巨大优势夺得ImageNet挑战赛的冠军,深度学习重新进入人们的视线,依靠强大的算力、大规模的标注数据集和不断改进的算法,深度神经网络逐渐在众多领域取代传统的机器学习方法。
图1-1: 图像基础任务
图像视频领域的基础任务主要包括分类、检测和分割 (包括语义分割和实例分割)等,如图1-1所示,其他的图像或视频任务大多基于这三大任务,或是对其提取的特征进行进一步处理,或是对其得出的结果进行进一步识别与分析。图像分类任务是判断一张图像中目标所属的类别;目标检测不仅要判断图像中存在何种类别的物体,还要给出物体所在的位置(一般用矩形框表示)。目标分割则是像素级别的分类,对每个像素判断是否属于某个给定的类别。可见目标检测任务承上启下,既包含图像分类任务,也蕴含着目标分割任务的方法。
目标检测在诸多场景都具有非常重要的应用价值。在自动驾驶领域,目标检测毫无疑问是其核心技术之一。要想实现自动驾驶,车辆首先需要具备感知能力,清晰地知晓车辆周边都存在哪些目标(比如机动车、非机动车、行人、建筑物、红绿灯等),不仅要识别出目标的类别,而且要尽可能准确地判别出目标的位置和大小,这样才可以更好地指导随后的决策阶段;在此基础上,根据周边的目标分布情况,由决策部分进行路径规划、速度推算等过程;最后,将决策结果传递给执行结构进行执行,驱动车轮进行移动和转向,以真正实现无人驾驶。在智慧交通领域,首先通过目标检测获取当前场景中存在的目标,然后结合实际的场景,综合利用全局信息,更好地指导交通,提高通行效率,优化道路使用。在视频监控领域,可以先通过目标检测识别出人物、车辆等目标,为随后的行人重识别、行人属性识别等任务提供基础,以便进行罪犯的搜捕、走失儿童的寻觅等任务,具有重要的社会价值和现实意义。
二、目标检测骨架模型
目标检测任务的首要步骤是使用特征提取网络(一般称为骨架模型,backbone)进行特征提取,后续的处理过程都要基于提取到的特征来进行。目标检测的骨架模型通常是采用图像分类模型,也有部分工作针对目标检测任务进行专门的设计。
2.1 基于分类模型
基础图像分类模型大致有几个研究方向,彼此之间也存在一定的交叉与融合。首先是深度方向,通常而言,卷积神经网络的深度与其特征提取能力成正比,网络越深,进行分类和检测的效果越好。从AlexNet[1]到VGGNet[31],GoogLeNet[32],ResNet[33]等,科研者一直致力于构建更深的神经网络。然后是宽度方向,从GoogLeNet开始的Inception系列,都是卷积神经网络宽度方向研究的代表。接下来是轻量化方向,很多实际应用场景存在诸多限制,如模型速度和存储空间等要求,为了满足实时性或应用于手机等终端设备的需求,轻量化网络开始发展,典型代表有ShuffleNet[30]、MobileNet[34]等。还有一类模型是从特征融合的角度入手,通过对特征的处理提升网络的性能,这方面主要是DenseNet[35]和SENet[36]。
图2-1 AlexNet网络结构[1]
Alexnet[1]在2012年大幅领先其他方法,摘得了ImageNet挑战赛的桂冠。模型使用了5个卷积层,后面接3个全连接层,并使用ReLU激活函数,而且通过数据增强和dropout的正则化方法有效缓解了全连接层的过拟合现象。其网络结构如图2-1所示。
VGG[31]核心思想是使用更小的卷积核,比如5x5的卷积核相当于两个级联的3x3卷积核,7x7的卷积核则可以用三个级联的3x3卷积核表示。通过小卷积核的替换,一方面可以减少参数量,另一方面,层数变多,提高了了网络的非线性能力。
图2-2 Inception v1模块[32]
GoogLeNet[32]的初始想法是用多个不同类型的卷积核代替一个3x3的小卷积核,这样做的好处是可以使提取出来的特征具有多样化,并且特征之间的相互关系不会很大,最后将特征图连接起来使网络做得很宽,然后堆叠此模块将网络变深。但仅仅简单这么做会使一层的计算量爆炸式增长。解决办法就是在插入1x1卷积核进行降维,于是便有了Inception v1的版本,如图2-2所示。
图2-3 ResNet残差模块[33]
ResNet[33]针对梯度消失和网络退化问题提出残差学习的思想,在每个残差模块中使用跨层连接解决了深度模型优化难的问题,最终使得网络可以进一步加深直到上千层。残差网络的基本模块如图2-3所示。
图2-4 DenseNet网络结构[35]
DenseNet[35]使用密集连接的方式,每一层都与之前的所有层进行连接,然后将特征进行拼接,有效的实现了特征的重用,并使得网络更容易训练。模型中增长率较小,从而可以减小模型的宽度,实现减少参数和计算量的目的。另外,由于最后的误差信号可以直接传递到每层,实现了隐式的深度监督,其网络结构如图2-4所示。
图2-5 通道重组[30]
ShuffleNet[30]主要用于计算资源受限的移动设备,使用逐点组卷积、通道重组和深度可分离卷积代替ResNet模块的相应层构成了基本的ShuffleNet单元模块。通道重组解决了多个组卷积叠加出现的边界效应,逐点组卷积和深度可分离卷积减少了计算量。通道重组过程如图2-5所示。
2.2 检测专门设计
目标检测和图像分类任务存在一定的差异:
- 分类和检测任务不同,因此用分类数据上训练的分类模型来提取特征用于检测任务不一定合适,比如检测任务比较关注目标的尺度特征,但是分类任务就不一定。
- 检测任务不仅仅要做目标的分类,而且要做目标的定位,这样的差异容易导致一些问题,比如在分类网络中常用的降采样操作可能对分类有效,因为增大了感受野,但是对于需要定位目标的检测任务而言就不一定有利,因为丢失了目标的位置信息。
所以也有一些工作,根据目标检测任务的特点,专门设计骨架模型,相关工作主要有DarkNet[7,8]、PeleeNet[37]、DetNet[38]等。
DetNet的核心点是目标检测专门设计的backbone,高层不减小分辨率 空洞卷积 减小网络高层的宽度。其主要贡献为,增加网络高层输出特征的分辨率,即高层不对特征图做尺寸缩减;引入dilated卷积层增加网络高层的感受野,这是因为第一个改进点引起的感受野减小;减小网络高层的宽度,减少因增大分辨率带来的计算量。
图2-6 DetNet设计思想
如果网络高层的特征不做像分类网络那样多的降采样(将stride等于32修改为stride等于16)会带来两个问题:增加计算量;高层的感受野减小。感受野和信息丢失类似跷跷板,既然前面选择了尽可能减少高层的特征信息丢失,那么感受野减小也是情理之中。针对问题1,主要是降低了网络高层的宽度,如图2-7D,高层的几个stage的每个block的输入特征通道都是256。而常见的分类算法中,比如ResNet越往高层的stage,特征通道数往往越大;针对问题2,主要引入dilated卷积层来增大感受野,如图A和B所示,通过对比ResNet网络的residual block(图C)可以看出主要是替换了传统的3*3卷积为dilated卷积层。因此下图中的A和B是DetNet网络中的基础结构(图D所示)。
图2-7 DetNet结构
三、目标检测方法
目标检测吸引着无数杰出的研究者深入探究,传统机器学习阶段,维奥拉-琼斯[2]算法采用积分图和Adaboost分类器进行目标检测;方向梯度直方图[3]先提取方向梯度特征,随后用支持向量机进行分类,应用于行人检测任务;可变形部件模型[4] 则通过局部和全局匹配的方式,取得了良好的性能。
随后深度学习开始重新崛起,逐渐在目标检测领域崭露头角,并持续性发展,最终在整个目标检测领域占据绝对的统治性地位。单阶段与两阶段方法构筑了以深度学习为基础的目标检测新范式,单阶段方法比如SSD[5]、YOLO[6,7,8]、RetinaNet[9]等,优点是速度较快,但是精度却相对较差;两阶段方法比如R-CNN[10,11,12,13,14,15]系列等,其优劣恰好与单阶段方法相反,精度较好,但是速度较慢。近期也有一些工作结合二者的优势来构建目标检测模型,如RON[16]、RefineDet[17]等。
值得注意的是,从Faster R-CNN[12]开始,引入了锚框机制,即在特征网络提取的特征图上每个像素点设置预定义的指定大小、数量和长宽比的先验候选框,这样使模型学习的过程更加简单,只需学习检测框和先验框之间的偏移量,而不用回归整个目标检测框,在效果上也取得了较大的突破。随后的绝大部分优秀的目标检测算法,无论是单阶段方法如YOLO系列、SSD,还是两阶段方法如R-FCN[13]、FPN[14]、Mask R-CNN[15]等,都采用了锚框的策略,这使得目标检测的效果不断提升。虽然锚框机制有其优势,但也存在较大弊端:(1)锚框需要预先定义,引入了过多的超参数,不同的数据集可能需要的锚框尺寸、数量和长宽比都不尽相同,给模型训练增添了很多的工作量;(2)大部分锚框对应区域其实是背景区域,这些锚框的存在增加了大量的冗余计算,从而使得模型的速度变慢;(3)部分狭长型目标如杯子、船体等,以及图像中的某些目标,可能旋转了一定角度,都给锚框的设置带来较大的困难。
虽然之前就有UnitBox[18]、DenseBox[19]、YOLO v1[6]等不使用锚框的方法,但是并未引起人们的重视。CornerNet[20]摒弃锚框、采用关键点来进行目标检测,启发了大量不采用锚框的优秀工作,如ExtremeNet[21]、CenterNet(目标即点)[22]、FCOS[23]、FSAF[24]、FoveaBox[25]、CenterNet(关键点三元组)[26]、CornerNet-Lite[27]、GA-RPN[28]等。
3.1 传统方法目标检测
作为一个经典的图像任务,在深度学习重新兴起之前,目标检测也有很多优秀的算法。
图3-1 维奥拉-琼斯算法[2]
维奥拉-琼斯[2]算法利用积分图特征来进行,并使用Adaboost分类器, 通过简单直接的检测方式---滑动窗口,首次实现了人脸的实时检测,如同3-1所示,但是当时算力有限,为了达到实时使用了三项技术:
- 积分图是一种计算方法,可以加速框过滤或卷积过程。在维奥拉-琼斯检测器中使用哈尔小波作为图像的特征表示。积分图像使得维奥拉-琼斯检测器中每个窗口的计算复杂度与其窗口的尺度无关。
- 特征选择并没有使用手动选择的哈尔基过滤器,而是使用Adaboost算法从一组巨大的随机特征集合(180k维)中选择一组对人脸检测最有帮助的特征。
- 维奥拉-琼斯检测器引入了多级检测范式(又称“检测级联”),通过减少对背景窗口的计算,从而更多地对人脸目标进行计算,继而减少了计算开销。
方向梯度直方图[3]特征描述器主要用于行人检测,也可以用于检测其他对象。为了平衡特征不变性(包括平移、尺度、光照等)和非线性(区分不同目标类别),将方向梯度描述符设计为在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化来提高精度。为了检测不同大小的对象,方向梯度直方图检测器在保持检测窗口大小不变的情况下,对输入图像进行多次缩放,通过对行人目标区域提取方向梯度直方图特征,然后借助支持向量机进行分类。
图3-2 可变形部件模型[21]
可变形部件模型[4]是方向梯度直方图特征的一个变种和改进,采用局部和全局匹配的方式,提高了人工特征的精度,其方法如图3-2所示。可变形部件模型最初是方向梯度检测器的扩展,随后由Girshick等人作了一系列改进。可变形部件模型遵循“分而治之”的检测思想,训练可以简单地看作是学习分解对象的恰当方式,推理可以看作是对目标不同部分检测的集合。一个典型的可变形部件模型检测器由一个根滤波器和一定数量的子滤波器组成。基于可变形部件模型的弱监督学习方法不需要手工指定子滤波器的配置(如尺寸和位置),而是将子滤波器的所有配置作为潜变量自动学习。Girshick等人将此过程进一步表示为多实例学习的一个特例,并应用了“难例挖掘”、“边界框回归”和“上下文编辑”等重要技术来提高检测精度。
传统的目标检测方法存在的最大弊端是需要人工去手动设计特征,这需要特征设计者具有丰富的经验,而且场景一旦变换,特征就需要重新设计,十分费时费力;此外,特征设计较为复杂,很难覆盖各种实际的场景,效果也不是很好。随着技术的不断进步,传统目标检测方法遭遇瓶颈,可变形部件模型似乎已经是目标检测任务的巅峰。虽然相比之前的方法有较大地改进,但是相对目标检测任务来说,检测精度还相差甚远。
3.2 深度学习目标检测
随着深度学习的重新崛起,算力的提高、算法研究的发展以及大量的标注数据集的出现(如Pascal VOC和MSCOCO等),研究者提出了很多基于深度学习的目标检测模型,这些模型通常可以分为两类——两阶段目标检测模型和单阶段目标检测模型(另一种分类方法是根据是否使用anchor)。
单阶段目标检测器并不需要像两阶段检测器那样,首先生成区域建议框,而是通过卷积一步完成分类和回归,得到检测结果。其演进大致如下:OverFeat—>YOLOv1—>SSD—>DSSD —>YOLOv2—>RetinaNet—>DSOD—>YOLOv3—>RefineDet—>RFBNet-> M2Det—>Consistent Optimization。
OverFeat[42]使用滑动窗口技术生成大量的目标候选框,以覆盖图像的各种可能存在物体的位置和尺度。之前手工计算的特征往往与输入图像有更大的语义差距,而深度神经网络可以从图像中学习更复杂的特征。
YOLO系列[6,7,8]完全摒弃了之前先提取区域候选、然后进行修正的思路,直接对整张图像应用卷积神经网络,该网络将图像分割成多个区域,同时预测每个区域是否存在目标,以及对应的边界框和置信度。相比两阶段检测器,YOLO定位精度较差,尤其是对于小目标,随后的v2、v3版本都在尝试解决这个问题。YOLO v2主要是引入一些新的技术如BN、锚框机制等提升模型的性能,并提出YOLO9000。YOLO v3借鉴ResNet中残差连接的思想,提出了DarkNet53的网络结构,然后借鉴FPN构建多尺度检测,融合浅层与深层的信息,并使用Sigmoid代替Softmax以支持多标签预测。
图3-3 SSD网络结构[5]
SSD[5]算法采用多尺度检测的方式,将VGG16模型进行改造,删去最后的全连接层,将FC6和FC7用卷积层Conv6、Conv7代替,并添加Conv8、Conv9、Conv10、Conv11作为新的检测层添加,构建六个尺度的目标检测模型,对应的特征图大小依次为3838,1919,1010,55,33,11,每个尺度上分别放置4或6个锚框,以尽可能覆盖全图的目标。其网络结构如图3-3所示,输入图像经过VGG骨架网络首先进行特征提取,得到基础特征图,然后对应六个尺度,直接进行分类和回归得到对应数量的结果。网络的浅层特征图用来处理小目标,深层特征图则负责检出大目标,极大地提高了多尺度目标的检测率。
图3-4 RetinaNet[9]
RetinaNet[9]提出Focal Loss,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本,并给予正负样本不同的权重,以缓解正负样本不平衡问题,其模型结构如图3-4所示。单阶段检测器效果比两阶段检测器差,主要问题在于检测器训练时正负样本的极度不平衡,严重限制着目标检测的性能。而在线难例挖掘技术虽然基本平衡了正负样本的比例,使得模型的性能得到了很大的提升,但是并没有充分利用训练数据,仅仅考虑了一部分困难负样本,其他负样本没有参与训练。Focal loss考虑了所有训练样本,对不同的正负样本采用不同的参数来加权训练,取得了更好的效果。
图3-5 RFBNet[43]
RFBNet[43]从人类视觉系统中的感受野结构得到启发, 通过引入人工设计的机制,即感受野模块来增强轻量级网络的特征表示。其模型结构如图3-5所示,RFB模块模拟了感受野的大小和偏心率之间的关系,从而产生出更具辨别力和鲁棒性的特征。感受野模块可以设置在基于轻量级卷积网络的顶部,在保留了轻量级模型处理速度优势的同时, 取得了可以与最新检测框架相媲美的检测精度。
图3-6 RefineDet[17]
RefineDet[17]融合了单阶段和两阶段方法的优势,构建了锚框优化模块、连接模块和目标检测模块,首先通过锚框优化模块对锚框进行初步的分类和回归,然后,通过连接模块,构建类FPN结构进行特征融合,使用目标检测模块完成检测,提升了锚框的精度,并有效提高了模型对小目标的检测效果。其模型结构如图3-6所示。
两阶段目标检测方法首先生成候选区域,然后对前一阶段生成的候选区域进行进一步的分类和回归。两阶段目标检测方法的演进大致如下:RCNN—>SPPNet—>Fast RCNN—>Faster RCNN—>OHEM—>R-FCN—>FPN—>DCN—>Mask RCNN—>Soft-NMS—>Cascade R-CNN—>IoUNet—>TrindentNet。
图3-7 R-CNN流程 [10]
R-CNN[10]是最早使用深度卷积神经网络进行目标检测的方法之一。在PASCAL VOC 2007数据集上实现了53%的mAP,其检测流程如图3-7所示。首先是区域候选的生成,R-CNN使用选择性搜索算法,为输入图像中的所有可能存在的目标生成多个边界框,它比生成所有可能的框的朴素方法要快得多且召回率高。该方法首先产生初始的分割区域,然后使用相似度计算方法合并一些小的区域,相似度是颜色、纹理等根据不同的权重进行加权求和得到。选择性搜索产生初始的分割区域作为输入后,通过下面的步骤进行合并,先是将全部分割区域添加到候选区域集合中;然后基于候选区域的相似度去合并其中的部分区域;最后将合并得到的新的候选区域放入集合,重复合并过程。通过不断的迭代,候选区域越来越大,列表中的区域越来越多,最终可以尽可能地覆盖全图不同位置、不同尺度的目标。接下来进行特征的提取,以构建图像到特征的映射;随后就是分类环节,该部分首先在数据集上训练支持向量机分类器,然后将特征提取步骤的输出传递到分类器中,生成类别分数。
图3-8 SPPNet[39]
SPPNet[39]使用空间金字塔池化方法来改进R-CNN,其结构如图3-8所示。由于全连接层的存在,R-CNN的输入大小受到限制。特征提取器要求将输入裁剪并将区域提议处理到固定大小。这可能会导致区域内的目标失真,从而引起信息的损失,使得检测精度下降。通过空间金字塔池化层,SPPNet将不同大小的图像区域映射为长度固定的特征向量,一次处理所有区域的候选提议,使其速度变得更快,避免了信息丢失和目标失真,提高了检测精度。
图3-9 Fast R-CNN[11]
Fast R-CNN[11]是目标检测领域的又一奠基之作,如图3-9所示,相较于R-CNN,其主要有以下几点改进:首先,是感兴趣区域池化层的引入,通过将空间金字塔池化层进行简化,提出了感兴趣区域池化层,可以把不同大小的输入候选区域映射到固定尺度的特征向量。其次,是其损失函数创新性地引入多任务学习的方式,并将之前的SVM分类器替换为softmax,这样除了候选区域生成部分,使得模型可以进行端到端的训练,简化了训练的流程,提高了训练的速度。在训练过程中,空间金字塔池化层之前的层无法进行微调,导致精度有所下降。Fast RCNN通过使用感兴趣区域池化层和多任务损失来解决该问题。多任务损失和感兴趣区域池化层可以进行端到端的训练,消除了卷积神经网络微调的问题。由于不需要单个模块,因此模型也减小了。这些改进使得模型更加准确,并且速度也更快。
图3-10 anchor机制[12]
Faster R-CNN[12]在Fast R-CNN基础上采用区域建议网络和锚框机制代替了选择性搜索,如图3-10所示,极大地提高了检测的速度。首先,输入图像进行特征提取后,先是经过3x3卷积,融合周边区域的信息,以消除混叠效应,提高了模型的鲁棒性和检测的性能。接下来对特征图的每个格子,放置预先定义好的指定数量、尺度和长宽比的锚框,然后分两条支路,并行地进行分类与回归任务。回归支路主要进行位置坐标的初步回归,而分类部分则负责判断对应区域是否存在物体。这样就直接产生了大量的候选框,且给出了候选框对应于前景还是背景,极大地减少了速度开销。Faster R-CNN使用四步交替训练,首先使用ImageNet微调候选区域生成网络,然后使用ImageNet数据集微调检测网络,接下来将候选区域生成网络与检测网络相结合,通过固定检测网络中的参数对候选区域生成网络进行选择性训练,最后,保持特征提取部分固定,对检测网络的另一层进行微调。
OHEM[40](在线困难样本挖掘)是最有效、应用也最广泛的处理目标检测中正负样本不平衡问题的方法,由于锚框机制的使用,需要对输入图像的任意位置和大小均进行检测,判断其中是否存在预定义的物体。而对于一张输入图像,图像中的大部分位置往往是背景部分,这样,锚框的使用造成了正负样本的不平衡,必须通过一定的策略来弥补,以平衡数据,避免大量的无效的负样本影响模型的训练,OHEM在这样的背景下应运而生。
图3-11 R-FCN[13]
以感兴趣区域池化层为界限,Fast R-CNN和Faster R-CNN等模型可分为两部分,首先是共享特征映射的全卷积层,其次是检测网络。由于分类需要特征具有平移不变性,而检测部分需要特征具有平移可变性,对于检测网络部分,要对每个感兴趣区域分别进行特征提取,进行进一步的分类和回归,得到检测结果,产生了大量的时间消耗。
R-FCN[13]使用全卷积网络进行检测,图3-11显示了其架构。它由一个全卷积网络和一个区域建议网络组成,利用位置敏感得分图来解决平移不变性问题,使模型共享更多层的卷积网络,减少了网络运算,提高了模型的速度和性能。
图3-12 特征金字塔网络[14]
FPN[14]是通过降采样提取语义特征之后,再次从顶层(自上而下)的每一层都进行上采样获取更准确的像素位置信息,然后使用横向连接融合对应尺度的特征。FPN模型的大致结构如图3-12所示,一个自底向上的降采样特征提取通路,一个自顶向下的上采样通路,然后采用横向连接将对应尺度的特征进行融合,得到融合后的特征图。而之前的大部分目标检测算法都是只采用顶层特征做预测,即使使用了底层特征,也是采用融合后的特征去得到预测结果。
图3-13 Mask R-CNN[15]
Mask R-CNN[15]引入了双线性插值解决之前R-CNN系列中因为取整而产生的不对齐的问题。此外,也引入了Mask分支以多任务的形式进行目标分割,如图3-13所示,Mask R-CNN在目标检测公开数据集上取得了最佳的效果。
四、目标检测改进方向
从个人视角,我将目标检测的改进方向分为两部分,一是针对目标检测流程中的某个模块或阶段的不合理进行改进,如基于RPN、NMS的系列改进;二是基于实际问题,针对某个具体的问题进行改进,比如小目标问题、遮挡问题、不平衡问题等。篇幅原因,这部分不做细致介绍。
4.1 基于不合理模块
基于检测流程的改进,主要总结了基于RPN、ROI、NMS和Anchor四部分。
- 基于RPN的改进:MR-CNN、FPN、CRAFT、R-CNN for Small Object Detection等
- 基于ROI的改进:RFCN、CoupleNet、Mask R-CNN、Cascade R-CNN等
- 基于NMS的改进:Soft-NMS、Softer-NMS、ConvNMS、Pure NMS Network、Fitness NMS等
- 基于Anchor的改进:GA-RPN等
4.2 基于实际问题
基于实际问题的改进主要有Small objects、Shelter problem、Imbalance problem、Mobile or LightWeight等
Small objects
- 数据增强,如pyramidbox中的data-anchor-sampling
- 特征融合,如fpn,dssd、R-SSD、M2Det等
- 浅层feature,在主干网络的low level(stride较小部分)出feature map,对应的anchor size可以设置较大。
- 利用context信息,建立小物体与context的关系。
- 类似SNIP/SNIPER。
- 建模物体间关系,relation network思路。
- GAN啊,在检测器后加对抗,GAN主要是为了超分辨率的学习应用,将模糊的小目标放大清晰化,而不是为了检测器生成对抗一下。
Shelter problem
在实际应用场景中,不同物体间存在大量的遮挡现象,这也是目标检测任务亟需缓解的问题。常见的解决思路如Repulsion Loss、Occlusion-aware R-CNN、Soft-NMS、Bi-box、R-DAD等。
Imbalance problem
不平衡问题广泛存在于各种机器学习任务中,目标检测任务中,由于anchor的引入,背景框远多于前景框,从而造成正负样本不平衡问题,常见的方法如OHEM,A-Fast-RCNN,Focal loss,GHM等。
LightWeight
由于移动端部署或资源限制等,如何在精度不明显下降的前提下,构建轻量型检测模型也是目标检测面对的问题,可以是采用轻量级backbone,也可以是对模型进行设计。常见的方法如Light-Head R-CNN、ThunderNet等。
五、目标检测评价指标
这两部分比较简单,篇幅原因不专门描述,可以参考之前的文章。
5.1 IoU
5.2 mAP
六、未来展望
1. 训练时的数据增强对模型的性能至关重要,且不影响推理时间,所以有必要专门研究各种不同的数据增强以及其组合方式对目标检测性能的影响,并探讨每种数据增强的实现细节是否可以有对应的优化。
2. 特征融合也需要更加广泛的分析,由于目标检测同时需要网络浅层的结构和纹理信息以及深层的语义信息,所以更好的特征融合对提高检测性能至关重要。如何在引入更少计算量的前提下进行特征的有效融合,是研究的重点方向。
3. 针对单阶段目标检测的不匹配问题,如何去解决。
4. 不再使用锚框的模型,如何提高检测的性能。
5. 通过模型压缩,比如模型剪枝、模型蒸馏、模型量化等,在保持精度基本不变或较小降低的前提下,使检测速度变得更快。
6. 结合其他信息如时序信息、物体间的相互关系等也是目标检测未来的发展方向,通过引入更多的信息进行综合检测,网络可以取得更优的性能。
七、参考文献
[1] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
[2] Viola P, Jones M J. Robust real-time face detection[J]. International journal of computer vision, 2004, 57(2): 137-154.
[3] Dalal N, Triggs B. Histograms of oriented gradients for human detection[C]. 2005.
[4] Felzenszwalb P, McAllester D, Ramanan D. A discriminatively trained, multiscale, deformable part model[C]//2008 IEEE conference on computer vision and pattern recognition. IEEE, 2008: 1-8.
[5] Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
[6] Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788.
[7] Redmon J, Farhadi A. YOLO9000: better, faster, stronger[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 7263-7271.
[8] Redmon J, Farhadi A. YOLOv3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
[9] Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2980-2988.
[10] Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2014: 580-587.
[11] Girshick R. Fast R-CNN[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
[12] Ren S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
[13] Dai J, Li Y, He K, et al. R-FCN: Object detection via region-based fully convolutional networks[C]//Advances in neural information processing systems. 2016: 379-387.
[14] Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 2117-2125.
[15] He K, Gkioxari G, Dollár P, et al. Mask R-CNN[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2961-2969.
[16] Kong T, Sun F, Yao A, et al. RON: Reverse connection with objectness prior networks for object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 5936-5944.
[17] Zhang S, Wen L, Bian X, et al. Single-shot refinement neural network for object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 4203-4212.
[18] Yu J, Jiang Y, Wang Z, et al. UnitBox: An advanced object detection network[C]//Proceedings of the 24th ACM international conference on Multimedia. ACM, 2016: 516-520.
[19] Huang L, Yang Y, Deng Y, et al. DenseBox: Unifying landmark localization with end to end object detection[J]. arXiv preprint arXiv:1509.04874, 2015.
[20] Law H, Deng J. CornerNet:Detecting objects as paired keypoints[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 734-750.
[21] Zhou X, Zhuo J, Krahenbuhl P. Bottom-up object detection by grouping extreme and center points[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 850-859.
[22] Zhou X, Wang D, Krähenbühl P. Objects as Points[J]. arXiv preprint arXiv:1904.07850, 2019.
[23] Tian Z, Shen C, Chen H, et al. FCOS: Fully Convolutional One-Stage Object Detection[J]. arXiv preprint arXiv:1904.01355, 2019.
[24] Zhu C, He Y, Savvides M. Feature selective anchor-free module for single-shot object detection[J]. arXiv preprint arXiv:1903.00621, 2019.
[25] Kong T, Sun F, Liu H, et al. FoveaBox: Beyond Anchor-based Object Detector[J]. arXiv preprint arXiv:1904.03797, 2019.
[26] Duan K, Bai S, Xie L, et al. CenterNet: Keypoint Triplets for Object Detection[J]. arXiv preprint arXiv:1904.08189, 2019.
[27] Law H, Teng Y, Russakovsky O, et al. CornerNet-Lite: Efficient Keypoint Based Object Detection[J]. arXiv preprint arXiv:1904.08900, 2019.
[28] Wang J, Chen K, Yang S, et al. Region proposal by guided anchoring[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 2965-2974.
[29] Gao S, Cheng M M, Zhao K, et al. Res2Net: A new multi-scale backbone architecture[J]. IEEE transactions on pattern analysis and machine intelligence, 2019.
[30] Zhang X, Zhou X, Lin M, et al. ShuffleNet: An extremely efficient convolutional neural network for mobile devices[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 6848-6856.
[31] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[32] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.
[33] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.
[34] Howard A G, Zhu M, Chen B, et al. MobileNets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017.
[35] Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.
[36] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.
[37] Wang R J, Li X, Ling C X. Pelee: A real-time object detection system on mobile devices[C]//Advances in Neural Information Processing Systems. 2018: 1963-1972.
[38] Li Z, Peng C, Yu G, et al. DetNet: Design backbone for object detection[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 334-350.
[39] He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE transactions on pattern analysis and machine intelligence, 2015, 37(9): 1904-1916.
[40] Shrivastava A, Gupta A, Girshick R. Training region-based object detectors with online hard example mining[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 761-769.
[41] Cai Z, Vasconcelos N. Cascade R-CNN: Delving into high quality object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 6154-6162
[42] Sermanet P, Eigen D, Zhang X, et al. Overfeat: Integrated recognition, localization and detection using convolutional networks[J]. arXiv preprint arXiv:1312.6229, 2013.
[43] Liu S, Huang D. Receptive field block net for accurate and fast object detection[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 385-400.
[44] Bodla N, Singh B, Chellappa R, et al. Soft-NMS--Improving Object Detection With One Line of Code[C]//Proceedings of the IEEE international conference on computer vision. 2017: 5561-5569.
[45] He Y, Zhang X, Savvides M, et al. Softer-NMS: Rethinking bounding box regression for accurate object detection[J]. arXiv preprint arXiv:1809.08545, 2018.
[46] Jiang B, Luo R, Mao J, et al. Acquisition of localization confidence for accurate object detection[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 784-799.
[47] Everingham M, Van Gool L, WilliMS C K I, et al. The pascal visual object classes (voc) challenge[J]. International journal of computer vision, 2010, 88(2): 303-338.
[48] Lin T Y, Maire M, Belongie S, et al. Microsoft COCO: Common objects in context[C]//European conference on computer vision. Springer, Cham, 2014: 740-755.
[49] Fu C Y, Liu W, Ranga A, et al. DSSD: Deconvolutional single shot detector[J]. arXiv preprint arXiv:1701.06659, 2017.
[50] Shao S, Li Z, Zhang T, et al. Objects365: A large-scale, high-quality dataset for object detection[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 8430-8439.
[51] 深度学习在 small object detection 有什么进展?
[52] 小目标检测问题中“小目标”如何定义?其主要技术难点在哪?有哪些比较好的传统的或深度学习方法?