神经网路--faster-RCNN
Fster Rcnn
Faster rcnn是基于Fast-rcnn的卷积网络,在顶部构建了RPN-net,RPN-net直接利用深度网络计算proposals,这种高效的方案,直接将proposals的计算时间大大减少。

(基本思想的原理图)参考:https://wenku.baidu.com/view/01688f3a82c4bb4cf7ec4afe04a1b0717fd5b381.html
之所以能够大幅减少计算时间是因为它共享了目标检测的卷积网络。但是为了适配Fast-rcnn的卷基层,利用一种trick的训练方法:在RPN-net和object detection net中选择一个微调(fine tunning)而另一个固定,然后二者转换。这种方法收敛较快,并且可以利用卷基层产生同一的网络。
具体过程:
第一步, 单独训练RPN 网络,训练的模型用ImageNet的模型来初始化,采用end to end的方式来调整参数;
第二步训练一个单独的检测网络Fast Rcnn,训练用的proposals来自第一步的RPN net,模型初始化采用ImageNet模型;这两步的模型都是单独训练,没有共享的部分。
第三步用Fast Rcnn的参数来初始化RPN模型,但是训练的时候固定卷积层,只调整属于RPN的参数,这时,这两个网络就有了共享的卷基层;
第四步保持共享的卷积层固定,用第三步调整后的RPN输出的proposals作为输入,微调Fast Rcnn剩下的参数。这样就完成了共享卷积层。
根据网络的完整性介绍faster-rcnn网络,这里从最后一步的完整网络介绍:
上图:

(最后一步的完整网络图,整体的faster-rcnn网络)
原图片输入,更改形状(应该只是为了适应框架),一过训练过的卷积激活池化层,形成256-d的特征图,经过3*3同维的卷积核(并且同维个)处理后,到“岔路口”:
上面一条通过softmax分类(这里是二分类)anchors获得foreground和background(检测目标是foreground)。
下面一条用于计算对于anchors的bounding box regression偏移量,以获得精确的proposal。
最后的Proposal层则负责综合foreground anchors和bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。最后剩下的就如同fast-rcnn网络中使用ss方法生成的检测窗口!
下面对图中几点问题作介绍:
1、 softmax层:
softmax分类器,该分类器是在logistic回归模型在多分类问题上的推广。在多分类问题中,分类标签y可以取两个以上的值。
例如:m个已标记的样本构成:{(x(1),y(1)),...,(x(m),y(m))},输入特征是n维的,y是标签。。
给定输入每一个x,用假设函数针对每一类别j估算出概率值p(y=j|x)。可以用如下图例进行表示,类似于神经网络,只是少了一层隐含层。

熟悉logistic回归的读者都知道,softmax的损失函数和logistic的损失函数非常类似,只是在softmax损失函数中对类标记的k个可能值进行累加。注意在softmax回归中将x分类为类别j的概率为:
输出最大值概率值则属于相应的类,比如说,p1最大,就属于第一类。
摘自http://blog.csdn.net/hlx371240/article/details/40015395
在RPN网络中的softmax层仅仅是用于二分类(forground/background),输出概率用于proposal层的剔除。
2、 anchors:
提到RPN网络,就不能不说anchors。所谓anchors,实际上就是一组矩形的中心,这一组矩形只是一组数据,跟像素值无关,用于从中提取到建议框的位置。RPN网络会给每个featuremap的像素点生成九个anchors。9个矩形共有3种形状,长宽比为大约为:width:height = [1:1, 1:2, 2:1]三种。

3、RPN网络中18个1*1与36个1*1:
有2中每个像素点有9个矩形匹配,要使用rpn网络中的sofmax为每个像素点的9个矩形框(根据像素特征)进行二分类(输出概率),并且对每个框框做修正(生成dx,dy,dw,dh)以生成精准的proposal位置。
上面已经说过,原始的框框只是根据像素点的位置生成的矩形,跟像素无关,那么怎么在训练的过程中将anchor框的“性质”考虑进去。猜想在对特征图18个1*1卷积的过程中包含了这个影响,使得18-d的特征图两两一组,分别代表9中anchor的尺度,这样对这些像素点进行softmax二分类就合理了(如下图):


RPN网络结构就介绍到这里,总结起来就是:
生成anchors -> softmax分类器提取fg anchors -> bbox reg回归fg anchors -> Proposal Layer生成proposals
4 、Classification

利用已经获得的proposal feature maps,通过full connect层与softmax计算每个proposal具体属于那个类别(如人,车,电视等),输出cls_prob概率向量;同时再次利用bounding box regression获得每个proposal的位置偏移量bbox_pred,用于回归更加精确的目标检测框。2次bounding box regression修正检测框位置。
参考:http://blog.csdn.net/zy1034092330/article/details/62044941

浙公网安备 33010602011771号