目标检测,基于深度学习的目标检测算法综述

2019-09-21 作者:奥门金沙手机娱乐网址   |   浏览(177)

原标题:干货 | 基于深度学习的目标检测算法综述

cs231n学习笔记-CNN-目标检测、定位、分割

目标检测(Object Detection)是计算机视觉领域的基本任务之一,学术界已有将近二十年的研究历史。近些年随着深度学习技术的火热发展,目标检测算法也从基于手工特征的传统算法转向了基于深度神经网络的检测技术。从最初 2013 年提出的 R-CNN、OverFeat,到后面的 Fast/Faster R-CNN、SSD、YOLO 系列,再到 2018 年最近的 Pelee。短短不到五年时间,基于深度学习的目标检测技术,在网络结构上,从 two stage 到 one stage,从 bottom-up only 到 Top-Down,从 single scale network 到 feature pyramid network,从面向 PC 端到面向手机端,都涌现出许多好的算法技术,这些算法在开放目标检测数据集上的检测效果和性能都很出色。

cite from:

基于深度学习的目标检测算法综述分为三部分:

1. 基本概念

  1. Two/One stage 算法改进。这部分将主要总结在 two/one stage 经典网络上改进的系列论文,包括 Faster R-CNN、YOLO、SSD 等经典论文的升级版本。

1)CNN:Convolutional Neural Networks

2. 解决方案。这部分我们归纳总结了目标检测的常见问题和近期论文提出的解决方案。

2)FC:Fully Connected

3. 扩展应用、综述。这部分我们会介绍检测算法的扩展和其他综述类论文。

3)IoU:Intersection over Union (IoU的值定义:Region Proposal与Ground Truth的窗口的交集比并集的比值,如果IoU低于0.5,那么相当于目标还是没有检测到)

图片 1

4)ICCV:International Conference on Computer Vision

基于深度学习的目标检测算法综述(一)介绍了 Two/One stage 算法改进,基于深度学习的目标检测算法综述(二)我们归纳总结了目标检测的常见问题和近期论文提出的解决方案。本篇文章是基于深度学习的目标检测算法综述的最后部分。在这里,我们会介绍目标检测算法的扩展应用,每个方向给出 1 篇代表论文,同时,最后给出 google 发表在 CVPR2017 上的目标检测算法效果和性能评估论文。

5)R-CNN:Region-based Convolutional Neural Networks

目标检测在很多计算机视觉领域中已经有了很多成熟的应用,如人脸检测、行人检测、图像检索和视频监控等。而目标检测算法不仅可以应用在普通物体的分类和定位上,在近年也有了很多扩展。我们会在后文中介绍其中三篇论文,如 logo 检测论文“Scalable Object Detection for Stylized Objects”、通过改进的 Top-Down 结构提升识别和分割效果的论文“Path Aggregation Network for Instance Segmentation”以及把目标检测思想用于视频分段的“Rethinking the Faster R-CNN Architecture for Temporal Action Localization”。

6)AR:Average Recall

论文"Mimicking Very Efficient Network for Object Detection"借鉴知识蒸馏思想,在训练过程中用训练好的大网络作为监督网络指导小网络的参数学习,实现从零开始训练目标检测网络。

7)mAP:mean Average Precision

本综述中的最后部分我们还介绍了 Google 发表于 CVPR2017 的平衡速度和准确率的论文"Speed/accuracy trade-offs for modern convolutional object detectors",该文用非常大量详实的实验探讨了常用目标检测算法及其各参数设置对于目标检测 speed 和 accuracy 的影响,对如何平衡速度和准确率提出了建议。

8)RPN:Region Proposal Networks

logo 检测

9)FAIR:Facebook AI Research

Scalable Object Detection for Stylized Objects

10)w.r.t.:with respect to

style="font-size: 16px;">论文链接:arxiv.org/abs/1711.09822

11)Image Classification(what?):图像分类

论文目标

12)Object Detection(what+where?)、Localization、Segmentation:对角检测、定位、分割

论文旨在解决对 logo 的检测问题。作者将 e2e 的检测模型分为两步,1. 使用 Single Shot Multibox Detector(文中使用 YOLO v2)检测可能的 logo 位置;2. 使用Triplet Loss训练的 deep image-similarity network 模型对 logo 进行检索。

2. CNN基本知识

核心思想

2.1 CNN的卷积流程

Logo 检测和普通目标检测的区别,以及分成两步检测的原因有:

