本文主要是介绍Object Detection in 20 Years: A Survey(综述),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文链接:https://arxiv.org/pdf/1905.05055.pdf%C2%A0%EF%BC%88PShttps://arxiv.org/pdf/1905.05055.pdf%C2%A0%EF%BC%88PS
该综述结合了200+篇文献进行阐述,内容丰富,非常值得阅读!
摘要:
该综述回顾了目标检测这一发展领域的技术演进,跨越了四分之一个世纪的时间(从20世纪90年代到2022年),涵盖了许多主题,包括历史上的里程碑检测器、检测数据集、度量和检测系统的基本构建块,以及加速技术和最先进的一些检测方法。
1.简介
目标检测是许多其他计算机视觉任务的基础,例如实例分割,图像字幕,目标跟踪等。近年来,深度学习技术的快速发展极大地推动了目标检测的进步,使其取得显著的突破,并将其推向了前所未有的研究热点。目标检测现在已经广泛应用于许多现实世界的应用中,例如自动驾驶、机器人视觉、视频监控等。图1示出了在过去二十年中与“目标检测”相关联的出版物数量的增长。
但目标检测还面临着许多挑战,除了其他计算机视觉任务中一些常见挑战,例如不同视点、光照和类内变化下的对象,还包括但不限于:目标旋转和比例变化(例如,小目标)、准确的目标定位、密集和遮挡目标检测、检测的加速等。
该综述从以下三个方面进行论述:从技术发展的角度进行了全面的回顾,深入探讨了关键技术和最新研究进展,并对检测提速技术进行了综合分析。主要线索集中在过去,现在和未来,补充了一些其他必要的组件,如数据集,指标和加速技术。
2.目标检测的20年
主要从多个角度回顾目标检测的历史,包括里程碑检测器、数据集、指标和关键技术的演变。
2.1目标检测的路线
在过去的二十年里,人们普遍认为目标检测的进步大致经历了两个历史时期:传统的目标检测时期(2014年之前)和基于深度学习的目标检测时期(2014年之后),如下图2所示。
2.1.1里程碑一:传统的目标检测器
大多数早期的目标检测算法都是基于手工制作的特征构建的。由于当时缺乏有效的图像表示方法,人们不得不设计复杂的特征表示和各种加速技巧。
(1)Viola Jones 检测器:2001年,P.Viola和M.Jones第一次实现了人脸的实时检测,而没有任何约束(例如肤色分割),在同等检测精度下,检测器的速度比其他算法快数十倍甚至数百倍。VJ检测器遵循最直接的检测方式,即滑动窗口:浏览图像中所有可能的位置和比例,以查看是否有任何窗口包含人脸。虽然这看起来很简单,但背后的计算却远远超出了当时计算机的能力。VJ探测器通过结合三项重要技术大大提高了探测速度:“积分图像”、“特征选择”和“检测级联”。
(2)HOG检测器:2005年,N.Dalal和B.Triggs提出了方向梯度直方图(HOG)特征描述符。HOG可以被认为是其时间的尺度不变特征变换和形状上下文的重要改进。为了平衡特征不变性(包括平移、缩放、照明等)和非线性,HOG描述符被设计为在均匀间隔单元的密集网格上计算,并使用重叠的局部对比度归一化。虽然HOG可以用于检测各种对象类别,但它的动机主要是行人检测的问题。为了检测不同大小的对象,HOG检测器多次重新缩放输入图像,同时保持检测窗口的大小不变。多年来,HOG检测器一直是许多物体检测器和各种计算机视觉应用的重要基础。
(3)基于可变形零件的模型(DPM):DPM作为VOC-07、-08和-09检测挑战赛的优胜者,是传统目标检测方法的缩影。DPM最初由P. Felzenszwalb在2008年作为HOG探测器的扩展。它遵循“分而治之”的检测哲学,其中训练可以简单地被认为是学习分解对象的适当方式,并且推理可以被认为是对不同对象部分的检测的集合。例如,检测“汽车”的问题可以分解为其车窗、车身和车轮的检测。
虽然今天的目标检测器在检测精度上已经远远超过DPM,但其中许多仍然深受其宝贵见解的影响,例如,混合模型、硬否定挖掘、边界框回归、上下文启动等。2010年,P. Felzenszwalb和R.Girshick被PASCAL VOC授予“终身成就”奖。
2.1.2里程碑二:基于CNN的二阶段检测器
随着手工特征的性能变得饱和,目标检测的研究在2010年之后达到了一个瓶颈。2012年,世界见证了卷积神经网络的重生。由于深度卷积网络能够学习图像的强大和高级特征表示,因此自然会出现一个问题:我们可以把它引入到物体检测中吗?R.Girshick等人率先打破僵局。在2014年提出了具有CNN特征的区域(RCNN)。从那时起,目标检测开始以前所未有的速度发展。深度学习时代有两类探测器:在一些实例中,检测器可分为“二阶段检测器”和“一阶段检测器”,其中前者将检测框定为“粗到细”过程,而后者将其框定为“一步完成”。
(1)RCNN:它首先通过选择性搜索提取一组对象候选框。然后,每个候选框被重新缩放为固定大小的图像,并输入到在ImageNet上预训练的CNN模型(例如AlexNet)中以提取特征。最后,线性SVM分类器用于预测每个区域内的目标的存在,并识别目标类别。RCNN在VOC 07上产生了显著的性能提升,平均精度(mAP)从33.7%(DPM-v5)大幅提高到58.5%。
但它的缺点显而易见:对大量重叠候选框(来自一个图像的超过2000个框)的冗余特征计算导致极慢的检测速度(使用GPU的每个图像14s)。同年晚些时候,SPPNet被提出并解决了这个问题。
(2)SPPNet:2014年,K.He等人提出了空间金字塔池网络(SPPNet)。SPPNet的主要贡献是引入了空间金字塔池(SPP)层,该层使CNN能够生成固定长度的表示,而不管图像/感兴趣区域的大小,而无需重新缩放。当使用SPPNet进行目标检测时,只需从整幅图像中计算一次特征图,然后生成任意区域的固定长度表示用于训练检测器,避免了重复计算。SPPNet比R-CNN快20倍以上,而不会牺牲任何检测精度。
虽然SPPNet有效地提高了检测速度,但它仍然存在一些缺点:首先,训练仍然是多阶段的,其次,SPPNet只微调其完全连接的层,而忽略所有先前的层。第二年晚些时候,Fast RCNN被提出并解决了这些问题。
(3)Fast RCNN:2015年,R.Girshick提出了快速RCNN检测器,这是R-CNN和SPPNet的进一步改进。快速RCNN使我们能够在相同的网络配置下同时训练检测器和边界框回归器。在VOC 07数据集上,Fast RCNN将mAP从58.5%(RCNN)提高到70.0%,同时检测速度比R-CNN快200倍以上。
尽管Fast-RCNN成功地集成了R-CNN和SPPNet的优点,但其检测速度仍然受到提案检测的限制。于是,一个问题自然产生了:“我们能用CNN模型生成对象提案吗?”后来,Faster R-CNN回答了这个问题。
(4)Faster RCNN:2015年,S.Ren等人在Fast RCNN之后不久提出了更快的RCNN检测器。更快的RCNN是第一个接近实时的深度学习检测器(COCO mAP@.5= 42.7%,VOC 07 mAP= 73.2%)。Faster-RCNN的主要贡献是引入了区域提案网络(RPN),该网络几乎可以实现免费的区域提案。从R-CNN到Faster RCNN,对象检测系统的大多数单独块,例如,建议检测、特征提取、边界框回归等已经逐渐集成到统一的端到端学习框架中。
Faster RCNN虽然突破了Fast RCNN的速度瓶颈,但在后续检测阶段仍存在计算冗余。后来,提出了各种改进,包括RFCN和Light head RCNN。
(5)特征金字塔网络(FPN):2017年,T.Y.Lin等人提出了FPN。在FPN之前,大多数基于深度学习的检测器只在网络顶层的特征图上运行检测。虽然CNN的深层特征有利于类别识别,但不利于定位对象。为此,开发一个自上而下的架构与横向连接的FPN,在所有规模建设高层次的语义。由于CNN通过其前向传播自然地形成特征金字塔,因此FPN在检测具有各种尺度的对象方面表现出巨大的进步。在基本的Faster R-CNN系统中使用FPN,它在COCO数据集上实现了最先进的单模型检测结果,而没有花里胡哨(COCO mAP@.5=59.1%)。FPN现在已经成为许多最新探测器的基本构建块。
2.1.3里程碑三:基于CNN的单阶段检测器
大多数二阶段检测器遵循由粗到细的处理范例。粗定位算法力求提高查全率,而细定位算法则在粗定位的基础上进一步细化定位,更加强调识别能力。他们可以很容易地达到高精度没有任何花里胡哨,但由于低速度和巨大的复杂性,很少在工程中采用。相反,一阶段检测器可以一步检索所有对象。它们以其实时和易于部署的特性深受移动设备的喜爱,但在检测密集和小物体时,它们的性能明显受损。
(1)You Only Look Once (YOLO):YOLO是由R.Joseph等人2015年提出的,它是深度学习时代的第一个单阶段检测器。YOLO非常快:YOLO的快速版本在VOC07mAP = 52.7%的情况下以155fps运行,而其增强版本在VOC07mAP = 63.4%的情况下以45fps运行。YOLO遵循与二阶段检测器完全不同的范式:将单个神经网络应用于完整图像。该网络将图像划分为区域,并同时预测每个区域的边界框和概率。尽管YOLO的检测速度有了很大的提高,但与二阶段检测器相比,YOLO的定位精度有所下降,特别是对于一些小目标。YOLO的后续版本和后者提出的SSD都更加关注这个问题。最近,YOLOv4团队的后续工作,YOLOv7被提出。通过引入动态标签分配和模型结构重新参数化等优化结构,它在速度和准确性方面优于大多数现有的对象检测器(范围从5 FPS到160 FPS)。
(2)单次激发多盒探测器(SSD):SSD是由W.Liu等人在2015年提出的。SSD的主要贡献是引入了多参考和多分辨率检测技术,这大大提高了单阶段检测器的检测精度,特别是对于一些小物体。SSD在检测速度和准确性方面都有优势(COCO mAP@.5= 46.5%,快速版本运行速度为59 fps)。SSD和以前的检测器之间的主要区别在于SSD在网络的不同层上检测不同尺度的对象,而以前的检测器只在其顶层运行检测。
(3)RetinaNet:尽管一阶段探测器速度快、结构简单,但多年来其精度一直落后于二阶段探测器。T.-Y.Lin等人探索了背后的原因,并在2017年提出了RetinaNet。他们发现,在密集检测器的训练过程中遇到的极端前景-背景类别不平衡是核心原因。为此,RetinaNet中引入了一个名为“焦点损失”的新损失函数,通过重塑标准交叉熵损失,使检测器在训练过程中将更多精力放在困难的错误分类示例上。焦损使单阶段探测器能够实现与二阶段探测器相当的精度,同时保持非常高的探测速度(COCO mAP@.5=59.1%)。
(4)CornerNet:以前的方法主要使用锚框来提供分类和回归参考。对象经常在数量、位置、比例、比例等方面表现出变化。它们必须遵循设置大量参考框的方式来更好地匹配地面事实,以实现高性能。然而,网络将遭受进一步的类别不平衡、大量手工设计的超参数和较长的收敛时间。为了解决这些问题,H. Law 等人放弃了以前的检测范式,并将任务视为关键点预测问题。获得关键点后,它将使用额外的嵌入信息解耦并重新组合角点以形成边界框。CornerNet 的性能优于当时大多数单阶段检测器 (COCO mAP@.5=57.8%)。
(5)CenterNet:X. Zhou等人于2019年提出了CenterNet。它也遵循基于关键点的检测范例,但消除了昂贵的后处理,例如基于组的关键点分配和NMS,形成一个完全端到端的检测网络。 CenterNet 将一个对象视为单个点(对象的中心),并基于参考中心点回归其所有属性(如大小、方向、位置、姿态等)。该模型简单而优雅,可以将 3D 物体检测、人体姿态估计、光流学习、深度估计和其他任务集成到单个框架中。尽管采用了如此简洁的检测概念,CenterNet也能达到比较不错的检测结果(COCO mAP@.5=61.1%)。
(6)DETR:近年来,Transformers 深刻影响了整个深度学习领域,尤其是计算机视觉领域。 Transformers 抛弃了传统的卷积算子,转而采用注意计算,以克服 CNN 的局限性并获得全局尺度的感受野。 2020 年,N. Carion 等人提出了 DETR,他们将目标检测视为一个集合预测问题,并提出了一个带有 Transformers 的端到端检测网络。到目前为止,目标检测已经进入了一个新时代,无需使用锚框或锚点即可检测对象。后来,X. Zhu等人提出了Deformable DETR来解决DETR收敛时间长和检测小物体性能有限的问题。它在 MSCOCO 数据集上实现了最先进的性能 (COCO mAP@.5=71.9%)。
2.2目标检测的数据集和度量指标
2.2.1数据集
构建更大且偏差较小的数据集对于开发高级检测算法至关重要。过去10年发布了许多著名的检测数据集,包括PASCAL VOC Challenges(例如VOC2007、VOC2012)、ImageNet Large Scale Visual Recognition Challenge(例如ILSVRC2014)的数据集、MS-COCO 检测挑战、开放图像数据集、Objects365等。如下图和表所示。
(1)Pascal VOC:PASCAL 视觉对象类挑战(从 2005 年到 2012 年),是早期计算机视觉社区中最重要的竞赛之一。 Pascal-VOC 的两个版本主要用于目标检测:VOC07 和 VOC12,其中前者由5k张图片+12k个带注释的对象组成,后者由11k图片+27k个带注释的对象组成。这两个数据集标注了生活中常见的物体,例如“人”、“猫”、“自行车”等20个类别。
(2)ILSVRC:ImageNet 大规模视觉识别挑战赛 (ILSVRC)推动了通用目标检测的最新技术发展。 ILSVRC 从 2010 年到 2017 年每年举办一次。它包含使用 ImageNet 图像的检测挑战。 ILSVRC 检测数据集包含 200 类视觉对象。其图像/对象实例的数量比 VOC 大两个数量级。
(3)MS-COCO:MS-COCO是当今最具挑战性的目标检测数据集之一。基于MS-COCO数据集的年度竞赛自2015年开始举办。它的对象类别数量比ILSVRC少,但对象实例多。例如,MS-COCO-17 包含来自 80 个类别的 164k 个图像和 897k 个带注释的对象。与 VOC 和 ILSVRC 相比,MS-COCO 最大的进步在于,除了边界框标注之外,还使用逐实例分割进一步标记每个对象,以帮助精确定位。此外,MS-COCO 包含更多的小物体(其面积小于图像的 1%)和位置更密集的物体。就像当时的 ImageNet 一样,MS-COCO 已经成为目标检测社区事实上的标准。
(4)Open Images:继 MS-COCO 之后,2018 年又推出了开放图像检测(OID)挑战,但规模空前。 Open Images 中有两个任务:1)标准目标检测,2)视觉关系检测,检测特定关系中的配对对象。对于标准检测任务,数据集由 1,910k 图像组成,其中 600 个对象类别有 15,440k 个带注释的边界框。
2.2.2度量指标
我们如何评估探测器的准确性?这个问题在不同的时期可能会有不同的答案。在早期的检测研究中,还没有广泛接受的检测精度评价指标。例如,在行人检测的早期研究中,通常使用“漏检率与每个窗口的误报率(FPPW)”作为衡量指标。然而,每个窗口的测量可能存在缺陷,无法预测完整的图像性能。2009年,加州理工学院的行人检测基准被引入,从那时起,评估指标已从FPPW更改为每幅图像误报(FPPI)。
近年来,最常用的检测评估是“平均精度(AP)”,它最初是在VOC2007中引入的。 AP定义为不同召回率下的平均检测精度,通常以特定类别的方式。所有类别的平均 AP (mAP) 通常用作最终的性能指标。为了测量对象定位精度,使用预测框与地面实况之间的 IoU 来验证它是否大于预定义的阈值,例如 0.5。如果是,则该物体将被识别为“检测到”,否则,该物体将被识别为“错过”。 0.5-IoU mAP 已成为物体检测事实上的指标。
2.2.3目标检测的技术演变
(1)多尺度检测技术演进:“不同尺寸”、“不同长宽比”物体的多尺度检测是物体检测的主要技术挑战之一,近20年来,多尺度检测经历了多个历史时期,如图5所示。
特征金字塔+滑动窗口:在VJ检测器之后,研究人员开始关注更直观的检测方式,即构建“特征金字塔+滑动窗口”。从2004年开始,基于这种范式构建了许多里程碑式的检测器,包括HOG检测器、DPM等。它们经常在图像上滑动固定大小的检测窗口,很少关注“不同的纵横比”。为了检测具有更复杂外观的物体,R. Girshick 等人,开始在特征金字塔之外寻求更好的解决方案。 “混合模型”是当时的一种解决方案,即针对不同长宽比的物体训练多个检测器。除此之外,基于样本的检测通过为每个对象实例(样本)训练单独的模型提供了另一种解决方案。
使用目标提案进行检测:目标提案是指一组可能包含任何对象的与类无关的参考框。使用目标提议进行检测有助于避免在图像上进行详尽的滑动窗口搜索。 2014年之后,随着深度CNN在视觉识别领域的流行,自上而下、基于学习的方法开始在这个问题上显示出更多优势。现在,随着一阶段检测器的兴起,提案检测逐渐淡出了人们的视线。
深度回归和无锚检测:近年来,随着GPU计算能力的增强,多尺度检测变得越来越简单,使用深度回归来解决多尺度问题的想法变得简单,即根据深度学习特征直接预测边界框的坐标。2018年之后,研究人员开始从关键点检测的角度思考物体检测问题。这些方法通常遵循两种思路:一是基于分组的方法,检测关键点(角点、中心点或代表点),然后进行对象分组;另一种是无组方法,将对象视为一个/多个点,然后在点的参考下回归对象属性(大小、比例等)。
多参考/分辨率检测:主要思想是首先在图像的每个位置定义一组参考(又名锚点,包括框和点),然后预测检测框基于这些参考。另一种流行的技术是多分辨率检测,即通过在网络的不同层检测不同尺度的对象。多参考和多分辨率检测现已成为最先进的目标检测系统中的两个基本构建模块。
(2)上下文启动的技术演变:视觉对象通常嵌入到与周围环境的典型上下文中。我们的大脑利用物体和环境之间的关联来促进视觉感知和认知。上下文启动长期以来一直被用来改进检测。图6显示了对象检测中上下文启动的演变。
使用局部上下文进行检测: 局部上下文是指要检测的对象周围区域的视觉信息。人们早已认识到局部上下文有助于改进目标检测。在 2000 年代初期,Sinha 和 Torralba 发现包含局部上下文区域(例如面部边界轮廓)可以显着提高面部检测性能。 Dalal 和 Triggs 还发现,加入少量背景信息可以提高行人检测的准确性。最近基于深度学习的检测器也可以通过简单地扩大网络的感受野或目标建议的大小来根据局部上下文进行改进。
使用全局上下文来进行检测:全局上下文利用场景配置作为目标检测的附加信息源。对于早期的时间检测器,集成全局上下文的常见方法是集成构成场景的元素的统计摘要,例如 Gist 。对于最近的检测器,有两种方法来集成全局上下文。第一种方法是利用深度卷积、扩张卷积、可变形卷积、池化操作来接收大的感受野(甚至大于输入图像)。但现在,研究人员已经探索了应用基于注意力的机制(非局部、变压器等)来实现全图像感受野的潜力,并取得了巨大的成功。第二种方法是将全局上下文视为一种顺序信息,并使用循环神经网络来学习它。
上下文交互:是指视觉元素之间传达的约束和依赖关系。最近的一些研究表明,现代检测器可以通过考虑上下文交互来改进。最近的一些改进可以分为两类,第一类是探索单个对象之间的关系,第二类是探索对象和场景之间的依赖关系。
(3)硬负挖掘技术的演进:检测器的训练本质上是一个不平衡的学习问题。在基于滑动窗口的检测器的情况下,背景和物体之间的不平衡可能高达10^7:1。在这种情况下,使用所有背景将对训练有害,因为大量简单的负面因素将压倒学习过程。硬负挖掘(HNM)旨在克服这个问题。 HNM的技术演进如图7所示。
Bootstrap: 目标检测中的Bootstrap是指从一小部分背景样本开始训练,然后迭代添加新的误分类样本的一组训练技术。在早期的检测器中,通常使用引导程序来减少数百万个背景的训练计算。后来它成为 DPM 和 HOG 检测器中解决数据不平衡问题的标准技术。
基于深度学习的检测器中的HNM:在深度学习时代,由于计算能力的增加,引导程序在2014-2016年的目标检测中很快被丢弃。为了缓解训练期间的数据不平衡问题,Faster RCNN 和 YOLO 等检测器只是简单地平衡正窗口和负窗口之间的权重。然而,研究人员后来注意到这并不能完全解决不平衡问题。为此,引导程序在 2016 年之后被重新引入对象检测。另一种改进是通过重塑标准交叉熵损失来设计新的损失函数,以便它将更多地关注困难的、错误分类的示例。
(4)损失函数的技术演进:损失函数衡量模型与数据的匹配程度(即预测与真实标签的偏差)。计算损失会产生模型权重的梯度,随后可以通过反向传播来更新该梯度以更好地适应数据。分类损失和定位损失构成了目标检测问题的监督。
分类损失:分类损失用于评估预测类别与实际类别的偏差,在以前的工作中,例如YOLOv1和YOLOv2,采用MSE/L2损失(均方误差)并没有对此进行彻底研究。后来,通常使用 CE 损失(CrossEntropy)。 L2 损失是欧几里得空间中的一种度量,而 CE 损失可以测量分布差异(称为可能性的一种形式)。分类的预测是一种概率,因此CE损失优于L2损失,其误分类成本更大,梯度消失效应更低。为了提高分类效率,提出了Label Smooth来增强模型泛化能力并解决对噪声标签的过度自信问题,而Focal loss旨在解决类别不平衡和分类难度差异的问题。
定位损失:定位损失用于优化位置和尺寸偏差。 L2损失在早期研究中很普遍,但它受异常值的影响很大,并且容易出现梯度爆炸。结合L1损失和L2损失的好处,研究人员提出了Smooth L1损失。
(5)非极大值抑制的技术演进:由于相邻窗口通常具有相似的检测分数,因此将非极大值抑制用作后处理步骤,以去除重复的边界框并获得最终的检测结果。在物体检测的早期,NMS 并不总是集成的。这是因为当时物体检测系统的期望输出并不完全清楚。图8展示了NMS在过去20年的演变。
贪婪选择:贪婪选择是一种老式但最流行的 NMS 执行方式。其背后的想法简单直观:对于一组重叠检测,选择具有最大检测分数的边界框,同时根据预定义的重叠阈值删除其相邻框。
虽然贪心选择现在已经成为NMS事实上的方法,但它仍然有一些改进的空间。首先,得分最高的框可能不是最合适的。其次,它可能会抑制附近的物体。最后,它不会抑制误报。已经提出了许多工作来解决上述问题。
边界框聚合:BB 聚合是 NMS的另一组技术,其思想是将多个重叠的边界框组合或聚类到一个最终检测中。这类方法的优点是充分考虑了对象关系及其空间布局。一些著名的检测器使用这种方法,例如VJ检测器和Overfeat(ILSVRC-13定位任务的获胜者)。
基于学习的 NMS:最近备受关注的一组 NMS 改进是基于学习的 NMS。主要思想是将 NMS 视为一个过滤器,对所有原始检测重新评分,并以端到端方式将 NMS 训练为网络的一部分,或训练网络来模仿 NMS 的行为。与传统手工制作的 NMS 方法相比,这些方法在改善遮挡和密集对象检测方面显示出了有希望的结果。
无 NMS 检测器:为了摆脱 NMS 并实现完全端到端的对象检测训练网络,研究人员开发了一系列方法来完成一对一的标签分配(即一个对象只有一个预测框)。这些方法经常遵循一个规则,要求使用最高质量的盒子进行训练,以实现无NMS。无 NMS 的探测器更类似于人类视觉感知系统,也是未来物体检测的一种可能方式。
3.加快检测速度
检测器的加速长期以来一直是一个具有挑战性的问题。目标检测中的加速技术可以分为三个级别:加速“检测管道”、“检测器主干”和“数值计算”。如图9所示。
3.1特征图共享计算
在检测器的不同计算阶段中,特征提取通常主导计算量。减少特征计算冗余最常用的想法是仅计算整个图像的特征图一次,这已经实现了数十甚至数百倍的加速。
3.2级联检测
级联检测是一种常用的技术。它需要一种从粗到精的检测理念:使用简单的计算过滤掉大部分简单的背景窗口,然后用复杂的窗口处理那些更困难的窗口。近年来,级联检测特别应用于“大场景中的小物体”的检测任务,例如人脸检测、行人检测等。
3.3网络的剪枝和量化
“网络剪枝”和“网络量化”是加速 CNN 模型的两种常用方法。前者是指修剪网络结构或权重,后者是指减少其代码长度。 “网络剪枝”的研究最早可以追溯到 20 世纪 80 年代。最近的网络剪枝方法通常采用迭代训练和剪枝过程,即在每个训练阶段后仅删除一小部分不重要的权重,并重复这些操作。最近关于网络量化的工作主要集中在网络二值化,其目的是通过将网络的激活或权重量化为二进制变量(例如0/1)来压缩网络,从而将浮点运算转换为逻辑运算。
3.4轻量级网络设计
最后一组加速基于 CNN 的检测器的方法是直接设计轻量级网络。除了“更少的通道和更多的层”等一些通用设计原则之外,近年来还提出了一些其他方法。
(1)因式分解卷积:分解卷积是构建轻量级 CNN 模型最直接的方法。有两组因式分解方法。第一组是将一个大的卷积滤波器分解为一组小的卷积滤波器,如图10(b)所示。例如,可以将一个 7x7 滤波器分解为三个 3x3 滤波器,它们共享相同的感受野,但后者效率更高。第二组是在通道维度中对卷积进行因式分解,如图 10 (c) 所示。
(2)组卷积: 组卷积旨在通过将特征通道分为不同的组,然后独立地对每个组进行卷积来减少卷积层中的参数数量,如图10(d)所示。如果我们将特征平均分为 m 组,而不改变其他配置,理论上计算量将减少到之前的 1/m。
(3)深度可分离卷积:深度可分离卷积,如图10(e)所示,可以被视为当组数设置等于通道数时组卷积的特殊情况。通常,使用多个 1x1 滤波器进行维度变换,以便最终输出具有所需的通道数。通过使用深度可分离卷积,计算量可以从 O(dk^2c) 减少到 O(ck^2)+O(dc)。这个想法最近已应用于目标检测和细粒度分类。
(4)瓶颈设计:与之前的层相比,神经网络中的瓶颈层包含很少的节点。近年来,瓶颈设计已广泛用于设计轻量级网络。在这些方法中,可以压缩检测器的输入层,以减少从检测一开始的计算量。我们还可以压缩特征图以使其更薄,从而加快后续检测速度。
(5)使用NAS检测:基于深度学习的检测器变得越来越复杂,严重依赖手工设计的网络架构和训练参数。神经架构搜索(NAS)主要关注定义候选网络的适当空间,改进快速准确的搜索策略,并以低成本验证搜索结果。在设计检测模型时,NAS可以减少对网络主干和锚框设计的人为干预的需要。
3.5数值加速
数值加速旨在从底层实现加速目标检测器。
(1)使用积分图像加快速度:积分图像是图像处理中的一种重要方法。它有助于快速计算图像子区域的总和。积分图像的本质是信号处理中卷积的积分微分可分性。
积分图像还可以用于加速目标检测中更通用的特征,例如颜色直方图、梯度直方图等。一个典型的例子是通过计算积分HOG图来加速HOG,如图11所示。积分HOG地图已用于行人检测,并在不损失任何精度的情况下实现了数十倍的加速。
(2)频域加速:卷积是目标检测中一种重要的数值运算类型。由于线性检测器的检测可以看作是特征图和检测器权重之间的窗口内积,可以通过卷积来实现。傅里叶变换是一种非常实用的加速卷积的方法,其理论基础是信号处理中的卷积定理,即在适当的条件下,两个信号 I*W 的卷积的傅里叶变换 F 是他们的傅里叶空间。
(3)矢量量化:矢量量化(VQ)是信号处理中的一种经典量化方法,旨在通过一小组原型向量来近似一大组数据的分布。它可用于数据压缩和加速目标检测中的内积运算。
4.目标检测的最新进展
过去二十年新技术的不断出现对目标检测产生了相当大的影响,但其基本原理和底层逻辑并没有改变。在上面的章节中,我们在大范围的时间范围内介绍了过去二十年的技术演变,以帮助读者理解目标检测;在本节中,我们将在短时间内更多地关注近年来最先进的算法,以帮助读者理解目标检测。有些是先前讨论的技术的扩展,而另一些则是混合概念的新颖交叉。
4.1超越滑动窗口检测
由于图像中的对象可以通过其真实框的左上角和右下角唯一确定,因此检测任务可以等效地构建为成对关键点定位问题。这一想法的最新实现是预测角点的热图。其他一些方法遵循这个想法,利用更多的关键点(角点和中心点、极值点和中心点、代表点)来获得更好的性能。另一种范式将对象视为一个或多个点,并直接预测对象的属性(例如高度和宽度)而不进行分组。这种方法的优点是可以在语义分割框架下实现,不需要设计多尺度的anchor box。此外,通过将对象检测视为一组预测,DETR将其完全解放在基于参考的框架中。
4.2旋转和缩放变化的稳健检测
近年来,人们在旋转和尺度变化的稳健检测方面做出了努力。
(1)旋转鲁棒检测:物体旋转在人脸检测、文本检测和遥感物体检测中很常见。这个问题最直接的解决方案是执行数据增强,以便任何方向的物体都可以被增强的数据分布很好地覆盖,或者为每个方向单独训练独立的检测器。设计旋转不变损失函数是最近流行的解决方案,其中添加对检测损失的约束,以使旋转对象的特征保持不变。最近的另一个解决方案是学习候选对象的几何变换。在二阶段检测器中,ROI 池化旨在为任何位置和大小的目标提案提取固定长度的特征表示。由于特征池通常在笛卡尔坐标系中执行,因此它对于旋转变换不是不变的。最近的一项改进是在极坐标中执行 ROI 池化,以便特征能够对旋转变化具有鲁棒性。
(2)规模鲁棒检测:最近对训练和检测阶段的规模鲁棒检测进行了研究。
尺度自适应训练:现代检测器通常将输入图像重新缩放到固定大小,并反向传播所有尺度中对象的损失。这样做的一个缺点是会出现“规模不平衡”的问题。在检测过程中构建图像金字塔可以缓解这个问题,但不能从根本上解决。最近的一项改进是图像金字塔的尺度归一化(SNIP),它在训练和检测阶段构建图像金字塔,并且仅反向传播某些选定尺度的损失,如图12所示。一些研究人员进一步提出了一种更有效的方法。高效的训练策略:SNIP with Efficient Resampling (SNIPER) ,即将图像裁剪并重新缩放为一组子区域,以便从大批量训练中受益。
尺度自适应检测:在基于 CNN 的检测器中,锚点的大小和长宽比通常经过精心设计。这样做的缺点是配置无法适应意外的规模变化。为了改善小物体的检测,最近的一些检测器提出了一些“自适应放大”技术,将小物体自适应地放大为“较大的物体”。最近的另一个改进是预测图像中对象的尺度分布,然后根据它自适应地重新缩放图像。
4.3 使用更好的骨干网络进行检测
检测器的准确性或者速度在很大程度上取决于特征提取网络,又称骨干网,例如ResNet、CSPNet 、Hourglass和 Swin Transformer。图13显示了三个著名的检测系统的检测精度:具有不同backbone的Faster RCNN、RFCN和SSD。目标检测最近受益于 Transformers 强大的特征提取功能。在 COCO 数据集上,排名前 10 的检测方法都是基于 Transformer 的。Transformer 和 CNN 之间的性能差距逐渐拉大。
4.4定位改进
为了提高定位精度,最近的检测器有两组方法:1)边界框细化,2)用于精确定位的新损失函数。
(1)边界框细化:提高定位精度最直观的方法是边界框细化,可以将其视为检测结果的后处理。最近的一种方法是将检测结果迭代地输入 BB 回归器,直到预测收敛到正确的位置和大小 。然而,一些研究人员也声称,这种方法不能保证定位精度的单调性,如果多次应用细化,可能会导致定位退化。
(2)用于精确定位的新损失函数:在大多数现代检测器中,对象定位被视为坐标回归问题。然而,这种范式的缺点是显而易见的。首先,回归损失与定位的最终评估并不对应,特别是对于一些长宽比非常大的物体。其次,传统的BB回归方法不提供定位的置信度。当多个BB相互重叠时,可能会导致非极大值抑制失败。通过设计新的损失函数可以缓解上述问题。最直观的改进是直接使用 IoU 作为定位损失。此外,一些研究人员还尝试在概率推理框架下改进定位。与之前直接预测框坐标的方法不同,该方法预测边界框位置的概率分布。
4.5分割损失学习
目标检测和语义分割是计算机视觉中的两个基本任务。最近的研究表明,可以通过学习语义分割损失来改进目标检测。为了通过分割改进检测,最简单的方法是将分割网络视为固定特征提取器,并将其作为辅助特征集成到检测器中。这种方法的优点是易于实现,缺点是分割网络可能带来额外的计算量。
另一种方法是在原始检测器之上引入一个额外的分割分支,并使用多任务损失函数(seg. + det.)来训练该模型。优点是seg.brunch会在推理阶段被移除,检测速度不会受到影响。但缺点是训练需要像素级图像标注。
4.6对抗性训练
生成对抗网络(GAN),由 A. Goodfellow 等人提出,2014年,获得了巨大的关注。在图像生成、图像风格迁移和图像超分辨率等许多任务中得到关注。最近,对抗性训练也被应用于物目标检测,特别是改善对小物体和被遮挡物体的检测。对于小物体检测,GAN 可以通过缩小小物体和大物体之间的表示来增强小物体的特征。为了改进对遮挡物体的检测,最近的一个想法是通过使用对抗性训练来生成遮挡掩模。对抗网络不是在像素空间中生成示例,而是直接修改特征以模拟遮挡。
4.7弱监督目标检测
训练基于深度学习的目标检测器通常需要大量手动标记的数据。弱监督对象检测(WSOD)旨在通过仅使用图像级注释而不是边界框来训练检测器来减轻对数据注释的依赖。
多实例学习是一组监督学习算法,在 WSOD 中得到了广泛应用。多实例学习模型不是使用一组单独标记的实例进行学习,而是接收一组标记包,每个标记包包含许多实例。如果我们将图像中的候选对象视为一个包,将图像级注释视为标签,那么 WSOD 可以表示为一个多实例学习过程。
4.8使用域适应进行检测
大多数目标检测器的训练过程本质上可以被视为在独立同分布(i.i.d.)数据假设下的似然估计过程。使用非独立同分布的目标检测数据,特别是对于一些现实世界的应用程序来说,仍然是一个挑战。除了收集更多数据或应用适当的数据增强之外,领域适应还提供了缩小领域之间差距的可能性。为了获得域不变的特征表示,已经在图像、类别或对象级别探索了基于特征正则化和对抗性训练的方法。循环一致变换也被应用于弥合源域和目标域之间的差距。其他一些方法也结合了这两种想法以获得更好的性能。
5.结论和未来方向
过去20年来,目标检测领域取得了令人瞩目的成就。本文广泛回顾了 20 年历史中的一些里程碑检测器、关键技术、加速方法、数据集和指标。一些有前途的未来方向可能包括但不限于以下方面,以帮助读者获得上述方案之外的更多见解。
(1)轻量级目标检测:轻量级目标检测旨在加速在低功耗边缘设备上运行的检测推理。一些重要的应用包括移动现实增强、自动驾驶、智慧城市、智能摄像头、人脸验证等。尽管近年来已经做出了很大的努力,但机器和人眼之间的速度差距仍然很大,特别是在检测一些小物体或多源信息检测。
(2)端到端目标检测:尽管已经开发了一些方法来使用一对一标签分配训练以实现完全端到端的方式(网络中的图像到框)检测对象,但大多数方法仍然使用一对一的方法-单独设计非极大值抑制操作的多标签分配方法。关于这个主题的未来研究可能集中于设计保持高检测精度和效率的端到端管道。
(3)小目标检测:检测大场景中的小物体长期以来一直是一个挑战。该研究方向的一些潜在应用包括计算露天人群中的人数或动物数量以及从卫星图像中检测军事目标。一些进一步的方向可能包括视觉注意机制的集成和高分辨率轻量级网络的设计。
(4)3D 目标检测:尽管 2D 目标检测最近取得了进展,但自动驾驶等应用仍然依赖于访问 3D 世界中对象的位置和姿势。目标检测的未来将在 3D 世界以及多源和多视图数据的利用(例如,来自多个传感器的 RGB 图像和 3D 激光雷达点)。
(5)视频中的检测:高清视频中的实时目标检测/跟踪对于视频监控和自动驾驶非常重要。传统的目标检测器通常是针对图像检测而设计的,而简单地忽略了视频帧之间的相关性。在计算限制下探索空间和时间相关性来改进检测是一个重要的研究方向。
(6)跨模态检测:具有多种数据源/模态的目标检测,例如 RGB-D 图像、激光雷达、流、声音、文本、视频等,对于更准确的检测系统非常重要,其性能类似于人类洞察力。一些悬而未决的问题包括:如何将训练有素的检测器迁移到不同的数据模式,如何进行信息融合以改进检测等。
(7)迈向开放世界检测:域外泛化、零样本检测和增量检测是目标检测中的新兴主题。他们中的大多数人设计了减少灾难性遗忘的方法或利用补充信息。人类有发现环境中未知类别物体的本能。当给出相应的知识(标签)时,人类就会从中学习新的知识,并保持模式。然而,当前的目标检测算法很难掌握未知类别目标的检测能力。开放世界中的目标检测旨在在未明确给出或部分给出监督信号时发现未知类别的对象,这在机器人和自动驾驶等应用中具有广阔的前景。站在技术演进的高速公路上,我们相信本文将帮助读者构建完整的目标检测路线图,并找到这个快速发展的研究领域的未来方向。
这篇关于Object Detection in 20 Years: A Survey(综述)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!