Faster RCNN理解

Faster RCNN

为了解决Fast RCNNregion proposal生成与目标检测速度不匹配的问题,在深度网络中引入RPN,直接利用深度网络直接计算得到region proposal,整个region proposal生成和目标检测的过程都可以在GPU上完成。同时也实现region proposal生成网络与目标检测网络的网络权值共享。

RPN网络结构

首先利用基网络对图像用一系列的卷积和池化操作进行特征提取,得到原始的feature maps(灰色区域),然后在原始的feature maps后面再接一个con+relu层,得到将要用于生成region proposalfeature maps。将feature maps中的每个点映射回原图回原图中心,得到一个基准点。根据设置好的尺度大小和长宽比,并围绕基准点,生成kanchorsFeature maps的每个点都有关于kanchors的输出,包括是否有目标,以及回归kregion proposal的座标值。

 

具体过程分析

得到用于生成region proposalfeature maps为了生成region proposal,我们使用一个小的网络在经过基网络卷积池化计算得到的feature maps上滑动扫描,得到新的feature maps。将新的feature maps用来生成region proposal

 


平移不变anchorsfeature maps上的每个点都可以预测得到kregion proposal。具体操作:将feature maps上的每个点映射到原图,得到一个基准点,然后围绕该基准点,通过设置好的固定的尺度大小和长宽比,生成kanchors。在论文中,使用了3种尺度和3种长宽比的anchors,所以k=3*3=9,对于一个大小为W*Hfeature map,将会产生W*H*kanchors。而通过这种不同尺度和不同长宽比的设置,同样实现了anchors的平移不变性。

RPN的损失函数:在训练RPN的时候,先需要对得到的W*H*kanchors进行正负样本的划分。将与gt box具有最大IOUanchor以及与任何一个gt boxIOU大于0.7anchor作为正样本。将剩余的与gt boxIOU小于0.3anchor作为负样本,其余anchors均被忽略。

对于每个anchor,后面会再接上一个用于二分类的softmax与用于bbox回归器。二分类softmax用于判断anchor是否为目标的概率,bbox回归器用于调整anchor4个座标值。因此RPN的损失函数可定义为:

 

其中表示第ianchor的标签,表示对第ianchor预测的概率值,表示与正样本anchor相关的gt boxanchor box的座标偏移,表示预测的boxanchor box的座标偏移。,的计算方式如下:

 

其中x,y,h,w分别表示box的中心座标,高度与宽度。

训练Faster RCNN

整个训练过程可分为4步:

第一步:用在ImageNet数据集上训练好的model初始化模型,训练一个RPN网络;

第二步:用在ImageNet数据集上训练好的model初始化模型,同时用第一步中训练好的RPN网络生成的region proposal作为输入,训练一个Fast RCNN

第三步:用第二步训练好的Fast RCNN的网络参数初始化RPN网络,但是将RPNFast RCNN共享的网络层的learning rate设置为0,仅微调RPN独有的网络层。

第四步:固定共享的网络层,仅微调Fast RCNN所独有的fc层。


参考链接:

https://zhuanlan.zhihu.com/p/24916624

http://blog.csdn.net/u011534057/article/details/51247371

http://blog.csdn.net/xyy19920105/article/details/50817725

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章