【目标检测_概述】recent advances in deep learning for object detection_2019


文章链接: https://arxiv.org/pdf/1908.03673.pdf

Abstract

目标检测是计算机视觉中一个基本的视觉识别问题,近几十年来得到了广泛的研究。视觉对象检测的目的是在给定的图像中找到具有精确定位的特定目标类的对象,并为每个对象实例分配相应的类标签。由于基于深度学习的图像分类方法取得了巨大的成功,近年来,基于深度学习的目标检测技术得到了积极的研究。本文综述了近年来基于深度学习的视觉目标检测技术的研究进展。通过查阅大量相关文献,我们系统地分析了现有的目标检测框架,并将调查分为三个主要部分:(i)检测组件;(ii)学习策略;(iii)应用和基准。在调查中,我们详细讨论了影响检测性能的各种因素,如检测器结构、特征学习、方案生成、采样策略等。最后,我们讨论了未来的几个方向,以促进和推动具有深度学习的视觉对象检测的未来研究。

1、Introduction

在计算机视觉领域,有几个基本的视觉识别问题:图像分类[1]、目标检测和实例分割[2,3]和语义分割[4](见图1)。特别是,图像分类(图1.1(a))旨在识别给定图像中对象的语义类别。目标检测不仅识别目标类别,而且通过边界框预测每个目标的位置(图1(b))。语义分割(图1(c))旨在预测按像素分类的分类器,以将特定类别标签分配给每个像素,从而提供对图像更丰富的理解。然而,与目标检测相比,语义分割并不能区分同一类别的多个目标。在目标检测和语义分割的交叉点上有一个相对较新的研究,叫做“实例分割”(如图1(d)所示),被用来区分不同的目标,并且为每个目标分配一个独立的像素水平的mask。实际上,实例分割可以看作是对象检测的一种特殊设置,在这种情况下,不需要通过边界框来定位对象,而是需要像素级的定位。在本次调查中,我们将重点回顾基于深度学习的目标检测的主要研究成果。一个好的检测算法应该对图像的语义线索和空间信息有很强的理解力。事实上,目标检测是许多计算机视觉应用的基本步骤,例如人脸识别[5,6,7]、行人检测[8,9,10]、视频分析[11,12]和徽标检测[13,14,15]。
在这里插入图片描述
在早期阶段,在深度学习时代之前,目标检测的流程分为三个步骤:i)建议生成;ii)特征向量提取;iii)区域分类。在方案生成过程中,目标是搜索图像中可能包含对象的位置。这些位置也称为感兴趣区域(roi)。一个直观的想法是用滑动窗口扫描整个图像[16,17,18,19,20]。为了获取目标的多尺度和不同长宽比的信息,将输入图像调整为不同的尺度,并使用多尺度窗口在这些图像中滑动。在第二步中,在图像的每个位置,从滑动窗口中获取一个固定长度的特征向量,以获取覆盖区域的判别语义信息。该特征向量通常由SIFT(Scale Invariant feature Transform)[21]、Haar[22]、HOG(Gradients Histogram of Gradients)[19]或SURF(Speeded Up Robust Features)[23]等低级视觉描述符编码,对尺度、光照和旋转方差具有一定的鲁棒性。最后,在第三步中,学习区域分类器将分类标签分配给覆盖区域。由于支持向量机(SVM)[24]在小规模训练数据上具有良好的性能,所以通常在这里使用。此外,在区域分类步骤中使用了bagging[25]、cascade learning[20]和adaboost[26]等分类技术,进一步提高了检测精度。

传统的目标检测方法大多集中在仔细设计特征描述子以获得感兴趣区域的嵌入。借助于良好的特征表示和健壮的区域分类器,Pascal VOC数据集[29]取得了令人印象深刻的结果[27,28]。值得注意的是,基于变形零件的机器(DPMs)[30]是一种突破性的检测算法,在2007年、2008年和2009年的VOC挑战中三次获奖。DPMs学习和集成具有可变形损失的多部分模型,并使用潜在的支持向量机挖掘硬负样本进行判别训练。然而,在2008年至2012年期间,基于这些传统方法的Pascal VOC的进展已逐渐增加,通过构建复杂的集成系统所获得的收益很小。这说明了这些传统探测器的局限性。最突出的是,这些限制包括:(1)在方案生成过程中,生成了大量的方案,其中许多是多余的;这导致分类过程中出现大量误报。此外,窗口尺度是人工设计的,具有启发性,不能很好地匹配对象;(ii)特征描述子是基于低级视觉线索手工构建的[31,32,23],这使得在复杂的上下文中很难捕捉到有代表性的语义信息。(三)检测管道的每一步都是单独设计和优化的,无法得到整个系统的全局最优解。

在将深度卷积神经网络(DCNN)应用于图像分类[33,1]取得成功之后,基于深度学习技术的目标检测也取得了显著的进展[34,2]。新的基于深度学习的算法在性能上大大优于传统的检测算法。深卷积神经网络是一种计算层次特征的生物螺旋结构。Fukushima提出的neocognitron[35]是一个早期的尝试,试图建立这样一个层次化和空间不变的图像分类模型。然而,这种早期尝试缺乏有效的监督学习优化技术。基于这个模型,Lecun等人。[36]通过反向传播随机梯度下降(SGD)优化了卷积神经网络,在数字识别方面表现出了竞争性的性能。然而,在这之后,深度卷积神经网络并没有得到深入的研究,支持向量机变得更加突出。这是因为深度学习具有一定的局限性:(1)缺乏大规模的带注释的训练数据,导致过度拟合;(2)计算资源有限;(3)与支持向量机相比,理论支持较弱。2009年,Jia等人。[37]收集了一个包含1.2M高分辨率图像的大规模带注释图像数据集ImageNet,使利用大规模训练数据训练深层模型成为可能。随着并行计算系统(如GPU集群)上计算资源的发展,2012 krighevsky等人。[33]利用ImageNet数据集训练了一个大型的深卷积模型,与其他方法相比,在大规模视觉识别挑战(ILSVRC)方面有了显著的改进。在DCNN成功应用于分类之后,深度学习技术很快被应用到其他视觉任务中,并且与传统方法相比显示出了良好的效果。

