您的位置:首页 > 其它

深度学习之检测模型-Faster RCNN

2017-12-10 22:55 260 查看
State-of-the-art object detection networks depend on region proposal algorithms to hypothesize object locations. Advances like SPPnet and Fast R-CNN have reduced the running time of these detection networks, exposing region proposal computation as a bottleneck. In this work, we introduce a Region Proposal Network(RPN) that shares full-image net

Faster R-CNN 抛弃了 Selectave Search, 引入了 RPN 网络,使用区域提名,使得分类,回归一起共用卷积特征,从而进一步加速了检测过程。其中Faster RCNN使用了Anchor的思想对在Feature map上进行预处理,产生2w左右的候选框,使得RPN的回归变成了回归到anchor的相对位置,使得网络更加稳定。

思想

首先,Fast RCNN检测网络的主要思想:

使用一个简化的 SPP 层— RoI Pooling 层,操作与 SPP 相似 2. 训练和测试不再分多步

a. 不用存储中间特征结果,可使得梯度通过 RoI Pooling 层直接传播

b. 分类与回归用 Multi-task 的方式一起训练

SVD :使用 SVD 分解全连接层的参数矩阵,压缩为两个规模小很多的全连接层

解决 R-CNN 和 SPP-Net 中 2000 左右候选框带来的重复计算问题。

然后,overfeat虽然是一个端到端的训练过程,最终的网络进行了分类和回归网络多任务,但在预测的时候,仍然采用的是sliding window的思想。计算复杂度同样很大,因此作者提出了一种RPN网络,共享特征提取,使得网络的效率大大提升。



Region Proposal Networks

基础网络采用ZF或者VGG,则feature层的深度为256-d和512-d

然后将feature作为reg和cls的基础特征进行预测



数字解释
171ZF模型在feature层的感受野
228VGG模型在feature层的感受野
256-dZF模型feature层的深度
512-dVGG模型feature层的深度
3x3/1x1feature层后接nxn(n=3)卷积进行特征提取,后面接两个1x1卷积分别对应reg和cls层
kanchor的个数,论文k=9,由3个scale和3个apect ratios组层
4k对应RPN回归reg层输出的深度:[(x1,y1,w1,h1),(x2,y2,w2,h2) … (xk,yk,wk,yk)]
2k对应RPN分类cls层输出的深度:[(bg1,fg1),(bg2,fg2) … (bgk,fgk)]
~2400对于feature层上,一般会产生大约2400个特征点W∗H=60∗40=2400(对于1000x600的图像来说)
~20000对于feature层上,一般会产生大约20000个anchor候选区域W∗H∗k=60∗40∗9=21600
~6000特征层产生的2w个anchor,去掉超过边界的区域,剩下大约6000个区域用于训练
~2000对于产生的6000个区域,采用NMS(0.7),将剩余2000个左右候选区域

Translation-Invariant Anchors

对于区域候选区域的产生,之前有过很多方法:

方法输出层数参数个数说明
MultiBox(4+1)*8006.1∗1061536*(4+1)*800 for GoogleNet
FasterRCNN(4+2)*92.8∗104512*(4+2)*9 for VGG
注:对于anchor的提出,其具有一个非常重要的性质:平移不变形。

因为最终的回归框,是相对于anchor进行计算的,如果图像上的物体进行了平移,相对应的anchor提取的候选区域也可以进行相应的平移,从而可保障物体能够被检测出来。

Multi-Scale Anchors as Regression References

对于多尺度检测,以前也有很多方法:

金字塔pyramids:比如DPM,Fast RCNN,SPPnet,Overfeat等

该方法对图像和特征层进行不同的尺度缩放,然后在每一个尺寸下,进行sliding window

多尺度滤波器(multiple filter sizes)

本文提出了一种完全不同的多尺度检测方法:pyramids of anchors。该方法基于multi-scales和multi-aspect-ratios

损失函数Loss Function

RPN:

cls:二分类binary class label

正样本:

i) highest Intersection-over-Union(IoU) overlap with a ground-truth box

ii) IoU overlap higher than 0.7 with any ground-truth box

注:有可能一个ground-truth box被多个anchor赋予正样本

负样本:

i) IoU is lower than 0.3 for all ground-truth boxes.

其他样本:

其他anchor不作为正负样本,不参与训练

reg:

采用Fast RCNN的Smooth L1函数