卷积计算过程如下图所示:

  1. Logo 种类可能很多,如果用 Softmax 分类几千种物体效果会很差。随着数量增多,识别效果会很快变差,由于每个分类器不仅要识别是哪个物体而且要识别 Proposal 中是否包含待检测目标。

  2. Logo 更新很快,如果用普通目标检测,添加新数据后需要重新训练。

  3. Logo 在图片中一般都有固定的字体、特性,而且相对普通物体更醒目易于观察。

  4. Logo 相比普通物体和背景的关系不大。作者用人脸检测来做示例,人脸和 logo 检测类似,都是大量实例检测。每张人脸都是不同的,但是如果用目标检测来区分每个人脸是不现实的。只能先做人脸检测,然后再做人脸检索。

我们刚才描述的即是卷积。可以把卷积想象为信号处理中的一种奇特乘法。也可将两个矩阵生成点积想象为两个函数。图像就是底层函数,而过滤器就是在其上“卷过”的函数。

图片 2

图像的主要问题在于其高维度,原因是对高维度的处理时间和运算能力成本很高。卷积网络就是为了通过各种方式降低图像的维度而设计的。过滤器步幅即是减少维度的一种方法,另一种方法是降采样。

如上图所示,本文使用的网络为 2-layer 网络。Layer1 是 YOLOv2,通过识别 Logo 来提取框,然后 crop+resize 为 224*224。 作者提出使用 Single Shot Multibox Detector 而非 proposal-based 网络的原因为 logo 检测需要使用物体的全局信息。Layer2 是训练检索网络。训练为典型的 triplet loss 训练过程:使用两组相同 logo,一组不同 logo,通过缩小类内 loss、增大类间 loss 来促进收敛网络。Layer2 网络通过 CNN 提取特征然后经过 L2 归一化和 FC 层,最终提取 feature vector。检索数据集的准备过程在训练完成后进行,使用特定 logo 经过特征提取和仿射变换操作,制作数据集。最终使用 feature vector 的余弦距离来进行实例检索。

2.2 Activations maps的个数与Filter的个数一致

图片 3

2.3 输入层与Filter、Padding、Stride、参数和输出层的关系

算法效果

1) 参数个数由Filter定义及Filter个数决定,其公式为:

由于这篇论文针对的是logo检测的改进,所以测评都是在logo数据集上。Flickrlogos-32为开源的logo数据集,MSR1k和Synth9K为作者自己造的logo数据集。

The number of parameters = (FxFxD + 1) * K

图片 4

2)一个Activation Map共享一个Filter及其权重和偏差

实例分割

3)Activation Map个数与Filter个数相同

Path Aggregation Network for Instance Segmentation

2.4 Pooling(池化/降采样)过程

style="font-size: 16px;">论文链接:arxiv.org/abs/1803.01534

录用信息:CVPR2018

1)  Pooling在每个Activation Map上单独做,在Pooling之后,Activation Map数量不变

论文目标

Pooling层一般用于降维,将一个kxk的区域内取平均或取最大值,作为这一个小区域内的特征,传递到下一层。传统的Pooling层是不重叠的,使Pooling层重叠可以降低错误率,而且对防止过拟合有一定的效果。

我们在综述的第二部分提到,FPN 是目标检测 Top-Down 结构的一种常见形式。这篇论文通过改进主干网络 FPN 的结构,缩短了从低层特征到高层特征之间的路径,进一步减少了定位信息流动的难度,从而同时提升了目标检测和实例分割的效果。

2)Pooling过程描述(Pooling过程不需要参数)

核心思想

2.5 深度革命2015

网络结构如下图。

1)深度革命中遇到的问题:

图片 5

随着CNN网络的发展,尤其的VGG网络的提出,大家发现网络的层数是一个关键因素,貌似越深的网络效果越好。但是随着网络层数的增加,问题也随之而来。

PANet 的框架

(1)第一个问题: vanishing/exploding gradients(即梯度消失或爆炸):这就导致训练难以收敛。但是随着 normalized initialization and BN(Batch Normalization)的提出,解决了梯度消失或爆炸问题。

PANet 的框架如图 5 所示,Bottom-up Path 用于增强 Low-layer 的信息传播。Adaptive Feature Pooling 允许每个候选区域可以获取所有特征层次的信息,以此用于预测。添加了一个互补分支用于预测 mask。

