Object Detection in 20 Years A Survey-论文翻译(阅读笔记)

Posted wyy_persist

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object Detection in 20 Years A Survey-论文翻译(阅读笔记)相关的知识,希望对你有一定的参考价值。

Object Detection in 20 Years A Survey论文翻译(阅读笔记)

原文地址:[1905.05055] Object Detection in 20 Years: A Survey (arxiv.org)

//2022.1.3日上午 10:30开始阅读

论文时间跨度:20世纪90年代 - 2019年,共25年时间

摘要

涵盖了里程碑检测器,检测数据集,度量,检测系统的基本构建模块,加速技术和最新的检测方法。还回顾了重要的检测应用:行人检测、人脸检测、文本检测等。并分析上述应用面对的技术挑战和改进。

 

介绍

目标检测的目的是:开发计算模型和技术,为计算机视觉应用程序提供最基本的信息:目标位置。

目标检测任务分为:通用目标检测和检测应用两个方向。

 

上图 1998 - 2018年关于目标检测的出版物数量增长

主要贡献

本文和其他综述的不同之处:

  1. 本文主要从技术发展的角度全面回顾了目标检测发展历史上的400多篇论文。时间跨度涵盖了25年的时间。
  2. 深入探索关键技术及近期的发展现状。主要是对技术进行深度的剖析。包含:多尺度检测、硬负类挖掘、bounding box回归等。
  3. 目标检测加速技术的综合分析。包含:检测管道(级联检测、特征映射共享计算),检测主干(网络压缩、轻量化网络设计),数值计算(积分图像、特征映射共享计算、矢量化等)。

目标检测的困难和挑战:

  1. 不同视点下的物体、光照、类内变化等。
  2. 物体旋转、缩放变化(如小物体)、物体的精确定位,物体的密集和遮挡检测、检测速度等。

文章主要内容

目标检测的两个历史阶段:

传统目标检测(2014年之前),基于深度学习的检测阶段(2014年之后)。

目标检测的改进道路

目标检测里程碑:传统检测器

早起目标检测方法大多数都是基于手工制作的特征。

Viola Jones Detectors(VJ 探测器)

遵循滑动窗口的检测方法。

同时结合了积分图像,特征选择,检测级联。

  1. 积分图像:积分图像是一种加快box滤波或卷积过程的计算方法。和同时代的其他目标检测算法一样,VJ检测器使用Haar小波作为图像的特征表示。积分图像使得VJ探测器中每个窗口的计算复杂度与窗口大小无关。
  2. 特征选择:作者使用Adaboost算法[32],而不是使用一组手工选择的Haar basisfilters,从一个巨大的随机特征库(约180k维)中选择一个小的特征集,这对人脸检测最有帮助。
  3. 检测级联:在VJ检测器中引入了多级检测范式(又称“检测级联”),通过减少对背景窗口的计算量,增加对人脸目标的计算量,来减少计算量。

HOG Detector

面向梯度直方图(Histogram of Oriented gradient, HOG)特征描述符最初是由N. Dalal和B. Triggs[12]在2005年提出的。HOG可以认为是对尺度不变特征变换[33,34]和其时间的形状上下文[35]的重要改进。为了平衡特征不变性(包括平移、缩放、光照等)和非线性(区分不同对象类别时),HOG描述符被设计成在均匀间隔的密集网格上计算,并使用重叠的局部对比度归一化(在“块”上)来提高准确性。尽管HOG可以用于检测各种各样的对象类,但它的主要动机是行人检测问题。为了检测不同大小的物体,HOG检测器多次缩放输入图像,同时保持检测窗口的大小不变。HOG检测器长期以来一直是许多目标检测器的重要基础[13,14,36],多年来被广泛应用于计算机视觉领域。

DPM

DPM作为VOC-07、-08和-09检测挑战的获胜者,是传统目标检测方法的顶峰。DPM最初是由P. Felzenszwalb[13]在2008年提出的,作为HOG检测器的扩展,R. Girshick进行了各种改进[14,15,37,38]。

