综述:目标检测的二十年

2021-06-05 机器学习 论文阅读

# 一、介绍

本文从目标检测技术发展的角度,对 20 世纪 90 年代至 2019 年的 400 余篇论文进行了广泛的回顾。本文涵盖了许多主题,包括历史上的 里程碑检测器检测数据集度量标准检测系统的基本构件加速技术 以及 最新的检测方法。本文还综述了行人检测、人脸检测、文本检测等重要的检测应用,并对其面临的挑战以及近年来的技术进步进行了深入分析。

从应用程序的角度来看,目标检测可以被分为两个研究主题 通用目标检测(General Object Detection)检测应用(Detection Applications),前者旨在探索在 统一的框架下检测不同类型物体的方法,以模拟人类的视觉和认知;后者是指 特定应用场景下的检测,如行人检测、人脸检测、文本检测等。

近年来,随着深度学习技术的快速发展,为目标检测注入了新的血液,取得了显著的突破,将其推向了一个前所未有的研究热点。目前,目标检测已广泛应用于自主驾驶、机器人视觉、视频监控等领域。上图显示了近年来目标检测领域发表的论文数量变化趋势。

# 1.1 与其他综述的区别

  1. 根据 技术发展的脉络 进行全面的回顾;
  2. 关键技术最新技术 进行深入探索;
  3. 检测加速技术 的综合分析。

# 1.2 目标检测的困难和挑战

除了常见的计算机视觉任务面临的挑战,比如:不同视角、光照等,目标检测面临的挑战包括但是不限于以下几个方面:

  1. 目标旋转和尺度变化(小目标)
  2. 精确目标定位
  3. 稠密和遮挡目标检测
  4. 检测加速

# 二、目标检测 20 年来发展史

# 2.1 目标检测路线

在过去的二十年中,目标检测的发展大致经历了两个历史时期:“传统 的目标检测时期”(2014 年以前)和“基于 深度学习 的目标检测时期”(2014 年以后),下图展示了目标检测的发展历程。

# 2.1.1 里程碑:传统检测器

传统目标检测算法建立在 手工设计的特征 的基础上。由于缺乏有效的图像表示,人们别无选择,只能设计复杂的特征,以及各种加速技巧来使用有限的计算资源。

VJ 检测器

VJ 检测器首次实现了无约束的实时人脸检测,在同等的检测精度下,检测器的速度是其他算法的数十倍甚至数百倍。

VJ 检测器采用最直接的检测方法,即滑动窗口:查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。这种过程看似简单,但背后的计算远远超出当时计算机的算力。VJ 检测器采用 积分图特征选择检测级联 极大地提升了检测速度。

  • 积分图:积分图是一种 加速框过滤或卷积过程的计算方法。和同时期的其他方法一样,VJ 检测器使用 Haar 小波作为图像的特征表示。积分图使每个窗口的计算复杂度与窗口大小无关。
  • 特征选择:作者没有使用一组人工选择的 Haar 基滤波器,而是使用 Adaboost 算法从一组巨大的随机特征池中选择一组最有利于人脸检测的小特征集。
  • 检测级联:在 VJ 检测器中引入了多阶段检测范式(检测级联),通过减少对背景窗口上的计算,而增加对人脸目标的计算,从而减少计算开销。

HOG 检测器

方向梯度直方图(HOG)被看作是当时 尺度不变特征变换形状上下文 的重要改进。

为了平衡特征不变性(包括平移、尺度、光照等)和非线性(区分不同类别目标),将 HOG 描述符设计为在密集的均匀间隔单元网格上计算,并使用重叠的局部对比归一化来提高精度。

虽然 HOG 可以用来检测多种目标,但它的主要动机是行人检测。若要检测不同大小的目标,则 HOG 检测器需要在保持检测窗口大小不变的情况下,多次缩放输入图像。

DPM 检测器

DPM 检测器遵循 “分而治之” 的检测思想,训练 可以简单地看作是学习一种正确的 分解对象的方法推理 可以看作是对 不同对象部件的检测的集合

一个典型的 DPM 检测器由一个 根滤波器(Root-filter) 和一些 部位滤波器(Part-filters) 组成。DPM 提出一种弱监督学习方法,而不是手动指定部位滤波器配置(如尺寸和位置),它可以将部位滤波器的所有配置作为潜在变量来学习。

# 2.1.2 基于 CNN 的两阶段检测器

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

RCNN

首先通过选择性搜索(Selective Search)提取一系列候选框,然后,将每个候选框缩放到特定大小的图像,并将其输入到 CNN 中提取特征,最后使用 SVM 对每个区域预测是否包含目标,以及目标属于哪个类别。

尽管 RCNN 有了很大提升,但它的缺陷也很明显:在大量重叠的候选框上进行 冗余的特征计算(一张图片超过 2000 个框),导致 检测速度极慢(GPU 下每张图片 14 秒)。

SPPNet

SPPNet 的主要贡献是提出了 空间金字塔池化层(SPP),这使 CNN 对任意大小的图像和 ROI 能够生成固定大小的表征,而不需要进行缩放。使用 SPPNet 进行目标检测,只需从整个图像提取一次特征图,就可以生成任意区域的固定长度的表征来训练检测器,避免了重复卷积运算

Fast RCNN

结合 RCNN 和 SPPNet,使我们能够在相同的网络配置下同时训练检测器和边界框回归器。Fast RCNN 相比于 RCNN 精度从 58.5% 提升到 70%,检测速度提升了 200 倍。

但是它的 检测速度仍然受限于选择性搜索

Faster RCNN

Faster RCNN 是第一个端到端的,也是第一个接近实时的深度学习检测器。它的主要贡献是引入了 区域建议网络(RPN),使候选框的生成近乎无时间损耗。

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

FPN

在 FPN 之前,大多数基于深度学习的检测器只在网络的顶层进行检测。虽然 CNN 较深层的特征有利于分类识别,但 不利于对象的定位

为此,FPN 开发了一个具有横向连接的自顶向下的体系结构,用于在所有尺度上构建高级语义。由于 CNN 的前向传播,自然形成了一个特征金字塔,FPN 在多尺度目标检测方面显示出巨大的进步

# 2.1.3 基于 CNN 的单阶段检测器

YOLO

YOLO 将单个神经网络应用于整个图像。该网络将图像分割成多个区域,同时预测 每个区域的 边界框概率。相比于 two-stage 方法,YOLO 没有候选框生成的步骤,能够实现 快速检测。尽管检测速度有极大的提升,但是它的 定位精度有所下降,特别是对于一些 小目标

SSD

SSD 的主要贡献是引入了 多参考多分辨率检测技术,极大提高了单阶段检测器的检测精度,特别是对于一些小目标。SSD 在检测速度和精度上都有优势。SSD 与以往任何检测器的主要区别在于,前者在网络的 不同层检测不同尺度的对象,而后者仅在其顶层进行检测。

RetinaNet

