翻译|过去20年间的目标检测:总结(后续优化)

摘要:目标检测是计算机视觉中最基本,最具挑战性的问题之一,近年来受到了极大的关注。它在过去二十年的发展可以看作是计算机视觉历史的缩影。如果我们将当今的目标检测视为在深度学习的力量下的技术美学,那么将时光倒流到20年前,我们将见证冷兵器时代的智慧。 根据其检测技术的发展,本文跨越了1/4个世纪的时间(1990-2019),广泛地审查了400多篇论文。本文涵盖了许多主题,包括的里程碑式的发现,数据集,验证集,目标检测的基本构件,加速技术以及最新的检测方法。本文还回顾了一些重要的检测应用程序,例如行人检测,面部检测,文本检测等,并对它们面临的挑战以及近年来的技术改进进行了深入分析。

 

关键词:目标检测,计算机视觉,深度学习,卷积神经网络,技术发展。

 

1 介绍

目标检测是一项重要的计算机视觉任务,用于检测数字图像中特定类别的视觉对象(例如人,动物或汽车)。对象检测的目的是开发能够提供计算机视觉应用程序所需的最基本信息之一的计算模型和技术:是什么对象?对象在哪里?

作为计算机视觉的基本问题之一,对象检测构成了许多其他计算机视觉任务的基础,例如实例分割,图像标注,对象跟踪等。从应用角度来看,物体检测可以分为两个研究主题,“一般性物体检测”和“检测应用”,前者旨在探索在统一框架下模拟人类视觉和感知的不同类型物体的检测方法。后一种指的是特定应用场景下的检测,例如行人检测,面部检测,文本检测等。近年来,深度学习技术的飞速发展为对象检测带来了新的血液,导致了重大突破,并将其推向了前所未有的研究热点。现在,对象检测已广泛用于许多实际应用中,例如自动驾驶,机器人视觉,视频监控等。图​​1显示,在过去20年中与“对象检测”相关的出版物数量不断增长。

  1. 这篇文章与其他相关综述的差异

       近年来,已发表了许多有关一般目标检测的综述。本文与这些综述之间的主要区别总结如下:

1.结合技术发展情况进行全面回顾:这篇论文广泛回顾了目标检测技术发展史上的400多篇论文,涉及时间超过1/4个世纪(1990-2019)。以前的大多数综述都只关注较短的历史时期或某些特定的检测任务,而没有考虑整个周期内的技术发展。站在历史的高速公路上,不仅可以帮助读者建立完整的知识体系,还可以为这个快速发展的领域找到未来的方向。

       2.关键技术和最新技术的深入探索:经过多年的发展,最新的目标检测系统已与大量技术集成在一起,例如“多尺度检测”,“深度挖掘”,“边框检测回归”等。但是,以前的综述缺乏基础分析来帮助读者理解这些复杂技术的性质,例如,“它们来自何处?如何演变?” “每种方法的优缺点是什么?”本文对以上问题进行了深入分析

     3.对检测加速技术的全面分析:目标检测的加速长期以来一直是关键但具有挑战性的任务。 本文对20年的目标检测历史在多个层面上的加速技术进行了广泛的回顾,包括“检测管线”(例如,级联检测,特征图共享计算),“检测主干”(例如,网络压缩,轻量级)。 网络设计)和“数值计算”(例如,积分图像,矢量量化)。以前的综述很少涵盖此主题。

  1. 目标检测的难点与挑战

尽管人们总是问“物体检测中的困难和挑战是什么?”。但实际上,这个问题并不容易回答,甚至可能过于笼统。由于不同的检测任务具有完全不同的目标和约束,因此它们的难度可能会有所不同。除了其他计算机视觉任务中的一些常见挑战(例如不同视点,光照和类内变异下的对象)之外,对象检测方面的挑战包括但不限于以下方面:对象旋转和比例变化(例如,小对象),准确的对象定位,密集和封闭的对象检测,检测速度加快等。在第4和第5节中,我们将对这些主题进行更详细的分析。

       本文的其余部分安排如下。在第2节,我们回顾了20年来目标检测的进化历史。 在第3部分中将介绍一些目标检测中的加速技术。在第4部分中,总结了最近三年中一些最新的检测方法。在第5部分中,将介绍一些重要的检测应用。在第6部分中,我们得出结论。 论文并分析进一步的研究方向。

 

2 20年间的目标检测

在本节中,我们将在多个方面回顾目标检测的历史,包括里程碑式的检测器,对象检测数据集,度量标准以及关键技术的发展。

