本文主要是介绍Recent Advances in Deep Learning for Object Detection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Recent Advances in Deep Learning for Object Detection
- Abstract
- 1 Introduction
- 2 Problem Settings
- 3 Detection Components
- 3.1 Detection Settings
- 3.2 Detection Paradigms
- 3.2.1 Two-stage Detectors
- 3.2.2 One-stage Detectors
- 参考博客
Abstract
目标检测是计算机视觉中的基本视觉识别问题,并且在过去的几十年中已得到广泛研究。 视觉目标检测旨在在给定图像中找到具有精确定位的特定目标类的对象,并为每个对象实例分配一个对应的类标签。 由于基于深度学习的图像分类取得了巨大的成功,因此近年来已经积极研究了使用深度学习的目标检测技术。在本文中,我们对深度学习中视觉目标检测的最新进展进行了全面的调查。在调查中,我们详细介绍了影响检测性能的多种因素,例如检测器的结构,特征的学习,建议的生成,采样的策略等。最后,我们讨论了一些未来的方向,以促进未来的深度学习视觉目标检测研究。
1 Introduction
在计算机视觉领域,存在一些基本的视觉识别问题:图像分类,目标检测和实例分割以及语义分割。特别地,图像分类旨在识别给定图像中对象的语义类别。目标检测不仅可以识别对象类别,还可以通过边界框预测每个对象的位置。语义分割旨在预测逐个像素的分类器,以便为每个像素分配特定的类别标签,从而提供对图像的更丰富的理解。之后提出了一种在目标检测和语义分割的交集处相对较新的设置,称为实例分割,以识别不同的对象,并为每个对象分配一个单独的分类像素级蒙版。
实际上,实例分割可以看作是目标检测的特殊设置,不是通过边界框来定位对象,而是需要像素级的定位。在此调查中,我们将注意力集中在回顾基于深度学习的目标检测方面的主要工作。一个好的检测算法应该对语义线索以及有关图像的空间信息有深刻的理解。实际上,目标检测是许多计算机视觉应用的基础,例如人脸识别,行人检测,视频分析和logo检测。
在深度学习时代之前的早期,目标检测的流程分为三个步骤:
- 建议区域的生成;
- 特征向量的提取;
- 区域的分类。
建议区域生成的目的是在图像中搜索可能包含对象的位置。这些位置也称为感兴趣区域(roi)。一个直观的想法是使用滑动窗口扫描整个图像。为了捕获有关对象的多尺度和不同纵横比的信息,将输入图像调整为不同比例,并使用多比例窗口在这些图像中滑动。在第二步中,在图像的每个位置上,从滑动窗口获取固定长度的特征向量,以捕获所覆盖区域的判别语义信息。该特征向量通常由低级视觉描述符编码,例如SIFT(尺度不变特征变换),Haar,HOG(梯度直方图)或SURF(加速鲁棒特征),显示出一定的鲁棒性规模,照明和旋转方差。最后,在第三步中,学习了区域分类器,以将分类标签分配给覆盖的区域。通常,这里使用支持向量机(SVM),因为它们在小规模训练数据上表现良好。此外,在区域分类步骤中使用了一些分类技术,例如bagging,cascade和adaboost,从而进一步提高了检测精度。大多数成功的传统目标检测方法都集中在精心设计特征描述符以获得对感兴趣区域的理解。借助良好的特征表示以及强大的区域分类器,Pascal VOC数据集(用于基准物体检测的可公开获得的数据集)取得了令人瞩目的结果。
值得注意的是,基于变形零件的机器(DPM)是一种突破性的检测算法,在2007、2008和2009年的VOC挑战赛中获得了3次冠军。DPM学习并整合具有可变形损失的多个零件模型,并使用潜在的SVM挖掘坚硬的负面示例以进行判别训练。但是,在2008年至2012年期间,基于这些传统方法的Pascal VOC的进展已逐渐增加,而从构建复杂的集成系统中获得的收益却很小。这表明了这些传统探测器的局限性。 最突出的是,这些限制包括:
- 在建议区域生成过程中,生成了大量建议区域,其中许多都是多余的。 这导致在分类过程中出现大量的冗余。 而且,窗口比例尺是手动和启发式设计的,无法很好地匹配对象;
- 特征描述符是基于低级视觉提示而手工制作的,这使得在复杂的上下文中难以捕获具有代表性的语义信息;
- 检测pipeline的每个步骤都是单独设计和优化的,因此无法获得整个系统的全局最优解决方案。
在将深度卷积神经网络(CNN)应用于图像分类成功之后,基于深度学习技术的目标检测也取得了显着进展。基于深度学习的新算法大大优于传统的检测算法。然而,深度卷积神经网络并未得到广泛研究,而支持向量机变得更加突出。这是因为深度学习有一些限制:
- 缺乏大规模的带注释的训练数据,从而导致过度拟合;
- 有限的计算资源;
- 与SVM相比,理论支持较弱。
2009年,贾等人收集了一个包含120万个高分辨率图像的大规模带注释的图像数据集ImageNet,这使得使用大型训练数据训练深度模型成为可能。随着并行计算系统(例如GPU群集)上计算资源的发展,2012年Krizhevsky等人(英文)。 用ImageNet数据集训练了一个大型的深度卷积模型,并且与所有其他方法相比,在大规模视觉识别挑战(ILSVRC)上显示出了显著的改进。在将DCNN应用于分类成功之后,深度学习技术迅速适应了其他视觉任务,并且与传统方法相比显示出了可喜的成果。与传统检测器中使用的手工描述符相比,深度卷积神经网络会从原始像素到高级语义信息生成层次结构特征表示,这些特征表示可从训练数据中自动学习,并在复杂环境中表现出更具区分性的表达能力。此外,得益于强大的学习能力,深度卷积神经网络可以使用更大的数据集获得更好的特征表示,而传统视觉描述符的学习能力是固定的,并且在有更多数据可用时无法提高。这些特性使基于深度卷积神经网络设计目标检测算法成为可能,该算法可以以端到端的方式进行优化,具有更强大的特征表示能力。
当前,基于深度学习的目标检测框架可以主要分为两个系列:
- 两阶段检测器(two-stage),先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类。主要通过一个卷积神经网络来完成目标检测过程,其提取的是CNN卷积特征,在训练网络时,其主要训练两个部分,第一步是训练RPN网络,第二步是训练目标区域检测的网络。网络的准确度高、速度相对One-stage慢。例如基于区域的CNN(R-CNN)及其变体;
- 一阶段检测器(one-stage),直接通过主干网络给出类别和位置信息,没有使用RPN网络,但准确度低,速度相遇two-stage快。例如YOLO及其变体。
下图说明了基于深度学习的目标检测技术在2012年之后的主要发展和里程碑。
这项调查的目的是提供对基于深度学习的目标检测算法的全面理解。下图显示了本次调查涵盖的主要方法的分类。
我们回顾了基于深度学习的目标检测的各种贡献,并将其分为三类:detection components, learning strategies, and applications & benchmarks(评价标准)。对于detection components,我们首先介绍两个检测设置:边界框级别(bbox级)和像素蒙版级别(mask级)定位。Bbox级算法需要通过矩形边界框来定位对象,而在mask级算法中需要更精确的逐像素的mask来分割对象。然后,我们对每个detection components进行了详细调查,包括骨干架构,建议生成和特征学习。对于学习策略,由于训练检测器的困难,我们首先强调检测学习策略的重要性,然后详细介绍针对训练和测试阶段的优化技术。最后,我们回顾一些基于现实世界的目标检测应用,包括人脸检测,行人检测,logo检测和视频分析。我们还讨论了用于这些检测任务的公开可用且常用的数据集和评估指标。最后,我们展示了近年来在公共数据集上进行通用检测的最新结果。
本文的其余部分安排如下:在第2节中,我们给出了目标检测的标准问题设置。detector conponents的详细信息在第3节中列出。然后,在第4节中介绍学习策略。在第5节和第6节中提供了针对实际应用的检测算法和基准。在第7节中列出了通用检测的最新结果。 在第8节中总结并讨论未来的方向。
2 Problem Settings
目标检测涉及识别(例如,“对象分类”)和定位(例如,“位置回归”)任务。一个物体检测器需要通过精确的定位来区分某些目标类别的物体与图像中的背景,并对每个物体实例进行正确的分类标签预测。将使用边界框或像素蒙版来定位这些目标对象实例。
不同的损失函数(例如softmax损失和focal损失)会影响最终检测性能,我们将在第4节中讨论这些函数。
在评估时,使用一个称为对象与预测之间的交集(IoU)的度量来评估定位质量(在此省略索引i):
设置IoU阈值Ω可确定预测是否紧密覆盖了对象(即IoU≥Ω;通常Ω = 0.5)。对于物体检测,具有正确分类标签的预测以及成功的定位预测(符合IoU标准)均被视为肯定预测,否则为否定预测:
对于通用目标检测问题评估,将使用在C个类别上的平均平均精度(mAP)进行评估,在诸如行人检测之类的现实世界场景中,将使用不同的评估指标,这将在第5节中进行讨论。除了检测精度外,检测速度也是评估对象检测算法的重要指标。具体而言,如果我们希望检测视频流中的对象(实时检测),则必须配备能够快速处理此信息的检测器。因此,还以每秒帧数(FPS)评估检测器效率,即每秒可以处理多少个图像。通常可以将检测速度达到20 FPS的检测器视为实时检测器。
3 Detection Components
在本节中,我们介绍目标检测的不同组成部分。 首先是关于目标检测范式的选择。我们首先介绍两个检测设置的概念:bbox级和mask级算法。 然后,我们介绍了两个主要的目标检测范例:两阶段检测器和一阶段检测器。 在这些范式下,检测器可以使用各种深度学习骨干架构,生成建议区域和特征表示模块。
3.1 Detection Settings
目标检测中有两个设置:
- vanilla object detection(bbox级定位);
- 实例分割(像素级或mask级定位)。
Vanilla object detection已被更广泛地研究,并被认为是传统的检测设置,其目标是通过矩形边界框定位对象。在Vanilla object detection算法中,只需要bbox注释,计算预测边界框与groundtruth之间的IoU用来衡量预测表现。实例分割是一个相对较新的领域,它基于传统的检测设置。实例分割需要通过对逐个像素进行分类而不是用粗糙的矩形边界框来分割每个对象。由于像素级的预测更加精确,因此实例分割对空间未对准更加敏感,因此对空间信息的处理要求也更高。实例分割的评估指标与bbox级检测几乎相同,不同之处在于IoU计算是对mask预测执行的。
3.2 Detection Paradigms
当前具有深度学习功能的最新目标检测器主要可分为两大类:两阶段检测器和单阶段检测器。对于两阶段检测器,在第一阶段中,将生成一组稀疏的建议。在第二阶段,通过深度卷积神经网络对生成的建议的特征向量进行编码,然后进行对象类别预测。单阶段检测器没有建议区域生成的单独阶段。他们通常将图像上的所有位置都视为潜在对象,并尝试将每个感兴趣的区域分类为背景或目标对象。两阶段检测器通常会在许多公共基准数据集上有着最好的结果,但是速度太慢。单阶段检测器要快得多,并且对于实时目标检测应用更有希望,但是与两阶段检测器相比,其性能相对较差。
3.2.1 Two-stage Detectors
两阶段检测器将检测任务分为两个阶段:
- proposal generation;
- making predictions for these proposals.
在建议区域生成阶段,检测器将尝试识别图像中可能是物体的区域。该想法是提出具有较高召回率的区域,使得图像中的所有对象都属于这些提议区域中的至少一个。在第二阶段,基于深度学习的模型用于使用正确的分类标签对这些建议进行分类。该区域可以是背景,也可以是预定义类别标签之一中的对象。此外,模型可以优化建议生成器建议的原始区域。接下来,我们回顾两阶段检测器中一些最具影响力的工作。
R-CNN是由Girshick等人在2014年提出的开创性的两阶段目标检测器。 R-CNN的pipline可以分为三个部分:
- proposal generation;
- feature extraction;
- region classification.
对于每张图像,R-CNN通过“选择性搜索”生成一组稀疏的建议(约2,000个建议),其目的是拒绝可以轻松识别为背景区域的区域。然后,将每个建议裁剪并调整为固定大小的区域,然后通过深度卷积神经网络,将其编码为一个(例如4,096维)特征向量,再接一个对所有的SVM分类器。最后,使用提取的特征作为输入来学习边界框回归器,以使原始建议紧密地约束对象。与传统的手工特征描述符相比,深度神经网络生成分层特征,并在不同层中捕获不同的比例信息,最后生成健壮和可区分的特征以进行分类(也就是特征提取能力强)。利用迁移学习的力量,R-CNN采用了在ImageNet上预先训练的卷积网络权重。最后一个全连接的层(FC层)将重新初始化以执行检测任务。然后在预训练模型上对整个检测器进行微调。来自Imagenet数据集的知识转移可显着提高性能。另外,R-CNN在训练前会拒绝大量的无用区域,这有助于提高学习速度并减少误差。
但是,R-CNN面临一些关键缺陷:
- 每个建议区域的特征分别由深度卷积网络提取(即不共享计算),从而导致大量重复的计算。因此,R-CNN的训练和测试非常耗时;
- R-CNN的三个步骤(建议生成,特征提取和区域分类)是独立的组件,并且整个检测框架无法以端到端的方式进行优化,从而难以获得全局最优解决方案;
- 选择性搜索依赖于低级的视觉提示,因此很难在复杂的环境中生成高质量的建议。而且,它无法享受GPU加速。
He等人受到空间金字塔匹配(SPM)概念的启发,提出了SPP-net来加速R-CNN并学习更多判别特征。SPP-net无需裁剪建议区域并分别输入CNN模型,而是使用深度卷积网络从整个图像中计算特征图,并通过空间金字塔池化(SPP)层在特征图上提取定长特征向量(有关SPP-net[1]的更多信息见参考博客)。与RCNN相比,SPP层还可以在各种比例和高宽比的图像/区域上工作,而无需调整它们的大小。 因此,它不会遭受信息丢失和不必要的几何失真的困扰。
与R-CNN相比,SPP网络获得了更好的结果,并且速度明显加快。但是,SPP网络的训练仍然是多阶段的,因此无法端到端进行优化(并且需要额外的高速缓存来存储提取的功能)。此外,SPP层不会将梯度反向传播到卷积核,因此,冻结了SPP层之前的所有参数。这极大地限制了深度骨干架构的学习能力。 Girshick等人提出了Fast R-CNN [38],这是一种多任务学习检测器,解决了SPP网络的这两个局限性。
Fast R-CNN(如SPP-Net)也计算了整个图像的特征图,并提取了特征图上的固定长度区域特征。与SPP网络不同,Fast R-CNN使用ROI池化层提取区域特征。特征提取部分的详细内容见[2]。特征提取后,将特征向量馈送到一系列完全连接的层中,然后进入两个同级输出层:分类层(cls)和回归层(reg)。分类层负责生成C + 1类(C类加一个背景类)的softmax概率,而回归层编码4个实值参数以精简边界框。在Fast RCNN中,特征提取,区域分类和边界框回归步骤都可以端到端进行优化,而无需额外的缓存空间来存储特征(与SPP Net不同)。 Fast R-CNN的检测精度比R-CNN和SPP-net高得多,并且具有更好的训练和推断速度。
尽管在学习检测器方面取得了进步,但是提案的生成步骤仍然依赖于传统方法,例如选择性搜索或边缘框,这些方法基于低级视觉提示,并且无法以数据驱动的方式进行学习。为了解决这个问题,开发了Faster R-CNN,它依靠一种新颖的建议生成器:Region Proposal Network(RPN)。该建议生成器可以通过监督学习方法来学习。 RPN是一个全卷积的网络,它的输入可以是任意大小的图像,并在特征图的每个位置上生成一组对象建议(详细内容见[3])。RPN可以插入Fast R-CNN中,因此可以对训练数据进行端到端的优化整个框架。通过这种方式,RPN可以以数据驱动的方式生成建议,并且还可以享受深层骨干网络的区分能力。Faster R-CNN能够在GPU上以5FPS进行预测,并在许多公共基准数据集(例如Pascal VOC 2007、2012和MSCOCO)上取得了最好的结果。当前,有大量基于Faster R-CNN的检测器变体用于不同用途。Faster R-CNN计算输入图像的特征图和特征图上的提取区域特征,它们在不同区域之间共享特征提取计算。但是,计算没有在区域分类步骤中共享,在该步骤中,每个特征向量仍需要分别经过一系列FC层。这样的额外计算可能会非常庞大,因为每个图像可能都有数百个建议。 仅仅删除完全连接的层会导致检测性能急剧下降,因为深层网络会减少建议的空间信息。Dai等人提出了基于区域的全卷积网络(R-FCN[4]),该网络在区域分类步骤中分担了计算成本。
Faster R-CNN的另一个问题是它使用单个深层特征图进行最终预测。这使得难以检测不同比例的物体。特别是,很难检测到小物体。 在DCNN特征表示中,深层特征在语义上强但空间弱,而浅层特征在语义上弱但空间强。Lin等人利用这一特性,提出了将深层特征与浅层特征相结合的特征金字塔网络(FPN),从而可以在不同比例的特征图中进行对象检测。主要思想是利用来自较深层的丰富语义信息来增强空间上较浅的层功能。FPN在检测多尺度物体方面取得了重大进展,并已广泛用于许多其他领域,例如视频检测和人体姿势识别。
大多数实例分割算法是从目标检测算法扩展而来的。早期方法通常会生成细分受众群提案,然后是Faster RCNN进行细分类别。后来,Dai等人提出了一种称为“ MNC”的多阶段算法,该算法将整个检测框架分为多个阶段,并从学习的边界框建议中预测分割掩码,然后由区域分类器对其进行分类。这些早期工作在多个阶段执行了bbox和mask预测。 为了使整个过程更加灵活,He等人提出了Mask R-CNN,它可以根据建议并行预测边界框和分割蒙版。Huang等人基于Mask R-CNN,提出了一种掩模质量感知框架,称为Mask Scoring R-CNN,该框架了解了预测的掩模的质量并校准了掩模质量和掩模置信度得分之间的偏差。下图概述了几个代表性的两级检测器的检测框架。
3.2.2 One-stage Detectors
与两阶段检测算法不同,该算法将检测流水线分为两部分:建议生成和区域分类;单阶段检测器没有建议生成的单独阶段。他们通常将图像上的所有位置都视为潜在对象,并尝试将每个感兴趣的区域分类为背景或目标对象。
Sermanet等人开发了一种早期基于深度学习的单阶段检测器,名为Over-Feat。OverFeat通过将DCNN分类器转换为完全卷积的目标检测器来执行目标检测。目标检测可以看作是“多区域分类”问题,因此OverFeat[5]通过将最后的FC层视为1x1卷积层以允许任意输入,从而将原始分类器扩展到检测器中。分类网络在输入的每个区域上输出预测网格,以指示对象的存在的可能性。主要贡献总结为两点:全卷积和offset池化。与卷积神经网络相比,OverFeat通过使用卷积层共享重叠区域的计算而显示出显着的速度强度,并且只需要通过网络一次传递。 但是,分类器和回归器的训练是分开进行的,没有共同优化。
后来,雷德蒙(Redmon)等人开发了一种称为YOLO(You Only Look Once)的实时检测器。YOLO将目标检测视为一种回归问题,并将整个图像在空间上划分为固定数量的网格单元(例如,使用7×7网格)。每个单元均被视为建议区域来检测可能存在的一个或多个对象。在原始实现中,每个单元都被认为包含(最多)两个对象的中心。对于每个单元格,进行的预测包括以下信息:该位置是否有对象,边界框坐标和大小(宽度和高度)以及对象的类别。整个框架是一个单一的网络,它省略了可以以端到端的方式进行优化的建议生成步骤。基于精心设计的轻量级架构,YOLO可以以45 FPS进行预测,并通过更简化的主干达到155 FPS。
但是,YOLO面临一些挑战:
- 在给定的位置它最多只能检测到两个物体,这使得难以检测小物体和拥挤的物体;
- 仅使用最后一个特征图进行预测,这不适用于以多个比例和宽高比预测对象.
在2016年,Liu等人提出了另一种单阶段检测器Single-Shot Mulibox Detector(SSD),它解决了YOLO的局限性。SSD还将图像划分为网格单元,但是在每个网格单元中,生成了一组具有多个比例和宽高比的anchor以离散化边界框的输出空间(与从YOLO中采用的固定网格单元进行预测不同)。每个锚点都由回归器学习到的4个值的偏移量进行了细化,并由分类器分配了(C + 1)个类别概率。此外,SSD可以在多个特征图上预测对象,并且这些特征图中的每一个都负责根据其感受野检测特定比例的对象。为了检测大物体并增大感受野,将几个额外的卷积特征图添加到原始主干架构。通过端到端的训练方案,在所有预测图上使用位置损失和分类损失的加权总和来优化整个网络。通过合并来自不同特征图的所有检测结果来做出最终预测。 为了避免大量的负面建议主导训练梯度,我们使用硬性负样本挖掘来训练检测器。密集数据增强也被用于提高检测精度。 SSD实现了与Faster RCNN相当的检测精度,但具有进行实时推理的能力。
如果不生成建议以过滤简单的负样本,则前景和背景之间的类别不平衡在单阶段检测器中是一个严重的问题。Lin等人提出了一种单阶段检测器RetinaNet,该检测器可以更灵活地解决类不平衡问题。RetinaNet使用focal loss抑制了简单负样本的梯度,而不是简单地丢弃它们。此外,他们使用特征金字塔网络来检测不同尺度的特征图上的多尺度对象。
Redmon等人提出了一种改进的YOLO版本YOLOv2,该版本显着提高了检测性能,但仍保持了实时推理速度。YOLOv2采用了功能更强大的深度卷积主干体系结构,该体系结构已在ImageNet的高分辨率图像(从224×224到448×448)上进行了预训练,因此所学习的权重对捕获细粒度的信息更加敏感。此外,受SSD中使用的定位策略启发,YOLOv2通过从训练数据(而不是手动设置)中进行k均值聚类来定义更好的定位先验。这有助于减少定位的优化困难。最终,YOLOv2与批处理归一化层[62]和多尺度训练技术集成在一起,从而获得了当时最好的检测结果。先前的方法需要手动设计锚盒以训练检测器。
后来,开发了一系列anchor-free物体检测器,其目的是预测边界框的关键点,而不是尝试将物体fit在anchor中。Law和Deng提出了一种新颖的无锚框架CornerNet,该框架将对象检测为一对角。在特征图的每个位置上,都可以预测类热图,对嵌入和角偏移。后来有基于关键点检测的一级检测器的其他几种变体。
参考博客
1 SPP-net原理解读
2 目标检测算法Fast R-CNN简介
3 RPN(区域生成网络)
4 目标检测之R-FCN网络
5 论文笔记:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
这篇关于Recent Advances in Deep Learning for Object Detection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!