【目标检测】Faster R-CNN

本文先简单介绍一下:R-CNN、SSP、Fast R-CNN算法的流程,然后再从网络结构、训练过程、实现几个方面来介绍Faster R-CNN。

相关知识:

(部分图片来自目标检测之RCNN,SPP-NET,Fast-RCNN,Faster-RCNN)

1、R-CNN

R-CNN网络其实就是一个分类器,对提取到的候选区域(region proposal)进行分类,它的准确度主要依赖于候选区域算法。
【目标检测】Faster R-CNN_第1张图片
【目标检测】Faster R-CNN_第2张图片

2、SSP

流程:
(1)在原始图像上用Selective Search算法得到region proposals
(2)将整张图片前馈神经网络然后得到conv feature maps
(3)将region proposals映射到conv feature maps得到多个proposal feature maps
(4)将每个proposal feature maps分别输入SSP层 -> fc层,最后进行分类(SVM)和回归

【目标检测】Faster R-CNN_第3张图片

【目标检测】Faster R-CNN_第4张图片

每个候选区域对应的feature map的大小是不同的,但SSP网络中有全连接层,全连接层的输入维度需固定。故SSP中加入了SSP层(空间金字塔池化),将候选区域feature map分成1×1、2×2、4×4的子图,然后在每个小区域做max pooling。这样,经过SSP层的输出维度都是(1+4+16)×256(conv5的深度为256)。

【目标检测】Faster R-CNN_第5张图片

3、Fast R-CNN

改进之处:
(1)ROI Pooling Layer实际上是SPP-NET的一个精简版,SPP-NET对每个Proposal使用了不同大小的金字塔映射,而ROI Pooling Layer只需要下采样到一个7x7的特征图
(2)Fast R-CNN使用softmax进行分类
(3)引入multi-task loss函数
(4)除提取候选区域外,其他部分实现了end-to-end训练。

【目标检测】Faster R-CNN_第6张图片

【目标检测】Faster R-CNN_第7张图片

正文

候选区域计算是目标检测算法的一个瓶颈,传统候选区域算法如Selective Search,速度极慢,处理一张图片需耗时2s。

Faster R-CNN的核心在于share。Faster R-CNN在Fast R-CNN的基础上加入了RPN网络,RPN网络和Fast R-CNN的检测网络共享一套conv layers。使用RPN网络来提取候选区域,仅需10ms。检测一张图片中的目标仅需198ms,帧速率为5fps。

RPN层得到目标所在的区域以及此区域有无目标的概率;Fast R-CNN部分则整合之前的信息得到目标所在区域的精细坐标以及类别置信度。

【目标检测】Faster R-CNN_第8张图片

Faster R-CNN网络组件:conv layers、RPN、ROIPoolong、分类和回归。

【目标检测】Faster R-CNN_第9张图片

以基于VGG16的Faster R-CNN网络为例,conv layers使用VGG16,有13个conv层和4个pooling层,用于特征提取,得到conv feature maps;RPN为全卷积网络(FCN),用于生成region proposals;将proposals映射到conv feature maps上得到proposal feature maps,ROIPooling将proposal feature maps分为7×7的子图,再做max pooling,将结果输入后续的全连接层做分类和回归。
【目标检测】Faster R-CNN_第10张图片
Faster R-CNN中各层的参数可参考:Faster R-CNN网络(重要)

1、conv layers

【目标检测】Faster R-CNN_第11张图片

c o n v conv conv k e r n a l kernal kernal s i z e = 3 , p a d = 1 , s t r i d e = 1 size=3,pad=1,stride=1 size=3pad=1stride=1
p o o l i n g pooling pooling k e r n a l kernal kernal s i z e = 2 , p a d = 0 , s t r i d e = 2 size=2,pad=0,stride=2 size=2pad=0stride=2

卷积层:使用了填充,输入维度 w × h w×h w×h --> 输出维度 w × h w×h w×h
池化层:不使用填充,输入维度 w × h w×h w×h --> 输出维度 w / 2 × h / 2 w/2×h/2 w/2×h/2