2.1目标检测路线图

在过去的二十年中,目标检测的进展通常经历了两个历史时期:“传统目标检测时期(2014年之前)”和“基于深度学习的检测时期(之后2014年之前)”。如图2所示。

2.1.1里程碑:传统检测器

如果我们将当今的目标检测视为在深度学习的力量下的技术美学,那么将时间倒回20年,我们将见证“冷兵器时代的智慧”。大多数早期的目标检测算法都是基于手工特征构建的。 由于当时缺乏有效的图像表示,人们别无选择,只能设计复杂的功能表示,以及各种加速技能,以耗尽有限的计算资源。

    1. Viola Jones 检测器

18年前,P.Viola和M. Jones首次实现了对人脸的无约束实时检测(例如,肤色区分约束等)。在700MHz奔腾III CPU上运行时,在可比的检测精度下,该检测器的时间比任何其他算法快数十倍甚至数百倍。该检测算法(后来称为“ Viola-Jones(VJ)检测器”)在此由作者的名字给出,以纪念他们的重要贡献。

VJ检测器遵循最直接的检测方式,即滑动窗口:遍历所有可能的位置并缩放图像中的比例,以查看是否有任何窗口包含人脸。尽管这似乎是一个非常简单的过程,但其背后的计算远远超出了计算机当时的能力。VJ检测器通过结合三种重要技术极大地提高了检测速度:“积分图像”,“特征选择”和“级联检测”。

  1. 积分图像:积分图像是一种加快盒滤波或卷积处理速度的计算方法。与其他物体检测算法一样,Haar小波在VJ检测器中用作图像的特征表示。积分图像使VJ检测器中每个窗口的计算复杂度与其窗口大小无关。
  2. 特征选择:作者使用Adaboost算法而不是使用一组手动选择的Haar基础滤波器,而是从大量的随机特征池(约18万维)中选择一小部分对大多数人脸检测最有帮助的特征 )。
  3. 级联检测:在VJ检测器中引入了多级检测范例(也称为“级联检测”),以通过在背景窗口上花费较少的计算而在面部目标上花费更多的计算来减少其计算开销。
    1. HOG 检测器

方向梯度直方图(HOG)特征描述符最初由N. Dalal和B.Triggs在2005年提出。HOG可被认为是当时尺度不变特征变换和形状上下文的重要改进。为了平衡特征不变性(包括平移,缩放,照度等)和非线性(区分不同的对象类别),HOG描述符按照如下方式实现:首先,在密集的间隔均匀的图像单元上计算,同时使用有重叠的局部对比度归一化(在“图像块”上)提高准确性。虽然HOG可以用于检测各种类别的对象,但它的设计的初衷是解决行人检测的问题。为了检测不同大小的对象,HOG检测器在保持检测窗口大小不变的情况下,对输入图像进行多次尺度调整。多年来,HOG检测器一直是许多目标检测器和各种计算机视觉应用的重要基础。

    1. 可变形的基于零件的模型(DPM)

DPM作为VOC 检测挑战赛07、08、09三年的优胜者,是传统目标检测方法的巅峰。DPM最初是由P. Felzenszwalb在2008年提出的,作为HOG检测器的扩展,然后R. Girshick进行了各种改进。

DPM遵循“分而治之”的检测原理,在该原理中,训练可以简单地视为对分解对象的正确方法的学习,而推理则可以视为对不同对象部分进行检测的集合。 例如,检测“汽车”的问题可以被视为检测其车窗,车身和车轮。 这部分工作又名“星型模型”,由P. Felzenszwalb等人完成。后来,R.Girshick进一步将星形模型扩展到“混合模型”,以处理更大变化下的现实世界中的物体。

一个典型的DPM检测器由一个总滤波器器和一些部件滤波器组成。不像其他方法那样手动指定部件滤波器的配置(例如,大小和位置),DPM中使用了一种弱监督学习的方法,使得所有部件滤波器的参数设定都可以作为潜在变量自动学习。R. Girshick将此过程进一步公式化地表示为“多实例学习”的一个特例,并应用了“难例挖掘”、“边界框回归”、“上下文启动”等重要技术来提高检测精度。为了加快检测速度,Girshick开发了一种技术,将一组检测模型“编译”成一整个更快的模型,实现了级联架构,在不牺牲任何精度的情况下速度提高了10倍以上。

