《Object Detection in 20 Years: A Survey》论文阅读笔记

这篇文章发表于 2019 年 5 月 16 日,它回顾了 1990 年 ~ 2019 年间的 400 多篇目标检测论文,涵盖了和这一领域相关的众多课题,如目标检测发展过程中的里程碑、目标检测数据集、评价指标、目标检测系统的基本模块、加速技术以及当前的 SOTA 方法。此外,这篇文章也涉及到一些重要的应用场景,如行人检测、人脸检测以及文本检测等。

文章的整体脉络如下:

  • 第二部分:目标检测二十多年来的发展史
  • 第三部分:加速技术
  • 第四部分:近三年的 SOTA 方法
  • 第五部分:应用场景
  • 第六部分:总结与展望

第二部分:目标检测二十多年来的发展史

本部分概览:

  • 不同时期的里程碑节点
  • 目标检测数据集
  • 评价指标
  • 目标检测中核心技术的发展与演变

2.1 不同时期的里程碑节点

目标检测技术以 2014 年为节点,分为传统目标检测(2014 年以前)和基于深度学习的目标检测(2014 年以后)。

2.1.1 传统目标检测

传统目标检测的发展受限于两个因素:一是没有有效的图像表示(image representation)的方式,二是计算资源有限。因此传统目标检测算法大多都是基于手工设计的特征(handcrafted features),而且需要设计各种各样的加速技巧来减少对计算资源的依赖。

传统目标检测方法发展过程中的里程碑:

  • VJ Detector (Viola Jones Detector),2001:首次在没有任何限制条件的情况下达到人脸实时检测。
  • HOG Detector (Histogram of Oriented Gradients Detector),2006:HOG 特征描述算子最早在2005年被提出,它对 SIFT(scale-invariant feature transform)算法做出了重大改进。在很长一段时间内,HOG Detector 都是很多目标检测算法的重要基础,而且为众多计算机视觉的应用提供了技术支持。
  • DPM (Deformable Part-based Model),2008:DPM 是 VOC-07, -08 以及 -09 检测大赛的冠军。它是对 HOG Detector 的拓展,也是传统目标检测算法的巅峰。

2.1.2 基于深度学习的目标检测

传统的目标检测方法自 2010 年以后发展缓慢,宣告着手工设计特征的性能达到饱和。2012 年,CNN(Convolutional Neural Network)重获新生。深度学习方法的优势是可以利用CNN自动学得鲁棒的高层特征表示(robust and high-level feature representations),因而相较于传统的手工特征设计的方法具有巨大的优势。因此,从 2014 年以后,基于深度学习的目标检测方法得到了空前的发展。

基于深度学习的目标检测方法又可以进一步分成以下两类:

  • Two-stage Detection:强调检测是一个“coarse-to-fine”的过程;
  • One-stage Detection:强调检测应该“complete in one step”。
2.1.2.1 Two-stage 方法
  • RCNN(Regions with CNN features),2014:这是目标检测在深度学习领域迈出的第一步,它将 VOC-07上的 mAP (mean Average Precision) 值由 DPM-v5 的 33.7% 提升至 58.5%。它的不足之处是速度非常慢(检测一张图片需要 14s),稍后在同一年被提出的 SPPNet 在这个方面做了改进。
  • SPPNet (Spatial Pyramid Pooling Networks),2014:最大的贡献是提出了一个 SPP 层(Spatial Pyramid Pooling layer),从而使得 CNN 能够从任意尺度的区域中提取出固定长度的特征表示(fixed-length representation)。在不损失任何精度的前提下(SPPNet:VOC-07 mAP=59.2%),SPPNet 比 RCNN 至少快 20 倍。
  • Fast RCNN,2015:Fast RCNN 是 RCNN 和 SPPNet 的改进版,它使得我们能够同时训练一个 detector 和一个 bounding box regressor,从而将 VOC-07 的检测精度提升至 70.0%,而且它的速度比 RCNN 快 200 多倍。但是,一个称为 “proposal detection” 的问题限制了 Fast RCNN 速度的进一步提升,稍后的 Faster RCNN 将会尝试解决这个问题。
  • Faster RCNN,2015:Faster RCNN 是第一个 end-to-end,并且 near-realtime 的深度学习检测算法。它最大的贡献是提出了 RPN (Region Proposal Network),使得 region proposal 几乎不需要任何成本。从 RCNN 到 Faster RCNN,目标检测系统众多独立的模块逐渐被集成到一个统一的、端到端的框架中去。
  • FPN (Feature Pyramid Networks),2017:最大的贡献是提出了带有侧向连接(lateral connections)的 top-down 网络架构。FPN现在已经成为后来许多目标检测系统的基本模块。
