基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

基于深度学习的目标检测算法综述(一):https://blog.****.net/weixin_36835368/article/details/82687919

目录

 

1、Two stage

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


1、Two stage

Faster R-CNN 网络包括两个步骤:

         1. 使用RPN(region proposal network)提取 proposal 信息;

         2. 使用 R-CNN 对候选框位置进行预测和物体类别识别。

这里主要介绍在 Faster R-CNN 基础上改进的几篇论文:R-FCN、R-FCN3000 和 Mask R-CNN。R-FCN 系列提出了 Position Sensitive(ps)的概念,提升了检测效果。另外需要注明的是,虽然 Mask R-CNN 主要应用在分割上,但该论文和 Faster R-CNN 一脉相承,而且论文提出了 RoI Align 的思想,对物体检测回归框的精度提升有一定效果,故本篇综述也介绍了这篇论文。

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

论文链接:arxiv.org/abs/1605.06409

开源代码:github.com/daijifeng001/R-FCN

录用信息:CVPR2017

论文目标

对预测特征图引入位置敏感分数图提增强征位置信息,提高检测精度。

核心思想

背景

Faster R-CNN 是首个利用 CNN 来完成 proposals 的预测的,之后的很多目标检测网络都是借助了 Faster R-CNN 的思想。而 Faster R-CNN 系列的网络都可以分成 2 个部分:

1.Fully Convolutional subnetwork before RoI Layer

2.RoI-wise subnetwork

第 1 部分就是直接用普通分类网络的卷积层来提取共享特征,后接一个 RoI Pooling Layer 在第 1 部分的最后一张特征图上进行提取针对各个 RoIs 的特征图,最后将所有 RoIs 的特征图都交由第 2 部分来处理(分类和回归)。第二部分通常由全连接层组层,最后接 2 个并行的 loss 函数:Softmax 和 smoothL1,分别用来对每一个 RoI 进行分类和回归。由此得到每个 RoI 的类别和归回结果。其中第 1 部分的基础分类网络计算是所有 RoIs 共享的,只需要进行一次前向计算即可得到所有 RoIs 所对应的特征图。

第 2 部分的 RoI-wise subnetwork 不是所有 RoIs 共享的,这一部分的作用就是给每个 RoI 进行分类和回归。在模型进行预测时基础网络不能有效感知位置信息,因为常见的 CNN 结构是根据分类任务进行设计的,并没有针对性的保留图片中物体的位置信息。而第 2 部分的全连阶层更是一种对于位置信息非常不友好的网络结构。由于检测任务中物体的位置信息是一个很重要的特征,R-FCN 通过提出的位置敏感分数图(position sensitive score maps)来增强网络对于位置信息的表达能力,提高检测效果。

网络设计

position-sensitive score map

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

图中展示的是 R-FCN 的网络结构图,展示了位置敏感得分图(position-sensitive score map)的主要设计思想。如果一个 RoI 含有一个类别 c 的物体,则将该 RoI 划分为 k x k 个区域,分别表示该物体的各个相应部位。其每个相应的部位都由特定的特征图对其进行特征提取。R-FCN在  、共享卷积层的最后再接上一层卷积层,而该卷积层就是位置敏感得分图 position-sensitive score map。其通道数 channels=k x k x (C+1)。C 表示物体类别种数再加上 1 个背景类别,每个类别都有 k x k 个 score maps 分别对应每个类别的不同位置。每个通道分别负责某一类的特定位置的特征提取工作。

Position-sensitive RoI pooling

位置敏感RoI池化操作了(Position-sensitive RoI pooling)如下图所示:

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

该操作将每个 RoIs 分为 k x k 个小块。之后提取其不同位置的小块相应特征图上的特征执行池化操作,下图展示了池化操作的计算方式。

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

得到池化后的特征后,每个 RoIs 的特征都包含每个类别各个位置上的特征信息。对于每个单独类别来讲,将不同位置的特征信息相加即可得到特征图对于该类别的响应,后面即可对该特征进行相应的分类。

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

position-sensitive regression

在位置框回归阶段仿照分类的思路,将特征通道数组合为 4 x k x k 的形式,其中每个小块的位置都对应了相应的通道对其进行位置回归的特征提取。最后将不同小块位置的四个回归值融合之后即可得到位置回归的响应,进行后续的位置回归工作。

网络训练

position-sensitive score map高响应值区域

在训练的过程中,当 RoIs 包涵物体属于某类别时,损失函数即会使得该 RoIs 不同区域块所对应的响应通道相应位置的特征响应尽可能的大,下图展示了这一过程,可以明显的看出不同位置的特征图都只对目标相应位置的区域有明显的响应,其特征提取能力是对位置敏感的。

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

训练和测试过程

使用如上的损失函数,对于任意一个 RoI,计算它的 Softmax 损失,和当其不属于背景时的回归损失。因为每个RoI都被指定属于某一个 GT box 或者属于背景,即先让 GT box 选择与其 IoU 最大的那个 RoI,再对剩余 RoI 选择与 GT box 的 IoU>0.5 的进行匹配,而剩下的 RoI 全部为背景类别。当 RoI 有了 label 后 loss 就可以计算出来。这里唯一不同的就是为了减少计算量,作者将所有 RoIs 的 loss 值都计算出来后,对其进行排序,并只对最大的 128 个损失值对应的RoIs进行反向传播操作,其它的则忽略。并且训练策略也是采用的 Faster R-CNN 中的 4-step alternating training 进行训练。在测试的时候,为了减少 RoIs 的数量,作者在 RPN 提取阶段就将 RPN 提取的大约 2W 个 proposals 进行过滤:

1.去除超过图像边界的proposals

2.使用基于类别概率且阈值IoU=0.3的NMS过滤

3.按照类别概率选择top-N个proposals

在测试的时候,一般只剩下300个RoIs。并且在R-FCN的输出300个预测框之后,仍然要对其使用NMS去除冗余的预测框。

算法效果

基于深度学习的目标检测算法综述(二)—Two/One stage算法改进之R-FCN

该图比较了 Faster-R-CNN 和 R-FCN 的 mAP 值和监测速度,采用的基础网络为 ResNet-101,测评显卡为 Tesla K40。