(1908)一篇目标检测综述.

目标检测(object detection)旨在在一张图像中寻找所有可能目标的精确位置并对每一个目标进行分类。

本文的三个主要部分:

  1. 检测组件 detection components
  2. 学习策略 learning strategy
  3. 应用和基准 applications & benchmarks

本文的方法论 methodology

目录

  1. Introduction
  2. Problem Settings
  3. Detection Components
  4. Learning Strategy
  5. Applications
  6. Benchmarks
  7. Future

1. Introduction

(1)计算机视觉的任务

计算机视觉领域的几个基础视觉任务

计算机视觉领域的几个进阶视觉任务

(2)传统的目标检测方法

传统的目标检测流水线(pipeline)

传统的目标检测算法

传统目标检测的缺陷

(3)深度学习的目标检测方法

基于深度学习的目标检测发展:

上图红色表示anchor-free方法,绿色表示AutoML方法,是未来目标检测的发展方向。

深度学习的目标检测方法优势

目标检测方法的分类:

2. Problem Settings

目标检测的两个主要问题:

两种检测设置:

假设数据集有$N$张图像\(\{x_1,x_2,...,x_N\}\),对应标签\(\{y_1,y_2,...,y_N\}\),

记第$i$张图像内有$M_i$个目标,分别属于$C$类中的某一类:

\[y_i = \{ (c_1^i,b_1^i),(c_2^i,b_2^i),...,(c_{M_i}^i,b_{M_i}^i) \}\]

其中\(c_j^i \in C\)表示类别,\(b_j^i\)表示边界框或像素掩膜参数。

设检测系统$f$的参数为$θ$,检测结果如下:

\[y_{pred}^i = \{ (c_{pred1}^i,b_{pred1}^i),(c_{pred2}^i,b_{pred2}^i),... \}\]

目标检测问题的损失函数可以写作:

\[l(x,θ) = \frac{1}{N} \sum_{i=1}^{N} {l(y_{pred}^i,y_i,x_i;θ)} + \frac{λ}{2} \mid\mid θ \mid\mid^2\]

评估时,定义交并比(Intersection of Union,IoU)衡量预测边界框或像素掩膜与 $ground$ $truth$ 之间的差异:

\[IoU(b_{pred},b_{gt}) = \frac{Area(b_{pred} ∩ b_{gt})}{Area(b_{pred} ∪ b_{gt})}\]

最终预测只有类别预测正确并且交并比超过阈值$\Omega$才认为是正确的结果:

\[Prediction = \begin{cases} Positive, & c_{pred}=c_{gt} \text{ and } IoU(b_{pred},b_{gt}) > \Omega \\ Negative, & otherwise \end{cases}\]

3. Detection Components

3.1. Detection Settings