2.1.2.2 One-stage 方法
  • YOLO (You Only Look Once),2015:这是深度学习领域的第一个 one-stage detector。Two-stage 方法需要有两个环节:proposal detection + verification,而 YOLO 则是把图片分成多个 region,然后同时预测每个区域的 bounding box 和 probabilities。所以 YOLO 最大的特点是非常快,但随之而来的缺点是精度相较于 Two-stage 方法会下降,尤其是对小的物体,这个问题更加明显。
  • SSD (Single Shot MultiBox Detector),2015:这是深度学习领域的第二个 one-stage detector。它最大的贡献是提出了 multi-reference 和 multi-resolution 检测技术,从而极大地提高了 one-stage detector 的精度,尤其是对小的物体。一个特殊之处是 SSD 是在网络的不同层上检测不同尺度的物体,而其他的目标检测方法都是只在网络的 top layers 上进行检测。
  • RetinaNet,2017:这篇论文阐明了 one-stage 方法的准确率落后于 two-stage 方法的原因,并提出了一个新的损失函数——focal loss。借助于 focal loss,one-stage 方法可以在保持速度优势的前提下取得和 two-stage 相当的准确率。

2.2 数据集

  • Pascal VOC (PASCAL Visual Object Classes) Challenges,2005 ~ 2012:常用的是两个版本:VOC-07(包含 5k 张图片)和 VOC-12(包含 11k 张图片),这两个版本都包含 20 个类。近年来,随着其他一些大型数据集的出现(如 ILSVRC 和 MS-COCO),VOC 数据集逐渐淡出了潮流,现在已经成了一个用来测试新型检测器的 test-bed。
  • ILSVRC (ImageNet Large Scale Visual Recognition Challenge),2010 ~ 2017:ILSVRC 中包含一个用来做目标检测的子数据集,共有 200 个类,大约 500k 张图片。
  • MS-COCO,2015 年至今:从 2015 年开始,每年都会在 MS-COCO 数据集上举办一次竞赛。MS-COCO 数据集是当前最具有挑战性的数据集,和 VOC 及 ILSVRC 相比,MS-COCO 中的物体都通过 per-instance segmentation 进行了进一步的标注,进而为 precise localization 提供了便利。此外,MS-COCO 中包含了更小的物体(面积不足整张图片的 1%),而且物体的分布更加稠密,这些特性使得 MS-COCO 数据集更加接近真实场景。现在,MS-COCO 数据集实际上已经成为了目标检测领域的标准数据集。
  • OID (Open Images Detection) challenge,2018:OID 比赛于 2018 年被提出,OID 数据集继承了 MS-COCO 数据集的特性但规模更加庞大(包含 600 个类,共 1910k 张图片)。

2.3 评价指标

  • 常规的目标检测:

    • AP (Average Precision):在 VOC2007 中首次被提出。AP 被定义为 the average detection precision under different recalls,并且经常会以一种 category specific 的方式来评估。

    • mAP (mean AP averaged over all object categories):所有类别的平均 AP 值,通常作为目标检测算法的最终评价指标。

      关于 mAP 的详细讲解,参考: https://zhuanlan.zhihu.com/p/60319755

    • IoU (Intersection over Union):表征目标定位的准确率。它的判断方法是检测预测出来的框和真实的框之间的 IoU 值是否大于一个预先设定的阈值(如 0.5),如果是,目标将会被标记为“成功检测”;否则将会被标记为 “missed”。在很长一段时间内,基于 0.5-IoU 的 mAP 值实际上成为了目标检测问题的标准评价指标。

      关于 IoU 的详细讲解,参考: https://zhuanlan.zhihu.com/p/70768666

      自 2014 年 MS-COCO 数据集被提出以来,人们更加关注 bbox 位置的准确性:

      Instead of using a fixed IoU threshold, MS-COCO AP is averaged over multiple IoU thresholds between 0.5 (coarse localization) and 0.95 (perfect localization).

      这一评价指标的改变使得目标检测算法必须要能够对物体进行更准确的定位。

  • 行人检测:FPPI (false positives per-image)

