天天看点

目标检测20年综述之(一)

目标检测20年综述

本文是一篇综述的阅读笔记:《Object Detection in 20 Years: A Survey》

介绍历史上的里程碑检测器、检测数据集、评价指标、检测系统的基本构件、加速技术,以及最新最先进的检测方法。本文还综述了行人检测、人脸检测、文本检测等重要的检测应用,并对其面临的挑战以及近年来的技术进步进行了深入分析。

1. Introduction

目标检测解决什么问题?

目标检测解决的是计算机视觉任务的基本问题:即What objects are where?图像中有什么目标,在哪里?

目标检测面临哪些挑战?

除了计算机视觉任务都存在的不同视角、不同光照条件以及类内差异等之外,还存在目标旋转和尺度变化(如小目标),如何精确的目标定位,密集和遮挡条件下的目标检测,以及如何加快检测速度等。

2. 目标检测Road Map

以2014年为界,目标检测分为传统目标检测时期和基于深度学习的目标检测时期

目标检测20年综述之(一)

2.1 传统目标检测器

基本依靠手工特征

2.1.1 VJ 检测器

Viola Jones检测器首次实现人脸实时监测,VJ检测器使用简单直接的检测方式—滑动窗口,但是当时算力有限,为了达到实时使用了三项技术:

(1)积分图

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

(2)特征选择

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

(3)检测级联

VJ 检测器引入了多级检测范式(又称“检测级联”),通过减少对背景窗口的计算,而更多地对人脸目标进行计算,从而减少了计算开销。

2.1.2 HOG检测器

HOG(Histogram of Oriented Gradients),即方向梯度直方图特征描述器,主要用于行人检测,也可以用于检测其他对象。为了平衡特征不变性( feature invariance,包括平移、尺度、光照等)和非线性(区分不同目标类别),将HOG描述符设计为在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化(local contrast normalization)来提高精度。为了检测不同大小的对象,HOG检测器在保持检测窗口大小不变的情况下,对输入图像进行多次rescale。

具体参照目标检测的图像特征提取之(一)HOG特征

2.1.3 Deformable Part-based Model (DPM)

传统目标检测方法的巅峰之作,VOC07、08、09检测连续夺冠。

DPM最初是HOG检测器的扩展,随后由Girshick大佬作了一系列改进。

DPM遵循“分而治之”的检测思想,训练可以简单地看作是学习分解对象的恰当方式,推理可以看作是对目标不同部分检测的集合。

一个典型的DPM检测器由一个root-filter和一些part-filters组成。基于DPM的弱监督学习方法不需要手工指定part filters的配置(如尺寸和位置),而是将part-filters的所有配置作为潜变量自动学习。

Girshick将此过程进一步表示为Multi-Instance learning的一个特例,并应用了“hard negative mining”、“bounding box regression”和“context priming”等重要技术来提高检测精度。为了加快检测速度,Girshick开发了一种技术,将检测模型“编译”成一个更快的模型,该模型实现了级联结构,在不牺牲任何精度的情况下实现了超过10倍的加速(什么这么神奇,其实我也想知道,但是暂时没时间看了)。

在深度学习时代,目标检测可以分为两类:two-stage和one-stage,前者是由粗到精的过程,而后者则一步到位。

2.2 基于CNN的Two-stage目标检测器

2.2.1 RCNN

Regions with CNN features

背景

传统方法遭遇瓶颈,AlexNet带来曙光

过程

(1)使用选择性搜索(selective search)获取目标候选框(proposal)

(2)每个proposal rescale到固定尺寸,输入CNN来提取特征

(3)线性SVM分类器用于预测每个区域内目标的存在,并识别其类别

缺点

对大量重叠proposal的冗余特征计算(一张图像超过2000个框)导致检测速度极慢(使用GPU每张图像14秒)。

2.2.2 SPPNet

Spatial Pyramid Pooling Networks

背景

RCNN速度慢,且需要固定尺寸的输入(比如AlexNet的224x224)

贡献

引入了空间金字塔池层(Spatial Pyramid Pooling),它使CNN能够生成固定长度的表示,而不需要重新调整图像/感兴趣区域的大小。

利用SPPNet进行目标检测时,只需要对整个图像进行一次计算得到特征图,就可以生成任意区域的定长表示来训练检测器,避免了卷积特征的重复计算。

SPPNet的速度是R-CNN的20多倍,并且没有牺牲任何检测精度(VOC07 mAP=59.2%)。

缺点

(1)训练仍然是多阶段的

(2)SPPNet只对其全连接层进行微调,而忽略了之前的所有层。

2.2.3 Fast RCNN

RCNN和SPPNet的结合

缺点

选择性搜索速度较慢,可否替换为CNN

2.2.4 Faster RCNN

贡献

Region Proposal Network (RPN),几乎没有消耗的生成proposal

从R-CNN到Faster RCNN,一个目标检测系统的大部分独立模块,如proposal生成、特征提取、边界框回归等,都逐渐集成到一个统一的端到端学习框架中。

2.2.5 R-FCN&&Light-head RCNN

解决Faster RCNN的计算冗余

2.2.6 Feature Pyramid Networks(FPN)

背景

在FPN之前的大部分检测模型,都是使用单层Top Layer进行检测(当然也有SSD)

虽然CNN较深层的特征有利于分类,但不利于对象的定位。

贡献

为此,在FPN中构建了一种具有横向连接的自顶向下的结构,用于在所有尺度上获取高层语义。由于CNN通过前向传播自然形成了一个特征金字塔,所以FPN在检测具有多种尺度的目标时显示出了很大的进步。

2.3 基于CNN的One-Stage目标检测器

2.3.1 You Only Look Once (YOLO)

深度学习时代第一个One-stage检测器,最大的特点就是速度快

完全摒弃了之前proposal+refine的思路,对整张图片应用单个神经网络

该网络将图像分割成多个区域,同时预测每个区域的边界框和置信度。

缺点

相比two-stage检测器,定位精度差,尤其是对于小目标,随后的v2、v3版本及SSD都在尝试解决这个问题

2.3.2 Single Shot MultiBox Detector (SSD)

贡献

与之前检测器的主要区别在于,SSD在网络的不同层检测不同尺度的对象,而后者仅在其顶层进行检测。

2.3.3 RetinaNet

背景

单阶段检测器效果比两阶段检测器差,本文认为主要问题在于单阶段检测器训练时正负样本的极度不平衡。

贡献

提出Focal Loss,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本,解决正负样本不平衡问题。

3.目标检测数据集

目标检测20年综述之(一)

3.1 Pascal VOC

The PASCAL Visual Object Classes (VOC) Challenges (from 2005 to 2012)

20类:

Person: person;

Animal: bird, cat, cow, dog, horse, sheep;

Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train;

Indoor: bottle, chair, dining table, potted plant, sofa, tv monitor

目标检测20年综述之(一)

3.2 ILSVRC

The ImageNet Large Scale Visual Recognition Challenge(ILSVRC,2010~2017)

200类

3.3 MS-COCO

2015开始

80类

单图目标数量多,目标密集,且小目标多

包含实例分割标注

3.4 Open Images

2018

Open Im- ages Detection (OID) challenge

600类

包含两个任务:

(1)标准目标检测

(2)视觉关系检测,用于检测特定关系中成对的目标

3.5 其他检测任务数据集

3…5.1 行人检测数据集
目标检测20年综述之(一)
3.5.2 人脸检测数据集
目标检测20年综述之(一)
3.5.3 文本检测数据集
目标检测20年综述之(一)
3.5.4 交通信号灯和交通标志数据集
目标检测20年综述之(一)
3.5.5 遥感目标检测数据集
目标检测20年综述之(一)

4. 评价指标

4.1 IoU

Detection基础模块之(一)IoU

4.2 mAP

Detection基础模块之(二)mAP

继续阅读