(2)第二个问题:网络越深,训练误差和测试误差越大。在收敛问题解决后,又一个问题暴露出来:随着网络深度的增加,系统精度得到饱和之后,迅速的下滑。让人意外的是这个性能下降不是过拟合导致的。对一个合适深度的模型加入额外的层数导致训练误差变大。如下图所示,可通过Deep Residual Learning 框架来解决这种因为深度增加而导致准确性下降问题。

PANet 的创新点可以总结如下:

3. 空间定位与检测

a.创建 Bottom-up 增强路径缩短信息路径,利用 Low-level 特征中存储的精确定位信号,提升特征金字塔架构。

参考信息《基于深度学习的目标检测研究进展》

b.创建 Adaptive Feature Pooling 合并所有特征层次上每个 proposal 的特征信息,避免任意分配结果。

3.1 计算机视觉任务

c.使用小型 Fc 层补充 mask 预测,捕获每个 proposal 的不同视图,以此与原始的 Mask R-CNN 互补。通过融合这两个视图,增加信息多样性,能更好的预测 mask。

3.2 传统目标检测方法

具体如下:

传统目标检测流程:

  1. Bottom-up Path Augmentation

1)区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)

高层的神经元主要响应整个物体,其他神经元更倾向于响应局部纹理信息。该网络结构通过传播 low-level 的强响应,增强了整个特征结构的定位能力。因为对边缘和实例部分的强响应对于精确定位实例是强指向标。因此论文使用横向连接将低层和高层的信息连接起来。使用 bottom-up path 将底层信息传递到决策层只需要不到十层(如图 5绿色虚线所示),但是 FPN则 需要通过 backbone,走完整个 ResNet 基础网络,需要走一百多层。具体的 Augmented Bottom-up Structure 如图 6 所示。

2)特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)

图片 6

3)分类器(主要有SVM、Adaboost等)

Augmented Bottom-up Structure

传统目标检测的主要问题:

网络结构在 FPN{P2,P3,P4,P5}后接{N2,N3,N4,N5}(图 5 a,b 所示),其中 N2 就是 P2 没有经过任何操作。如图 6 所示,每个模块通过横向连接将较高分辨率的 Ni 和低分辨率的 Pi+1 横向连接,产生 Ni+1。

1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余

  1. Adaptive Feature Pooling

2)手工设计的特征对于多样性的变化没有很好的鲁棒性

FPN 的 proposals 根据其大小分配给不同的特征层次。这样尺寸小的 proposal 被分配给 Low-level,而尺寸大的分配给 High-level,但这可能会产生非最优结果。例如两个只相差 10 个像素的 proposals 会被分给不同的特征层次,但实际上它们很相似。因此,特征的重要性与其所属的特征层次并不是强相关。高层次的特征由更大的感受野产生,获取了更丰富的语义信息。小型 proposals 获取这些特征可以更好地使用语义信息做预测。另一方面,低层次特征有许多细节和定位信息。基于此,论文提出对每个 proposal 池化所有层次的特征,然后融合它们做预测。其实现过程如图 7所示。

3.3 基于侯选区域(Region Proposal)的深度学习目标检测法

将每个候选区域映射到不同的特征层次,用 RoIAlign 池化不同层次的特征网格,进一步融合不同层次的特征网格(逐像素求最大或者求和)。

3.3.1 R-CNN (CVPR2014, TPAMI2015)

图片 7

1)Region Proposal:可以解决滑动窗口的问题

图 7: Adaptive Feature Pooling Structure

候选区域(Region Proposal):是预先找出图中目标可能出现的位置。它利用了图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall)。

  1. Fully-connected Fusion

常用的Region Proposal有(详见"What

Fc 与 FCN 有不同的属性,由于局部感受野和共享参数,FCN 有像素级预测,而 Fc 对不同空间的预测均是通过一组可变参数实现,因此它的位置敏感度较高。另外 Fc 预测不同空间位置均通过全部 proposals 的全局信息实现,这对于区分不同实例和识别属于同一对象的分离部分很有效。因此考虑将这两种层的预测结果融合可以达到更好的预测。其实现如图 8 所示。

makes for effective detection proposals?"):

图片 8

-Selective Search

Fully-connected Fusion Structure

-Edge Boxes

算法效果

2)R-CNN:可以解决特征鲁棒性的问题

在实例分割方面,使用相同的初始化模型,PANet 比 Mask R-CNN 好了将近 3 个点;在目标检测方面,使用 renet50 当基础网络的 PANet 比 coco2016 年的冠军高了 0.9%,它的 backbone 是 2×ResNet-101+ 3×Inception-ResNet-v2 和推理 tricks。