与传统检测器使用的手工描述子不同,深度卷积神经网络从原始像素到高层语义信息生成层次化特征表示,并从训练数据中自动学习,在复杂的上下文中表现出更强的鉴别表达能力。此外,深卷积神经网络由于其强大的学习能力,可以在较大的数据集上获得更好的特征表示,而传统的视觉描述子的学习能力是固定的,当有更多的数据可用时无法提高。这些特性使得基于深度卷积神经网络的目标检测算法的设计成为可能,该算法能够以端到端的方式进行优化,具有更强的特征表示能力。

目前,基于深度学习的目标检测框架主要分为两大类:(i)两级检测器,如基于区域的CNN(R-CNN)[2]及其变体[38,34,39]和(ii)一级检测器,如hasyolo[40]及其变体[41,42]。两阶段检测器首先使用建议生成器生成稀疏的建议集并从每个建议中提取特征,然后使用区域分类器预测建议区域的类别。一级检测器不需要级联区域分类步骤,直接对特征地图的每个位置上的目标进行分类预测。两级检测器通常可以获得更好的检测性能,并在公共基准上报告最新的结果,而一级检测器则显著提高了时间效率,对实时目标检测具有更大的适用性。图2还说明了2012年后基于深度学习的目标检测技术的主要发展和里程碑。我们将涵盖这些关键技术的基本思想,并在调查中对其进行系统的分析。

本次调查的目的是全面了解基于深度学习的目标检测算法。图3显示了将在本调查中涵盖的关键方法的分类。我们回顾了基于深度学习的目标检测的各种贡献,并将它们分为三类:检测组件、学习策略、应用和基准。对于检测组件,我们首先介绍了两种检测设置:包围盒级别(bbox级别)和像素遮罩级别(mask级别)定位。Bbox级别的算法需要通过矩形边界框来定位对象,而mask级别的算法需要更精确的像素级遮罩来分割对象。接下来,我们总结了两个检测家族的代表性框架:两阶段检测和一阶段检测。然后详细介绍了各个检测组件,包括主干结构、方案生成和特征学习。在学习策略方面,由于检测器训练的困难,本文首先强调了检测学习策略的重要性,然后详细介绍了训练阶段和测试阶段的优化技术。最后,我们回顾了一些基于真实物体检测的应用,包括人脸检测、行人检测、标志检测和视频分析。我们还讨论了这些检测任务的公开可用和常用的基准和评估指标。最后,我们展示了近年来基于公共基准的通用检测的最新结果。

我们希望我们的调查能为研究者和实践者提供一个及时的回顾,以进一步促进检测系统的研究。论文的其余部分安排如下:在第二节中,我们给出了目标检测的标准问题集。探测器组件的详细信息见第3节。第四节介绍了学习策略。第5节和第6节提供了实际应用和基准的检测算法。通用检测的最新结果列于第7节。最后,我们在第8节中总结并讨论未来的方向。

2、 Problem Setting

在这一部分中,我们提出了基于深度学习的目标检测的问题定义。目标检测包括识别(如“目标分类”)和定位(如“位置回归”)任务。目标检测器需要通过精确的定位和对每个目标实例正确的分类标签预测,将特定目标类别的目标与图像背景区分开来。预测边界框或 pixel mask 来定位这些目标目标实例。

正式的说,假设给定包含N个目标的标注图像 x 1 , x 2 , . . . , x N x_1,x_2,...,x_N ,对于第 i i 个图像 x i x_i ,其中 C C 类的目标有 M i M_i 个,标注如下:
在这里插入图片描述
其中, c j i ( c j i C ) c_j^i(c_j^i \in C) , 且 b j i b_j^i 表示 x i x_i 图像中的第 j j 个目标,检测器 f f 的参数是 θ \theta ,对于 x i x_i y p r e d i y_{pred}^i y i y_i 的形式相同:

在这里插入图片描述
最后,检测器的 loss 函数如下:
在这里插入图片描述
其中,第二项是正则化项,具有权衡参数λ。不同的损耗函数,如softmax损耗[38]和焦距损耗[43]影响最终的检测性能,我们将在第4节讨论这些函数。

在评估时,使用一个称为对象和预测之间的交集超并(IoU)的度量来评估本地化的质量(此处省略索引i):
在这里插入图片描述
其中, b g t b_{gt} 代表真实的bbox或mask, IoU 阈值 Ω \Omega 用来确定预测的结果是否紧密的和真实目标重合(一般都会设 Ω = 0.5 \Omega=0.5 )。对于目标检测,具有正确类别和成功定位的预测结果被认为是正的,其他的被认为是负预测:
在这里插入图片描述
对于一般的目标检测问题评估,使用C类上的平均精度(mAP)进行评估,并且在实际场景中,例如行人检测,使用不同的评估指标,这将在第5节中讨论。除了检测精度外,推理速度也是评价目标检测算法的一个重要指标。具体地说,如果我们想检测视频流中的对象(实时检测),就必须有一个能够快速处理这些信息的检测器。因此,还根据每秒帧数(FPS)来评估检测器效率,即每秒可以处理多少图像。通常,一个可以达到20fps的推理速度的检测器被认为是一个实时检测器。

3、Detection Components

在本节中,我们将介绍目标检测的不同组件。一是目标检测范式的选择。我们首先介绍了两种检测设置的概念:bbox-level 和 mask-level 算法。然后,介绍了两级检测器和一级检测器两种主要的目标检测模式。在这些范例下,检测器可以使用各种深度学习主干架构、建议生成器和特征表示模块。

3.1 Detection Settings