SmoothL1(x)={0.5∗|x|2|x|−0.5 if|x|<1 otherwise

坐标转换:



其中变量x,xa,x∗分别代表:

变量含义
xpredicted box
xaanchor box
x∗ground-truth box
注:对于y,w,h同理

从而损失函数定义为:



其中:

变量含义
i对于每一个mini-batch中的anchor索引【正负样本】
pi对于每一个anchor i被预测为物体的概率
p∗ground-truth:如果为正样本则为1,如果为负样本则为0
ti代表回归层中的4个坐标点x,y,w,h
t∗代表回归层中的的ground-true box,但是其坐标是相对于positive anchor【做过坐标转换的】
Lcls分类的损失函数,log loss,分为两类(object vs. not object)
Lreg(ti,t∗)采用Fast RCNN中的Smooth L1函数,如上所述
p∗Lreg表示回归的loss只针对postive anchor
-(p∗=1for positive anthor; p∗=0 for otherwise)
Ncls分类权重系数,Ncls=256,所有正负样本的数量
Nreg回去权重系数,Nreg≈2400,对于所有的特征点【anchor的位置,特征图大小为60x40】
λ分类与回归损失函数的平衡系数,λ=10【实验证明该系数最好,能够把分类和回归损失平衡到一个数量级】
注:

就近原则

This can be thought of as bounding-box regression from an anchor box to a nearby ground-truth box

基于之前RoI 提取方法:Fast RCNN,SPPnet

bounding-box regression基于任意的RoI大小,从而具有多尺度性质

在feature层上,采用3x3的卷积核进行特征提取,然后接两个1x1卷机进行cls和reg输出

每一个feature map上的特征点输出,都有k【anchor数量】个bounding-box regressior需要学习,并且相互之间独立,不共享权重

RPN训练过程

anchor选取方式:在训练过程中,一种可能就是对所有anchor进行loss反向传播,但是由于负样本占据绝大多数,从而导致训练方向向negative sample发生偏移,从而,作者从所有的positive anchor和negative anchor中随机挑选了256个样本进行loss计算和反向传播。其中positive anchor和negative anchor比例为1:1。如果正本样个数少于128个,则用负样本补齐。

学习参数:

初始化:

所有feature特征提取层,采用预训练模型参数初始化

其他层采用zero-mean Gaussian distribution with standard deviation 0.01

对于ZF来说,所有参数都进行学习,对于VGG来说,只训练conv3-1之后的参数

学习率:分阶段学习对于PASCAL VOC

前60K:0.001

后20K:0.0001

momentum:0.9

decay:0.0005

训练方法

论文提供了三种训练方法:

Alternating training: 交替训练RPN和Fast RCNN

首先训练RPN

然后利用RPN参数初始化网络,在进行Fast RCNN训练

Approminate joint training: 端到端学习,同时学习RPN和Fast RCNN网络

虽然该方法忽略了proposal boxes坐标的可导性,但是通过逼近,也可以得到比较好的结果,最终的训练时间可以缩短25-50%。

Non-appromixate joint training:

考虑RPN作为Fast RCNN的输入,在反向传播过程中,需要考虑box coorinate的梯度,因此在该方法中,论文采用了一种可微的RoI Pooling层。参考论文[Instance-aware semantic segmentation via multi-task network cascades]中的“RoI warping”层。

4-Step Alternating Training:

训练RPN网络:加载预训练模型,进行端到端训练

训练Fast RCNN网络:同样加载完全预训练模型【参数不是RPN网络训练之后的参数】,采用RPN输出的proposal进行训练

训练RPN网络:但是利用Fast RCNN的参数对RPN进行初始化,但是训练过程中,固定特征层的提取参数【the shared convolutional layers】只训练RPN区域提取过程中的参数。

训练Fast RCNN网络:固定与RPN共享的卷积特征提取层,如上,只训练Fast RCNN最中的分类回归部分。

上面的4步不断交替训练,多迭代几次,效果更好

参数描述
600将图像的短边缩放到600大小
16对于VGG来说,最终的特征层上的尺度放缩比例为原图的1/16大小
3 scales对于anchor有3种尺寸面积:1282,256,5122,对应feature层为6,16,32
3 aspect ratios对于anchor有3中比例关系:1:1,1:2,2:1
20000对于1000x600的图像,将在特征层产生20000个左右的anchor区域(≈60∗40∗9)
6000去掉超出边界的anchor,2w个u区域剩余6000个左右【否则,这些区域将导致网络不收敛,但是在检测的时候,将超出边界的anchor区域进行裁剪,保留图像内的部分】
2000为了避免anchor区域过剩,采用NMS(0.7)后,将6000anchor区域降低到2000左右【在检测的时候,采用不同数量的anchor候选框进行评估】

Anchor与网络对应关系:

对于anchor的大小,从尺度和比例两个角度考虑:

对于ZF模型



对于VGG模型:

scale\ratios1:11:22:1
128*128[-55,-55,72,72]->127*127[-35,-79,52,96]->87*175[-83,-39,100,56]->183*95
256*256[-119,-119,136,136]->255*255[-79,-167,96,184]->175*351[-175,-87,192,104]->367*191
512*512[-247,-247,264,264]->511*511[-167,-343,184,360]->351*703[-359,-183,376,200]->735*383

实验

PASCAL VOC数据集

实验一:

基础网络ZF的效果及RPN网络的作用分析




说明:

Faster RCNN在Pascal Voc2007的测试集上,达到了59.9%的AP,超过了之前的方法

训练:采用RPN+ZF模型【共享基础网络】,RPN中采用2000个anchor区域进行训练

测试:采用RPN+ZF模型【共享基础网络】,RPN生成300个候选框进行预测

采用消除法进行网络分析:

分析共享基础网络参数的作用

达到了58.7%

分析测试中RPN生成的候选区域个数的作用

在RPN生成300个候选框的时候,效果最好,达到了56.8%

分析RPN中回归网络的作用

因为没有cls分类概率,采用随机选取的方式

RPN生成的候选区域越多,效果越好,但在随机选择的300个候选框时候,mAP仍能达到51.5%

分析RPN中的分类网络的作用

因为没有reg回归,产生proposal,采用anchor作为候选框

在候选框个数300好于1000,说明候选框不适越多越好。300的时候,达到了52.1%

分析VGG基础网络的作用

能够比较轻松的达到59.2%【mAP】

实验二

基础模型VGG的效果分析










说明:

通过分析VGG基础网络模型,发现其效果比ZF模型要高很多,说明VGG模型的特征表达能力要好很多

如果训练集越大,网络训练的效果越好



说明:

Faster RCNN检测框架的速度要比Fast RCNN快很多

实验三

分析不同的anchor对于检测的影响




说明:

scale与aspect ratios相比,scale的作用更大

实验四

分析RPN的Loss函数中的cls与reg损失的权衡参数lambda的作用




说明:

实验表明当λ=10的时候,网络效果最好。

因为λ=10,使得网络的损失函数中的cls部分与reg部分在归一化后是同一个两级的。

实验五

分析Recall-to-IoU的作用




The plots show that the RPN method behaves gracefully when the number of proposals drops from 2000 to 300.

说明:

上图说明,当proposal个数从2000降到300的时候, 相对于SS,EB候选框提取方法,RPN网络表现的更加稳定

实验六

One-Stage Detection vs. Two-Stage Proposal + Detection




说明:

One-Stage:类似于Overfeat网络

Two-Stage:类似于Faster RCNN

dense,3 scales, 3 aspect ratios 2000:

In this system, the ‘proposals’ are dense sliding windows of 3 scales(128,256,512) and 3 aspect ratios(1:1,1:2,2:1)

Fast RCNN训练预测class-specific scores和regress box locations,通过sliding window

实验表明:本文提出的Two-Stage方法效果更好,将近6%的提升

COCO数据集

实验一

对比分析Faster RCNN网络在COCO数据集上的效果




说明:

Faster RCNN结构采用RPN区域提名后,效果要比SS区域提名方法要好很多

训练数据的增加,对检测的效果有帮助

实验二

Faster RCNN in ILSVRC & COCO 2015 competitions


如果将框架中的基础网络部分替换成Resnet101,在COCO数据集上的效果能有进一步提升。

实验三

from MS COCO to PASCAL VOC




说明:

直接利用COCO上的训练结果去检测VOC的数据,最终的mAP提高了很多,从69.9%提升到了73.2%【mAP】

因为COCO的数据集种类包含VOC的所有类别

如果将COCO数据集和VOC数据集联合训练,最终的效果更好78.8%

结论

论文基于Fast RCNN,提出了一种区域生成方法RPN:

消除了之前的SS,ES候选框提名的方法【之前的方法速度极慢】

有效的提高了检测效率,能够达到5fps。【其中RPN需要10ms的时候】

参考文献

https://arxiv.org/pdf/1506.01497.pdf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