参考信息

图片 9

(1) 输入测试图像

图片 10

(2) 利用selective search算法在图像中从下到上提取2000个左右的Region Proposal

PANet 在 COCO 上的结果图,其中上侧为分割的结果对比表,下侧为检测的结果对比表

(3) 将每个Region Proposal缩放(warp)成227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征

目标检测用于视频分段

(4) 将每个Region Proposal提取到的CNN特征输入到SVM进行分类

Rethinking the Faster R-CNN Architecture for Temporal Action Localization

注:1)对每个Region Proposal缩放到同一尺度是因为CNN全连接层输入需要保证维度固定。

style="font-size: 16px;">论文链接:arxiv.org/abs/1804.07667

录用信息:CVPR2018

2)上图少画了一个过程——对于SVM分好类的Region Proposal做边框回归(bounding-box

论文目标

regression),边框回归是对region proposal进行纠正的线性回归算法,为了让region

本文借鉴了目标检测经典算法 Faster R-CNN 的思想,实现了对视频动作的定位与识别:

proposal提取到的窗口跟目标真实窗口更吻合。因为region proposal提取到的窗口不可能跟人手工标记那么准,如果region

  1. 通过 multi-tower network 和 dilated temporal convolutions 方法,提高了动作定位精度(Temporal Action Localization)。

proposal跟目标位置偏移较大,即便是分类正确了,但是由于IoU(region

2. 通过扩展候选片段感受野,提高视频中的关键动作的识别效果(Temporal context)。

proposal与Ground Truth的窗口的交集比并集的比值)低于0.5,那么相当于目标还是没有检测到。

核心思想

3)R-CNN缺点:

1.借鉴了 Faster R-CNN 的思想,将目标检测的思想从空间域转化为时间域。采用类似 RPN 层的结构对视频中动作做初步的定位与识别,然后采用类似 RCNN 的结构对动作实现精确定位及分类。