DPM遵循“分而治之”的检测理念,其中训练可以简单地认为是学习一种正确的对象分解方法,推理可以被认为是对不同对象部分的检测的集合。例如,检测“汽车”的问题可以被认为是检测其车窗、车身和车轮。这部分工作,又称“恒星模型”,是由P. Felzenszwalb等人完成的。后来,R. Girshick又将恒星模型进一步扩展到“混合模型”[14,15,37,38],以处理现实世界中变化更大的天体。

主要思想:采用分而治之的思想,将对目标对象的检测转换为目标对象中组成部分的检测。

DPM的组成:根过滤器 + 部分过滤器组成。

DPM中采用一种弱监督的学习方法,可以将所有部分过滤器配置作为变量进行自动学习,而不用手动的方式。

其中,为了加快检测速度,Girshick开发了一种将检测模型“编译”成一个更快的级联架构。

受到该检测器的影响的技术:

混合模型,硬负挖掘,bounding box回归。

基于深度学习的两种阶段的检测器:

“两阶段检测”将目标检测定义为“粗到细”的过程,“一阶段检测”将目标检测定义为“一步完成”。

Two stage detector

基于CNN的两阶段检测器

RCNN

实现思路:

  1. 首先使用SS提取一组目标建议。
  2. 然后将每个建议调整为固定大小的图像。
  3. 然后使用在ImageNet中训练得到的CNN网络,将2中的图像作为输入作为特征提取。
  4. 然后,使用线性的SVM预测每一个区域建议中的目标是否存在以及对应的类别。

RCNN的缺点:大量的重叠区域建议,导致了特征的重复计算。

SPPNet

主要贡献:

  1. 提出了空间金字塔池网络,使得CNN不再需要接受固定大小的输入。
  2. 使用空间金字塔网络进行计算的时候,只计算一次特征映射feature map,然后生成任意区域的固定长度来训练检测器,避免了对卷积特征的重复计算。

缺点:

  1. 训练仍然是多级的;
  2. SPPNet只是对全连接层进行微调,对之前的层都进行了忽略。

Fast RCNN

贡献:可以同时训练一个检测器和一个bounding box回归器。

缺点:仍然受到区域建议的限制。

Faster RCNN

贡献:引入了RPN区域建议网络,实现了几乎无成本的区域计算。

从RCNN 到 Faster RCNN,目标检测系统的区域建议模块,特征提取,bounding box 回归等已经逐渐整合到一个统一的端到端学习框架。

缺点:在后续的检测阶段仍然存在重复计算的问题。

Feature Pyramid Networks(FPN)

主要贡献:FPN中开发了一种具有横向连接的自顶向下架构,用于在所有尺度上构建高级语义。FPN在检测各种尺度的目标方面有了很大的进步。

里程碑:基于CNN的一阶段检测器

YOLO框架

抛弃了原先的区域建议 + 分类的架构。

主要贡献:将单个神经网络应用于整个图像。该网络将图像分割成多个区域,并同时预测每个区域的bounding box和概率。

缺点:对于小物体的定位精度不如二阶段的检测器。

Single Shot MultiBox Detector (SSD)

主要贡献:引入了多参考和多分辨率检测技术,显著提高了一阶段检测器的精度,尤其是对小目标的检测。

和之前检测器的不同之处:SSD在不同层网络层上的不同尺度上检测对象,而之前的检测器是在网络的顶层检测。

RetinaNet

主要贡献:引入了一种focal loss的新损失函数,通过重塑标准交叉熵损失,使检测器在训练时将更多的注意力放在困难的,错误分类的例子上。

目标检测的数据集和度量

更优秀的数据集是开发先进计算机视觉算法的重要方法。

数据集

Pascal VOC

Pascal-VOC主要用于对象检测的有两个版本:VOC07和VOC12, VOC07由5k tr. images + 12k注释对象组成,VOC12由11k tr. images + 27k注释对象组成。生活中常见的20类对象在这两个数据集中被标注(Person: Person;动物:鸟、猫、牛、狗、马、羊;交通工具:飞机、自行车、船、公共汽车、汽车、摩托车、火车;室内:瓶子、椅子、餐桌、盆栽、沙发、电视/显示器)。

ILSVRC

ImageNet大规模视觉识别挑战(ILSVRC)2[52]推动了通用对象检测技术的发展。ILSVRC检测数据集包含200类可视对象。

 