目标检测有两种设置:i)一般的目标检测(bbox级定位)和 ii)实例分割(像素级或掩码级定位)。V-anilla目标检测已经得到了广泛的研究,并被认为是传统的检测设置,其目标是通过矩形包围盒对目标进行定位。在一般的目标检测算法中,只需要bbox标注,而在评价中,通过计算预测边界盒与地面真实值之间的IoU来衡量性能。实例分割是一个相对较新的设置,是在传统检测设置的基础上发展起来的。实例分割需要用像素级的掩模来分割每个对象,而不是用一个粗糙的矩形边界框。由于更精确的像素级预测,实例分割对空间偏差更敏感,因此对空间信息的处理有更高的要求。实例分割的评价指标与bbox级检测基本相同,只是IoU计算是在掩码预测上进行的。虽然这两个检测设置略有不同,但后面介绍的主要组件大多可以由这两个设置共享。

在这里插入图片描述

3.2 Detection Paradigms

目前最先进的深度学习目标检测器主要分为两大类:两级检测器和一级检测器。对于两阶段检测器,在第一阶段,生成稀疏的建议集;在第二阶段,生成的建议的特征向量由深卷积神经网络编码,然后进行对象类预测。一级检测器没有单独的建议生成(或学习建议生成)阶段。它们通常将图像上的所有位置视为潜在对象,并尝试将每个感兴趣的区域分类为背景或目标对象。两级检测器通常在许多公共基准数据集上报告最新的结果。然而,就较低的推理速度而言,它们通常是不足的。一级检测器比两级检测器速度更快,更适合于实时目标检测应用,但性能相对较差。

3.2.1 Two-stage Detectors

两阶段检测器将检测任务分为两个阶段:(i)建议生成;(ii)对这些建议进行预测。在建议生成阶段,检测器将尝试识别图像中可能是对象的区域。其思想是提出具有高召回率的区域,使得图像中的所有对象至少属于这些建议区域中的一个。在第二阶段中,我们使用一个基于深度学习的模型,用正确的分类标签对这些建议进行分类。区域可以是背景,也可以是预定义类标签之一的对象。此外,模型可以改进建议生成器建议的原始本地化。接下来,我们回顾两级探测器中一些最有影响力的工作。

RCNN:

R-CNN[2]是Girshick等人提出的一种开创性的两级目标检测器在2014年。与以往基于传统检测框架segdmp[44](Pascal VOC2010上具有40.4%的mAP)的最新检测方法相比,RCNN显著提高了检测性能,获得了53.7%的mAP。R-CNN的流程可以分为三个部分:i)方案生成,ii)特征提取和 iii)区域分类。对于每个图像,R-CNN通过选择性搜索生成一组稀疏的proposal(大约2000个建议)[45],该搜索旨在拒绝那些容易被识别为背景区域的区域。然后,将每个方案裁剪成固定大小的区域,并通过深卷积神经网络将其编码成(例如4096维)特征向量,然后使用one-vs-all支持向量机分类器。最后,利用提取的特征作为输入,学习边界盒回归器,使原始方案紧密地约束对象。与传统的手工特征描述子相比,深层神经网络能够生成层次特征,并在不同层次上捕获不同尺度的信息,最后产生鲁棒性和区分性的特征进行分类。利用传递学习的能力,R-CNN采用在ImageNet上预先训练的卷积网络的权值。为检测任务重新初始化最后一个完全连接层(FC层)。然后在预先训练好的模型上对整个探测器进行微调。这种从Imagenet数据集传递知识的方式提供了显著的性能提升。此外,R-CNN在训练前拒绝大量容易被否定的内容,这有助于提高学习速度和减少误报。

然而,R-CNN面临着一些关键的缺点:i)每个方案的特征都是由深卷积网络分别提取的(即计算不共享),这导致了大量的重复计算。因此,R-CNN的训练和测试非常耗时;ii)R-CNN的三个步骤(建议生成、特征提取和区域分类)是独立的组成部分,整个检测框架不能以端到端的方式进行优化,难以获得全局最优解;和iii)选择性搜索依赖于低层次的视觉线索,因此难以在复杂的背景下产生高质量的建议。而且,它无法享受GPU加速带来的好处。

SPPnet:

受到空间金字塔匹配(SPM)思想的启发[46],He 等人提出了SPP网[47]来加速R-CNN以及学习更多的有区别的特征。SPP网络不需要裁剪建议区域,也不需要单独输入CNN模型,而是利用一个深卷积网络从整个图像中计算出特征映射,并通过空间金字塔池(SPP)层在特征映射上提取固定长度的特征向量。SPP将特征映射划分为 N × N N \times N 个网格,对于 N N 的多个值(从而允许在不同的尺度上获取信息),并对网格的每个单元执行合用,以给出特征向量。将从每个 N × N N \times N 网格获得的特征向量串联起来,给出区域的表示。提取的特征被输入到区域支持向量机分类器和边界盒回归器中。与RCNN相比,SPP层还可以在不同尺度和长宽比的图像/区域上工作,而无需调整它们的大小。因此,它不会遭受信息丢失和不必要的几何失真。

Faste RCNN:

与R-CNN相比,SPP网络具有更好的结果和更快的推理速度。然而,SPP网络的训练仍然是多阶段的,因此无法进行端到端的优化(需要额外的缓存来存储提取的特征)。此外,SPP层没有向卷积核反向传播梯度,因此在冻结SPP层之前,所有的参数都被冻结。这大大限制了深层骨干架构的学习能力。Girshick等人。提出了一种多任务学习检测器Fast R-CNN[38],解决了SPP网络的这两个局限性。Fast R-CNN(类似于SPP-Net)还计算了整个图像的特征映射,提取了特征映射上的定长区域特征。与SPP网络不同,Fast R-CNN使用ROI池层提取区域特征。ROI池层是SPP的一个特例,它只需要一个尺度(即N×N网格只有一个N值)就可以将方案划分成固定数量的分区,并将错误信号反向传播到卷积核。特征提取后,将特征向量输入到两个兄弟输出层(分类层(cls)和回归层(reg))之前的全连通层序列中。分类层负责生成C+1类(C类加上一个背景类)上的softmax概率,而回归层则编码4个实值参数来优化边界框。在快速RCNN中,特征提取、区域分类和边界盒回归步骤都可以端到端优化,而不需要额外的缓存空间来存储特征(与SPP网络不同)。Fast R-CNN比R-CNN和SPP网具有更好的检测精度,并且具有更好的训练和推理速度。