(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练边框回归器

  1. 由于视频时长从 1s 到 200s 不等,跨度非常大。本文通过 multi-tower network 和 dilated temporal convolutions 解决了视频动作分布时间跨度较大难以定位的问题,同时通过扩展生成候选片段和动作分类的感受野,更有效的利用了视频上下文时序信息提升了动作识别效果。

(2) 训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件

算法概述

(3) 速度慢: 使用GPU, VGG16模型处理一张图像需要47s。

Temporal Action Localization

(4) 测试速度慢:每个候选区域需要运行整个前向CNN计算

即:给定一段未分割的长视频,算法需要检测视频中的行为开始时间、结束时间及其类别。

(5) SVM和回归是事后操作:在SVM和回归过程中CNN特征没有被学习更新

action recognition 与 temporal action Localization 之间的关系同 image classfication 与 object detection 之间的关系非常像。本文主要为了解决 Temporal Action Localization 问题,借鉴了 Faster R-CNN 的结构。

针对速度慢的这个问题,SPP-NET给出了很好的解决方案。

图片 11

3.3.2 SPP-NET (ECCV2014, TPAMI2015)

与目标检测类似,它包含两个阶段:

SSP-Net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

1.生成动作候选区域

先看一下R-CNN为什么检测速度这么慢,一张图都需要47s!仔细看下R-CNN框架发现,对图像提完Region

给定一组帧序列,通常通过二维或者三维卷积网络提取出一组一维特征图。之后,将该特征图传输给一维网络(类似 RPN 层,Segment Proposal Network),返回一组候选片段。

Proposal(2000个左右)之后将每个Proposal当成一张图像进行后续处理(CNN提特征+SVM分类),实际上对一张图像进行了2000

2.对候选区域分类

次提特征和分类的过程!这2000个Region

接着,对于每个候选片段,本论文计算动作类别的概率,并进一步对片段边界进行回归。在这一步,首先使用一维的 SoIPooling(时间维度上做 Pooling,类似空间维度的 RoIPooling),接着使用 DNN 分类器来实现。

Proposal不都是图像的一部分吗,那么我们完全可以对图像提一次卷积层特征,然后只需要将Region

Segment Proposal Network:

Proposal在原图的位置映射到卷积层特征图上,这样对于一张图像我们只需要提一次卷积层特征,然后将每个Region

文中作者采用了 multi-tower 架构。每个 anchor 大小都有一个具备对齐后的感受野的相关网络。

Proposal的卷积层特征输入到全连接层做后续操作。(对于CNN来说,大部分运算都耗在卷积操作上,这样做可以节省大量时间)。

图片 12

现在的问题是每个Region Proposal的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定的长度。SPP-NET恰好可以解决这个问题。

可以理解为对于尺度 Feature map 做相应 Pooling 或者空洞卷积(dilated temporal convolutions),作者经过实验后认为空洞卷积效果更好,时序定位更加准确。

由于传统的CNN限制了输入必须固定大小(比如AlexNet是224x224),所以在实际使用中往往需要对原图片进行crop或者warp的操作:

如何有效利用时序上下文(temporal context)

- crop:截取原图片的一个固定大小的patch

作者在生成动作候选区域及动作种类识别时,认为动作前后信息对精确定位和动作分类有很大的意义。故强制将前面一段时间和后面一段时间加入候选区。如图:

- warp:将原图片的ROI缩放到一个固定大小的patch

图片 13

无论是crop还是warp,都无法保证在不失真的情况下将图片传入到CNN当中:

虽然候选区是中间的 S 区域,但是它依然会强制把前 s/2 和后 s/2 的区域加入 proposal。文中表示: 推理过程中以 0.7 为阈值的 IoU 的 proposals 做 NMS。在训练过程中阈值大于 0.7 选为正样本,小于 0.3 为负样本。用 Adam 优化器,学习率 0.0001。

- crop:物体可能会产生截断,尤其是长宽比大的图片。

算法效果

- warp:物体被拉伸,失去“原形”,尤其是长宽比大的图片

图片 14

SPP为的就是解决上述的问题,做到的效果为:不管输入的图片是什么尺度,都能够正确的传入网络。

可以看到该方法在提取的片段较少时,有最好的表现。其他方法在提取片段较多时才会有较好表现。

具体思路为:CNN的卷积层是可以处理任意尺度的输入的,只是在全连接层处有限制尺度——换句话说,如果找到一个方法,在全连接层之前将其输入限制到等长,那么就解决了这个问题。

从零训练目标检测网络 Mimicking Very Efficient Network for Object Detection

具体方案如下图所示:

论文链接:

style="font-size: 16px;">

录用信息:CVPR2017

如果原图输入是224x224,对于conv5出来后的输出,是13x13x256的,可以理解成有256个这样的filter,每个filter对应一张13x13的activation map。如果像上图那样将activationmap pooling成4x4 2x2 1x1三张子图,做max pooling后,出来的特征就是固定长度的(16+4+1)x256那么多的维度了。如果原图的输入不是224x224,出来的特征依然是(16+4+1)x256;直觉地说,可以理解成将原来固定大小为(3x3)窗口的pool5改成了自适应窗口大小,窗口的大小和activation map成比例,保证了经过pooling后出来的feature的长度是一致的。

论文目标

使用SPP-NET相比于R-CNN可以大大加快目标检测的速度,但是依然存在着很多问题:

这篇论文与本综述(一)中介绍的 DSOD 的目标一致,都是解决如何有效地「从 0 开始训练检测网络」的问题。不同的是,DSOD 旨在提出一种可以实现从头训练的检测网络结构。而本文借鉴知识蒸馏思想,在训练过程中,用训练好的大网络作为监督网络指导小网络的参数学习,小网络无需用预训练模型初始化。训练得到的小网络模型用于测试。

(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练训练边框回归器

核心思想

(2) SPP-NET在微调网络的时候固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行微调。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)

知识蒸馏,用大网络监督小网络的学习,常被用于解决分类任务中的模型压缩和加速问题。mimic 论文作者将此思想应用于检测网络的学习任务。

针对这两个问题,RBG又提出Fast R-CNN, 一个精简而快速的目标检测框架。

论文以 faster rcnn 为例,介绍了论文的网络结构和训练过程。

3.3.3 Fast R-CNN(ICCV2015)

图片 15

有了前边R-CNN和SPP-NET的介绍,我们直接看Fast R-CNN的框架图:

上图示意了训练时的网络结构,上半部分是要训练的目标网络,通常是一个精简的小网络,后面加上 RPN 网络;下半部分是大网络,大网络用已经训练好的大检测网络模型进行参数初始化。论文将训练过程中的监督信息分成两部分:来自大网络的监督信息 mimic supervision 和训练数据的标注信息 ground-truth supervision。

与R-CNN框架图对比,可以发现主要有两处不同:一是最后一个卷积层后加了一个ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练。

作者认为检测过程分为两个部分 feature extractor 和 feature decoder,feature 对于大网络和小网络分别作为 basenet 的 faster rcnn,二者的区别仅在于 feature extractor 不同(分别是大网络和小网络),而在提取到特征后的 feature decoder 是一致的。因此,论文将来自大网络的 mimic supervision 应用于 feature extractor 部分,而将 ground-truth supervision 应用于 feature decoder 部分。

(1) ROI pooling

论文将训练过程分为两个阶段,下面分别介绍这两个阶段的参数学习方法:

layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling

1.第一个阶段应用 mimic supervision 学习图中上半部分的目标小网络;小网络随机初始化参数,大网络用已经训练好的大检测网络模型进行参数初始化。训练过程中,固定大网络参数,使用以下 loss 指导小网络进行参数学习。

layer只需要下采样到一个7x7的特征图。对于VGG16网络conv5_3有512个特征图,这样所有region

图片 16

proposal对应了一个7*7*512维度的特征向量作为全连接层的输入。

其中,u^i 为大网络的 RPN 输出的第 i 个候选框的特征,这个特征是从候选框的对用的 feature map 中直接提取得到的;v^i 是小网络的 RPN 对应的第i个候选框的特征;变换操作 r() 是用于将 v^i 变换到与 u^i 相同的维度;m_i 是第 i 个候选框特征的维度。

(2) R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。

最小化以上 loss 的过程也就是将大网络的特征提取能力迁移到小网络的过程。

(3) Fast R-CNN在网络微调的过程中,将部分卷积层也进行了微调,取得了更好的检测效果。

2.第二个阶段应用 ground-truth supervision 进行检测网络(detection network)的学习和 RPN 网络的精修。对于 faster rcnn,检测网络跟 RPN 网络共享部分特征,对共享的特征层,使用第一阶段学到的参数初始化;对检测网络新增加的卷积层,随机初始化参数。

性能对比数据:

论文指出,第二阶段如果只用 ground-truth supervision 精修,会损害第一阶段学到的网络参数。因此,作者提出使用 softmax 层之前的那层特征(classification logits)进行 mimic supervision。即上面公式中的 u^i 和 v^i 分别为大小网络的第 i 个 proposal 的 classfication logits,这个阶段的 loss 计算包括两部分 L_m(W)和 L_gt(W),如下所示,其中 L_gt(W)代表分类和位置预测误差。

1)Fast R-CNN优点:

图片 17

Fast R-CNN融合了R-CNN和SPP-NET的精髓,并且引入多任务损失函数,使整个网络的训练和测试变得十分方便。在Pascal VOC2007训练集上训练,在VOC2007测试的结果为66.9%(mAP),如果使用VOC2007+2012训练集训练,在VOC2007上测试结果为70%(数据集的扩充能大幅提高目标检测性能)。使用VGG16每张图像总共需要3s左右。

以上介绍了大网络到小网络的特征提取和检测能力迁移。除此以外,本论文思想还可用于接受大分别率输入图像的网络的检测能力迁移至小分辨率输入图像的网络,提升小分辨率输入图像的检测效果。如下图所示,基本思想即在最后一个 feature map 输出让 RPN 网络之前添加一个 decovolution 层增加 feature map 的分辨率,训练时使用支持大分辨率输入的网络进行监督。

2)Fast R-CNN 缺点:

图片 18

Region Proposal的提取使用selective search,目标检测时间大多消耗在这上面(提Region Proposal2~3s,而提特征分类只需0.32s),无法满足实时应用,而且并没有实现真正意义上的端到端训练测试(region proposal使用selective search先提取处来)。那么有没有可能直接使用CNN直接产生Region Proposal并对其分类?Faster R-CNN框架就是符合这样需要的目标检测框架。

算法效果

3.3.4  Faster R-CNN(NIPS2015)

下表中 MR_-2 为 Miss Rate on False Positive Per Image,数值越小代表效果越好。其他细节可参见原论文。

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

图片 19

在Region Proposal +

调研速度和准确率平衡的综述

CNN分类的这种目标检测框架中,Region

Speed/accuracy trade-offs for modern convolutional object detectors

Proposal质量好坏直接影响到目标检测任务的精度。如果找到一种方法只提取几百个或者更少的高质量的假选窗口,而且召回率很高,这不但能加快目标检

style="font-size: 16px;">论文链接:arxiv.org/abs/1611.10012

录用信息:CVPR2017

测速度,还能提高目标检测的性能(假阳例少)。RPN(Region Proposal Networks)网络应运而生。

