cs231n笔记(11)--fasterRCNN

Faster RCNN 是RCNN的改进:http://blog.csdn.net/chenlufei_i/article/details/78879783

Faster R-CNN可以简单看作使用用RPN(Region Proposal Network区域生成网络)和Fast-RCNN组合而成,用RPN代替Fast R-CNN中的Selective Search方法是Faster R-CNN中的核心思想

其中有两个关键点:(1)是使用RPN代替原来的SS算法产生建议框(2000改到300,产生更快质量也有所提高)。(2)产生建议框窗口的CNN和目标检测的CNN共享。


一.整体框架大致为:


(1) Faster RCNN把整张图片输入CNN,进行特征提取;

(2)利用RPN生成建议窗口(region proposals),每张图片生成300个,RPN网络与CNN网络共享;

(3)将300个建议窗映射到通过RCNN输出的feature map上(和fast RCNN一样,先整体卷积在分窗);

(4)通过RoI pooling层使每个框转换成固定的大小;

(5)输入全连接层,然后随机失活;

(6)然后输入Softmax Loss(分类,概率最高的为该类)和Smooth L1 Loss对分类概率和边框回归进行联合训练。


测试时,用边框回归值校正原来的候选窗口,生成预测窗口坐标(回归器精细修正窗口)。


二.对上面3个红色名词进行解释


(1)RPN


全称为region proposals net 区域建议网络,和faster RCNN后面的网络共享卷积网络。

取代RCNN和fast RCNN中的Selective Search算法,使每个图片产生建议框的数量从2000减小为300,且建议框的质量也有本质提高。

训练RPN时,只对两种anchor给予正标签:和gt_box有着最高的IoU && IoU超过0.7。如果对于

所有的gt_box,其IoU都小于0.3,则标记为负。


具体步骤为:

首先RPN在已经5层卷积层的feature map上运用滑动窗口,采用3种比例的滑动窗口(Anchor),为1:1,1:2,2:1;并用3个尺寸缩放窗口,共有9种滑动窗口。这些窗口经过卷积形成256维向量。最终通过分挑出得分最高的300个窗口。如下:


这个向量输出给两个同级的全连接的层——bounding box回归层(reg)和bbox分类层(cls)。


(2)RoI Pooling


全称为region of interesting,感兴趣的区域,即候选区域。

roi_pool层将每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。 

作用是把每个大小不一的建议框统一成MxN的图片。如图所示:



(3)Smooth L1 Loss


即边框修正值,用来校正原来的候选窗口,生成预测窗口坐标。

具体公式为:


1式()中为候选框与标定框的差,分别有x,y的坐标和长宽4个;每个分别和标准框相应的值做差再带入smooth函数中,再将4个值相加即为损失。


三.VGG16


VGG16为faster RCNN中比较经典的网络,可以观察其结构便于理解faster RCNN:





猜你喜欢

转载自blog.csdn.net/chenlufei_i/article/details/78916322