ILSVRC数据集中包含的图像/对象实例比VOC大两个数量级。例如,ILSVRC-14包含517k图像和534k注释对象。

MS-COCO

与VOC和ILSVRC相比,MS-COCO最大的进步在于,除了边界框标注之外,每个对象都进一步使用实例分割进行标记,以帮助精确定位。

此外,MS-COCO比VOC和ILSVRC包含了更多的小对象(其面积小于图像的1%)和更密集的定位对象。所有这些特性使MSCOCO中的对象分布更接近于现实世界中的对象分布。就像当时的ImageNet一样,MS-COCO已经成为对象检测社区事实上的标准。

Open Images

2018年,继MS-COCO之后,以前所未有的规模推出了Open Images检测挑战。

包含的两个主要任务:

  1. 标准对象检测,;
  2. 视觉关系检测,检测成对对象的特定关系。对于目标检测任务,数据集由1,910k幅图像和15,440k带注释的边界框组成,边界框位于600个对象类别上。

其他数据集

主要是针对特定检测任务的数据集。

下图是一些经典的数据集和其中的统计数据:

度量

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

AP IoU mAP

2014年后,由于MS-COCO数据集的普及,研究者开始更加关注包围盒定位的准确性。MS-COCO AP不是使用固定的IoU阈值,而是在0.5(粗定位)和0.95(完美定位)之间的多个IoU阈值上平均。

目标检测技术的发展

Early Time’s Dark Knowledge

早期的对象检测(2000年以前)并没有遵循滑动窗口检测等统一的检测理念。当时的检测器通常是基于以下的低级和中级视觉来设计的。

组件,形状和边缘

组件识别是一种重要的认知理论。

一些早期的研究人员将目标检测框定为对象组件、形状和轮廓之间的相似性度量,包括Distance Transforms、Shape Contexts和Edgelet等。

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

建立对象的统计模型是目标检测历史上第一次基于学习的方法。

与当时基于规则或模板的方法相比[107,108],统计模型通过从数据中学习特定任务的知识,更好地提供了对象外观的整体描述。

自2000年起,小波特征变换开始主导视觉识别和目标检测。这组方法的本质是学习从像素到一组小波系数的图像。在这些方法中,Haar小波因其计算效率高而被广泛应用于许多目标检测任务中,如一般目标检测[29]、人脸检测[10,11,109]、行人检测[30,31]等。图5 (d)显示了VJ检测器学习的一组人脸Haar小波基[10,11]。

早期的CNN对象检测

  1. LeCun等人进行了“共享权复制神经网络”、“空间位移网络”等一系列改进,通过扩展卷积网络的每一层,覆盖整个输入图像来减少计算量,如图5 (b)-(c)所示。这样,只需要一次网络的前向传播,就可以提取出整幅图像中任意位置的特征。这可以被认为是在近20年后提出的全卷积网络(FCN)的原型。

 

多尺度检测技术的发展

“不同尺寸”和“不同纵横比”目标的多尺度检测是目标检测的主要技术挑战之一。在过去的20年里,多尺度检测经历了多个历史时期:“特征金字塔和滑动窗口(2014年以前)”、“基于目标提议的检测(2010-2015年)”、“深度回归(2013-2016年)”、“多参考检测(2015年以后)”和“多分辨率检测(2016年以后)”,如图6所示。

 

特征金字塔+滑动窗口(2014年以前)

自从VJ探测器计算能能力提高之后,研究者开始关注通过构建特征金字塔 + 滑动窗口的方式。

传统的包括:HOG DPM

基于深度学习的包括:OverFeat

混合模型的提出可以用来检测不同纵横比的对象。

范例的检测为训练集的每个对象实例训练单个模型。

正是由于MS COCO等一系列新数据集(包含有更多的对象)的出现,导致了目标区域建议方法的产生。

基于目标区域建议的检测

目标区域建议指的是一组与类别无关的候选框,可能包含任何对象。

基于对象建议的检测有助于避免在图像上进行详尽的滑动窗口搜索。

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

  1. 高召回率;
  2. 高定位精度;
  3. 在前两个要求的基础上,提高精度,减少处理时间。