目标检测的两种检测设置

  1. 传统的目标检测:边界框定位(bbox-level
  2. 实例分割:像素掩膜定位(pixel-level & mask-level

3.2. Detection Paradigms

目标检测的两种范式

  1. two-stage detector:首先生成稀疏的候选区域,再对区域进行分类预测;
  2. one-stage detector:把图像的任何区域都看作候选区域,区分其为目标或背景。

3.2.1 Two-stage Detectors

两阶段的目标检测把检测任务分成两步:

  1. 区域生成(proposal generation);
  2. 对生成的区域进行预测(proposal prediction)。

典型的两阶段目标检测器:

3.2.2 One-stage Detectors

单阶段的目标检测把图像中的每个区域看作潜在的RoI,识别其为背景还是物体。

典型的单阶段目标检测器:

3.3. Backbone Architecture

在图像分类任务上预训练的网络能够提供更丰富的语义信息,有利于检测任务。

常用的卷积神经网络结构:

直接把分类任务训练的网络迁移到检测任务,会有一些问题:

  1. 分类任务得到的特征映射感受野较大,分辨率低;而检测任务要求相反;
  2. 分类任务使用单个特征映射,检测任务可以使用多个。

为检测设计的卷积神经网络:

3.4. Proposal Generation

Proposal是指图像中可能含有目标的区域,被用于下一步的分类和重定位。

区域生成的方法主要有以下四种:

  1. 传统的计算机视觉方法
  2. 基于anchor的方法
  3. 基于关键点的方法
  4. 其他方法

(1)traditional CV methods

传统计算机视觉的方法借助low-level的特征生成区域,如边缘、角点或颜色。

主要有三种实现策略:

优点

缺点

(2)anchor-based methods

基于anchor的方法,引入了基于预定义的anchor作为先验生成候选区域,从而不需要直接预测边界框,而是预测边界框的偏差。

i. Region Proposal Network(RPN)

  1. 在特征映射上使用3×3的卷积核滑动窗口;
  2. 在每个位置,使用k个anchor(不同的size和aspect ratio);
  3. 每一个anchor提取256维特征向量,喂入两个分支:分类层和回归层;
  4. 分类层给出是否为目标的得分,用来判断anchor是目标还是背景;
  5. 回归层给出边界框位置的修正。

ii. SSD

与RPN不同,前者分类时只判断anchor是否含有目标,具体是哪类目标需要依靠后续网络。

SSD的每个anchor区分具体是哪个目标,给出所有类别的置信概率。

iii. RefineDet

RefineDet把anchor的边界框回归分成两步:

第一步,使用手工设计的anchor,学习边界框的偏移;

第二步,使用上一步修正的anchor,学习边界框的偏移。

iv. Cascade R-CNN

使用一系列的anchor修正。

(3)keypoint-based methods

基于关键点的方法又可以分为:

i. Denet

Denet是一种基于corner的方法,对于特征映射上的每一点,判断其为(top-left、top-right、bottom-left、bottom-right)corner的概率。

ii. CornerNet

CornerNet也是基于corner的方法,提出了corner pooling预测top-left和bottom-right的corner。

iii. CenterNet

CenterNet结合了corner和center的方法,一方面预测corner,一方面预测center,从而减少了FP。

(4)other methods

i. AZNet

AZNet递归的把图像划分成一系列更小的图像区域,对每个区域,AZNet计算两个值:

3.5. Feature Representation Learning

特征表示学习旨在把输入图像转变为有利于后续任务的特征映射,主要包括四种方法:

  1. multi-scale feature learning
  2. region feature encoding
  3. contexture reasoning
  4. deformable feature learning

(1)multi-scale feature learning

卷积神经网络的浅层特征:

卷积神经网络的深层特征:

多尺度特征学习主要有四种方法:

  1. Image Pyramid
  2. Prediction Pyramid
  3. Integrated Features
  4. Feature Pyramid

1. Image Pyramid

把图像缩放成不同的尺度,每个尺度训练一个检测器,最后将结果融合。

代表模型:Scale Normalization for Image Pyramid(SNIP)

2. Prediction Pyramid

使用多层的特征映射分别检测不同尺度的目标,代表模型:

3. Integrated Features

结合网络不同层的特征映射构建一个新的特征映射,代表模型:

4. Feature Pyramid

结合特征融合与预测金字塔,代表模型:RPN

(2)region feature encoding

对于两阶段的检测器,区域特征编码将提取到的proposal编码为固定尺寸的特征向量。

  1. RoI Pooling:把proposal分成$n×n$($n$默认取$7$)的子区域,分别进行最大池化;
  2. RoI Warping:使用双线性插值调整proposal尺寸;
  3. RoI Align:使用双线性插值考虑misalignment
  4. Precies RoI Pooling
  5. Position Sensitive RoI Pooling(PSRoI Pooling):见R-FCN网络
  6. CoupleNet:结合RoI Pooling和PSRoI Pooling;
  7. Deformable RoI Pooling:学习每一个栅格的offset。

(3)contexture reasoning

有时图像中的语境信息对目标检测也很重要。语境推理主要有两种:

  1. global context reasoning
  2. region context reasoning

1. global context reasoning

2. region context reasoning

(4)deformable feature learning

4. Learning Strategy

4.1. 训练阶段

(1)Data Augmentation

(2)Imbalance Sampling

目标检测中的正负样本不平衡问题非常显著。意味着大部分样本都是负样本(背景)。

\[L_{FL} = α (1-p_{gt})^γ log(p_{gt})\]

(3)Localization Refinement

边界框回归能够提高检测精度。

\[L_{reg}(pred,label) = \sum_{i \in \{ x,y,h,w \}}^{} {SmoothL1(pred_i-label_i)}\] \[SmoothL1(x) = \begin{cases} 0.5x^2, & \mid x \mid < 1 \\ \mid x \mid -0.5, & otherwise \end{cases}\]

(4)Cascade Learning

(5)Others

4.2. 测试阶段

(1)Duplicate Removal

预测结果中存在大量重复边界框或负样本。

对每一个预测类别,边界框按照置信度排序,计算得分最高的边界框$M$与其他边界框的IoU;若交并比超过阈值\(\Omega _{threshold}\),则丢弃这些边界框(得分置零):

\[Score_B = \begin{cases} Score_B, & IoU(B,M) < \Omega _{threshold} \\ 0, & IoU(B,M) ≥ \Omega _{threshold} \end{cases}\]

对于交并比超过阈值的边界框,得分并不是直接置零,而是采用一个连续函数$F$(如线性函数、高斯函数)衰减:

\[Score_B = \begin{cases} Score_B, & IoU(B,M) < \Omega _{threshold} \\ F(IoU(B,M)), & IoU(B,M) ≥ \Omega _{threshold} \end{cases}\]

(2)Model Acceleration

模型加速。

(3)Others

5. Applications

5.1. Face Detection

人脸检测旨在从图像中检测出人脸。

人脸检测与普通目标检测的区别:

人脸检测的几个关注点:

5.2. Pedestrian Detection

行人检测与普通目标检测的区别:

6. Benchmarks

介绍一些benchmarks和评估指标 evaluation metrics 。

6.1. Generic Detection Benchmarks

用于通用目标检测的benchmarks包括:

通用目标检测的评估指标:

6.2. Face Detection Benchmarks

用于人脸检测的benchmarks包括:

人脸检测的评估指标:

6.3. Pedestrian Detection Benchmarks

用于行人检测的benchmarks包括:

行人检测的评估指标:

7. Future

目标检测未来的发展趋势:

  1. 基于anchor的方法引入了很强的先验知识,anchor-free的方法需要找到有效的区域生成策略 proposal generation;
  2. 如何使用更多的语境信息 contextural information;
  3. 基于AutoML的检测,找到低消耗的方法;
  4. 寻找更大的benchmarks
  5. low-shot目标检测,即样本很少的情况下如何检测;
  6. 设计检测的backbone网络
  7. 如何增加检测训练时的batch size;
  8. 增量学习 incremental learning。