尽管单阶段检测器速度快而且简单,但是精度上已经落后两阶段检测器很多年。极端的前景-背景类不平衡 是造成这一现象的主要原因。

为此,在 RetinaNet 中引入了一个新的损失函数 Focal Loss,通过对标准交叉熵损失的重构,使检测器在训练过程中 更加关注难分类的样本。Focal Loss 使得单阶段检测器在保持很高的检测速度的同时,可以达到与两阶段检测器相当的精度。

# 2.2 目标检测数据集

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

下面给出这些数据集的统计数据,以及从 2008 年到 2018 年对 VOC07、VOC12 和 MS-COCO 数据集检测精度的变化。

Pascal VOC

Pascal Visual Object Classes(2005-2012)是计算机视觉领域最重要的赛事之一。包含多任务:图像分类目标检测语义分割行为检测。主要有两个版本的 Pascal-VOC 用于检测:VOC07 和 VOC12,前者包含 5K 张训练图像,共 12K 个标注目标;后者包含 11K 张训练图像,共 27K 个标注目标。两个数据集中包含了 20 个生活中常见的目标类别。

ILSVRC

ImageNet Large Scale Visual Recognition Challenge(2010-2017)包含一个使用 ImageNet 图像的检测挑战赛。检测数据集包括 200 类视觉目标,图像 / 目标比 VOC 大两个数量级。

MS-COCO

MS-COCO 是当前 最有挑战性 的目标检测数据集。从 15 年开始举办比赛,它的目标类别比 ILSVRC 少,但是目标实例更多。

与 VOC 和 ILSVRC 相比,MS-COCO 除了 边界框注释 以外,每个目标通过 实例分割进一步标注 来帮助精确定位。此外,它包含 更多小目标(面积小于图像的 1%),以及 密集定位目标。这些特点使 MS-COCO 中的目标分布 更接近于真实世界

Open Images

2018 年推出了 Open Images 检测挑战赛,包含两个任务:

  1. 标准目标检测
  2. 视觉关系检测,用于检测特定关系中的匹配目标。

数据集包含 1910K 图像,600 个目标类型和 15440K 个标注目标。

# 2.3 目标检测度量标准

近年来,对目标检测最常用的评估方法是 平均精度(AP),该方法最早是在 VOC07 中引入的。AP 定义为不同召回情况下的平均检测精度,通常在某一特定类别下进行评估。 为了比较所有对象类别的性能,通常使用 所有对象类别的平均 AP(mAP) 作为性能的最终度量。

为了度量目标定位精度,使用 交并比(Intersection over Union,IoU) 来检查预测框和真实框之间的 IoU 是否大于预定义的阈值,比如 0.5。如果是,则将该对象标识为“成功检测到”,否则将标识为“未检测到”。因此,基于 0.5-IoU 的 mAP 已成为多年来用于目标检测问题的实际度量标准。

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

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

# 2.4 目标检测技术发展

接下来介绍检测系统的一些重要构件及其在过去 20 年中的技术发展。

# 2.4.1 早期检测

早期检测(2000 年以前)通常不遵循滑动窗口等统一检测理念,当时检测器通常基于低级和中级视觉设计。

组件、形状和边缘

组件识别作为一种重要的认知理论,长期以来一直是图像识别和目标检测的核心思想。一些早期的研究人员将目标检测定义为测量 目标组件形状轮廓 之间的相似性,包括距离变换、形状上下文、小边特征等。

但在更复杂的检测问题上,事情进展并不顺利。因此,基于机器学习的检测方法开始发展。基于机器学习的检测经历了多个发展阶段,包括 外观统计模型(1998 年以前)小波特征表示(1998-2005)梯度表示(2005-2012)

建立目标统计模型,比如 特征脸 是目标检测史上第一波基于学习的方法。相比于同时期基于规则和模板的方法,统计模型更好地提供了目标外观的完整描述。

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

早期基于 CNN 的目标检测

由于计算资源的限制,当时的 CNN 模型比现在的模型要小得多,也要浅得多。尽管如此,在早期基于 CNN 的检测模型中,计算效率仍然被认为是难以破解的难题之一。

经过一系列改进,通过扩展卷积网络的每一层,覆盖整个输入图像,减少计算量。这样,只需一次网络的正向传播,就可以提取出整个图像任意位置的特征。这可以看作是当今全卷积网络(FCN)的原型。

# 2.4.2 多尺度检测技术的发展

不同大小和长宽比的多尺度检测是目标检测领域的主要挑战之一。过去 20 年经历了多个历史阶段:

  1. 特征金字塔和滑动窗口(2014 年以前)
  2. 目标提议检测(2010-2015)
  3. 深度回归(2013-2016)
  4. 多参考检测(2015 年之后)
  5. 多分辨率检测(2016 年之后)

特征金字塔和滑动窗口

从 2004 年到 2014 年,基于 “特征金字塔 + 滑动窗口” 这种检测范式构建了许多里程碑式的检测器,包括 HOG 检测器、DPM,甚至深度学习时代的 Overfeat 检测器(ILSVRC-13 定位任务获奖者)。

早期的检测模型,如 VJ 检测器和 HOG 检测器,都是专门针对具有 “固定长宽比”(如人脸和直立的行人)的对象,只需构建特征金字塔,并在其上滑动固定大小检测窗口。当时没有考虑检测“各种长宽比 ”。

为了检测具有更复杂外观的对象,“混合模型” 是当时最好的解决方案之一,它通过 训练多个模型来检测不同长宽比的物体。除此之外,还可以为训练集的 每个对象实例训练单独的模型

但随着现代数据集中的对象(例如 MS-COCO)变得更加多样化,上面两种方式的模型会越来越冗杂,需要一种方法能够同时检测不同长宽比的目标。

目标提议检测

目标提议指一组 很可能包含目标的未知类候选框,这可以避免滑动窗口在整个图像上穷尽搜索。

该类检测算法应该满足以下条件:

  1. 高召回率
  2. 高定位精度
  3. 在前两个基础上,提高精度,减少时间

目前这种方法主要划分为三类:

  1. 分割分组方法
  2. 窗口评分方法
  3. 基于神经网络的方法

早期的提议检测方法遵循 自底向上的检测理念,受视觉显著性检测的影响,之后研究人员转向低水平视觉(如边缘检测)和更细致的手工技巧,以提高候选框定位。2014 年以后,自顶向下基于学习的方法 开始展现更多的优势。

许多研究者提出以下问题:目标提议是为了提高检测精度还是加快检测速度? 但并未得到满意的结果,随着单阶段检测和深度回归技术的兴起,提议检测很快淡出了人们的视线。

深度回归

近年来,随着 GPU 计算能力的提高,人们处理多尺度检测的方式变得越来越直接和暴力。使用深度回归来解决多尺度问题的思想非常简单,即基于深度学习特征 直接预测边界框的坐标

这种方法的 优点是简单易行,缺点是定位不够准确,特别是对于一些小对象

多参考-分辨率检测

多参考检测 是目前最流行的多尺度目标检测框架。其主要思想是在图像的不同位置预先定义一组不同大小和宽高比的参考框(即锚框),然后根据这些参考框预测检测框。

每个预定义的锚框的损失主要包括两部分:类别交叉熵损失L1 / L2 目标定位回归损失,损失函数为:

L(p,p,t,t)=Lcls.(p,p)+βI(t)Iloc.(t,t)I(t)={1IOU{a,a}>η0else \begin{aligned} L(p,p^*,t,t^*)&=L_{cls.}(p,p^*)+\beta I(t)I_{loc.}(t,t^*)\\ I(t)&= \left\{ \begin{array}{l} 1\quad{\rm IOU}\{a,a^*\}>\eta\\ 0\quad{\rm else} \end{array} \right. \end{aligned}

多分辨率检测 是在网络的不同层检测不同尺度的目标。CNN 前向传播天然形成特征金字塔结构,更容易在较深的层中检测到较大的物体,在较浅的层中检测到较小的物体。

多参考和多分辨率检测 已经形成当前检测器两个基本模块。

# 2.4.3 边界框回归技术发展

边界框(BB)回归是一种重要的目标检测技术。它的目的是在初始建议(Initial Proposal)或锚框的基础上 细化预测边界框的位置。在过去的 20 年里 BB 回归经历了三个历史时期:

  1. 无 BB 回归(2008 年以前)
  2. 从 BB 到 BB(2008-2013)
  3. 从特征到 BB(2013 年以后)

下图为边界框回归的演化过程:

无 BB 回归

早期的检测方法,如 VJ 检测器和 HOG 检测器,大多不使用 BB 回归,通常直接将 滑动窗口作为检测结果。为了获得精确的目标位置,研究人员别无选择,只能建造非常密集的金字塔,并在每个位置上密集地滑动探测器。

从 BB 到 BB

DPM 第一次将 BB 回归引入目标检测系统中,那时的 BB 回归通常作为一个后处理块,是一个 可选项。由于 VOC 的目标是预测每个对象的单个边界框,因此 DPM 生成最终检测的最简单方法应该是直接使用其 根过滤器位置

从特征到 BB

2015 年引入 Faster RCNN 后,BB 回归不再作为单独的后处理块,而是与检测器集成,以 端到端的方式 进行训练。同时,BB 回归已经演化为直接 基于 CNN 特征预测 BB

为了得到更强的鲁棒性预测,通常使用 smooth-L1 函数:

L(t)={5t2t0.1t0.05else L(t)= \left\{ \begin{array}{l} 5t^2\qquad\qquad |t|\le{0.1}\\ |t|-0.05\qquad{\rm else} \end{array} \right.

或平方根函数:

L(x,x)=(xx)L(x,x^*)=(\sqrt{x}-\sqrt{x^*})^*

作为回归损失,它们比 DPM 中使用的最小二乘损失具有 更强的鲁棒性。一些研究人员还选择将 坐标标准化,以获得更稳健的结果。

# 2.4.4 Context Priming

我们的大脑利用 物体和环境之间的联系 来促进视觉感知和认知。长期以来,上下文启发(Context priming)一直被用来改进检测。在其进化过程中,常用的方法有三种:

  1. 局部上下文检测
  2. 全局上下文检测
  3. 上下文交互

下图其发展历程:

局部上下文检测

局部上下文指要检测的目标周围区域的视觉信息。 早在 21 世纪初,研究者发现,包含局部上下文,例如面部边界轮廓,可以帮助提升人脸检测性能。基于深度学习的检测器可以通过简单 扩大网络的感受野目标提议的大小 来提升检测性能。

全局上下文检测

全局上下文利用场景配置作为目标检测附加信息源。 早期检测,集成全局上下文常见的方法是 集成构成场景的元素的统计摘要,如 Gist。基于深度学习的检测器有两种方法集成全局上下文:

  1. 利用 更大的感受野(甚至比图像大),或者对 CNN 特征进行 全局池化 操作;
  2. 将全局上下文看作一种序列信息,使用 循环神经网络 来学习。

上下文交互

上下文交互是指通过视觉元素的交互(如约束和依赖关系)来传达的信息。 对于大多数目标检测器,目标实例被单独检测和识别,而没有利用它们的关系。最近的一些研究表明,可以通过考虑上下文交互来改进现代目标检测器。最近的一些改进可以分为两类:

  1. 探索 单个目标之间 的关系
  2. 探索 目标和场景之间 的依赖关系

# 2.4.5 非极大值抑制

由于相邻窗口具有相似的检测分数,使用非极大值抑制后处理步骤可以 删除重复的检测框,获得最终结果。20 年来,非极大值抑制发展出三种方法:

  1. 贪心选择
  2. 边界框聚合
  3. 学习非极大值抑制

下图为非极大值抑制发展历程:

贪心选择

该方法老式但流行,其思想简单而直观:对于一组重叠检测,选择具有最大检测分数的边界框,同时根据 预定义阈值(如 0.5)移除相邻的框,上述过程以贪婪的方式迭代执行。

该方法虽然主流,但是仍然有提升空间,如下是一些贪心选择失败的示例:

主要有以下几点原因:

  1. 得分最高的检测,未必最合适
  2. 可能抑制附近的检测
  3. 不会去除假正例

边界框聚合

主要思想是将 多个重叠框合并或聚类 为一个最终检测,优点在于充分考虑目标关系及其空间布局。VJ 和 OverFeat 使用该方法。

学习非极大值抑制

主要思想是将 NMS 看作滤波器,对所有原始检测打分,并且 将 NMS 看作网络的一部分 进行端到端的训练。与传统方法相比,这些方法在 改善遮挡密集目标检测 方面表现出良好的效果。

# 2.4.6 难分负样本挖掘

目标检测器的训练本质上是一个 不平衡的数据学习 问题。在基于滑动窗口的情况下,背景和目标数据的不平衡甚至达到 106:110^6:1 的级别(背景数据较大,目标数据小,数据不平衡),此时,使用全部的背景数据进行训练会损害训练结果。

难分负样本挖掘(Hard Negative Mining,HNM)就是在训练过程中处理这种数据的不平衡的方法,下图为 HNM 的发展历程:

Bootstrap

目标检测中的 Bootstrap 是指一组训练技术,训练从一小部分背景样本开始,然后在训练过程中迭代地添加新的误分类背景。 早期引入 Bootstrap 的目的是减少数百万背景样本的训练计算。后来变成 DPM 和 HOG 检测器中解决数据不平衡问题的标准训练技术。

基于深度学习的 HNM

  1. Faster RCNN 和 YOLO 平衡正负样本权重
  2. SSD 和 OHEM 只有 小部分样本的梯度会被反向传播
  3. 设计 新的损失函数 来关注难分样本。

# 三、目标检测加速技术

目标检测加速是一个重要也具有挑战性的问题,主要分为三种类型:

  1. 检测管道加速
  2. 检测引擎加速
  3. 数值计算加速

总体技术概览如下所示:

# 3.1 特征图共享计算

在目标检测器的不同计算阶段中,特征提取通常占主导地位。对于基于滑动窗口的检测器,位置和尺度均会产生计算冗余,其中位置冗余是由 相邻窗口之间的重叠 造成的,尺度冗余是通过 相邻尺度间的特征关联 造成的。

# 3.1.1 空间计算冗余与加速

减少空间计算冗余最常用的方法是 特征图共享计算,即在滑动窗口前,只计算一次整个图像的特征图

传统检测器的“图像金字塔”可以看作是一个“特征金字塔”。例如,为了加快 HOG 行人检测器的速度,研究者通常会将整个输入图像的“HOG map”进行累加,如下图所示。

然而,这种方法的缺点也很明显,即特征图分辨率(此特征图上滑动窗口的最小步长)将 受到单元格大小的限制。如果一个小对象位于两个单元格之间,那么所有检测窗口都可能忽略它。解决这个问题的一个方法是 构建一个完整的特征金字塔

# 3.1.2 尺度计算冗余与加速

为了减少尺度计算冗余,最成功的方法是 直接缩放特征而不是图像,这种方法首次应用于 VJ 检测器。然而,由于模糊效果,这种方法不能直接应用于类似于 HOG 的特征。HOG 相邻尺度与积分通道特征之间存在很强的相关性,这种相关性可以通过近似相邻尺度的特征图来加速特征金字塔的计算。

此外,构建 “检测器金字塔” 是避免尺度计算冗余的另一种方法,即通过在一个特征图上滑动多个检测器来检测不同尺度的对象,而不是重新缩放图像或特征。

# 3.2 分类器加速

传统的基于滑动窗口的检测器,如 HOG 检测器和 DPM,由于计算复杂度较低,因此通常使用线性分类器。核 SVM 等非线性分类器的检测精度较高,但同时也带来较高的计算开销。作为一种标准的非参数方法,传统的核方法没有固定的计算复杂度,当训练集很大时,检测速度会非常慢

模型近似 是最常用的加速核分类器方法。由于经典核 SVM 的决策边界只能由一小组训练样本(支持向量)确定,因此推理阶段的计算复杂度与支持向量的个数成正比:O(Nsv)O(N_{sv})

约简集向量 是核 SVM 的一种逼近方法,目的是在少量合成向量基础上获得等价决策边界;另一种加速核 SVM 的方法是将其 决策边界近似成分段线性形式,从而达到恒定推理时间;此外,核方法还可以通过 稀疏编码 的方式加速。

# 3.3 级联检测器

级联检测采用 由粗到细 的检测思路:使用简单的计算过滤掉大部分简单的背景窗口,然后用复杂的窗口处理那些更困难的窗口。VJ 检测器是级联检测器的代表,后来的 HOG 和 DPM 都是用这种方法加速。

近年来,级联检测也被应用到基于深度学习的检测器中,特别是针对 “大场景中的小对象” 的检测任务,如人脸检测、行人检测等。除了算法加速外,级联检测还被应用于解决其他问题,如 改进难分样本检测集成上下文信息提高定位精度 等。

# 3.4 网络剪枝和量化

“网络剪枝”“网络量化” 是加速 CNN 模型的两种常用技术,前者是指 对网络结构或权值进行剪枝以减小模型大小,后者是指 减少激活值或权重的码长

# 3.4.1 网络剪枝

近年来的网络剪枝方法通常采用 迭代的训练剪枝 过程,即在 每个训练阶段后只移除一小部分不重要的权重,并重复这个过程。

传统的网络剪枝只是简单地去除不重要的权值,这可能导致卷积核中存在一些稀疏连接模式,不能直接应用于 CNN 模型的压缩,解决这个问题的一个简单方法是 删除整个卷积核 而不是独立的权重。

# 3.4.2 网络量化

近年来网络量化的研究主要集中在 网络二值化 方面,其目的是通过将网络的激活值或权值量化为二进制变量(0/1),从而使 浮点操作转换为逻辑操作(与、或、非)来加快网络速度。

此外,一些研究进一步开发了用于二值化计算的 GPU 加速库,获得更显著的加速效果。

# 3.4.3 网络蒸馏

这种方法的一种直接思路是使用 大型网络(教师网络) 指导 小型网络(学生网络) 的训练,以便后者实现加速检测。

另一种方法是 对候选区域进行变换,使学生网络和教师网络之间的特征距离最小化,这种方法使检测模型在同等精度下,速度提高为原来的两倍。

# 3.5 轻量级网络设计

最后一种加速基于 CNN 检测器的方法是 直接设计轻量级网络,而不是现成的检测引擎,下图展示了各种轻量级卷积方法:

# 3.5.1 分解卷积

分解卷积是最简单、直接的方法,主要有两种分解方法:

  1. 空间维度 上,将一个大的卷积核分解成一组小卷积核,如图(b)所示;
    • 7×77\times{7} 卷积核分解为 3 个 3×33\times{3} 卷积核,两者感受野大小相同,但后者更高效。
    • 将一个 k×kk\times{k} 卷积核分解为一个 k×1k\times{1} 和一个 1×k1\times{k} 卷积核,对于非常大的卷积核会更有效。
  2. 通道维度 上,将一大组卷积核分解为两小组卷积核,如图(c)所示;
    • 若特征图通道数为 cc,卷积核数为 dd,则可以分解为 dd' 个卷积核(d<dd'<d)的卷积层 + dd 个卷积核的卷积层,复杂度从 O(ck2d)O(ck^2d)O(ck2d)+O(dd)O(ck^2d')+O(d'd)

# 3.5.2 群卷积

群卷积通过将 特征通道划分为多个不同的组,然后在每一组分别进行卷积来减少卷积层参数数量。如果将特征通道均匀划分为 mm 组,理论上,卷积计算的复杂度将降低到原来的 1/m1/m,如图(d)所示。

# 3.5.3 深度可分卷积

可以被看作是 群卷积当组数等于通道数的特例,如图(e)所示,这一思想被用于目标检测和细粒度分类。

# 3.5.4 瓶颈结构

主要有两种思路:

  1. 压缩检测器的输入层,以减少从检测管道开始的计算量;
  2. 压缩检测引擎的输出,使特征图变薄,使其在后续检测阶段更加高效。

# 3.5.5 神经结构搜索

近年来,人们对利用 神经结构搜索(NAS) 自动设计网络体系结构而不是依赖于专家经验和知识产生了浓厚的兴趣,其中在搜索过程中考虑了 预测精度计算复杂度 的限制。

# 3.6 数值加速

# 3.6.1 积分图加速

积分图有助于快速计算图像子区域的和,其本质是信号处理中,卷积的积分——微分可分性:

f(x)g(x)=(f(x)dx)(dg(x)dx)f(x)*g(x)=(\int{f(x)}\mathrm{d}x)*(\frac{\mathrm{d}g(x)}{\mathrm{d}x})

其中,dg(x)/dx\mathrm{d}g(x)/\mathrm{d}x 是一个稀疏信号,卷积可以通过等式的右边进行加速。

# 3.6.2 频域加速

卷积是目标检测中的一种重要的数值运算形式,由于线性检测器的检测可以看作是特征图与检测器权值之间的窗口内积,因此该过程可以通过卷积来实现。

卷积可以在很多方面得到加速,傅里叶变换 是一个非常实用的选择尤其是对于加速那些大的滤波器。频域加速卷积的理论基础是信号处理中的 卷积定理,即在合适的条件下,两个信号卷积的傅里叶变换是其傅里叶空间的点乘

IW=F1(F(I)F(W))I*W=F^{-1}(F(I)\odot{F(W)})

其中 FF 为傅里叶变换,F1F^{-1} 为傅里叶反变换,IIWW 是输入图像和卷积核,* 是卷积运算,\odot 是点乘。可以通过快速傅里叶变换(FFTFFT)和快速傅里叶反变换(IFFTIFFT)来加速计算。

# 3.6.3 矢量量化

矢量量化(VQ)是信号处理中的一种经典的量化方法,其目的是 通过一组小的原型矢量来近似一组大数据的分布

它可用于 数据压缩加速目标检测中的内积运算。例如,使用 VQ,可以将 HOG 直方图分组并量化为一组原型直方图向量,然后在检测阶段,通过查表操作实现特征向量与检测权值之间的内积。由于该过程中没有浮点乘法和除法,因此 DPM 和例化 SVM 检测器(exemplar SVM detector)的速度可以提高一个数量级。

# 3.6.4 降秩逼近

深度网络中,全连接层的计算实际上是两个矩阵的乘法。当参数矩阵 WRu×v\mathbf{W}\in{\mathbb{R}^{u\times{v}}} 很大时,检测器的计算负担很重。降秩逼近是加速矩阵乘法的一种方法,目的是对矩阵 W\mathbf{W} 进行低阶分解:

WUΣtVT\mathbf{W}\approx\mathbf{U}\mathbf{\Sigma}_t\mathbf{V}^T

其中,U\mathbf{U} 是由 W\mathbf{W} 的前 tt 个左奇异向量组成的 u×tu\times{t} 矩阵;Σt\mathbf{\Sigma}_t 是包含 W\mathbf{W} 最上面 tt 个奇异值的 t×tt\times{t} 对角矩阵;V\mathbf{V} 是由 W\mathbf{W} 的前 t 个右奇异向量组成的 v×tv\times{t} 矩阵。

以上过程也称为 截断 SVD(Truncated SVD),将参数数量从 u×vu\times{v} 减到 t(u+v)t(u+v),如果 ttmin(u,v)\min(u,v) 小得多,则效果很显著。

# 四、目标检测最新进展

这部分将会介绍目标检测领域近三年的研究。

# 4.1 用更好的引擎检测

由于 检测器的精度很大程度上取决于其特征提取网络,因此本文将主干网络(如 ResNet、VGG)称为检测器的“引擎”,下图是三种知名的检测器(RCNN、R-FCN、SSD)在选取不同引擎时的精度对比:

  • AlexNet:8 层网络,是第一个 CNN 模型;
  • VGG:16-19 层网络,使用 3×33\times{3} 卷积核取代 5×55\times{5}7×77\times{7} 卷积核;
  • GoogLeNet:即 Inception 网络家族,增加了 CNN 的宽度和深度(达到 22 层),最大贡献是 factorizing convolution 和 batch normalization;
  • ResNet:最深达到 152 层,通过引入残差快,从而能够训练更深、更准确的模型;
  • DenseNet:受 short cut 的影响,将每一层以前馈的方式与其他所有层相连;
  • SENet:主要贡献是将全局池化和混编(global pooling and shuffling)一体化,以学习特征图在通道方面的重要性。

# 4.2 用更好的特征检测

# 4.2.1 特征融合重要性

不变性等变性 是图像特征表示中的两个重要性质。

分类 需要不变的特征表示,因为它学习的是高级语义信息;目标 定位 需要等变的表示,因为它的目的是区分位置和尺度的变化。由于目标检测由目标识别和定位这两个子任务组成,因此检测器必须 同时学习不变性和等变性

由于 CNN 模型的 深层特征具有更强的不变性,但等变性较差,这有利于分类识别,但在目标检测中定位精度较低。相反,较浅层的特征不利于学习语义,但它有助于对象定位,因为它包含更多关于边缘和轮廓的信息。因此,CNN 模型中 深层和浅层特征的融合 有助于提高不变性和等变性。

# 4.2.2 不同特征融合的方法

处理流

目前用于目标检测的特征融合方法可分为两类:

  1. 自底向上融合,通过跳跃连接将浅层特征传递到深层,如上图(a)所示;
  2. 自顶向下融合,将深层特征反馈给浅层,如上图(b)所示。

除了这些方法,最近还提出了更复杂的方法,例如 跨不同层编织特征

由于不同层的特征图在空间维度和通道维度上都可能不同,因此可能需要对特征图进行调整,如 调整通道数量上采样低分辨率特征图下采样高分辨率特征图,使其尺寸合适。最简单的方法是使用最临近或双线性插值。

此外,分数阶条纹卷积(又称转置卷积)是近年来另一种常用的调整特征图大小和通道数量的方法。使用分数阶条纹卷积的优点是,它可以 自主学习到最适应的方法进行上采样

元素智能操作

从局部的角度看,特征融合可以看作是不同特征映射之间的元素智能操作,主要有以下几种方法:

  1. 元素求和:最简单的特征融合方法,如上图(c)所示;
  2. 元素乘积:可以抑制或者强调某一区域内特征,可能有利于小目标检测,如上图(d)所示;
  3. 串联:可以整合不同区域的上下文特征,缺点是增加内存消耗,如上图(e)所示。

# 4.2.3 学习具有大感受野的高分辨率特征

大感受野能够捕获大尺度上下文信息,小感受野更关注局部细节。特征图分辨率越小,越难检测小目标。增加特征分辨率最直接的方法是去除池化层,或者减小卷积下采样率,但是这样同时会减小感受野。

同时增加感受野和分辨率的方法是引入 空洞卷积,其最初用于语义分割,主要思想是 使用稀疏参数扩大卷积核

# 4.3 超越滑动窗口

当前目标检测主流方法仍是“在特征图上滑动窗口”,但也出现了一些超越滑动窗口限制的检测器。

子区域搜索

一种方法是将检测视为一个 路径规划 过程,从初始网格开始,最终收敛到所需的 GT 框;另一种方法是将检测看作是一个 迭代更新 过程,对预测边界框的角点进行细化。

关键点定位

由于目标位置可以由左上角和右下角确定,因此 检测任务可以等价为一对关键点定位问题。该方法的优点是可以在语义分割框架下实现,不需要设计多尺度锚框。

# 4.4 定位提升

# 4.4.1 边界框精炼

它可以看作是 检测结果的后处理。一些非常规尺度的目标难以被预定义的锚框捕获,不可避免地导致不精确的位置预测。

因此引入 迭代边界框精炼,将检测结果迭代地输入到 BB 回归器,直到预测收敛到正确位置和大小。然而,也有研究者认为,这种方法 难以保证定位精度的单调性,也就是说,多次使用 BB 回归可能会使定位退化。

# 4.4.2 损失函数设计

检测器大多将目标定位看作坐标回归问题,然而这种模式有两个缺点:

  1. 回归损失函数并不对应最终的位置评估;
  2. 传统的边界框回归方法不能提供定位的置信度,当多个 BB 重叠时,可能导致非最大值抑制失败。

通过设计新的损失函数可以解决这些问题,最直接的思路是 直接使用 IoU 作为定位损失函数;其他一些研究者提出使用 IoU 引导的 NMS 来改进训练和检测阶段的定位;还有研究者尝试在 概率推理框架 下改进定位精度,与以往直接预测边界框坐标的方法不同,这种方法可以 预测边界框位置的概率分布

# 4.5 用分割学习

最近的研究表明,学习语义分割可以提升目标检测性能。

# 4.5.1 原因

边缘和边界是构成人类视觉认知的基本要素。在计算机视觉中,物体(如汽车、人)和物体(如天空、水、草)的区别在于前者通常有一个 封闭的、明确的边界,而后者没有。由于 语义分割任务的特征能够很好地捕捉到对象的边界,因此分割可能 有助于分类识别

对于一些特殊形状的物体(例如,想象一只猫有很长的尾巴),很难预测高 IoU 的位置。由于目标边界可以很好地编码在语义分割特征中,因此分割学习 有助于准确的目标定位

日常生活中的物体被不同的背景所包围,如天空、水、草等,这些元素构成了一个 物体的语境整合上下文的语义分割 将有助于目标检测,例如,飞机更有可能出现在空中而不是水上。

# 4.5.2 怎样提升检测

学习丰富特征

最简单的方法是将分割网络看作一个固定的特征提取器,并将其 作为附加特征集成到检测框架中。该方法的优点是易于实现,缺点是分割网络 可能带来额外的计算

采用多任务损失函数学习

另一种方法是在原有检测框架的基础上引入额外的分割分支,用多任务损失函数(分割损失 + 检测损失)训练模型,分割分支将在推理阶段被删除

优点是检测速度不受影响,缺点是训练需要像素级的图像标注。为此,一些研究人员采用了 “弱监督学习” 的思想:不是基于像素级注释掩码进行训练,而是 基于边界框级注释训练分割分支

# 4.6 对旋转和尺度变化鲁棒的检测

目标检测中,目标的旋转和尺度改变是主要的挑战。由于 CNN 学习的特征大部分对于旋转和尺度大范围改变有不变性,目前已取得很大进展。

# 4.6.1 旋转鲁棒性

最简单解决旋转问题的方法就是 数据增强,使得任意方向的目标都可以检测到;另一种方法就是 针对不同方向训练不同的探测器;除了这些传统法,目前有几个新的方法。

  1. 为检测损失函数添加约束,从而使旋转目标的特征不发生改变。
  2. 对候选目标进行几何变换,这对于多阶段检测器尤其有用,前阶段的相关性将有利于后续的检测,代表网络 STN。
  3. 旋转 RoI 池化,取代笛卡尔坐标,在极坐标中划分网格增加旋转不变性。

# 4.6.2 尺度鲁棒性

尺度自适应训练

大多数现代检测器都是将输入图像重新缩放到一个固定的尺寸,并将所有尺度下的物体的损失进行反向传播,如上图(a)所示,但是,这样做的缺点是会出现 “尺度不平衡” 问题。在检测过程中构建图像金字塔可以缓解这一问题,但不能从根本上解决。

最近的一个改进是 图像金字塔的尺度标准化(Scale Normalization for Image Pyramids,SNIP),它在训练阶段和检测阶段都建立图像金字塔,只对一些选定尺度的损失进行反向传播,如上图(b)所示。

一些研究人员进一步提出了一种更有效的训练策略:使用 高效重采样的 SNIP(SNIPER),即将图像裁剪并重新缩放到一组子区域,以便从大规模批量训练中获益。

尺度自适应检测

预定义锚框不能自适应检测非常规尺度目标,为提升小目标检测,采取 自适应放大技术将小目标放大;另一种思路是 学习图像中目标的尺度分布,根据目标尺度分布自适应缩放图像

# 4.7 从头开始训练

通常认为预训练可以提高模型泛化能力,并且加快训练速度,但事实上采用预训练网络有一些 局限性

  1. ImageNet 分类和目标检测之间的差异,包括它们的 损失函数和尺度 / 类别分布的差异
  2. 领域不匹配,ImageNet 是 RGB 图像,有时检测的是深度图像(RGB-d)或三维医学图像,无法很好地将预先训练好的知识转移到这些检测任务

为了加速训练以及从头训练的稳定性,一些研究人员引入 密集连接(Dense Connection)批标准化(Batch Normalization) 来加速浅层的反向传播。研究人员发现,ImageNet 预训练 可以加快收敛速度,但是 不一定有正则化或者提高最终精度的作用

# 4.8 对抗训练

典型 GAN 包括两个神经网络:生成网络判别网络,它们在极小极大优化框架下相互竞争。生成网络学习从潜在空间映射到感兴趣的特定数据分布;判别网络用来区分真实数据分布中的实例和生成器生成的实例。

GAN 目前也应用于目标检测方面,尤其是用来提升 小目标有遮挡目标 的检测效果。

GAN 通过 缩小小目标和大目标之间的表示差异,来提升对小目标的检测。为提升对遮挡目标的检测,一个思路是利用 对抗性训练来产生遮挡掩码,取代在像素空间生成样本,对抗网络直接修改特征以模拟遮挡

除了这些研究之外,旨在研究如何 用对抗样本攻击检测器的“对抗攻击” 最近引起了越来越多的关注。关于这一主题的研究对于自主驾驶尤其重要,因为在保证对抗攻击的鲁棒性之前,不能完全信任它。

# 4.9 弱监督目标检测

弱监督目标检测(Weakly Supervised Object Detection,WSOD)的目标是通过训练一个 只带有图像级注释 而不是边界框的检测器来解决这一问题。

近来,多实例学习 已经用于 WSOD。多实例学习是一组监督学习方法,多实例学习模型接收一组标记的包,每个包有许多实例,而不是使用一组单独标记的实例进行学习。如果将一幅图像中的候选目标视为一个包,将图像级注释视为标签,那么 WSOD 可以被表示为一个多实例学习过程。

类激活映射 是另一种用于 WSOD 的方法。对 CNN 可视化的研究表明,尽管没有对目标的位置进行监督,CNN 的卷积层仍然可以充当目标检测器。类别激活映射揭示了如何使 CNN 在接受图像级标签训练后仍具有定位能力。

除了上述方法,一些其他研究人员通过 选择信息量最大的区域,然后用图像级注释来训练这些区域,从而将 WSOD 视为 提议排序过程;WSOD 的另一个简单方法是 掩盖图像的不同部分,如果检测分数急剧下降,那么目标很可能被覆盖;此外,交互式注释 在训练中考虑了人的反馈,从而改进了 WSOD;最近,生成对抗训练 被用于 WSOD。

# 五、应用

在本节中,我们将回顾过去 20 年来一些重要的检测应用,包括 行人检测人脸检测文本检测交通标志 / 灯光检测遥感目标检测

# 5.1 行人检测

# 5.1.1 困难和挑战

行人检测的挑战和困难可以总结如下:

  1. 小行人目标:如下图(a)显示了一些远离摄像机拍摄的小行人的例子;
  2. 难分负样本:街景图像中的一些背景与行人的视觉外观非常相似,如下图(b)所示;
  3. 密集和遮挡行人目标:如下图(c)显示了密集和遮挡行人的一些例子;
  4. 实时检测:高清视频中实时检测行人对自动驾驶和视频监控等应用至关重要。

# 5.1.2 文献综述

传统的行人检测

由于计算资源的限制,Haar 小波特征 在早期行人检测中得到了广泛的应用。为了提高对被遮挡行人的检测,当时流行的一个想法是 “组件检测”,即把检测看作一个多部分检测器的集合,这些检测器分别在不同的人体部位训练,如头部、腿部和手臂上。

随着计算能力的提高,人们开始设计更加复杂的检测模型,并从 2005 年起,基于梯度的表示DPM 已经成为行人检测的主流。在 2009 年,通过使用 积分图 加速,一个有效的轻量级特征表示被提出:积分信道特征(Integral Channel Features,ICF),ICF 成为当时行人检测的新标杆。

除了特征表示,还考虑了一些 领域知识,如外观恒常性、形状对称性以及立体信息。

基于深度学习的行人检测

行人检测是最早应用深度学习的计算机视觉任务之一。

  1. 提升小行人检测:虽然 Fast / Faster R-CNN 等深度学习目标检测器在一般目标检测方面表现出了最先进的性能,但由于卷积特征的分辨率较低,对于小行人的检测效果有限。最近解决这一问题的一些方法包括 特征融合引入额外的高分辨率手工特征,以及 基于多个分辨率的集成检测结果
  2. 提升难分负样本检测:最近的一些改进包括 增强决策树的集成语义分割(作为行人的上下文)。此外,还引入了 “跨模态学习(Cross-modal Learning)” 的思想,利用 RGB 图像和红外图像来丰富困难负样本的特征。
  3. 提升密集和遮挡人群检测:一些研究人员考虑到目标的吸引力和周围物体的排斥力,设计了 新的损失函数;目标遮挡是密集行人经常遇到的另一个问题,局部检测器注意力机制 是改善遮挡行人检测最常见的方法。

# 5.2 人脸检测

# 5.2.1 困难和挑战

人脸检测的困难和挑战可以总结如下:

  1. 类内变化:人脸可以呈现出多种表情、肤色、姿势和动作,如下图(a)所示;
  2. 遮挡:人脸可能被其他物体遮挡部分,如下图(b)所示;
  3. 多尺度检测:检测多种尺度下的人脸,特别是一些微小的人脸,如下图(c)所示;
  4. 实时检测:移动设备上的人脸检测通常需要 CPU 的实时检测速度。

# 5.2.2 文献综述

早期的人脸检测

早期的人脸检测算法可以分为三种:

  1. 基于规则的方法:对人类关于面部构成以及面部元素联系的知识进行编码;
  2. 基于子空间分析的方法:分析了基础线性子空间中的人脸分布,典型代表是特征脸(Eigenfaces);
  3. 基于学习的方法:定义滑动窗口 + 二进制分类(目标 vs 背景)的人脸检测框架,常用的模型包括神经网络和 SVM。

传统的人脸检测

这一时期有两种人脸检测器:

  1. 基于增强决策树:计算简单,但在复杂场景下检测精度较低;
  2. 基于早期的卷积神经网络:利用特征的共享计算加快检测速度。

基于深度学习的人脸检测

在深度学习时代,大多数人脸检测算法都遵循一般的目标检测思想,如 Faster RCNN 和 SSD。

  1. 加速面部检测级联检测 是深度学习时代加速人脸检测最常用的方法;另一种加速方法是预测图像中人脸的尺度分布,然后在一些选定的尺度上进行检测;
  2. 改进多姿态遮挡人脸检测:为了提高对遮挡人脸的检测,最近提出了两种方法。第一个是融入 注意力机制,突出潜在人脸目标的特征;第二种是 基于部位的检测,它继承了 DPM 的思想;
  3. 提升多尺度人脸检测:采用与一般目标检测相似的检测策略,包括 多尺度特征融合多分辨率检测

# 5.3 文本检测

# 5.3.1 困难和挑战

文本检测的困难和挑战可以总结如下:

  1. 不同字体和语言:文本可能有不同的字体、颜色和语言,如下图(a)所示;
  2. 文本旋转与透视失真:文本可能有不同的方向,甚至可能有透视失真,如下图(b)所示;
  3. 密集文本:长径比大、布局密集的文本行很难精确定位,如下图(c)所示;
  4. 破碎模糊的字符:破碎和模糊的字符在街景图像中很常见。

# 5.3.2 文献综述

文本检测包括两个相关但相对独立的任务:文本定位文本识别。现有的文本检测方法可分为 “逐步检测”“集成检测” 两大类。

逐步检测 vs 集成检测

  • 逐步检测 由字符分割、候选区域验证、字符分组、单词识别等 一系列处理步骤 组成。
    • 优点:大部分的背景都可以在粗分割步骤中进行滤波,大大降低了后续处理的计算成本;
    • 缺点:需要仔细设置所有步骤的参数,这些错误将在每个步骤中发生和积累。
  • 集成检测 将文本检测定义为 联合概率推理问题,在统一的框架下处理字符定位、分组和识别的步骤。
    • 优点:避免了累积误差,易于集成语言模型;
    • 缺点:当考虑到大量字符类和候选窗口时,推理的计算开销会很大。

传统方法 vs 深度学习方法

传统的文本检测 方法大多是在无监督的情况下生成候选文本,常用的技术包括 最大稳定极值区域(MSER)分割形态滤波(Morphological Filtering),这些方法还考虑了文本的对称性和笔画结构等 领域知识

近年来,学者们 更多地关注文本的定位问题,而不是识别问题,最近提出了两种方法:

  1. 将文本检测作为 一般目标检测的特例:这些方法都有统一的检测框架,但对于方向性或长宽比较大的文本检测效果较差;
  2. 将文本检测框架为 图像分割问题:这些方法的优点是对文本的形状和方向没有特殊的限制,缺点是根据分割结果很难区分排列密集的文本行。

针对上述问题,近年来 基于深度学习的文本检测 方法提出了一些解决方案。

  1. 文本旋转和视角改变:这个问题最常见的解决方案是在锚框和 RoI 池化层中 引入额外的参数,这些参数与旋转和视角变化相关;
  2. 改进密集分布的文本检测基于分段的方法 在检测密集排列的文本时显示出更大的优势。为了区分相邻的文本行,最近提出了两组解决方案。
    • “线段与链接(Segment and Linking)”,其中 “Segment” 是指字符热图,“Linking” 是指两个相邻 Segment 之间的连接,表示它们属于同一单词或文本行;
    • 引入额外的角 / 边界检测任务,帮助分离密集排列的文本,一组角或封闭的边界对应于单个文本行。
  3. 改进破碎模糊文本检测:最近一种处理破碎和模糊文本的方法是使用 单词级 识别和 句子级 识别。处理不同字体的文本,最有效的方法是使用 合成样本 进行训练。

# 5.4 交通信号和交通灯检测

# 5.4.1 困难和挑战

交通信号和交通灯检测的困难和挑战可以总结如下:

  1. 光照变化:当车辆行驶在强光下或夜间时,检测尤为困难,如下图(a)所示;
  2. 运动模糊:由于汽车的运动,车载摄像头拍摄到的图像会变得模糊,如下图(b)所示;
  3. 恶劣天气:在恶劣天气下,如雨雪天气,图像质量会受到影响,如下图(c)所示;
  4. 实时检测:这对自动驾驶特别重要。

# 5.4.2 文献综述

传统的检测方法

由于交通标志 / 信号灯具有特殊的形状和颜色,传统的检测方法通常基于 颜色阈值视觉显著性检测形态滤波边缘 / 轮廓分析

由于上述基于低水平视觉的设计在复杂的环境下往往会失败,因此一些研究者开始寻找除了基于视觉的方法之外的其他解决方案,例如将 GPS 与数字地图相结合 用于交通灯检测。虽然 “特征金字塔 + 滑动窗口” 已经成为当时通用目标检测和行人检测的标准框架,但主流的交通标志 / 灯光检测方法直到 2010 年才遵循这一范式。

基于深度学习的检测方法

在深度学习时代,一些著名的检测器如 Faster RCNNSSD 被应用到交通标志 / 灯光检测任务中。在这些检测器的基础上,一些新的技术,如 注意力机制对抗性训练 被用来改善复杂交通环境下的检测。

# 5.5 遥感目标检测

# 5.5.1 困难和挑战

遥感目标检测的困难和挑战可以总结如下:

  1. 大量数据中的检测:由于遥感图像数据量巨大,快速准确地检测遥感目标仍然是一个问题,下图(a)比较了遥感图像和自然图像的数据量。
  2. 遮挡目标:地球表面每天有 50% 以上被云覆盖,如下图(b)所示;
  3. 域自适应:不同传感器(例如,不同的调制和分辨率)拍摄的遥感图像存在很大的差异。

# 5.5.2 文献综述

传统的检测方法

传统的遥感目标检测方法大多采用两阶段检测范式:

  1. 候选提取:常用的方法有 基于灰度值滤波 的方法、基于视觉显著性 的方法、基于小波变换 的方法、基于异常检测 的方法等,上述方法都是非监督方法,因此在复杂的环境中通常会失败;
  2. 目标验证:常用的特征包括 HOGLBPSIFT 等。此外,还有一些 基于滑动窗口 方法。
  • 为了检测具有 特定结构和形状 的目标,需要使用一些 领域知识。例如,油罐检测可以看作是圆 / 弧检测问题。近岸船舶检测可视为前甲板和船尾的检测。
  • 为了改进 遮挡 目标检测,常用的一种方法是 “局部检测”
  • 为了检测 不同方向 的目标,可使用 “混合模型” 针对不同方向的目标训练不同的检测器。

基于深度学习的检测方法

RCNN 在 2014 年取得巨大成功后,深度 CNN 很快被应用到遥感目标检测中,一般目标检测框架像 Faster RCNN 和 SSD 已经引起了遥感界越来越多的关注。

由于遥感图像与日常图像的巨大差异,人们对遥感图像的深度 CNN 特征的有效性进行了一些研究。人们发现,尽管深度 CNN 取得了巨大的成功,但它并不比传统的光谱数据处理方法好。

  • 为了检测 不同方向 的目标,一些研究人员 改进了 RoI 池化层,以获得更好的 旋转不变性
  • 为了提高 区域自适应能力,一些研究者从 贝叶斯的角度 提出了检测方法,在检测阶段,根据 测试图像的分布自适应更新模型
  • 此外,注意力机制特征融合策略 也被用来改进 小目标检测

# 六、总结与展望

  • 轻量级目标检测:加快检测算法的速度,使其能够在移动设备上平稳运行。一些重要的应用包括移动增强现实、智能摄像头、人脸验证等。虽然近年来已经做了很大的努力,但机器和人眼之间的速度差距仍然很大,特别是在检测一些小物体时。
  • 检测与 AutoML:近年来,基于深度学习的检测器变得越来越复杂,严重依赖于经验。未来的方向是在使用神经结构搜索设计检测模型时减少人为干预(例如,如何设计引擎和如何设置锚框),AutoML 可能是未来的目标检测。
  • 检测与域自适应:任何目标检测器的训练过程本质上都可以看作是一个假设数据独立且同分布(i.i.d)时的似然估计过程。使用非 i.i.d 数据的目标检测,特别是对一些实际应用程序来说,仍然是一个挑战。GAN 在领域自适应方面显示出良好的应用前景,对未来的目标检测具有重要的指导意义。
  • 弱监督检测:基于深度学习的检测器的训练通常依赖于大量注释良好的图像。注释过程耗时、开销大且效率低。开发弱监督检测技术,只使用图像级标注或部分使用边界框标注对检测器进行训练,对于降低人工成本和提高检测灵活性具有重要意义。
  • 小目标检测:在大场景中检测小物体一直是一个挑战。该研究方向的一些潜在应用包括利用遥感图像计算野生动物的数量和检测一些重要军事目标的状态。一些进一步的方向可能包括视觉注意力机制的集成和高分辨率轻量级网络的设计。
  • 视频中的检测(实时):高清视频中的实时目标检测 / 跟踪对于视频监控和自主驾驶具有重要意义。传统的目标检测器通常设计为基于图像的检测,而忽略了视频帧之间的相关性。通过探索时空相关性来改进检测是一个重要的研究方向。
  • 信息融合检测:RGB-D 图像、三维点云、激光雷达等多数据源 / 多模式的目标检测对自主驾驶和无人机应用具有重要意义。目前存在的问题包括:如何将训练有素的检测器移植到不同的数据模式,如何进行信息融合以提高检测能力等。

# 七、参考文献

Last Updated: 2023-01-28 4:31:25