现代建议检测方法可分为三类

  1. 分割分组方法[42,117 - 119];
  2. 窗口评分方法[116,120 - 122];
  3. 基于神经网络的方法[123-128]。

早期的建议检测方法遵循自底向上的检测理念,甚至还用手工来提高候选框的定位。当深度CNN用于目标检测之后,目标检测区域建议就从自底向上的视觉发展到拟合特定的对象类集。同时,区域生成器和目标检测器之间的区别也变得模糊。

深度回归 Deep regression (2013-2016)

//2022.1.4号晚上18:19开始学习

使用深度学习来预测bounding box的坐标位置。

优点:简单 容易实现

缺点:定位可能不够精确,特别是对小对象来说

多参考/分辨率检测(2015年后)

主要思想:在图像的不同位置预先定义一组大小和宽高比不同的参考框(anchors),然后根据这些参考框预测检测框。

每个预定义锚盒的典型损失包括两个部分:1)用于类别识别的交叉熵损失和2)用于目标定位的L1/L2回归损失。损失函数的一般形式可以写成:

 

其中t和t∗是预测和ground truth box的位置,p和p∗是它们的类别概率。IOUa, a∗是锚点a和它的ground truth a∗之间的IOU。η值是一个借据的阈值,比如说0.5。如果一个锚不覆盖任何对象,它的本地化损失不计入最终损失。

多分辨率检测通过在不同网络层次检测不同尺度大小的目标对象。

由于CNN在前向传播的过程中会形成特征金字塔,那么更容易探测到深层较大和浅层较小的目标对象。

Bounding box 回归技术的革新

Bounding box 回归目的是根据初始方案或锚定框来细化预测的bounding box的位置。

Without BB regression (before 2008)

传统的检测方法使得研究人员不得不建造非常密集的金字塔,并在每个位置上密集地滑动探测器。

From BB to BB (2008-2013)

BB回归首次引入目标检测系统是在DPM[15]中。BB回归在当时通常作为一个后处理块,因此它是可选的。由于PASCAL VOC的目标是预测每个对象的单个包围盒,DPM生成最终检测的最简单的方法应该是直接使用它的根过滤器位置。

后来,有了基于对象假设的完整配置来预测边界盒方法,并将此过程表述为线性最小二乘回归问题。这种方法在PASCAL标准下的检测得到了显著的改进。

From features to BB (after 2013)

Faster RCNN和检测器整合,实现了端到端方式的训练。同时,也产生了基于CNN特征直接预测bounding box,为了使得预测更加有鲁棒性,使用光滑L1函数。

 

或者是根号函数:

作为回归损失,比DPM中使用的最小二乘法对离群值更有鲁棒性。

一些研究者也选择对坐标进行归一化处理,以得到更稳健的结果。

 

上下文填充技术的革新

一共有三种方法:

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

局部上下文检测

 

局部上下文检测是目标对象周围的视觉信息。

最近的基于深度学习的检测器也可以通过简单地扩大网络的接受域或对象提议的大小来改进局部上下文。

全局上下文检测

全局上下文使用场景配置作为目标检测的附加信息来源。对于早期的目标检测器,整合全局上下文常用的方法是整合包含场景的元素的统计摘要。

在CNN用于目标检测之后,有两种方法可以整合全局上下文:

  1. 使用CNN feature的大接受域或全局池化操作;
  2. 将全局上下文视为一种序列信息,并使用循环神经网络学习这些信息;

上下文交互

上下文交互是指通过约束、依赖等视觉元素的交互作用来传达信息片段。

现在的改进有两种:

  1. 基于个体对象之间的关系;
  2. 探索建模对象和场景之间的依赖关系;

非最大抑制技术的发展

由于相邻窗口通常具有相似的检测分数,所以目标检测技术采用非最大抑制作为后处理步骤,去除复制的包围盒,得到最终的检测结果。

NMS不总数集成在检测器中,因为目标检测系统的期望输出在当时不完全清楚。

NMS的三种方法:

  1. 贪婪选择;
  2. Bounding box 聚合;
  3. 学习NMS;

贪婪选择

思想:对于重叠的检测框,使用最大预测分数的边界框。而根据预定义的重叠阈值删除相邻的框。一般很多使用的阈值是:0.5;