conv layers中有4个pooling层,故下采样倍数 s t r i d e = 16 stride=16 stride=16
输入维度 M × N M×N M×N ,输出feature map维度为 M / 16 × N / 16 M/16×N/16 M/16×N/16

2、Region Proposal Networks

在feature map的每个位置上都会预先设置k个anchor / default boxes,RPN网络输出2个scores和4个offset。score表示此位置有无目标的概率(此为二分类问题,故使用log loss损失函数);offset中有4个值:表示平移和缩放的大小,通过对default boxes的平移和缩放可以使预测框与GT更加匹配(使用smooth L1损失函数,既对离群值和异常值不敏感,同时可快速收敛,且不会发生梯度爆炸问题)

【目标检测】Faster R-CNN_第12张图片

conv feature map的每个位置预测k个最有可能的region proposals即k个anchor boxes,对于W×H大小的conv feature map,总共有W×H×K个anchors。

k默认值为9,包括3个尺度和3个比例,这种基于 pyramid of anchors方法实现了multi-scale predictions。其他比较经典的方法是基于 image/feature pyramidpyramid of filters

w×h 的 feature map先经过一个3×3×512的卷积(512是feature map的维度),这一层的存在可以扩大感受野;然后有两条支路,上路用于scores预测,采用1×1×18的卷积,输出为w×h×18;下路用于coordinates预测,采用1×1×36的卷积,输出为w×h×36

(18->2个scores值*9个)
【目标检测】Faster R-CNN_第13张图片

RPN训练

在训练RPN时,我们会给通过RPN网络得到的anchor分配一个positive label 或者negative label。

当anchor与一个GT的IOU 最大时,给其分配一个positive label;

在 non-positive anchor 中,当anchor与GT的IOU小于0.3,给其分配一个negative label

其余没有标签的anchor将不参与训练

Loss 函数

分类使用log loss损失函数,回归使用smooth L1损失函数。

【目标检测】Faster R-CNN_第14张图片
p i p_{i} pi 表示 a n c h o r i anchor_{i} anchori 中有目标的概率,
p i ∗ p_{i}^{*} pi 真 实 框 G T 真实框GT GT l a b e l label label
a n c h o r anchor anchor p o s i t i v e positive positive l a b e l label label,则 p i ∗ = 1 p_{i}^{*} =1 pi=1
a n c h o r anchor anchor n e g a t i v e negative negative l a b e l label label,则 p i ∗ = 0 p_{i}^{*} =0 pi=0

被标注为 n e g a t i v e negative negative l a b e l label label a n c h o r anchor anchor 不参与reg部分的训练

N c l s = 256 N_{cls} = 256 Ncls=256 为 mini-batch size
N r e g = 2400 N_{reg}=2400 Nreg=2400 为 anchor locations的数量
λ = 10 \lambda=10 λ=10

bounding box 回归部分的公式如下:

【目标检测】Faster R-CNN_第15张图片
x 、 y 、 w 、 h x、y 、w、 h xywh 分别预测框的中心坐标以及宽和高。
x a 、 y a 、 w a 、 h a x_{a}、y_{a} 、w_{a}、 h_{a} xayawaha 分别是default box的中心坐标以及宽和高

等价于:
【目标检测】Faster R-CNN_第16张图片
RPN网络输出4个offset: t x 、 t y 、 t w 、 t h t_{x}、t_{y} 、t_{w}、 t_{h} txtytwth。通过对default box进行平移和缩放,使得预测框与真实框GT更加接近。

待续

参考:
https://zhuanlan.zhihu.com/p/31426458
http://lanbing510.info/2017/08/24/RCNN-FastRCNN-FasterRCNN.html
https://zhuanlan.zhihu.com/p/24916624

R-CNN系列论文解读

你可能感兴趣的:(【目标检测】Faster R-CNN)