https://blog.csdn.net/whz1861/article/details/78768398
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=9k=9,由3个scale和3个apect ratios组层4k对应RPN回归reg层输出的深度:[(x1,y1,w1,h1x1,y1,w1,h1),(x2,y2,w2,h2x2,y2,w2,h2) … (xk,yk,wk,ykxk,yk,wk,yk)]2k对应RPN分类cls层输出的深度:[(bg1,fg1bg1,fg1),(bg2,fg2bg2,fg2) … (bgk,fgkbgk,fgk)]~2400对于feature层上,一般会产生大约2400个特征点W∗H=60∗40=2400W∗H=60∗40=2400(对于1000x600的图像来说)~20000对于feature层上,一般会产生大约20000个anchor候选区域W∗H∗k=60∗40∗9=21600W∗H∗k=60∗40∗9=21600~6000特征层产生的2w个anchor,去掉超过边界的区域,剩下大约6000个区域用于训练~2000对于产生的6000个区域,采用NMS(0.7),将剩余2000个左右候选区域
Translation-Invariant Anchors
对于区域候选区域的产生,之前有过很多方法:
方法输出层数参数个数说明MultiBox(4+1)*8006.1∗1066.1∗1061536*(4+1)*800 for GoogleNetFasterRCNN(4+2)*92.8∗1042.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
RPN:
cls:二分类binary class label 正样本: i) highest Intersection-over-Union(IoU) overlap with a ground-truth boxii) 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 L1Smooth L1函数SmoothL1(x)={0.5∗|x|2|x|−0.5 if|x|<1 otherwiseSmoothL1(x)={0.5∗|x|2 if|x|<1|x|−0.5 otherwise
坐标转换:
其中变量x,xa,x∗分别代表:
变量含义xpredicted boxxaanchor boxx∗ground-truth box注:对于y,w,h同理
从而损失函数定义为:
其中:
变量含义i对于每一个mini-batch中的anchor索引【正负样本】pi对于每一个anchor ii被预测为物体的概率p∗ground-truth:如果为正样本则为1,如果为负样本则为0ti代表回归层中的4个坐标点x,y,w,hx,y,w,ht∗代表回归层中的的ground-true box,但是其坐标是相对于positive anchor【做过坐标转换的】Lcls分类的损失函数,log loss,分为两类(object vs. not object)Lreg(ti,t∗)采用Fast RCNN中的Smooth L1Smooth L1函数,如上所述p∗Lreg表示回归的loss只针对postive anchor-(p∗=1p∗=1for positive anthor; p∗=0p∗=0 for otherwise)Ncls分类权重系数,Ncls=256Ncls=256,所有正负样本的数量Nreg回去权重系数,Nreg≈2400Nreg≈2400,对于所有的特征点【anchor的位置,特征图大小为60x40】λ分类与回归损失函数的平衡系数,λ=10λ=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.0001momentum:0.9decay: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,51221282,256,5122,对应feature层为6,16,323 aspect ratios对于anchor有3中比例关系:1:1,1:2,2:120000对于1000x600的图像,将在特征层产生20000个左右的anchor区域(≈60∗40∗9≈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:1128*128[-55,-55,72,72]->127*127[-35,-79,52,96]->87*175[-83,-39,100,56]->183*95256*256[-119,-119,136,136]->255*255[-79,-167,96,184]->175*351[-175,-87,192,104]->367*191512*512[-247,-247,264,264]->511*511[-167,-343,184,360]->351*703[-359,-183,376,200]->735*383实验一:
<span style="color:#000000"><code>基础网络ZF的效果及RPN网络的作用分析 </code></span> 1
说明:
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】实验二
<span style="color:#000000"><code>基础模型VGG的效果分析 </code></span> 1
说明:
通过分析VGG基础网络模型,发现其效果比ZF模型要高很多,说明VGG模型的特征表达能力要好很多如果训练集越大,网络训练的效果越好
说明:
Faster RCNN检测框架的速度要比Fast RCNN快很多实验三
<span style="color:#000000"><code>分析不同的anchor对于检测的影响 </code></span> 1
说明:
scale与aspect ratios相比,scale的作用更大实验四
<span style="color:#000000"><code>分析RPN的Loss函数中的cls与reg损失的权衡参数lambda的作用 </code></span> 1
说明:
实验表明当λ=10λ=10的时候,网络效果最好。 因为λ=10λ=10,使得网络的损失函数中的cls部分与reg部分在归一化后是同一个两级的。实验五
<span style="color:#000000"><code>分析Recall-to-IoU的作用 </code></span> 1
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网络表现的更加稳定实验六
<span style="color:#000000"><code>One-Stage Detection vs. Two-Stage Proposal + Detection </code></span> 1
说明:
One-Stage:类似于Overfeat网络Two-Stage:类似于Faster RCNNdense,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%的提升实验一
<span style="color:#000000"><code>对比分析Faster RCNN网络在COCO数据集上的效果 </code></span> 1
说明:
Faster RCNN结构采用RPN区域提名后,效果要比SS区域提名方法要好很多训练数据的增加,对检测的效果有帮助实验二
<span style="color:#000000"><code>Faster RCNN in ILSVRC & COCO 2015 competitions </code></span> 1如果将框架中的基础网络部分替换成Resnet101,在COCO数据集上的效果能有进一步提升。
实验三
<span style="color:#000000"><code>from MS COCO to PASCAL VOC </code></span> 1
说明:
直接利用COCO上的训练结果去检测VOC的数据,最终的mAP提高了很多,从69.9%提升到了73.2%【mAP】 因为COCO的数据集种类包含VOC的所有类别如果将COCO数据集和VOC数据集联合训练,最终的效果更好78.8%论文基于Fast RCNN,提出了一种区域生成方法RPN:
消除了之前的SS,ES候选框提名的方法【之前的方法速度极慢】有效的提高了检测效率,能够达到5fps。【其中RPN需要10ms的时候】