尽管在学习检测器方面取得了进展,但建议生成步骤仍然依赖于传统的方法,如选择性搜索[45]或边缘框[48],这些方法基于低级视觉线索,无法以数据驱动的方式学习。为了解决这个问题,基于一个新的提议生成器:区域提议网络(RPN),开发了更快的R-CNN[34]。这个建议生成器可以通过监督学习方法来学习。RPN是一个完全卷积的网络,它获取任意大小的图像,并在特征地图的每个位置生成一组目标建议。该网络利用一个n×n滑动窗口在特征图上滑动,并为每个位置生成一个特征向量。然后将特征向量输入到两个兄弟输出分支:对象分类层(分类方案是否为对象)和边界盒回归层。然后将这些结果输入到最后一层,用于实际的对象分类和边界框定位。RPN可以嵌入到 Faster R-CNN中,从而根据训练数据对整个框架进行端到端的优化。通过这种方式,RPN能够以数据驱动的方式生成方案,并且能够享受深度骨干网的区分能力。更快的R-CNN能够在GPU上以5FPS的速度进行预测,并在许多公共基准数据集(如Pascal VOC 2007、2012和mscoc)上取得了最新的结果。目前,有大量基于更快R-CNN的检测器变体用于不同用途 [49,39,50,51]

R-FCN:

Faster R-CNN计算出输入图像的特征图,并在特征图上提取区域特征,实现了跨区域的特征提取计算。然而,在区域分类步骤中,计算并不共享,其中每个特征向量仍然需要分别通过一系列FC层。这样的额外计算可能非常大,因为每个图像可能有数百个建议。简单地删除完全连接的层将导致检测性能的急剧下降,因为深层网络将减少建议的空间信息。Dai等人。[52]提出的基于区域的全卷积网络(R-FCN)在区域分类步骤中分担了计算代价。R-FCN生成一个位置敏感的评分图,对不同类别的相对位置信息进行编码,并利用位置敏感的ROI池层(PSROI池)对目标区域的每个相对位置进行编码,提取空间敏感的区域特征。所提取的特征向量保持了空间信息,因此与没有区域全连通层操作的快速RCNN相比,检测器取得了竞争性的结果。

FPN:

Faster R-CNN的另一个问题是它使用了一个深层特征图来进行最终预测。这使得在不同尺度上检测物体变得困难。特别是,很难发现小物体。在DCNN特征表示中,深层特征语义强而空间弱,浅层特征语义弱而空间强。Lin等人。[39]利用了这一特性,提出了一种特征金字塔网络(FPN),该网络将深层特征和浅层特征结合起来,使得可以在不同尺度的特征图中进行目标检测。其主要思想是利用深层丰富的语义信息来增强空间上的强浅层特征。FPN在多尺度目标检测方面取得了重大进展,并在视频检测[53,54]和人体姿态识别[55,56]等领域得到了广泛应用。

Mask RCNN:

大多数实例分割算法都是从普通的目标检测算法扩展而来的。早期的方法[57,58,59]通常生成分段建议,然后是用于分段分类的快速RCNN。后来,戴等人。[59]提出了一个多阶段的算法称为“MNC”,它将整个检测框架分为多个阶段,并从学习到的包围盒方案中预测分割掩模,然后由区域分类器进行分类。这些早期工作在多个阶段进行bbox和mask预测。为了使整个过程更加灵活,他等。[3] 提出了一种掩模R-CNN算法,该算法基于该算法并行预测包围盒和分割掩模,并报告了最新的结果。基于Mask R-CNN,Huang等人。[60]提出了一个掩模质量感知框架,称为掩模评分R-CNN,该框架学习预测掩模的质量,并校正掩模质量与掩模置信度之间的偏差。

图4概述了几种典型的两级检测器的检测框架。

在这里插入图片描述

3.2.2 One-stage Detectors

不同于将检测管道分成两部分的两阶段检测算法:建议生成和区域分类;一阶段检测器没有单独的建议生成阶段(或学习建议生成)。它们通常将图像上的所有位置视为潜在对象,并尝试将每个感兴趣的区域分类为背景或目标对象。

OverFeat:

Sermanet等人开发了一种基于深度学习的早期成功的单阶段检测器。[61]命名为OverFeat。OverFeat通过将DCNN分类器转换为完全卷积的目标检测器来执行目标检测。目标检测可以看作是一个“多区域分类”问题,因此通过将最后的FC层看作1x1卷积层来允许任意输入,从而将原始分类器扩展为检测器。分类网络在输入的每个区域输出一个预测网格,以指示对象的存在。在对目标进行识别后,学习边界盒回归算法,根据分类器相同的DCNN特征对预测区域进行细化。为了检测多尺度目标,将输入图像调整为多个尺度,并将其送入网络。最后,所有尺度的预测被合并在一起。OverFeat通过使用卷积层共享重叠区域的计算,与RCNN相比显示出显著的速度强度,并且只需要通过网络的一次向前传递。然而,分类器和回归器的训练是分开的,没有进行联合优化。

YOLO:

之后,Redmon等人[40]开发了一种叫做YOLO的实时检测器(You Only Look Once)。YOLO将目标检测视为一个回归问题,并将整个图像空间分割为固定数量的网格单元(例如,使用7×7网格)。每个 cell 都被认为是检测一个或多个物体存在的建议。在最初的实现中,每个 cell 被认为包含两个对象的中心。对每个单元进行预测,包括以下信息:该位置是否有对象、边界框坐标和大小(宽度和高度)以及对象的类别。整个框架是一个单一的网络,它省略了建议生成步骤,可以端到端优化。基于精心设计的轻量级架构,YOLO可以以45 FPS的速度进行预测,使用更简化的主干网可以达到155 FPS。然而,YOLO面临着一些挑战:i)它在给定位置只能检测到两个对象,这使得很难检测到小对象和拥挤的对象[40]。ii)只有最后一个特征图用于预测,不适合多尺度、多纵横比的目标预测。

SSD:

2016年,Liu等人。针对YOLO的局限性,提出了另一种一阶段检测器 SSD [42]。SSD仍然将图像分割成网格单元,但在每个网格单元中,会生成一组具有多个尺度和纵横比的 anchor,来离散化边界框的输出空间(与YOLO中采用的固定网格单元预测不同)。每一个 anchor 都由回归器学习到的4个偏移量进行优化,并由分类器分配(C+1)分类概率。此外,SSD在多个特征图上对目标进行预测,每个特征图都负责根据目标的接收场来检测一定尺度的目标。为了检测大的目标并增加接收场,在原有的骨干结构中加入了一些额外的卷积特征映射。通过端到端的训练方案,在所有预测图上用定位损失和分类损失的加权和对整个网络进行优化。最终的预测是通过合并来自不同特征映射的所有检测结果来实现的。为了避免大量的 negetive proposal 支配训练梯度,采用硬负挖掘对检测器进行训练。为了提高检测精度,还采用了密集的数据增强。SSD与 Faster R-CNN检测精度相当,但具有实时推理能力。

RetinaNet:

在一阶段检测器中,由于没有对 easy negative 样本过滤,故前景与背景之间的类不平衡是一个严重的问题。Lin等人[43]提出了一种一阶段检测器 RetinaNet,以更灵活的方式解决了类不平衡问题。RetinaNet使用的是 focal loss 来抑制那些易于检测的负样本的梯度,而不是简单地丢弃它们。此外,他们还使用特征金字塔网络在不同级别的特征地图上检测多尺度对象。他们提出的 focal loss 大幅度优于简单的硬负挖掘策略。

YOLOv2:

Redmon等人提出了一种改进的YOLO版本YOLOv2[41],它显著提高了检测性能,但仍然保持了实时推理速度。YOLOv2采用了一种更强大的深卷积骨干结构,该结构通过对来自ImageNet的高分辨率图像进行预训练(从224×224到448×448),因此所学习的权重对捕获细粒度信息更敏感。此外,受SSD中使用的 anchor 策略的启发,YOLOv2通过对训练数据进行k均值聚类(而不是手动设置)定义了更好的 anchor 优先级。这有助于减少本定位的优化困难。最后,结合批量规范化层[62]和多尺度训练技术,YOLOv2获得了当时最先进的检测结果。

CornetNet:

以前的方法需要人工设计 anchor 来训练检测器。后来开发了一系列无锚物体检测器,其目标是预测包围盒的关键点,而不是试图将物体与锚匹配。Law和Deng提出了一种新的无锚框架CornerNet[63],它将目标检测为一对角。在特征映射的每个位置,预测了类热图、对嵌入和角偏移。类热图计算角点的概率,角点偏移用于回归角点位置。对嵌入用于将属于同一对象的一对角分组。CornerNet在不依赖手工设计的锚来匹配对象的情况下,对MSCOCO数据集取得了显著的改进。后来出现了其他几种基于关键点检测的单级检测器[64,65]。

图5概述了几种具有代表性的单级检测器的不同检测框架。

在这里插入图片描述

3.3 Backbone

R-CNN[2]表明,在大规模图像分类问题中,采用预先训练好的模型的卷积权值,可以为训练检测器提供更丰富的语义信息,提高检测性能。在后来的几年中,这种方法已经成为大多数目标检测器的默认策略。在本节中,我们将首先简要介绍深度卷积神经网络的基本概念,然后回顾一些广泛应用于检测的结构。

3.3.1 Basic Architecture of a CNN

深卷积神经网络(DCNN)是一种典型的深度神经网络,在视觉理解方面已经被证明是非常有效的[36,33]。深卷积神经网络通常由卷积层、pooling层、非线性激活层和全连接层(FC层)组成。卷积层接收图像输入,并利用卷积n×n kernels生成特征映射。

生成的特征图可以看作是一个多通道图像,每个通道代表不同的图像信息。特征图中的每个像素(命名神经元)都与前一个图中的一小部分相邻神经元相连,称为感受野。生成特征映射后,应用非线性激活层。pooling 层用于总结感受野中的信号,扩大感受野并降低计算成本。

将一系列卷积层、pooling 层和非线性激活层相结合,建立了深卷积神经网络。整个网络可以通过基于梯度的优化方法(随机梯度下降[66]、Adam[67]等)通过定义的损失函数进行优化。典型的卷积神经网络是AlexNet[33],它包含五个卷积层、三个最大池层和三个完全连接层。每个卷积层后面跟着ReLU[68]非线性激活层。

3.3.2 CNN Backbone for Object Detection

在本节中,我们将回顾一些在具有最新结果的目标检测任务中广泛使用的架构,如VGG16[34,38]、ResNet[1,52]、ResNeXt[43]和 Hourglass [63]。

VGG16[69] 很大程度上是基于 AlexNet的,VGG16由五组卷积层和三个FC层组成。前两组有两个卷积层,后三组有三个卷积层。在每个组之间,应用最大池层来减少空间维度。VGG16表明,通过叠加卷积层来增加网络的深度可以提高模型的表达能力,从而获得更好的性能。然而,通过简单地叠加卷积层将模型深度增加到20层会导致SGD的优化挑战。即使在训练阶段,成绩也明显下降,低于较浅的模型。根据这一观察,他等。[1] 提出的ResNet通过引入快捷连接来降低优化难度。在这里,一个层可以跳过非线性转换,直接按原样将值传递给下一层(从而给我们一个隐式标识层)。具体如下:

在这里插入图片描述
其余简略。。。

3.4 Proposal Generation

region proposal 在目标检测框架中起着非常重要的作用。其生成一组矩形边框,这些边框可能是对象。然后,将这些 proposal 用于分类和定位。我们将提案生成方法分为四类:传统的计算机视觉方法、基于锚的监督学习方法、基于关键点的方法和其他方法。值得注意的是,一级检测器和两级检测器都会生成proposal,主要区别在于两级检测器只生成前景或背景信息稀疏的建议集,而一级检测器则将图像中的每个区域视为潜在建议,并相应地估计每个位置处潜在对象的类和边界框坐标。

3.4.1 Traditional Computer Vision Methods

3.4.2 Anchor-based Methods

一大类有监督的方案生成器是基于 anchor 的方法。它们基于预定义的锚生成 proposal。Ren等人提出了一种基于深度卷积特征映射的区域建议网络(RPN)[34]以有监督的方式生成建议。该网络使用3×3卷积滤波器在整个特征图上滑动。对于每个位置,考虑不同大小和纵横比的k个锚(或边界框的初始估计)。这些大小和比率允许在整个图像中以不同的比例匹配对象。在真值 box 的基础上,将目标位置与最合适的锚进行匹配,得到锚估计的结果。从每个锚中提取256维特征向量,并将其输入到两个兄弟分支分类层和回归层。分类分支负责建模对象得分,而回归分支编码四个实数值,从原始锚估计中优化边界框的位置。根据真值,分类分支预测每个锚要么是物体,要么只是背景(见图6)。后来,SSD[42]在RPN中采用了类似的锚定思想,使用多尺度锚来匹配对象。主要区别在于SSD将分类概率分配给每个锚方案,而RPN首先评估锚是前景还是背景,并在下一阶段进行分类。

尽管性能很好,但锚是以启发式的方式手动设计的,具有多个尺度和长宽比。这些设计选择可能不是最优的,并且不同的数据集需要不同的锚设计策略。为了改进锚的设计选择,人们做了许多努力。Zhang等人。提出了一种基于SSD的单镜头变尺度人脸检测算法(S3FD)[87],该算法采用精心设计的锚来匹配目标。根据不同特征图的有效感受野[88],设计了不同的锚定先验。朱等人。[89]介绍了一种通过增大输入图像大小和减小锚定步长来匹配小目标的锚定设计方法。谢等人。提出了基于RPN的锚箱尺寸分解区域建议网络(DeRPN)[90]。DeRPN使用锚定字符串机制独立地匹配对象的宽度和高度。这有助于匹配具有大尺度方差的对象,并减少搜索空间。

在这里插入图片描述
Ghodrati等人。开发了DeepProposals[91],预测了低分辨率深层特征图上的方案。然后将它们投影回高分辨率的浅层特征地图上,在那里进一步细化。雷蒙等人。[41]利用k-means聚类方法从训练数据中学习先验知识,设计锚定先验。后来,张等人。引入了RefineDet [92],它分两步对手动定义的锚进行优化。在第一步中,RefineDet学习了一组基于原始手工设计的锚定的定位偏移,这些锚定通过学习的偏移进行了优化。在第二阶段中,从第一步开始,基于改进后的锚,学习一组新的定位偏移,以进一步改进。这种级联优化框架以数据驱动的方式显著提高了锚定质量和最终预测精度。蔡等人。提出的Cascade R-CNN[49]采用了类似于RefineDet的思想,通过级联的方式对提案进行优化。Yang等人。[93]将锚建模为由定制锚计算的神经网络实现的函数。他们的方法MetaAnchor与其他手工定义的方法相比有了全面的改进,但是定制的锚仍然是手工设计的。

3.4.3 Keypoints-based Methods

另一种基于关键点检测的方案生成方法,可分为两大类:基于角点的方法和基于中心点的方法。基于角点的方法通过合并从特征地图中学习到的角点对来预测边界框。Denet[94]以概率的方式重新定义了目标检测问题。对于特征图上的每一点,Denet建立了四种角点类型(左上角、右上角、左下角、右下角)的分布模型,并在对象的每个角点上应用朴素贝叶斯分类器来估计包围盒的置信度。这种基于角点的算法消除了锚的设计,成为产生高质量建议的更有效方法。后来在Denet的基础上,Law和Deng提出了CornerNet[63],它直接模拟了角点上的分类信息。CornerNet利用新的特征嵌入方法和角池层对左上角和右下角的信息进行建模,以正确匹配属于同一对象的关键点,在公共基准上获得最新的结果。对于基于中心的方法,在特征地图的每个位置上预测目标成为中心的概率,在不使用任何锚定先验的情况下直接回归高度和宽度。朱等人。[95]提出了一种特征选择无锚(FSAF)框架,它可以插入到具有FPN结构的一级探测器中。

在FSAF中,在线特征选择块用于训练附加在特征金字塔的每一层中的基于中心的多级分支。在训练过程中,FSAF动态地将每个对象分配到最合适的特征级别,以训练基于中心的分支。与FSAF类似,Zhou等人。提出了一种新的基于中心的框架[64],该框架基于一个没有FPN结构的沙漏网络[63]。此外,他们将基于中心的方法应用于更高层次的问题,如三维检测和人体姿态识别,均取得了最新的成果。Duan等人。[65]提出了基于中心的方法和基于角点的方法相结合的中心网。中心网首先通过角点对预测边界盒,然后预测初始预测的中心概率以剔除容易出现的负性。与基线相比,CenterNet得到了显著的改进。这些无锚方法是一个很有前途的研究方向。

3.5 Feature Representation Learning

特征表示学习是整个检测框架的重要组成部分。目标对象处于复杂的环境中,其尺度和纵横比变化较大。为了获得良好的检测性能,需要训练具有鲁棒性和鉴别能力的目标特征嵌入。这一部分,我们介绍了目标检测的特征表示学习策略。具体来说,我们确定了三个类别:多尺度特征学习、上下文推理和可变形特征学习。

3.5.1 Multi-scale Feature Learning

典型的基于深卷积网络的目标检测算法,如Fast R-CNN[38]和Faster RCNN[34]仅使用单层特征映射来检测目标。然而,在一个单一的特征地图上,在大范围的尺度和纵横比范围内检测目标是相当困难的。深度卷积网络学习不同层次的层次特征,捕捉不同尺度的信息。具体来说,具有丰富空间信息的浅层特征具有更高的分辨率和更小的接收场,因此更适合于检测小目标,而深层语义丰富的特征对光照、平移更为鲁棒,具有更大的接收场(但分辨率较粗),更适合于探测大型物体。在检测小目标时,需要高分辨率的表示,而这些对象的表示在深层特征中甚至可能不可用,使得小目标检测变得困难。一些技术,如扩张/萎缩卷积[97,52]被提出以避免下采样,并使用高分辨率信息甚至在更深的层。同时,在没有足够大的接收场的情况下,在浅层探测大目标也是非最优的。因此,处理特征尺度问题已成为目标检测中的一个基础研究问题。多尺度特征学习问题主要有四种研究范式:图像金字塔、预测金字塔、综合特征和特征金字塔。这些在图7中简要说明。
在这里插入图片描述

Image Pyramid:

一个直观的想法是将输入图像调整为多个不同的尺度(图像金字塔),并训练多个检测器,每个检测器负责一定的尺度范围[98、99、100、101]。在测试过程中,将图像调整到不同的尺度,然后使用多个检测器,并合并检测结果。这可能在计算上很昂贵。Liu等人。[101]首先学习了一个轻量级的 scale-aware 网络来调整图像的大小,使所有对象都处于类似的比例。接着学习了一个单尺度检测器。辛格等人。[98]进行了小目标检测的综合实验。他们认为,学习一个单尺度鲁棒检测器来处理所有尺度对象比学习具有图像金字塔的尺度相关检测器要困难得多。在他们的工作中,他们提出了一种新的用于图像金字塔的框架尺度归一化(SNIP)[98],它训练多个尺度相关的检测器,每个检测器负责特定的尺度对象。

在这里插入图片描述

Integrated Features:

另一种方法是通过组合多层特征并基于新构建的地图进行最终预测来构建单一特征地图[102、51、50、103、104、105]。通过融合空间丰富的浅层特征和语义丰富的深层特征

Prediction Pyramid:

新构造的特征包含了丰富的信息,可以检测出不同尺度的目标。这些组合通常通过使用 skip-connection 来实现[1]。由于不同层次的特征范数具有很高的方差,因此需要进行特征规范化。贝尔等人提出了内-外网络(ION)[51],它通过ROI池从不同层裁剪区域特征[38],并结合这些多尺度区域特征进行最终预测。孔等人提出的HyperNet[50]采用了与 IoN 类似的思想。他们通过集成中间层和浅层特征来生成建议和检测对象,精心设计了高分辨率超特征地图。反卷积层用于向上采样深层特征图,批标准化层用于对输入斑点进行标准化。构建的超特征映射还可以隐式地编码来自不同层的上下文信息。Wang等人受到细粒度分类算法的启发,这些算法集成了高阶表示,而不是利用对象建议的简单一阶表示。提出了一种新的多尺度位置感知核表示(MLKP)[103]框架,该框架能够有效地捕获提议特征的高阶统计量,并生成更具区分性的特征表示。组合特征表示更具描述性,为分类和定位提供了语义和空间信息。

3.5.2

其余简略

4、Learning Strategy

与图像分类相比,目标检测需要同时优化定位和分类任务,这使得训练鲁棒检测器变得更加困难。此外,还需要解决一些问题,如不平衡采样、定位、加速等,因此需要开发创新的学习策略,以培养有效和高效的检测器。在本节中,我们将回顾一些用于对象检测的学习策略。

4.1 Training Stage

在本节中,我们将回顾训练对象检测器的学习策略。具体讨论了数据增强、不平衡采样、级联学习、局部求精等学习策略。

4.1.1 Data Augmentations

数据增强对于几乎所有的深度学习方法都是很重要的,因为它们经常需要大量的数据,而更多的训练数据会带来更好的结果。在目标检测中,为了增加训练数据并生成具有多种视觉特性的训练块,训练图像的水平翻转被用于训练速度更快的R-CNN检测器[38]。在单级检测器中使用更密集的数据增强策略,包括旋转、随机作物、扩展和颜色变化[42、106、146]。这种数据增强策略在检测精度上有了显著的提高。

4.1.2 Imbalance Sampling

在目标检测中,正负样本的不平衡是一个关键问题。也就是说,大多数被估计为 proposal 的感兴趣区域实际上只是背景图像。它们很少是 positive instance(或对象)。这会导致训练检测器时出现不平衡的问题。具体来说,出现了两个需要解决的问题:类别不均衡和检测难度不均衡。类别不平衡问题是大多数候选方案属于背景,只有少数方案包含对象。这就导致了背景 proposal 在训练过程中主导了梯度。难度不平衡与第一个问题密切相关,即由于类别不平衡,使得大多数背景proposal 容易分类,而对象更难分类。为了解决类别不平衡问题,人们制定了各种策略。两级检测器,如R-CNN和Fast R-CNN将首先拒绝大多数阴性样本,并保留2000个进一步分类的建议。在Fast R-CNN[38]中,从这2k个方案中随机抽取负样本,并将每小批中的正、负比例固定为1:3,以进一步减少类别失衡的不利影响。随机抽样可以解决类别不平衡问题,但不能充分利用来自negative proposal 的信息。一些negative proposal 可能包含关于图像的丰富上下文信息,而一些难例可能有助于提高检测精度。为了解决这个问题,刘等人[42]提出了硬负挖掘策略,该策略固定前景和背景比率,但采用了困难的负例来更新模型。具体来说,选择分类损失较大的负例进行训练。

为了解决困难不平衡,大多数抽样策略都是基于精心设计的损失函数。对于obejct检测,在C+1类别(C目标类别加上一个背景类别)上学习多类分类器。假设区域被标记为基本真值类u,p是C+1类上的输出离散概率分布(p={p0,…,pC})。损失函数由下式给出:
在这里插入图片描述
Lin等人。提出了一种新的抑制易采样信号的 focla loss[43]。他们没有丢弃所有简单的样本,而是给每个样本分配了一个重要权重w.r.t,其损失值为:

在这里插入图片描述
其中 α 和 γ 是控制权重的参数。易分类样本的梯度信号被抑制,使得训练过程更加注重难例(hard proposals)。Li等人。[147] 采用了类似 focal loss 的思想,提出了一种新的梯度协调机制(GHM)。新提出的 GHM 不仅抑制了易分类的 proposal,而且避免了异常值的负面影响。Shrivastava等人。[148]提出了一种在线难例挖掘策略,该策略基于与Liu等人的SSD[42]相似的原理,自动选择 hard proposal 进行训练。与Liu等人不同,在线难例挖掘只考虑了难度信息,而忽略了类别信息,这意味着在每一个小批量中前景与背景的比例是不固定的。他们认为困难样本在目标检测任务中比类不平衡更重要。

4.1.3 Localization Refinement

目标检测器必须为每个目标提供一个严密的定位预测(bbox或mask)。为了做到这一点,许多人努力完善初步的方案预测,以改进定位。精确的定位是一项挑战,因为预测结果通常集中在对象最具辨别力的部分,而不一定是包含对象的区域。在一些情况下,要求检测算法进行高质量的预测(高IoU阈值),如图9所示,以说明在高IoU阈值状态下检测器可能如何失败。定位的改进的一般方法是生成高质量的建议(见第3.4节)。在本节中,我们将回顾一些其他的定位精细化的方法。在R-CNN框架中,学习L-2辅助包围盒回归函数来细化定位,在快速R-CNN中,通过端到端的训练学习平滑的L1回归函数,如下所示:

在这里插入图片描述
其中,每个类别的预测的偏移量由每个目标类的 t c = t x c t y c t w c t h c tc=(t^c_ x,t^c_ y,t^c_ w,t^c_ h) 给出, v v 表示对象边界框的真实值( v = v x v y v w v h v=(v_x,v_y,v_w,v_h) )。x、 y、w、h分别表示边框中心、宽度和高度。
在这里插入图片描述
除了默认的 定位 优化之外,一些方法还学习辅助模型以进一步优化定位。Gidaris等人[131]引入了一种迭代包围盒回归方法,其中R-CNN被用于改进学习预测。在这里,这些预测被多次修正。Gidaris等人[149]提出的 LocNet 模型模拟了每个包围盒的分布,并改进了学习到的预测。这两种方法都需要在检测管道中使用单独的组件,并防止联合优化。

4.2 Testing stage

目标检测算法产生一组密集的预测,由于大量重复,这些预测不能直接用于评估。此外,还需要一些其他的学习策略来进一步提升检测精度。这些策略提高了预测质量或加快了推理速度。在本节中,我们将在测试阶段介绍这些策略,包括重复删除、模型加速和其他有效的技术。

4.2.1 Duplicate Removal

在这里插入图片描述
非最大抑制(NMS)是目标检测的一个组成部分,用于消除重复的假阳性预测(见图10)。目标检测算法使用多个重复的预测进行密集的预测。对于生成密集候选方案集的一阶段检测算法,如SSD[42]或DSSD(反褶积单次激发检测器)[112],围绕同一对象的方案可能具有相似的置信分数,从而导致误报。对于生成稀疏建议集的两阶段检测算法,边界盒回归器会将这些建议拉近同一对象,从而导致相同的问题。重复预测被认为是误报,在评估时将受到惩罚,因此需要NMS来删除这些重复预测。具体来说,对于每个类别,预测框根据置信度得分进行排序,并选择得分最高的框。此框表示为M。然后计算具有M的其他框的IoU,如果IoU值大于预定义的阈值Ω测试,则将删除这些框。对所有剩余的预测重复此过程。更正式地说,框B与M大于 Ω t e s t Ω_{test} 重叠的置信度得分将设置为零:

在这里插入图片描述
然而,如果一个对象仅仅位于 Ω t e s t Ω_{test} 内,NMS将导致丢失预测,这种情况在密集对象检测中非常常见。Navaneeth等人[165]引入了一种新的算法 soft-NMS 来解决这个问题。soft-NMS 没有直接消除预测B,而是将 B 的置信度利用连续函数 F 的形式(F是线性函数或高斯函数)进行衰减,
在这里插入图片描述
soft-NMS 避免了对聚集对象的预测,并且在许多公共数据集上都有改进。Hosong等人[166]介绍了一种网络架构,该架构设计用于执行基于置信度得分和边界框的NMS,该架构在监督的方式下与检测器训练分开进行优化。他们认为,重复预测的原因是探测器故意鼓励每个物体进行多次高分检测,而不是奖励一次高分。基于此,他们设计了一个网络,其动机有两个:(i)损失惩罚双重检测,以推动检测器准确预测每个对象的一次精确检测;(ii)联合处理附近的检测,以向检测器提供一个对象是否被多次检测的信息。新提出的模型没有放弃检测,而是将NMS重新定义为一个重新评分的任务,试图降低覆盖已检测对象的检测得分。

发布了152 篇原创文章 · 获赞 716 · 访问量 69万+

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/105171376