虽然现代的目标探测器在检测精度上已经远远超过了DPM,但是很多检测器仍然被其诸多有价值的见解影响着,例如混合模型、难例挖掘、边界框回归等。2010年,Felzenszwalb和R. Girshick被PASCAL VOC授予“终身成就奖”。

2.1.2里程碑:基于卷积神经网络的两阶段检测器

随着手动特征的性能趋于饱和,目标检测在2010年之后进入了一个平稳期。R. Girshick说:“……在2010年至2012年期间,进展缓慢,有一些小的成就,如构建集成系统和现有方法的小型变体”[38]。2012年,全世界都目睹了卷积神经网络的重生[40]。由于深卷积网络能够学习很具有鲁棒性的和高维的图像特征,一个自然的问题就是我们能否将其应用到目标检测中? R. Girshick等人在2014年率先打破僵局,提出了包含CNN特征的区域(RCNN)用于目标检测[16,41]。从那时起,目标检测开始以前所未有的快速发展。在深度学习时代,目标检测可以分为两类:“两阶段检测”和“一阶段检测”,前者将检测构建为一个“由粗到精”的过程,而后者将检测构建为“一步完成”的过程。

       RCNN

RCNN背后的思想很简单:它首先通过选择性搜索提取一组候选目标(目标候选框)[42]。然后,将每个候选框重新调整为固定大小的图像,并将其输入到根据ImageNet训练的CNN模型中(例如,AlexNet[40]),以提取特征。最后,使用线性支持向量机分类器来预测每个区域内是否存在目标,并识别目标类别。RCNN在VOC07数据集上产生了显著的性能提升,平均精度(mAP)从33.7% (DPM-v5[43])大幅提高到58.5%。

虽然RCNN已经取得了很大的进步,但它的缺点也很明显:在大量的重叠的候选框上进行冗余的特征计算(一张图像超过2000个框)导致检测速度极慢(GPU每幅图像14秒)。同年晚些时候,SPPNet[17]被提出并克服了这个问题。

SPPNet

2014年,K. He等人提出了空间金字塔池化网络(SPPNet)[17]。以前的CNN模型需要一个固定大小的输入,例如,AlexNet[40]需要一个224x224图像。SPPNet的主要贡献是引入了空间金字塔池化(SPP)层,该层使得CNN可以生成固定长度的特征向量,而不需要重新调整图像/感兴趣区域。利用SPPNet进行目标检测时,只对整个图像计算一次特征映射,然后生成任意区域的定长特征来训练检测器,避免了对卷积特征的重复计算。SPPNet的速度是R-CNN的20多倍,并且没有牺牲任何检测精度(VOC07 mAP=59.2%)。

虽然SPPNet有效地提高了检测速度,但是仍然存在一些不足: 第一,训练仍然是多阶段的;第二,SPPNet只是对其全连通层进行微调,而忽略了之前的所有层。次年晚些时候,Fast RCNN[18]被提出并解决了这些问题。

Fast RCNN

R. Girshick在2015年提出了Fast RCNN检测器[18],这是对R-CNN和SPPNet的进一步改进[16,17]。Fast RCNN使我们能够在相同的网络参数配置下同时训练检测器和边界框回归。在VOC07数据集上,Fast RCNN将mAP从58.5% (RCNN)提高到70.0%,检测速度是R-CNN的200多倍。

虽然Fast-RCNN成功地融合了R-CNN和SPPNet的优点,但其检测速度仍然受到区域推荐算法的限制(详见2.3.2节)。然后,一个问题自然地出现了:“我们能用CNN模型生成目标区域推荐吗?”稍后,Faster R-CNN[19]回答了这个问题。

Faster RCNN

2015年,S. Ren等人在Fast RCNN之后不久提出了Faster RCNN检测器[19,44]。Faster RCNN是首个端到端、首个近实时的深度学习检测器(COCO mAP@.5=42.7%, COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%, VOC12 mAP=70.4%, 17fps with ZFNet[45])。Faster RCNN的主要贡献是引入了区域推荐网络(RPN),该网络可以实现几乎无额外消耗的区域推荐。从R-CNN到Faster RCNN,一个目标检测系统的大部分独立模块,如区域推荐、特征提取、边界框回归等,都逐渐集成到一个统一的、端到端的学习框架中。

虽然Faster RCNN突破了Fast RCNN的速度瓶颈,但是在后续的检测阶段仍然存在计算冗余。后来提出了各种改进方案,包括RFCN[46]和Light head RCNN[47]。

Feature Pyramid Networks

2017年,T.-Y。Lin等人基于Faster RCNN提出了特征金字塔网络(FPN)[22]。在FPN之前,大多数基于深度学习的检测器只在网络的顶层进行检测。虽然CNN的深层特征有利于类别识别,但不利于对象的定位。为此,在FPN中开发了具有横向连接的自顶向下体系结构,这能在所有级别上构建高级语义。由于CNN在前向传播过程中自然形成了一个特征金字塔,所以FPN在检测各种尺度的目标方面取得了很大的进步。在基本的Faster R-CNN系统中使用FPN,没有附加任何额外的功能,在MSCOCO数据集上实现了最先进的单模型检测结果(COCO mAP@ .5= 59.1%, COCO mAP@[.5,.95]= 36.2%)。FPN现在已经成为许多最新探测器的基本组成部分。

2.1.3里程碑:基于CNN的单阶段检测器

YOLO

YOLO由R. Joseph等人于2015年提出。它是深度学习时代的第一款单级检测器[20]。YOLO的运行速度是非常快的:一个YOLO的快速版本运行速度为155fps, VOC07 mAP=52.7%,而它的增强版本运行速度为45fps, VOC07 mAP=63.4%, VOC12 mAP=57.9%。YOLO是“You Only Look Once”的缩写。从它的名字可以看出,作者完全抛弃了之前“区域推荐+验证”的检测范式。相反,它遵循一种完全不同的哲学:将单个神经网络应用于整个图像。该网络将图像分成数个子区域,并同时预测每个子区域的边界框和分类概率。后来R. Joseph在YOLO的基础上进行了一系列改进,提出了其v2和v3版本[48,49],进一步提高了检测精度,同时保持了很高的检测速度。

虽然YOLO在检测速度上有了很大的提高,但是与两阶段检测器相比,它的定位精度有所下降,特别是对于一些小目标。YOLO的后续版本[48,49]和后续提出的SSD[21]更关注这个问题。

Single Shot MultiBox Detector(SSD)

SSD[21]是由W. Liu等人在2015年提出的。这是深度学习时代的第二个单阶段检测器。SSD的主要贡献是引入了多参考和多分辨率检测技术(将在2.3.2节中介绍),这大大提高了单阶段检测器的检测精度,特别是对于一些小目标。SSD在检测速度和准确度上都有优势(VOC07 mAP=76.8%, VOC12 mAP=74.9%, COCO mAP@ 5=46.5%, mAP@[.5,.95]=26.8%,快速版本运行速度为59fps)。SSD与以往所有检测器的主要区别在于,前者在网络的不同层上检测不同尺度的对象,而后者仅在其顶层上运行检测。

RetinaNet

单阶段检测器具有速度快、结构简单等优点,但在精度上一直落后于两阶段检测器。T.-Y。Lin等人发现了背后的原因,并在2017年提出了RetinaNet[23]。他们表示,在高密度检测器训练过程中所遇到的,极端的前景-背景不平衡是检测精度低的主要原因。为此,他们在RetinaNet中引入了一种新的损失函数“focal loss”,它通过重新定义标准的交叉熵损失,使检测器在训练过程中将更多的注意力放在困难的、分类错误的例子上。focal loss使得单阶段检测器在保持极高的检测速度的同时,可以达到与两阶段检测器相当的精度。(COCOmAP@.5 = 59.1%, mAP@ [.5, .95]= 39.1%)。

 

2.2对象检测数据集和度量

建立具有较小偏差的较大数据集对于开发高级计算机视觉算法至关重要。 在对象检测中,过去10年中已经发布了许多知名的数据集和基准,包括PASCAL VOC挑战(例如VOC2007,VOC2012),ImageNet大规模视觉识别挑战(例如 ,ILSVRC2014),MS-COCO检测挑战等。表1给出了这些数据集的统计数据。图4显示了这些数据集的一些图像示例。 图3显示了从2008年到2018年VOC07,VOC12和MS-COCO数据集检测精度的提高。

• Pascal VOC

PASCAL视觉对象类(VOC)挑战1(从2005年到2012年)是早期计算机视觉社区中最重要的竞赛之一。PASCAL VOC中有多个任务,包括图像分类,对象检测,语义分割和动作检测。Pascal-VOC的两种版本主要用于对象检测:VOC07和VOC12,其中前者由5k图片+12k带注释的对象,后者由11k图片+ 27k带注释的对象。这两个数据集中标注了20种生活中常见的对象(人:人;动物:鸟,猫,牛,狗,马,羊;车辆:飞机,自行车,船,公共汽车,汽车,摩托车,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值