上述的处理以迭代的方式执行。

缺点:

  1. 得分最高的box不一定是最合适的;
  2. 可能会抑制周围的物体;
  3. 不会抑制错误的正类;

 

尽管使用了一些手工改进的方法,但是贪婪选择依然是当今对象检测的最强基线。

Bounding box 聚合

思想:将多个重叠的bounding box框组合或聚类称一个最终检测。

优点:充分考虑了对象之间的关系及其空间布局。

//截止到2022.1.4日晚上22:24止

//2022.1.5日上午10:37开始阅读总结

学习NMS

方法思想:将NMS视为过滤器,对所有原始检测进行重新评分,并以端到端的方式将NMS训练为网络的一部分。

硬负类挖掘技术的改进

使用滑动窗口探测器可能会导致每个对象的背景和目标对象之间达到10^4 - 10^5的不平衡。每个对象有这个数量级的背景窗口。

大量的背景数据对训练是有害的。

Bootstrap

思想:从一小部分背景样本开始训练,然后在训练过程中不断地添加新的误分类背景。

后来该技术成为了DPM和HOG检测器中解决数据不平衡问题的标准训练技术。

基于深度学习的检测器中的HNM

Faster RCNN 和 YOLO只是在正负窗口之间权衡权重。

在SSD和OHEM中,只有很小一部分样本(损耗值最大的样本)的梯度会反向传播。在RefineDet中,设计了一个“锚细化模块”来过滤容易产生的负面信息。另一种改进方法是设计新的损失函数,通过重塑标准交叉熵损失,使其将更多的注意力放在难以分类的错误示例上。

加速检测技术的进展

主要分为:

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

特征映射共享计算

基于滑动窗口的计算中,计算冗余有两个部分:

  1. 空间冗余:由于相邻窗口之间的重叠引起;
  2. 尺度冗余:由于相邻尺度之间的特征相关性引起;

空间计算冗余和加速

最常用的思想:feature map共享计算。在整个图像上滑动窗口之前只计算一次整个图像的feature map。

传统检测器的图像金字塔可以看成是特征金字塔。

例子:为了加快行人检测的速度,研究者通常会对整个输入图像进行HOG map积累。缺点:feature map上的分辨率会受到cell大小的限制。但是处于两个单元格之间的对象可能被所有的检测窗口忽略。

解决办法:构建一个完整的特征金字塔。

//截止到2022.1.5日下午13:36

//2022.1.5. 下午17:50开始

特征图共享计算也广泛用于基于CNN的检测器中。

SPPNet Faster RCNN Fast RCNN等。

尺度计算冗余和加速

为了减少尺度冗余计算,最成功的方法是直接对特征进行尺度变换,而不是对图像进行尺度变换。

但是HOG的邻居尺度与积分通道特征之间存在很强的(对数线性)相关性。

这种相关性可以通过近似相邻比例尺的feature map来加速特征金字塔的计算。

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

分类器的加速

传统的检测器由于计算复杂度低,使用的核方法虽然可以提高准确率,但是会带来较高的计算开销。

传统核方法作为一种标准的非参数方法,计算复杂度不是固定的。

当训练集很大时,检测速度会很慢。

加速核方法的技术:

  1. 模拟近似;
  2. 约化集向量是核支持向量机的一种近似方法,其目的是用少量的合成向量得到一个等价的决策边界。
  3. 另一种提高核支持向量机目标检测速度的方法是将其决策边界近似为分段线性形式,从而实现恒定的推理时间。

级联检测

思想:采用从粗到细的检测原理。用简单的计算过滤掉大多数简单的背景窗口,然后用复杂的方法处理那些比较简单的窗口。

VJ检测器中对于级联检测的使用是一个代表。

用处:级联检测使用到基于深度学习的检测器中。特别是对大场景下的小目标检测任务。

网络剪枝与量化

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

网络剪枝

使用在传统的检测器中的网络剪枝方法,即:在训练之后减去Loss函数中的部分不重要的权重。但是这种方法不可以用到基于CNN的训练当中,因为会导致卷积滤波器中出现一些稀疏的连接模式。

简单的解决办法:去掉整个过滤器。

网络量化

思想:将网络中的激活或权值量化为二进制数,从而将浮点数运算转化为与 或  非运算。网络二值化可以显著加快计算速度并减少网络存储。

实现方法:使用最小二乘法逼近二进制变量的卷积。利用多个二进制卷积的线性组合可以得到更精确的近似。

同时,目前的用于二值化计算的GPU加速器,得到了更为显著的加速结果。

网络精细化

思想:将大型网络压缩成为小型网络的一种通用框架。

这种想法的一个直接的方法是使用教师网来指导(轻量级)学生网的训练,以便后者可以用于加速检测。

另一种方法是对候选区域进行变换,使学生网和教师网之间的特征距离最小。

轻量级的网络设计

设计一些轻量级的网络,使用的方法:

  1. 分解卷积;
  2. 群卷积;
  3. 深度可分离卷积;
  4. 瓶颈设计;
  5. 神经结构搜索;

分解卷积

两种方法:

  1. 将大型的卷积过滤器分解为一组小的空间维度。这对于大的过滤器来说非常有效。
  2. 将一个大的卷积分解成为两个晓得信道维数。例:使用d维度的过滤器和一个包含c通道的feature map可以被一个d’维的过滤器 + 一个非线性激活函数 + 另一个d维的过滤器(d’ < d)近似。这样的话原来的O(d k ^ 2 c)复杂度就变为了O(d’ k ^ 2 c) + O(d d’)。

群卷积

思想:通过将特征管道分为许多不同的组,来减少一个卷积层中的参数数量。并且独立地在每一个组上进行卷积操作。

如果我们将特征通道平均分成m组,在不改变其他配置的情况下,理论上卷积的计算复杂度将降低到之前的1/m。

深度可分离卷积

可以看作是群卷积的一种特殊情况,即将群的数量设置为信道的数量。

瓶颈设计

方法:

  1. 压缩检测器的输入层,从检测管道的一开始就减少计算量;
  2. 压缩检测引擎的输出,使feature map更薄。

神经结构搜索

NAS在搜索过程中同时考虑了预测精度和计算复杂度的约束。

数值加速

四种常用的目标检测数值加速方法:

  1. 积分图像加速;
  2. 频域加速;
  3. 矢量量化;
  4. 降秩近似;

加速与积分图像

积分图像有助于快速计算图像子区域的总和。

积分图像的本质是:

信号处理中卷积的积分可微分可分性。

除以上例子外,积分图像还可以用来加速更一般的特征在目标检测中,如颜色直方图,梯度直方图等。一个典型的例子是通过计算积分HOG映射来加速HOG。积分HOG map不是在传统的积分图像中积累像素值,而是在图像中积累梯度方向,如图15所示。由于细胞的直方图可以看作是某个区域内梯度向量的总和,所以利用积分图像,可以计算任意位置和大小的矩形区域的直方图,计算开销是恒定的。整体HOG地图已经被用于行人检测,在不损失任何精度的情况下实现了几十倍的加速度。

新提出的图像特征,称为积分通道特征ICF。可以被认为是积分图像特征的一中更一般的情况。

在频域加速

卷积运算是目标检测中一种重要的数值运算形式。由于线性检测器的检测可以被视为特征映射和检测器权值之间的窗口内积,所以这个过程可以通过卷积来实现。

卷积可以以多种方式加速,其中傅里叶变换是一个非常实用的选择特别是对于那些大型滤波器的加速。频域加速卷积的理论基础是信号处理中的卷积定理,即在适当的条件下,两个信号的卷积的傅里叶变换是它们在傅里叶空间中的逐点积:

其中F是傅里叶变换,F−1是傅里叶反变换,I和W是输入图像和滤波器,∗是卷积运算,且是是点积。使用快速傅里叶变换(FFT)和反快速傅里叶变换(IFFT)可以加速上述计算。FFT和IFFT现在经常被用来加速CNN模型和一些经典的线性目标检测器,它们将检测速度提高了一个数量级。图16显示了在频域加速线性目标检测器(如HOG和DPM)的标准管道。

矢量量化

矢量量化(VQ)是信号处理中的一种经典的量化方法,它的目标是用一个小的原型向量集合来近似地估计一组数据的分布。它可用于对象检测中的数据压缩和加速内积运算[227,228]。例如,使用VQ, HOG直方图可以被分组和量化为一组原型直方图向量。然后在检测阶段,特征向量与检测权值之间的内部乘积可以由一个表查找操作实现。由于在这个过程中没有浮点乘法和除法,DPM和样本SVM检测器的速度可以提高一个数量级。

降低等级近似

在深度网络中,全连接层的计算实质上是两个矩阵的乘法。当参数矩阵W∈Ru×v较大时,探测器的计算负担会比较重。例如,在Fast RCNN探测器[18]中,近一半的转发时间都花在计算全连接层上。降秩近似是一种加速矩阵乘法的方法。其目的是对矩阵W进行低秩分解:

其中U是一个U × t矩阵,由W的第一个t个左顶点向量组成,是一个包含W的上t奇异值的t × t对角矩阵,V是由W的第一个右奇异向量组成的V × t矩阵。上述过程也被称为截断SVD,它将参数计数从uv减少到t(u + v),如果t远小于min(u, v),这将是显著的。截断SVD用于加速Fast RCNN检测器[18],达到x2的速度。

目标检测的最新进展

更好的检测引擎

近年来,深度卷积网络CNN在许多计算机视觉任务中扮演着核心角色。由于检测器的准确性在很大程度上依赖于其特征提取网络,因此在本文中,我们将骨干网(如ResNet和VGG)称为检测器的“引擎”。图17给出了Faster RCNN[19]、R-FCN[46]和SSD[21]三种知名检测系统在不同引擎[27]选择下的检测精度。

 

上图是Faster RCNN RFCN SSD三个系统采用不同的骨干网络在MS COCO数据集上的运行结果。

AlexNet: 是一个八层深度网络,是第一个CNN模型,开启了计算机视觉的深度学习革命。AlexNet在2012年ImageNet LSVRC-2012竞赛中以15.3%对26.2%(第二名)的误差率胜出。截至2019年2月,Alexnet的论文已被引用超过3万次。

VGG:将模型的深度增加到了16-19层,并使用非常小的卷积滤波器。

Google Net:google网络增加了CNN的宽度和深度(达到22层)。Inception系列的主要贡献是引入了分解卷积和批量归一化。

ResNet:是一种新的卷积网络体系结构,更深(多达152层)。该网络结构的目标是通过参考层输入将其层重新定义为学习残差函数来简化网络的训练。

DenseNet:引入了一个紧密连接的块,该块以前馈的方式将每一层连接到另一层。

SENet:主要贡献是整合全局池化和洗牌,以了解特征图channel-wise的重要性。

带有新引擎的目标检测器

近三年来,许多最新的引擎已被应用于目标检测。例如,一些最新的图18。不同特征融合方法的说明:(a)自下而上的融合,(b)自上而下的融合,(c)元素和,(d)元素积,(e)拼接。STDN[237]、DSOD[238]、TinyDSOD[207]、Pelee[209]等对象检测模型选择DenseNet[235]作为检测引擎。Mask RCNN[4],作为先进的分割模型的实例,应用下一代ResNet: ResNeXt[239]作为其检测引擎。此外,为了加快检测速度,Incepion的改进版本Xception[204]引入的深度可分离卷积运算也被用于诸如MobileNet[205]和LightHead RCNN[47]等探测器。

用更好的特征进行检测

最近提高图像特征质量的方法:

  1. 特征融合;
  2. 学习具有大接受域的高分辨率特征;

特征融合的重要性

不变性和等方差是图像特征表示中的两个重要性质。分类需要不变的特征表示,因为它的目标是学习高级语义信息。对象定位需要等变表示,因为它的目标是区分位置和比例的变化。由于目标检测由目标识别和定位两个子任务组成,因此检测器必须同时学习不变性和等方差。

近三年来,特征融合在目标检测中得到了广泛的应用。由于CNN模型由一系列卷积层和池化层组成,越深层的特征不变性越强,等方差越小。虽然这可能有利于类别识别,但在目标检测中存在定位精度低的问题。相反,较浅层的特征并不利于语义学习,但它包含更多的边缘和轮廓信息,有助于对象定位。因此,在CNN模型中,深度特征和浅层特征的融合可以提高不变性和等方差。

特征融合的不同方式

方法:

  1. 处理流;
  2. 元素操作;

处理流

目标检测中的特征融合方法:

  1. 自下而上的融合;
  2. 自上而下的融合;

由于不同层的特征图在空间和通道维度上都可能有不同的大小,因此可能需要对特征图进行适应,如通过调整通道的数量,上采样低分辨率的地图,或下采样高分辨率的地图,使其大小合适。最简单的方法是使用nearestor双线性插值[22,244]。此外,分数阶跃卷积(又称转置卷积)[45,248]是最近另一种流行的调整特征图大小和通道数量的方法。使用分数步进卷积的优点是它可以自己学习合适的上采样方法[55,212,241 - 243,245,246,249]。

Element-wise操作

特征融合方法:

  1. 逐元素求和;
  2. 逐元素积;
  3. 串接;

基于元素的和是执行特征融合的最简单的方法。它被频繁地用于许多最近的物体探测器[22,55,241,243,246]。基于元素的乘积[245,249 - 251]与基于元素的和非常相似,唯一的区别是使用了乘法而不是求和。元素智能产品的一个优点是,它可以用来抑制或突出某一区域内的特征,这可能进一步有利于小目标的检测[245,250,251]。特征拼接是另一种特征融合方法[212,237,240,244]。其优点是可以用来整合不同区域的上下文信息[105、144、149、161],缺点是增加了内存[235]。

学习具有大接收域的高分辨率特征

接受域:输入像素的输入范围决定了单个像素输出的计算。

特征解析:表示在输入和feature map之间的下采样率。

一个大的接受域的网络可以捕获一个大尺度的上下文信息,反而一个小接受域的网络更多的关注于局部信息。

最直接的解决特征分辨率低的方法是:去掉池化层或减少卷积下采样率。

但是这样会导致一个新的问题:接受域会变的很小导致输出stride的减少。

也就是说这个方法会缩小检测器的视野,导致一些大目标对象的检测丢失。

上述问题的解决办法:

引入扩张卷积。该思想首先在语义分割工作中提出。 它的主要思想是:扩张卷积过滤器并使用稀疏参数。

例如,一个扩展率为2的3x3filter将具有与5x5内核相同的接受域,但只有9个参数。目前,扩张卷积在目标检测中得到了广泛的应用[21,56,254,255],在不增加任何参数和计算开销[56]的情况下,它可以有效地提高检测精度。

滑动窗口之外

检测为子区域搜索

最近的一种方法是将检测视为一个路径规划过程,从初始网格开始,最终收敛到所需的地面真值框[256]。

另一种方法是将检测看作是一个迭代更新过程,以细化预测边界盒的角点[257]。

检测作为关键点定位

关键点定位是一项重要的计算机视觉任务,具有广泛的应用,如面部表情识别[259]、人体姿态识别[260]等。由于图像中任意一个目标都可以由地面真值框的左上角和右下角唯一确定,因此,检测任务可以等效地框定为一对关键点定位问题。这一想法的一个最新实施是预测角落的热图[261]。这种方法的优点是它可以在语义分割框架下实现,并且不需要设计多尺度的锚盒。

定位技术的改进

为了提高定位精度,目前已有两种方法:1)边界盒优化;2)设计新的损耗函数来实现精确定位。

边界框优化

提高定位精度最直观的方法是边界盒细化,这可以看作是对检测结果的后处理。尽管边界盒回归已经集成到大多数现代对象检测器中,但仍然有一些对象具有意想不到的比例,无法被任何预定义

以上是关于Object Detection in 20 Years A Survey-论文翻译(阅读笔记)的主要内容,如果未能解决你的问题,请参考以下文章

Install Tensorflow object detection API in Anaconda (Windows)

文献阅读20期:Transformer Transforms Salient Object Detection and Camouflaged Object Detection

文献阅读20期:Transformer Transforms Salient Object Detection and Camouflaged Object Detection

文献阅读20期:Transformer Transforms Salient Object Detection and Camouflaged Object Detection

文献阅读20期:Transformer Transforms Salient Object Detection and Camouflaged Object Detection

An Analysis of Scale Invariance in Object Detection – SNIP 论文解读