zoukankan      html  css  js  c++  java
  • 目标检测综述

    目录
    1 INTRODUCTION
    2 OBJECT DETECTION IN 20 YEARS
    2.1 A Road Map of Object Detection
    2.1.1 Milestones: Traditional Detectors
    2.1.2 Milestones: CNN based Two-stage Detectors
    2.1.3 Milestones: CNN based One-stage Detectors
    2.2 Object Detection Datasets and Metrics
    2.2.1 Metrics
    2.3 Technical Evolution in Object Detection
    2.3.1 Early Time’s Dark Knowledge
    2.3.2 Technical Evolution of Multi-Scale Detection
    2.3.3 Technical Evolution of Bounding Box Regression
    2.3.4 Technical Evolution of Context Priming
    2.3.5 Technical Evolution of Non-Maximum Suppression
    2.3.6 Technical Evolution of Hard Negative Mining
    3 SPEED-UP OF DETECTION
    3.1 Feature Map Shared Computation
    3.1.1 Spatial Computational Redundancy and Speed Up
    3.1.2 Scale Computational Redundancy and Speed Up
    3.2 Speed up of Classifiers
    3.3 Cascaded Detection
    3.4 Network Pruning and Quantification
    3.4.1 Network Pruning
    3.4.2 Network Quantification
    3.4.3 Network Distillation
    3.5 Lightweight Network Design
    3.5.1 Factorizing Convolutions
    3.5.2 Group Convolution
    3.5.3 Depth-wise Separable Convolution
    3.5.4 Bottle-neck Design
    3.5.5 Neural Architecture Search
    3.6 Numerical Acceleration
    3.6.1 Speed Up with Integral Image
    3.6.2 Speed Up in Frequency Domain
    3.6.3 Vector Quantization
    3.6.4 Reduced Rank Approximation
    4 RECENT ADVANCES IN OBJECT DETECTION
    4.1 Detection with Better Engines&Object detectors with new engines
    4.2 Detection with Better Features
    4.2.1 Why Feature Fusion is Important?
    4.2.2 Feature Fusion in Different Ways
    4.2.3 Learning High Resolution Features with Large Receptive Fields
    4.3 Beyond Sliding Window
    4.4 Improvements of Localization
    4.4.1 Bounding Box Refinement
    4.4.2 Improving Loss Functions for Accurate Localization
    4.5 Learning with Segmentation
    4.5.1 Why Segmentation Improves Detection?
    4.5.2 How Segmentation Improves Detection?
    4.6 Robust Detection of Rotation and Scale Changes
    4.6.1 Rotation Robust Detection
    4.6.2 Scale Robust Detection
    4.7 Training from Scratch
    4.8 Adversarial Training
    4.9 Weakly Supervised Object Detection
    5 APPLICATIONS
    5.1 Pedestrian Detection
    5.1.1 Difficulties and Challenges
    5.1.2 Literature Review
    5.2 Face Detection
    5.2.1 Difficulties and Challenges
    5.2.2 Literature review
    5.3 Text Detection
    5.3.1 Difficulties and Challenges
    5.3.2 Literature Review
    5.4 Traffic Sign and Traffic Light Detection
    5.4.1 Difficulties and Challenges
    5.4.2 Literature Review
    5.5 Remote Sensing Target Detection
    5.5.1 Difficulties and Challenges
    5.5.2 Literature Review
    6 CONCLUSION AND FUTURE DIRECTIONS

    目录
    1引言
    2 20年内的物体检测
    2.1目标检测路线图
    2.1.1里程碑:传统探测器
    2.1.2里程碑:基于CNN的两级检测器
    2.1.3里程碑:基于CNN的一级探测器
    2.2对象检测数据集和度量
    2.2.1指标
    2.3目标检测技术的发展
    2.3.1早期的黑暗知识
    2.3.2多尺度检测技术发展
    2.3.3边界盒回归的技术演进
    2.3.4上下文启动的技术演进
    2.3.5非最大抑制的技术演进
    2.3.6硬负开采技术演变
    3加快检测速度
    3.1特征图共享计算
    3.1.1空间计算冗余和加速
    3.1.2规模计算冗余和加速
    3.2加速分类器
    3.3级联检测
    3.4网络修剪和量化
    3.4.1网络修剪
    3.4.2网络量化
    3.4.3网络蒸馏
    3.5轻量级网络设计
    3.5.1分解卷积
    3.5.2组卷积
    3.5.3深度可分离卷积
    3.5.4瓶颈设计
    3.5.5神经架构搜索
    3.6数值加速
    3.6.1使用积分图像加速
    3.6.2频域加速
    3.6.3矢量量化
    3.6.4降秩逼近
    4种物体检测的最新进展
    4.1使用更好的引擎进行检测和使用新引擎的对象检测器
    4.2具有更好功能的检测
    4.2.1为什么功能融合很重要?
    4.2.2不同方式的特征融合
    4.2.3学习具有大接收场的高分辨率特征
    4.3超越滑动窗口
    4.4本地化的改进
    4.4.1边界框优化
    4.4.2改进损耗功能以实现精确定位
    4.5分段学习
    4.5.1为什么分段可以改善检测?
    4.5.2分段如何提高检测效率?
    4.6旋转和刻度变化的稳健检测
    4.6.1旋转鲁棒检测
    4.6.2秤稳健性检测
    4.7从头开始培训
    4.8对抗训练
    4.9弱监督对象检测
    5应用
    5.1行人检测
    5.1.1困难与挑战
    5.1.2文献综述
    5.2人脸检测
    5.2.1困难与挑战
    5.2.2文献综述
    5.3文字检测
    5.3.1困难与挑战
    5.3.2文献综述
    5.4交通标志和交通信号灯检测
    5.4.1困难与挑战
    5.4.2文献综述
    5.5遥感目标检测
    5.5.1困难与挑战
    5.5.2文献综述
    6结论和未来方向
    第一章:INTRODUCTION

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

    目标检测作为计算机视觉的基本问题之一,是许多其他计算机视觉任务的基础,如实例分割、图像字幕、目标跟踪等。从应用程序的角度来看,目标检测可以被分为两个研究主题:“ General Object Detection ” 和 “ Detection Applications ” ,前者旨在探索在统一的框架下检测不同类型物体的方法,以模拟人类的视觉和认知;后者是指特定应用场景下的检测,如行人检测、人脸检测、文本检测等。

    近年来,随着深度学习技术的快速发展,为目标检测注入了新的血液,取得了显著的突破,将其推向了一个前所未有的研究热点。目前,目标检测已广泛应用于自主驾驶、机器人视觉、视频监控等领域。下图就显示了过去二十年中与 “ 目标检测 ” 相关的出版物数量的增长。

    区别

    近年来发表了许多关于 General Object Detection 的综述。本文与上述综述的主要区别总结如下:

        基于技术演进的全面回顾:本文广泛回顾了对象检测发展史上的400多篇论文,时间跨度超过25年 ( 上世纪90年代至2019年 )。以前的大多数综述仅仅关注一个较短的历史时期或一些特定的检测任务,而没有考虑它们整个生命周期中的技术演进。站在历史的高速公路上,不仅有助于读者建立一个完整的知识体系,而且有助于找到这个快速发展领域的未来方向。

        深入探索关键技术和最新技术状态:经过多年的发展,目前的先进的对象检测系统已经与 “ 多尺度检测 ”、“ 困难负样本挖掘 ” 、“ 边界框回归 ” 等大量技术相结合,然而,以前的综述缺乏基本的分析来帮助读者理解这些复杂技术的本质,例如,“ 它们从哪里来,它们是如何进化的? ”、“ 每种方法的优缺点是什么? ”本文针对上述问题对读者进行了深入的分析。

        全面分析加速检测技术:加速目标检测一直是一项关键而又具有挑战性的任务。本文从多个层面对近20年来目标检测技术的发展进行了全面的回顾,包括 “ 检测管道 ” ( 如级联检测、特征图共享计算 )、“ 检测主干 ”( 如网络压缩、轻量级网络设计 )、“ 数值计算 ”( 如积分图像、矢量量化 )。以前的综述很少涉及这个主题。

    难点和挑战

    尽管人们总是问 “ 在目标检测中有哪些困难和挑战? ” ,事实上,这个问题并不容易回答,甚至可能被过度概括。由于不同的检测任务具有完全不同的目标和约束,它们的困难程度可能会有所不同。除了其他计算机视觉任务中的一些常见挑战,如不同视点下的物体、光照和类内变化,目标检测的挑战包括但不限于以下几个方面:目标旋转和尺度变化 ( 如小目标 ) ,精确的目标定位,密集和遮挡的目标检测,加速检测等。

    在之后的第四章和第五章中,我们将对这些主题进行更详细的分析。

     OBJECT DETECTION IN 20 YEARS 第二章 20年的目标检测
    我们将从多个方面回顾对象检测的历史,包括里程碑检测器、目标检测数据集、指标和关键技术的发展。在过去的二十年中,人们普遍认为,目标检测的发展大致经历了两个历史时期:“ 传统的目标检测时期 ” ( 2014年以前 ) 和 “ 基于深度学习的检测时期 ” ( 2014年以后 ),如下图所示。

    01传统检测器


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

    (1)Viola Jones Detectors

    18年前,P. Viola和M. Jones在没有任何约束条件(如肤色分割)的情况下首次实现了人脸的实时检测。在700MHz Pentium III CPU上,在同等的检测精度下,检测器的速度是其他算法的数十倍甚至数百倍。这种检测算法,后来被称为“维奥拉-琼斯”(VJ)检测器”,在此以作者的名字命名,以纪念他们的重大贡献。

    VJ检测器采用最直接的检测方法,即,滑动窗口:查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。虽然这似乎是一个非常简单的过程,但它背后的计算远远超出了计算机当时的能力。VJ检测器结合了 “ 积分图像 ”、“ 特征选择 ” 和 “ 检测级联 ” 三种重要技术,大大提高了检测速度。

    积分图像:积分图像是一种计算方法,以加快盒滤波或卷积过程。与当时的其他目标检测算法一样,在VJ检测器中使用Haar小波作为图像的特征表示。积分图像使得VJ检测器中每个窗口的计算复杂度与其窗口大小无关。

    特征选择:作者没有使用一组手动选择的Haar基过滤器,而是使用Adaboost算法从一组巨大的随机特征池 ( 大约180k维 ) 中选择一组对人脸检测最有帮助的小特征。

    检测级联:在VJ检测器中引入了一个多级检测范例 ( 又称“检测级联”,detection cascades ),通过减少对背景窗口的计算,而增加对人脸目标的计算,从而减少了计算开销。

    (2)HOG Detector

    方向梯度直方图(HOG)特征描述符最初是由N. Dalal和B.Triggs在2005年提出的。HOG可以被认为是对当时的尺度不变特征变换(scale-invariant feature transform)和形状上下文(shape contexts)的重要改进。为了平衡特征不变性 ( 包括平移、尺度、光照等 ) 和非线性 ( 区分不同对象类别 ),将HOG描述符设计为在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化 ( 在“块”上 ) 来提高精度。虽然HOG可以用来检测各种对象类,但它的主要动机是行人检测问题。若要检测不同大小的对象,则HOG检测器在保持检测窗口大小不变的情况下,多次对输入图像进行重新标度。多年来,HOG检测器一直是许多目标检测器[13,14,36]和各种计算机视觉应用的重要基础。

    (3)Deformable Part-based Model (基于可变形部件的模型,DPM)

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

    DPM遵循“分而治之”的检测思想,训练可以简单地看作是学习一种正确的分解对象的方法,推理可以看作是对不同对象部件的检测的集合。例如,检测“汽车”的问题可以看作是检测它的窗口、车身和车轮。工作的这一部分,也就是“star model”由P.Felzenszwalb等人完成。后来,R. Girshick进一步将star model扩展到 “ 混合模型 ”,以处理更显著变化下的现实世界中的物体。

    一个典型的DPM检测器由一个根过滤器(root-filter)和一些零件滤波器(part-filters)组成。该方法不需要手动指定零件滤波器的配置 ( 如尺寸和位置 ),而是在DPM中开发了一种弱监督学习方法,所有零件滤波器的配置都可以作为潜在变量自动学习。R. Girshick将这个过程进一步表述为一个多实例学习的特殊案例,“硬负挖掘”、“边界框回归”、“上下文启动”等重要技术也被用于提高检测精度。为了加快检测速度,Girshick开发了一种技术,将检测模型 “ 编译 ” 成一个更快的模型,实现了级联结构,在不牺牲任何精度的情况下实现了超过10倍的加速度。
    虽然今天的物体探测器在检测精度方面已经远远超过了DPM,但仍然受到DPM的许多有价值的见解的影响,如混合模型、硬负挖掘、边界盒回归等。2010年,P. Felzenszwalb和R. Girshick被授予PASCAL VOC的 “ lifetime achievement ”。

    02 CNN based Two-stage Detectors


    随着手工特征的性能趋于饱和,目标检测在2010年之后达到了一个稳定的水平。R.Girshick说:“ ... progress has been slow during 2010-2012, with small gains obtained by building ensemble systems and employing minor variants of successful methods ”。2012年,卷积神经网络在世界范围内重生。由于深卷积网络能够学习图像的鲁棒性和高层次特征表示,一个自然的问题是我们能否将其应用到目标检测中?R. Girshick等人在2014年率先打破僵局,提出了具有CNN特征的区域(RCNN)用于目标检测。从那时起,目标检测开始以前所未有的速度发展。

    在深度学习时代,目标检测可以分为两类:“ two-stage detection ” 和 “ one-stage detection ”,前者将检测框定为一个 “ 从粗到细 ” 的过程,而后者将其定义为 “ 一步完成 ”。

    (1)RCNN

    RCNN背后的想法很简单:它首先通过选择性搜索提取一组对象建议(对象候选框)。然后,每个提案都被重新调整成一个固定大小的图像,并输入到一个在ImageNet上训练得到的CNN模型(例如,AlexNet) 来提取特征。最后,利用线性SVM分类器对每个区域内的目标进行预测,识别目标类别。RCNN在VOC07上产生了显著的性能提升,平均平均精度(mean Average Precision,mAP)从33.7%(DPM-v5) 大幅提高到58.5%。

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

    (2)SPPNet

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

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

    (3)Fast RCNN

    2015年,R. Girshick提出了Fast RCNN检测器,这是对R-CNN和SPPNet的进一步改进。Fast RCNN使我们能够在相同的网络配置下同时训练检测器和边界框回归器。在VOC07数据集上,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等人提出了Faster RCNN检测器,在Fast RCNN之后不久。Faster RCNN 是第一个端到端的,也是第一个接近实时的深度学习检测器(COCO mAP@.5=42.7%,COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%,VOC12 mAP=70.4%,17fps with ZFNet)。Faster RCNN的主要贡献是引入了区域建议网络 (RPN),使几乎cost-free的区域建议成为可能。从RCNN到Faster RCNN,一个目标检测系统中的大部分独立块,如提案检测、特征提取、边界框回归等,都已经逐渐集成到一个统一的端到端学习框架中。

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

    (5)Feature Pyramid Networks(FPN)

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

    03 CNN based One-stage Detectors


    (1)You Only Look Once (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 版本,在保持很高检测速度的同时进一步提高了检测精度。

    尽管与两级探测器相比,它的探测速度有了很大的提高,但是YOLO的定位精度有所下降,特别是对于一些小目标。YOLO的后续版本和后者提出的SSD更关注这个问题。

    (2)Single Shot MultiBox Detector (SSD)

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

    (3)RetinaNet

    单级检测器速度快、结构简单,但多年来一直落后于两级检测器的精度。T.-Y.Lin等人发现了背后的原因,并在2017年提出了RetinaNet。他们声称,在密集探测器训练过程中所遇到的极端的前景-背景阶层不平衡(the extreme foreground-background class imbalance)是主要原因。为此,在RetinaNet中引入了一个新的损失函数 “ 焦损失(focal loss)”,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本。焦损耗使得单级检测器在保持很高的检测速度的同时,可以达到与两级检测器相当的精度。(COCO mAP@.5=59.1%,mAP@[.5, .95]=39.1% )。

    04 Object Detection Datasets


    建立具有更少的偏置的更大的数据集,是开发先进的计算机视觉算法的关键。在目标检测方面,在过去10年中,已经发布了许多著名的数据集和基准测试,包括PASCAL VOC挑战的数据集(例如,VOC2007, VOC2012)、ImageNet大尺度视觉识别挑战(例如,ILSVRC2014)、MS-COCO检测挑战等。下表1给出了这些数据集的统计数据。


    下图显示了这些数据集的一些图像示例:

    (a)VOC,(b)ILSVRC,(c)COCO,(d)Open Images

    下图显示了从2008年到2018年对VOC07、VOC12和MS-COCO数据集检测精度的提高。

    具体介绍如下:

    (1)Pascal VOC

    PASCAL可视化对象类(Visual Object Classes,VOC)挑战(2005-2012)是早期计算机视觉界最重要的比赛之一。PASCAL VOC中包含多种任务,包括图像分类、目标检测、语义分割和动作检测。两种版本的Pascal-VOC主要用于对象检测:VOC07和VOC12,前者由5k tr. images + 12k annotated objects组成,后者由11k tr. images + 27k annotated objects组成。这两个数据集中注释了生活中常见的20类对象(Person: person; Animal: bird, cat, cow, dog, horse, sheep; Vehicle: aeroplane, bicycle, boat, bus, car, motor-bike, train; Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor)。近年来,随着ILSVRC、MS-COCO等大型数据集的发布,VOC逐渐淡出人们的视野,成为大多数新型检测器的试验台。

    (2)ILSVRC

    ImageNet大规模视觉识别挑战(Large Scale Visual Recognition Challenge,ILSVRC)推动了通用目标检测技术的发展。ILSVRC从2010年到2017年每年举办一次。它包含一个使用ImageNet图像的检测挑战。ILSVRC检测数据集包含200类视觉对象。它的图像/对象实例的数量比VOC大两个数量级。例如ILSVRC-14包含517k图像和534k带注释的对象。

    (3)MS-COCO

    MS-COCO是目前最具挑战性的目标检测数据集。自2015年以来一直保持一年一度的基于MS-COCO数据集的比赛。它的对象类别比ILSVRC少,但是对象实例多。例如,MS-COCO-17包含来自80个类别的164k图像和897k带注释的对象。与VOC和ILSVRC相比,MS-COCO最大的进步是除了边框标注外,每个对象都进一步使用实例分割进行标记,以帮助精确定位。此外,MS-COCO包含更多的小对象 ( 其面积小于图像的1% ) 和比VOC和ILSVRC更密集的定位对象。所有这些特性使得MSCOCO中的对象分布更接近真实世界。就像当时的ImageNet一样,MS-COCO已经成为对象检测社区的实际标准。

    (4)Open Images

    继MS-COCO之后,开放图像检测(OID)技术在2018年迎来了前所未有的挑战。在开放图像中有两个任务:1) 标准目标检测,2) 视觉关系检测,检测特定关系中成对的目标。对于目标检测任务,数据集由1,910k张图像和15,440k个带注释的边界框组成,这些边界框位于600个对象类别上。

    05 Datasets of Other Detection Tasks


    在过去的20年里,除了一般的目标检测外,在行人检测、人脸检测、文本检测、交通标志/灯光检测、遥感目标检测等特定领域的检测应用也十分繁荣。下面一系列表列出了这些检测任务的一些流行数据集。有关这些任务的检测方法的详细介绍可在后期分享中找到。

    pedestrian detection

    face detection

    text detection

    traffic light and sign

    remote sensing target detection

    06 Object DetectionMetrics


    我们如何评估目标探测器的有效性? 这个问题甚至可能在不同的时间有不同的答案。

    在早期的检测社区中,对于检测性能的评价标准并没有得到广泛的认可。例如,在行人检测的早期研究中,“每个窗口的漏报率与误报率(FPPW)” 通常用作度量。然而,逐窗测量(FPPW)可能存在缺陷,在某些情况下无法预测的完整图像特性。2009年,加州理工学院(Caltech)建立了行人检测基准,从那时起,评估指标从每窗口(per-window,FPPW)改为每图像的伪阳性(false positive per-image,FPPI)。

    近年来,对目标检测最常用的评估方法是 “ 平均精度(AP) ”,该方法最早是在VOC2007中引入的。AP定义为不同召回情况下的平均检测精度,通常以类别特定的方式进行评估。为了比较所有对象类别的性能,通常使用所有对象类别的平均AP(mAP)作为性能的最终度量。为了测量目标定位精度,使用Union上的交集(Intersection over Union,IoU)来检查预测框和地面真实框之间的IoU是否大于预定义的阈值,比如0.5。如果是,则将该对象标识为 “ 成功检测到 ”,否则将标识为 “ 未检测到 ”。因此,基于mAP的0.5 -IoU多年来已成为用于目标检测问题的实际度量。

    2014年以后,由于MS-COCO数据集的普及,研究人员开始更加关注边界框位置的准确性。MS-COCO AP没有使用固定的IoU阈值,而是在多个IoU阈值上取平均值,阈值介于0.5(粗定位)和0.95(完美定 )之间。这种度量的变化鼓励了更精确的对象定位,并且对于一些实际应用可能非常重要 ( 例如,假设有一个机器人手臂试图抓住扳手 )。

    近年来,对开放图像数据集的评价有了进一步的发展,如考虑了组框(group-of boxes)和非穷举的图像级类别层次结构。一些研究者也提出了一些替代指标,如 “ 定位回忆精度 ”。尽管最近发生了一些变化,基于VOC/COCO的mAP仍然是最常用的目标检测评估指标。

    第三章
    Early Time’s Dark Knowledge

    早期的目标检测 ( 在00年以前 ) 没有遵循滑动窗口检测等统一的检测理念。当时的检测器通常基于如下低层和中层的视觉设计。

    (1)Components, shapes and edges(组件、形状和边缘)

    “ 分量识别(Recognition-by-components)” 作为一种重要的认知理论,长期以来一直是图像识别和目标检测的核心思想。一些早期的研究人员将目标检测定义为测量对象组件、形状和轮廓之间的相似性,包括距离变换、形状上下文、小边特征等。尽管最初的结果很有希望,但在更复杂的检测问题上,事情进展得并不顺利。因此,基于机器学习的检测方法开始蓬勃发展。

    基于机器学习的检测经历了包括外观统计模型在内的多个阶段 ( 1998年以前 ) 、小波特征表示 ( 1998-2005 ) 和基于梯度的表示 ( 2005-2012 )。

    建立对象的统计模型,比如特征面(Eigenfaces)如下图(a)所示,是目标检测历史上第一波基于学习的方法。1991年,M.Turk等人利用特征脸分解技术在实验室环境中实现了实时人脸检测。与当时基于规则或模板的方法相比,统计模型通过从数据中学习特定于任务的知识,更好地提供了对象外观的整体描述。

    自2000年以来,小波特征变换开始主导视觉识别和目标检测。这组方法的本质是通过将图像从像素点转换为一组小波系数来学习。其中,Haar小波由于其计算效率高,被广泛应用于一般目标检测、人脸检测,行人检测等目标检测任务中。下图(d)为VJ检测器学习到的一组用于人脸的Haar小波基。

    (2)Early time’s CNN for object detection

    使用CNN检测物体的历史可以追溯到20世纪90年代,当时Y. LeCun等人做出了巨大的贡献。由于计算资源的限制,当时的CNN模型比现在的模型要小得多,也要浅得多。尽管如此,在早期基于CNN的检测模型中,计算效率仍然被认为是难以破解的难题之一。Y. LeCun等人进行了一系列改进,如 “ 共享权值复制神经网络(shared-weight replicated neural network) ”和“ 空间位移网络(space displacement network)”通过扩展卷积网络的每一层,覆盖整个输入图像,减少计算量,如下图(b)-(c)所示。

    这样,只需一次网络的正向传播,就可以提取出整个图像任意位置的特征。这可以看作是当今全卷积网络 ( FCN ) 的原型,FCN 几乎是在20年后提出的。CNN也被应用于其他任务,如人脸检测和手势实时跟踪(hand tracking of its time)。

    Technical Evolution of Multi-Scale Detection

    多尺度检测(Multi-scale detection)对象的 “ 不同尺寸 ” 和 “ 不同纵横比 ” 是目标检测的主要技术难题之一。近20年来,多尺度检测经历了多个历史时期:“ 特征金字塔和滑动窗口(2014年前) ”,“ 基于对象建议的检测(2010-2015年) ”,“ 深度回归(2013-2016) ”、“ 多参考检测( multi-reference detection,2015年后 ) ”、“ 多分辨率检测( multi-resolution detection,2016年后 ) ”,如下图所示:

    (1)Feature pyramids + sliding windows (before 2014)

    随着VJ检测器后计算能力的提高,研究者们开始更加关注一种直观的检测方法,即构建 “ 特征金字塔+滑动窗口 ”。从2004年到2014年,基于这种检测范式构建了许多里程碑式的检测器,包括HOG检测器、DPM,甚至深度学习时代的Overfeat检测器( ILSVRC-13定位任务获奖者 )。

    早期的检测模型,如VJ检测器和HOG检测器,都是专门针对具有 “ 固定长宽比 ” (如人脸和直立的行人)的对象,只需构建特征金字塔,并在其上滑动固定大小检测窗口。当时没有考虑检测 “ 各种纵横比 ”。为了检测具有更复杂外观(如 PASCAL VOC 中的外观)的对象,R. Girshick等人开始在特征金字塔外寻找更好的解决方案。“ 混合模型 ”是当时最好的解决方案之一,它通过训练多个模型来检测不同纵横比的物体。除此之外,基于范例的检测通过为训练集的每个对象实例 ( 范例 ) 训练单独的模型,提供了另一种解决方案。

    随着现代数据集中的对象(例如MS-COCO)变得更加多样化,混合模型或基于范例的方法不可避免地会导致更加复杂的检测模型。于是一个问题就自然而然地产生了:是否存在一种统一的多尺度方法来检测不同长宽比的对象? “ 对象建议(object proposals) ” 的提出已经回答了这个问题。

    (2)Detection with object proposals (2010-2015)

    对象建议(object proposals)引用一组可能包含任何对象的与类无关的候选框。它于2010年首次应用于目标检测。使用对象建议进行检测有助于避免对图像进行彻底的滑动窗口搜索。

    目标/对象建议检测算法应满足以下三个要求:

    1) 高召回率,

    2) 高定位准确率,

    3) 在前两个要求的基础上,提高精度,减少处理时间。

    现代的建议检测方法可以分为三类:1) 分割分组方法,2) 窗口评分方法,3) 基于神经网络的方法。我们建议读者阅读以下论文,以全面回顾这些方法。

    早期的建议检测方法遵循自底向上的检测理念,深受视觉显著性检测的影响。后来,研究人员开始转向低水平的视觉 ( 如边缘检测 ) 和更精细的手工技能,以改进候选框的定位。2014年以后,随着深度CNN在视觉识别领域的普及,基于自上而下学习的方法在这个问题上开始显示出更多的优势。从那时起,对象建议检测就从自下而上的视觉演化为 “ 对一组特定对象类的过度拟合 ”,检测器与建议生成器之间的区别也变得模糊。

    随着 “ object proposal ” 对滑动窗口检测的革命性变革,并迅速主导基于深度学习的检测器,2014-2015年,许多研究者开始提出以下问题:object proposal 在检测中的主要作用是什么? 是为了提高准确度,还是仅仅为了加快检测速度? 为了回答这个问题,一些研究人员试图削弱 proposal 的作用或单纯对CNN特征进行滑动窗口检测,均未得到满意的结果。在单级检测器和 “ 深度回归 ” 技术兴起之后,建议检测很快就淡出了人们的视线。

    (3)Deep regression (2013-2016)

    近年来,随着GPU计算能力的提高,人们处理多尺度检测的方式变得越来越直接和暴力。使用深度回归来解决多尺度问题的思想非常简单,即,基于深度学习特征直接预测边界框的坐标。这种方法的优点是简单易行,缺点是定位不够准确,特别是对于一些小对象。“ 多参考检测 ” 解决了这一问题。

    (4)Multi-reference/-resolution detection (after 2015)

    多参考检测是目前最流行的多尺度目标检测框架。它的主要思想是在图像的不同位置预先定义一组不同大小和宽高比的参考框(即锚框),然后根据这些参考框预测检测框。每个预定义锚框的典型损失包括两部分:1) 类别识别的交叉熵损失;2) 目标定位的L1/L2回归损失。损失函数的一般形式可以写成如下形式:

    其中t和t*是predicted和ground-truth的边界框的位置,p和p*是它们的类别概率。IOU{a,a*}是锚框a和它ground-truth a*之间的IOU。η是一个IOU阈值,比如0.5。如果锚框没有覆盖任何对象,其定位损失不计入最终损失。

    近两年来另一种流行的技术是多分辨率检测,即在网络的不同层检测不同尺度的目标。由于CNN在正向传播过程中自然形成了一个特征金字塔,更容易在较深的层中检测到较大的物体,在较浅的层中检测到较小的物体。多参考和多分辨率检测已成为当前最先进的目标检测系统的两个基本组成部分。




  • 相关阅读:
    vue 中的单元测试
    redux-学习总结
    React-学习总结
    vuecli 中 chainWebpack 的常用操作
    常用 vue-config.js 配置
    JavaScript 中的 MVC、MVP、MVVM
    日常工作中 @vue/cli 需要关注的一些配置
    Electron 构建超时问题
    JSBridge 原理与封装
    Three.js 之相机
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/ObjectDetectionOfOverview.html
Copyright © 2011-2022 走看看