论文目标

1)RPN的核心思想

通过大量实验对比三种主流检测算法在各个情况下的表现。

是使用卷积神经网络直接产生Region Proposal,使用的方法本质上就是滑动窗口。RPN的设计比较巧妙,RPN只需在最后的卷积层上滑动一遍,因为Anchor机制和边框回归可以得到多尺度多长宽比的Region Proposal。

核心思想

2)Faster R-CNN架构

在我们日常的视觉任务中往往有一个大家都会有一个经验,就是当提高一个网络的复杂度能得到更好的效果,而去精简一个网络的同时准确度自然会有所损失。更进一步来讲,相比于分类任务,目标检测任务在实际应用的时候更容易受到计算复杂度,内存要求等因素的限制。本文用非常大量详实的实验探讨了最常用的一些目标检测算法以及其中各个参数的设置对于目标检测的 speed 和 accuracy 的影响,以及对于如何以较好的性价比平衡速度和准确率给予了自己的结论。

3)RPN架构

看这篇论文的作者参与数量就能感觉到做完这些大量的实验,尤其是在像 coco 这样很大的数据集上,是非常耗时且花费精力的。在这里感谢作者的工作为没有资源和时间去做这些试验的人给出了很好的指导性的建议。我认为这些建议很多时候在实用的角度来讲贡献一点也不亚于提出一个新的方法。

RPN采用任意大小的的图像作为输入,并输出一组候选的矩形,每个矩形都有一个对象分数。

首先先说一下试验的背景:用不同的深度学习框架,不同的网络初始化方法,不同的数据增强方法等等训练相同的算法,其性能和最终准确率都会有所不同。为了去掉这些因素的影响,作者统一在 tensorflow 的框架上实现了 Faster R-CNN、SSD、RFCN 算法,并以此为基础进行试验,保证了试验的公平性,其中有部分的参数初始化方法以及优化方法略有不同,在论文中均作了说明。同时为了保证基础特征的公平性和丰富程度,作者分别在 VGG16、ResNet-101、Mobilenet、Inception-V2、Inception-V3、Inception-ResNet 上进行试验,使得结果具有更高的普适性,同时也能从基础网络的角度看到了不同网络对于不同算法准确率和速度的影响。作者还对比了不同图像输入尺寸在以上这些网络上的表现。最后作者还对比了各个算法不同的预选框的设置方法,某些网络特定层的特征分辨率的不同等等设置对于网络的影响。可以说作者整个的试验设计非常系统,非常严谨。通过作者的试验结果,可以从各个角度对于当前目标检测的网络选择和参数设置有一个很直观的认识。

RPN被用于训练直接产生候选区域,不需要外部的候选区域。

整个论文有非常多的试验结果和结论,如果对于哪方面感兴趣的读者建议还是去仔细查看原论文的相应部分的图表和论述。本文这里就不一一拿出来讨论,只抽出一部分试验结果进行描述。

Anchor是滑动窗口的中心,它与尺度和长宽比相关,默认采3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1),则在每一个滑动位置k=9 anchors。

图片 20

我们直接看上边的RPN网络结构图(使用了ZF模型),给定输入图像(假设分辨率为600*1000),经过卷积操作得到最后一层的卷积特征图(大小约为40*60)。在这个特征图上使用3*3的卷积核(滑动窗口)与特征图进行卷积,最后一层卷积层共有256个feature

首先整体对比一下不同的网络接入三种检测算法后的表现,其中每种网络和算法的组合对又根据不同的图像输入尺寸,stride size 画出了多个点。可以看到 ResNet101 和 Inception-ResNet101(在输入尺寸等比较小的情况下)是性价比比较高的网络,而 Inceptionv2-3 网络表现平平。也许像 Inceptionv3 这种网络是对于分类任务高度定制的,多尺寸的卷积和的融合影响了物体的位置信息的表达,不太适合于目标检测任务。

map,那么这个3*3的区域卷积后可以获得一个256维的特征向量,后边接cls layer(box-classification layer)和reg layer(box-regression layer)分别用于分类和边框回归(跟Fast R-CNN类似,只不过这里的类别只有目标和背景两个类别)。3*3滑窗对应的每个特征区域同时预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的region

而检测算法方面,Faster R-CNN 系列在 mAP 上稳稳胜出。但是速度相较于 SSD R-FCN 来讲也明显慢一些,但是通过一些参数的设置 FASTER R-CNN 也可以达到很快的速度。