2.4 目标检测中核心技术的发展与演变

2.4.1 早期的机器学习方法

  • statistical models of appearance (before 1998)
  • wavelet feature representations (1998 ~ 2005)
  • gradient-based representations (2005 ~ 2012):这是早期的 CNN 方法。在这一时期,由于计算资源有限,CNN 模型都很浅。但是即使只是使用了比较小的模型,基于 CNN 方法的计算效率依旧是这一时期要面临的一大难题。

2.4.2 Multi-Scale Detection

在过去的20年间,multi-scale detection 的发展经历了以下几个阶段:

  • feature pyramids + sliding windows (before 2014):

    • 自 VJ detector 之后,随着算力的增加,一种新的检测模式开始出现:feature pyramid + sliding windows。2004 ~ 2014 年间的许多 detector 都是依据这一模式发明的,如 HOG detector、DPM、Overfeat detector (ILSVRC-13 localization task 冠军)。
    • 为什么会出现 “object proposals” 这一概念?这个问题要追溯到早期的 VJ detector 和 HOG detector,这两个 detector 都是用 “fixed aspect ratio” 来检测目标的,这样它们就解决不了 “various aspect ratio” 的问题。为了应对这一问题,当时出现了两种解决方案:mixture model 以及 exemplar-based detection。但是随着一些更复杂的数据集的出现(如 MS-COCO),前面提到的这两种解决方案会产生各种五花八门的检测模型,导致检测领域变得十分混乱。为了找到一种统一的能够解决 different aspect ratios 问题的 multi-scale 方法,“object proposals”便应运而生。
  • detection with object proposals (2010 ~ 2015):

    • object proposals 的定义如下:

      Object proposals refer to a group of class-agnostic candidate boxes that likely to contain any objects.

    • Object proposals 于 2010 年首次被应用到目标检测中,这种方法克服了滑动窗方法需要在一张图片上不停滑动的弊端,从而迅速占据了整个目标检测市场。

    • 然而,在 2014 ~ 2015 年间,人们开始问这样一个问题:在目标检测系统中,object proposals 到底在扮演着什么样的角色呢?它是为了提升准确率吗?或者仅仅是为了提升检测速度?有研究者尝试去解决这个问题,但是最终并没有找到令人满意的答案。后来,随着 one-stage 方法以及 “deep regression” 方法的兴起,proposal detection 逐渐淡出了人们的视野。

  • deep regression (2013 ~ 2016):

    • 近些年,随着 GPU 算力的增加,multi-scale detection 问题的解决变得更加简单粗暴,deep regression 就是其中的典型代表。这一方法依据深度学习模型学习到的特征,直接去预测 bbox 的坐标值。它的优点是简单而且容易实现,缺点是定位不够准确(尤其是对小的物体),后来出现的 “multi-reference detection” 解决了这一问题。
  • multi-reference detection (after 2015) and multi-resolution detection (after 2016):

    • 什么是 multi-reference detection?

      Its main idea is to pre-define a set of reference boxes (a.k.a. anchor boxes) with different sizes and aspect-ratios at different locations of an image, and then predict the detection box based on these references.

      Multi-reference detection 是最流行的 multi-scale object detection 检测框架。

    • 什么是 multi-resolution detection?

      Multi-resolution detection is to detect objects of different scales at different layers of the network. Since a CNN naturally forms a feature pyramid during its forward propagation, it is easier to detect larger objects in deeper layers and smaller ones in shallower layers.

    • 在当前的 SOTA 目标检测系统中,multi-reference detection 以及 multi-resolution detection 已经成为两个基本的 building block。

  • 上述各种 multi-scale detection 技术的简单图示:

2.4.3 Bounding Box Regression

什么是 Bounding Box (BB) regression?

Bounding Box regression aims to refine the location of a predicted bounding box based on the initial proposal or the anchor box.

在过去的 20 年间, BB regression 经历了三个发展阶段:

  • Without BB regression (before 2008):

    • 早期的 VJ detector 和 HOG detector 就没有使用 BB regression,它们是直接把滑动窗作为最终的检测结果。这样为了获得比较高的精度,就不得不将滑动窗的间隔设置的非常小。
  • From BB to BB (2008 ~ 2013):

    • DPM 首次将 BB regression 引入到了目标检测系统中。但是在这一时期,BB regression 通常是充当一种后处理手段,因而它并不是必须的。
    • 后来在 PASCAL VOC 竞赛中,R. Girshick 等人将预测 bbox 的问题描述为一个线性最小二乘回归问题(linear least-squares regression problem),这就是 “from BB to BB” 的含义。
  • From features to BB (after 2013):

    • 自从 2015 年 Faster RCNN 提出以后,BB regression 就不再作为一个独立的后处理模块,而且被集成到了整个 detector 中并以一种 end-to-end 的方式训练。与此同时,BB regression 已经发展到了直接基于 CNN features 去预测 bbox。为了得到对 outliers 更加鲁棒的预测结果,regression loss 已经由 DPM 中的 least square loss 发展到了 smooth-L1 loss 以及 root-square loss:

      smooth-L1 loss:
      L(t) = \begin{equation} \left \{ \begin{array} & 5 t^2 \, & |t| \le 0.1 \\ |t| - 0.05 \, & \text{else} \end{array} \right. \end{equation}
      root-square loss:
      L(x, x^*) = \left( \sqrt{x} - \sqrt{x^*} \right)^2

2.4.4 Context Priming

图片中的物体通常是被嵌入到一个和周围环境相关联的 context 中的,因此物体和周围环境之间可能会存在关联。Context priming 经历了以下三个发展阶段:

  • detection with local context:

    • Local context refers to the visual information in the area that surrounds the object to detect.

      Local context 的使用有助于提升检测准确率。

  • detection with global context:

    • 现代的深度学习检测器有两种方法可以利用 global context 中包含的信息:第一种是使用较大的感受野(有的甚至比输入的图片还大)或进行全局池化(global pooling);第二种是将 global context 视为一种信息序列(sequential information),然后用 RNN 来学习这种信息序列。
  • context interactive:

    • 最近关于这个方面的研究主要朝两个方向发展:一是 explore the relationship between individual objects,二是 explore modeling the dependencies between objects and scenes。

2.4.5 Non-Maximum Suppression (NMS)

为什么要用 NMS ?

As the neighboring windows usually have similar detection scores, the non-maximum suppression is herein used as a post-processing step to remove the replicated bounding boxes and obtain the final detection result.

在过去 20 年的发展过程中,NMS 逐渐演化成三个流派:

  • greedy selection:

    • 什么是 greedy selection ?

      For a set of overlapped detections, the bounding box with the maximum detection score is selected while its neiboring boxes are removed according to a predefined overlap threshold (say, 0.5). The above processing is iteratively performed in a greedy manner.

    • 现在的 NMS 实际上用的就是 greedy selection,只不过在这个基础上可能会有一些其他的改动。

  • bounding box aggregation:

    • BB aggregation 是将多个重合的 bbox 通过聚类或其他组合方式得到一个最终的 bbox 。这种方法的优点是它可以充分考虑各个目标之间的联系以及它们的空间布局,VJ detector 和 Overfeat 用的就是这种方法。
  • learning to NMS:

    • 这是最近兴起的一种方法,它的观点是:

      think of NMS as a filter to re-score all ray detections and to train the NMS as part of a network in an end-to-end fashion.

      这种方法在处理 occlusion and dense object detection 的问题时表现得比较出色。

2.4.6 Hard Negative Mining (HNM)

为什么要有 HNM ?

因为训练目标检测器实际上是一个 imbalanced data learning 的问题。在一张图片中,背景和目标所占的比例是极其不对等的,有时候可能目标只占整张图片的一小部分,而背景则占据了绝大部分面积。在这种情形下,如果我们使用整个的背景数据,那么显然对于训练检测器来说是非常不友好的。HNM 就是为了解决这种数据不均衡问题而提出的。

HNM 经历了以下几个发展阶段:

  • Bootstrap:

    • 这是早期的 HNM 所用的方法。它的做法是:

      starts with a small part of background samples and then iteratively add new misclassified backgrounds during the training process.

    • Bootstrap 最早是为了减少训练时对数目庞大的 background samples 的计算量而提出的。在后来的 DPM 以及 HOG 中,bootstrap 已经成了解决数据不均衡问题的标准技术手段。

  • Deep learning based HNM methods:

    • 随着深度学习的兴起,算力已经不再是一个需要考虑的问题。在 2014 ~ 2016 年间,bootstrap 方法立刻就被舍弃了。这一时期解决数据不均衡问题的方法是 balance the weights between the positive and negative windows(在 Faster RCNN 和 YOLO 中采用的就是这种方法)。
    • 然而,后来人们发现这种 weight-balancing 的做法不能完全解决数据不均衡问题。因此,自 2016 年以后,bootstrap 方法又被重新引入了深度学习检测器中。在 SSD 和 OHEM 中,只有一小部分损失值最大的样本的梯度才会被反向传播;RefineDet 则设计了一个 “anchor refinement module” 来过滤 easy negatives。还有一种方法是设计新的损失函数,可以将标准的交叉熵损失函数进行修改,以使得系统能够更加关注那些 hard、misclassified examples。

第三部分:加速技术

这篇论文将过去 20 年的目标检测加速技术总结为三个级别:

  • speed up of detection pipeline
  • speed up of detection engine
  • speed up of numerical computation

如下图所示:

3.1 宏观级别:speed up of detection pipeline

宏观级别包含以下三个方面:

  • Feature map shared computation
  • Speed up of classifiers
  • Cascaded detection
3.1.1 Feature Map Shared Computation

目标检测系统运算量最大的地方出现在 feature extraction 处。对于一个基于滑动窗的检测器而言,计算的冗余是由以下两方面的原因导致的:其一,由相邻滑动窗之间的重叠造成的计算冗余,这是由 position 导致的冗余;其二,由相邻 scale 之间的 feature correlation 造成的计算冗余,这是由 scale 导致的冗余。

  • Spatial Computational Redundancy 及其加速技术:
    • 减少 spatial computational redundancy 最常用的方法就是 feature map shared computation,即在滑动窗作用于图片之前,只计算整张图片的 feature map 一次。现在大多数深度学习检测器(如 SPPNet,Fast-RCNN,Faster-RCNN)都采用了类似的做法,它们都获得了数十倍,甚至数百倍的加速。
  • Scale Computational Redundancy 及其加速技术:
    • VJ detector 的做法是直接 scale features 而不是图片。
3.1.2 Speed up of Classifiers

(这个地方主要讲述的是对 kernel SVM 的一些加速方法。)

3.1.3 Cascaded Detection

在目标检测系统中,cascaded detection 是一种常用的加速技巧。它是一个 coarse to fine 的过程:先通过简单的计算,将大多数简单的背景窗口筛选出来;然后再用复杂的计算去处理那些比较难的滑动窗口。VJ detector 就是 cascaded detection 的典型代表。在 VJ detector 之后,许多经典的目标检测器(如 HOG detector 和 DPM)也都通过这一技术获得了加速。

现代的深度学习目标检测器也同样使用了 cascaded detection 的方法,尤其是当要检测 small objects in large scenes 时(如人脸检测、行人检测),这种方法更是发挥了至关重要的作用。

3.2 中间级别:speed up of detection engine

中间级别包含以下两个方面:

  • Network pruning and quantification
  • Lightweight network design
3.2.1 Network Pruning and Quantification

剪枝和量化是通用的模型加速方法。

剪枝:

remove only a small group of unimportant weights after each stage of training, and repeat those poerations (i.e. take an iterative training and pruning process).

量化:

当前的模型量化主要集中在网络二值化(network binarization)方面:

Network binarization aims to accelerate a network by quantifying its activations or weights to binary variables (say, 0 and 1) so that the floating-point operation is converted to AND, OR, NOT logical operations.

模型量化可以显著加速运算过程并且减少模型对存储的需求,这就使得模型能够更容易地部署在移动设备上。

3.2.2 网络蒸馏(Network Distillation)

Network distillation is a general framework to compress the knowledge of a large network ("teacher net") into a small one ("student net").

最近这种方法已经被用于加速目标检测,如用一个 teacher net 来指导一个 light-weight student net 的训练,从而用这个 student net 来加速检测过程。

3.2.3 Light-weight Network Design

这一部分论文中提到了五种方法:

  • factorizing convolutions
  • group convolution
  • depth-wise separable convolution
  • bottle-neck design
  • neural architecture search (NAS)

3.3 微观级别:speed up of numerical computation

微观级别包含以下四个方面:

  • Speed up with integral image
  • Speed up in frequency domain
  • Vector quantization
  • Reduced rank approximation

第四部分:近三年的 SOTA 方法

4.1 Detection with Better Backbone

目标检测系统的准确率极度依赖于 feature extraction 网络。对于相同的检测器,使用不同的 backbone 得到的准确率是不一样的。

  • 一些最近的目标检测系统,如 STDN,DSOD,TinyDSOD 以及 Pelee 都选择将 DenseNet 作为 backbone;
  • Mask RCNN (instance segmentation 的 SOTA),将 ResNeXt (第二代 ResNet) 作为 backbone;
  • 此外,为了能够加快检测速度,一些检测系统如 MobileNet 和 LightHead RCNN 中用到了 depth-wise separable convolution operation (这一方法在 Xception 中首次被提出,Xception 是 Inception 的改进版)。

4.2 Detection with Better Features

Feature representation 的质量对目标检测而言是至关重要的。近些年,有两种主流的提升 feature representation 质量的方法:

  • feature fusion
  • learning high-resolution features with large receptive fields
4.2.1 Feature Fusion

目标检测问题实际上是由两个子问题组成的:目标识别(实际上是分类问题)和目标定位。

一个完整的 CNN 模型是由一系列的卷积层和池化层组成的。较浅的层(即前面的层)提取到的特征缺乏完整的语义信息,不适合对目标进行识别,但它们包含更多的边界和轮廓信息,因而它们能够帮助对目标进行定位。而较深的层(即后面的层)提取到的特征中包含丰富的语义信息,因而能够帮助对目标进行识别,但它不适合对目标进行定位。因此一个很自然的想法就是进行 feature fusion:将浅层特征和深层特征结合起来,这样便能够同时提升识别和定位的准确性。

那么如何进行 feature fusion 呢?这篇文章将近些年的一些方法大致分成两类:

  • Processing flow:

    • 这一类 feature fusion 包含两种 fusion 方法:bottom-up fusion 以及 top-down fusion。

      Bottom-up fusion 通过 skip connections 将浅层的特征送到较深的层中。

      Top-down fusion 则正好相反,它是将深层的特征反馈回较浅的层。

    • 但是这里需要注意的是,不同层的 feature map 的尺寸是不一样的,不管是在空间大小还是在通道数方面,浅层和深层的 feature map 都存在着差异,因此直接进行 fusion 显然是不合适的。因此我们需要对 feature map 进行 resize,例如调整通道数的多少,up-sampling low-resolution maps 或者 down-sampling high-resolution maps to a proper size。最简单的方法就是进行 nearest-interpolation 或 bilinear-interpolation。此外,fractional strided convolution (也叫转置卷积,transpose convolution) 是另外一种比计较流行的调整 feature map 大小以及通道数多少的方式。这种方式的优点是网络可以自己学习一种比较恰当的方式来进行上采样。

  • Element-wise operation:

    • 如果从一个局部的视角出发,不同 feature map 之间的 feature fusion 可以看做是 element-wise operation。它包含三种具体的操作:element-wise sum,element-wise product,concatenation。
    • Element-wise sum 是最简单的进行 feature fusion 的方法,它已经被广泛地用在检测系统中。
    • Element-wise product 和 element-wise sum 的区别仅仅是将加法换成了乘法。但这样做的好处是乘法操作可以用来 suppress 或 highlight 某个特定区域内的 feature,这样将更有利于小目标的检测。
    • Feature concatenation 是另外一种 feature fusion 方法。它的优点是它可以将不同 region 里的 context information 给 integrate 起来,缺点是会增加额外的存储消耗。
4.2.2 learning high-resolution features with large receptive fields

什么是感受野?

The receptive field refers to the spatial range of input pixels that contribute to the calculation of a single pixel of the output.

A network with a larger receptive field is able to capture a larger scale of context information, while that with a smaller one may concentrate more on the local details.

什么是 feature resolution ?

The feature resolution corresponds to the down-sampling rate between the input and the feature map.

The lower the feature resolution is, the harder will be to detect small objects.

为了能够增加 feature resolution,最直接的方法是移除 pooling 层或减小 down-sampling rate。然而这样做会导致一个新的问题,那就是感受野也会跟着减小,就相当于缩小了检测器的“视野”,这样它就有可能会漏掉一些比较大的目标。

一种能够同时增大感受野以及提高 feature resolution 的方法就是使用空洞卷积(dilated convolution)。空洞卷积最早是在语义分割任务中提出来的,它的核心想法就是 expand the convolution filter and use sparse parameters。(例如,一个 3x3 的卷积核,如果把 dilation rate 设为 2 ,那么它的感受野就会和 5x5 的卷积核相当,但它仍然只有 9 个参数。)

空洞卷积已经被广泛地用在目标检测系统中,它既能够提高准确率,又不会引入额外的参数,而且不会带来额外的计算负担。

4.3 Beyond Sliding Window

尽管当前目标检测已经由手工设计的特征转向了深度神经网路,但检测的模式依然沿袭以往的 “sliding window on feature maps” 的方式。因此,近期有一些研究者尝试探索能否摆脱使用 sliding window 这一固有的模式。

目前主要有两种新思路:

  • Detection as sub-region search
  • Detection as key points localization

4.4 Improvements of Localization

为了提升定位的准确率,目前主要有两类方法:

  • bounding box refinement
  • designing new loss functions for accurate localization
4.4.1 Bounding Box Refinement

提升定位准确率最直接的方法就是进行 bbox refinement。尽管目前 bbox regression 已经集成到大多数检测器中,但仍然有一些物体,它们的尺寸或者太大或者太小,难以被预先设定的 anchors 捕捉到。因此,最近一种被称为 “iterative bounding box refinement” 的方法被提出,它是通过 iteratively feeding the detection results into a BB regressor until the prediction converges to a correct location and size 来实现的。

4.4.2 Improving Loss Functions for Accurate Localization

在现代的目标检测系统中,目标定位被视为一个坐标回归问题(coordinate regression problem)。为了提升定位准确率,可以涉及新的损失函数。比如最直接的方式就是将 IoU 作为定位的损失函数。或者也可以用一个 IoU-guided NMS 来提升训练和测试阶段的定位准确率。

4.5 Learning with Segmentation

为什么 semantic segmentation 能够帮助 object detection ?

  • Segmentation helps category recognition.
  • Segmentation helps accurate localization.
  • Segmentation can be embedded as context.

如何利用 segmentation 来帮助 detection 呢?有两种方法:

  • Method 1: Learning with enriched features.

    • 这是最简单的方式,就是只将分割网络当成一个特征提取器,然后将它提取到的特征合并到检测系统中。这种方法的优点是很容易实现,但缺点是会带来额外的计算负担。
  • Method 2: Learning with multi-task loss functions.

    • 另外一种方法是在原有的检测网络的基础上,再开辟一个 segmentation 分支(不添加额外的模块,相当于原网络现在既做检测又做分割)。然后,训练的时候用 multi-task loss functions (segmentation loss + detection loss) 来训。在进行推理的时候,segmentation 分支将会被移除。

      这种做法的优点是检测的速度不会受到影响,但缺点是需要 pixel-level image annotations (因为 segmentation 分支的引入)。

4.6 Robust Detection of Rotation and Scale Changes

Object rotation 和 scale changes 是目标检测面临的两个重要挑战。CNN 学到的特征对旋转以及大的尺度变化是不具有不变性的。

4.6.1 Rotation Robust Detection

为了应对目标的旋转问题,最简单的方法就是做 data augmentation,使得任意旋转角度的物体都包含在增强后的数据中(也就是在训练时,让检测器尽可能多“见”一些物体)。除此之外,近些年还产生出了一些新的方法:

  • Using rotation invariant loss functions:
    • 可以在原来的损失函数中添加一些 constraint,从而使得目标即使有旋转,它们的 feature 也会保持不变。
  • Rotation calibration (旋转校正):
    • 这种方法是对待检测目标做几何变换,对于 multi-stage detector 来说,这种方法尤为有用。这种方法的典型代表是 Spatial Transformer Networks (STN)。(STN 现在已经被用在 rotated text detection 以及 rotated face detection。)
  • Rotation RoI Pooling:
    • 这里涉及到坐标变换:由 Cartesian 坐标(笛卡尔坐标)变换到极坐标。
4.6.2 Scale Robust Detection

这里分为训练和推理两个阶段:

  • Scale adaptive training:

    • 当前大多数检测器都是将输入图片 re-scale 到一个固定的 size,然后将图片中各个不同 scale 的目标的损失进行反传,这样做会出现 ”scale imbalance“ 问题。

    • 建立 image pyramid 可以缓解上述问题,但不能从根本上解决。

    • 最近一种改进方法是 Scale Normalization for Image Pyramids (SNIP),这种方法同时在训练和推理阶段建立 image pyramids,然后只反传那些 selected scales 的 loss。如下图所示:

  • Scale adaptive detection:

    • 当前大多数检测器都用固定的模型网络去检测不同尺寸的物体。这样做的缺点是难以应对比较大的尺度变化。当前一种解决方法是 “adaptive zoom-in” 技术,它可以自动放大一些比较小的目标。

4.7 Training from Scratch

这一部分抛出了一个问题:检测任务是否一定先要在大型数据集 (如 ImageNet) 上进行预训练?何凯明的研究表明:

ImageNet pre-training may speed up convergence, but does not necessarily provide regularization or improve final detection accuracy.

4.8 Adversarial Training

近两年,GAN 被用在目标检测中,尤其是对小目标以及遮挡目标的检测。

GAN 是通过 narrowing the representations between small and large ones 来增加对小目标的检测的。

GAN 对遮挡目标的检测:一种观点是可以通过 adversarial training 来生成 occlusion masks。

4.9 Weakly Supervised Object Detection (WSOD)

近些年的一些解决 WSOD 问题的方法:

  • Multi-instance learning
  • Class activation mapping

第五部分:应用场景

5.1 Pedestrian Detection

  • 如何改善对 small pedestrian 的检测?

    Fast/Faster R-CNN 难以成功检测 small pedestrian,因为它们提取到的是 low resolution convolutional features。最近的一些解决方案包括:feature fusion,introducing extra high-resolution handcrafted features,以及 ensembling detection results on multiple resolutions。

  • 如何改善对 hard negative 的检测?

    改善方法包括 boosted decision tree,semantic segmentation 以及 "cross-modal learning"。

  • 如何改善对 occluded pedestrian 的检测?

    改善方法包括 design new loss function,ensemble part detectors 以及 attention mechanism。

5.2 Face Detection

5.3 Text Detection

5.4 Traffic Sign and Traffic Light Detection

5.5 Remote Sensing Target Detection

第六部分:总结与展望

目标检测技术未来的一些发展方向:

  • Lightweight object detection :加速目标检测算法使之能够在移动设备上流畅运行。
  • Detection meets AutoML :当前的目标检测系统越来越复杂而且 heavily relies on experiences。未来的一个方向是借助 NAS,让机器帮我们设计目标检测系统(如:如何选取 backbone,如何设置 anchor boxes 等)。
  • Detection meets domain adaptation :任何目标检测器的训练实际上都可以看成是在独立同分布(independently and identically distributed, i.i.d.)条件下的似然估计过程(likelihood estimation process)。如果要检测的数据不符合 i.i.d. 条件,尤其是对真实世界的数据而言,目标检测就会面临很大的挑战。目前 GAN 在 domain adaptation 方面显示出了比较出色的潜力。
  • Weakly supervised detection :目前的检测系统大多都需要大量的标注数据,而数据标注的过程是 time-consuming, expensive, and inefficient 的。
  • Small object detection :大场景下的小目标检测一直以来都是一个挑战。
  • Detection in videos :高清视频(HD videos)中的目标实时检测/追踪对视频监控(video surveillance)以及自动驾驶(autonomous driving)而言都具有重大的意义。传统的目标检测经常是对单张图片进行检测的,而忽视了视频中不同帧之间存在的联系。因此,通过探索不同帧之间的 spatial and temporal correlation 来提高目标检测的性能也是未来的一个发展方向。
  • Detection with information fusion :数据的形式可能是多种多样的,如 RGB-D image,3d point cloud,LIDAR 等。如何把不同形式数据的信息融合起来,也是未来的一个发展方向。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,924评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,902评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,716评论 0 239
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,783评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,166评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,510评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,784评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,476评论 0 196
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,196评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,459评论 2 243
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,978评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,321评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,964评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,046评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,803评论 0 193
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,530评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,420评论 2 265

推荐阅读更多精彩内容