proposal,这种映射的机制称为anchor。所以对于这个40*60的feature map,总共有约20000(40*60*9)个anchor,也就是预测20000个region proposal。

作者对比了输入不同图像尺寸对网络的影响,可以看到,输入更大的图片确实可以明显的提升 mAP 但是也降低了网络的速度。作者还统计了不同算法和网络对于不同尺寸的目标预测的表现。结论是 SSD 对于小物体表现非常差,远低于其他算法。而在大物体上的表现几乎一样,甚至在一些网络上表现更好。所以如果检测任务当中大部分目标均为大物体,SSD 绝对是一个非常好的选择,可以达到有快又准的效果。但是如果存在大量的小物体,为了提高召回率还是建议选择两阶段的检测算法比较好。具体试验结果请查看原始论文。

这样设计的好处是什么呢?虽然现在也是用的滑动窗口策略,但是:滑动窗口操作是在卷积层特征图上进行的,维度较原始图像降低了16*16倍(中间经过了4

图片 21

次2*2的pooling操作);多尺度采用了9种anchor,对应了三种尺度和三种长宽比,加上后边接了边框回归,所以即便是这9种anchor外的

上图的实验结论非常超出我的认知,图中对比了不同网络在不同算法上的表现。可以看到 SSD 算法对于基础网络的特征非常不敏感,从结构、计算复杂度、深度差别很大的网络接入 SSD 后 mAP 的变化非常不明显。而两阶段的检测器,对于不同的网络 mAP 变化非常大。当基础网络复杂度比较低的时候 SSD 算法的性价比要更高一些。而另一方面增大 SSD 基础网络的复杂度,收益也相当有限,无法达到二阶段算法的准确率。可能 SSD 算法的主要瓶颈在于算法结构上,所以提高送入 feature 的质量并没有特别改善 SSD 的表现。

窗口也能得到一个跟目标比较接近的region proposal。

还有一个很有指导意义的结论是当要优化算法的速度的时候,减少 proposal 的数量是一个很好的选择。可以很大程度的加快网络的速度同时精度受到的影响比较小。一个例子是当 Faster R-CNN+Inception-ResNet 组合时,只用 50 个 proposals 与用 300 个 proposals 相比,mAP 相差无几,但是速度提升了三倍之多,这里原文中有更详细的讨论。

4)总结

结论

Faster R-CNN将一直以来分离的region proposal和CNN分类融合到了一起,使用端到端的网络进行目标检测,无论在速度上还是精度上都得到了不错的提高。然而Faster R-CNN还是达不到实时的目标检测,预先获取Region Proposal,然后在对每个Proposal分类计算量还是比较大。比较幸运的是YOLO这类目标检测方法的出现让实时性也变的成为可能。

本文通过大量实验对比了影响目标检测算法速度和准确性各项因素的作用,可以帮助从业者在实际应用中选择更合适的目标检测算法。返回搜狐,查看更多

总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来,基于深度学习目标检测的流程变得越来越精简,精度越来越高,速度也越来越快。可以说基于Region Proposal的R-CNN系列目标检测方法是当前目标最主要的一个分支。

责任编辑:

3.3.5 R-FCN(2016.5)

《R-FCN: Object Detection via Region-based Fully Convolutional Networks》

顾名思议:全卷积网络,就是全部是卷积层,而没有全连接层(fc)。

R-FCN(基于区域的检测器)的方法是:在整个图像上共享计算,通过移除最后的fc层实现(即删除了所有的子网络)。使用“位置敏感的得分图”来解决了图像分类平移不变性与对象检测平移变化之间的矛盾。

此矛盾为:物体分类要求平移不变性越大越好 (图像中物体的移动不用区分),而物体检测要求有平移变化。所以,ImageNet 分类领先的结果证明尽可能有平移不变性的全卷积结构更受亲睐。另一方面,物体检测任务需要一些平移变化的定位表示。比如,物体的平移应该使网络产生响应,这些响应对描述候选框覆盖真实物体的好坏是有意义的。我们假设图像分类网络的卷积层越深,则该网络对平移越不敏感。

CNN随着网络深度的增加,网络对于位置(Position)的敏感度越来越低,也就是所谓的translation-invariance,但是在Detection的时候,需要对位置信息有很强的的敏感度。

那么ResNet-101的detection是怎么做的?

本文由奥门金沙网址发布于奥门金沙手机娱乐网址,转载请注明出处:目标检测,基于深度学习的目标检测算法综述

关键词: