Faster RCNN学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjunbob/article/details/52622349
Faster RCNN学习笔记
一、资源介绍
       Faster R-CNN是对Fast R-CNN的改进,paper可以参考点击打开链接
       Fast R-CNN和R-CNN在前两篇博客中都已经有了详细的分析。
       这里简单回顾一下:
       R-CNN将图像提取ROI,将所有的ROI都放入CNN中,通过SVM得到每一个ROI的分类,第二部将每一个ROI做bounding-box的回归,得到最终的检测目标分类以及位置。
       Fast R-CNN在R-CNN的基础上进行了改进,把整个图片作为CNN的输入,ROI在CNN得到的conv feature map中寻找映射到的patch,同时把SVM分类换成了Softmax分类并且和bounding-box回归一起进行SGD。在速度上得到了很大的改进。
       卷积神经网络运算的时间已经大大缩短了,但是产生region proposal的时间却成为了一个瓶颈。
       Faster R-CNN对于region proposal的产生提出了一种新的算法,称为RPN(region proposal network),可以大大降低以前用selective search产生ROI所用的时间。在卷积层之后加入RPN,利用RPN产生的region proposal会继续输入到ROI pooling层中,之后的步骤和Fast R-CNN中的类似,产生分类以及bounding-box的回归。

大致过程如下:


二、RPN的具体实现

2.1 RPN的结构
       要说Faster R-CNN与Fast R-CNN的区别,唯一的区别在RPN上。
RPN的输入是一个图像,输出是这个图像中可能包含检测物体的region proposals以及对应的评分score。


在卷积网络最后一层conv layer产生feature map之后跟上一个小的滑动网络,这层滑动网络用一个n*n(n一般取3)的sliding window滑动窗对这个feature map进行加窗。对于VGG16模型来说,卷积网络conv layer最终产生512个feature map,每一个feature map尺寸约为40*60,利用这个n*n的窗,对于这512个feature map进行加窗计算可以得到一个数值,总共512个n*n的窗可以得到一个512维的特征向量(512-d)。
这里还要引入一个概念叫做anchor box,anchor box以滑动窗的中心点为中心,使用三种尺度和三种长宽比总共九种anchor,这里k=9,这9种anchor分别进行滑动窗口计算,也就是每个点都对应9个region proposal,对于一个40*60的feature map,总共有40*60*9 = 21600 ≈ 20000个region proposal。(对于分类器,输出为2k,对应是或不是的可能性;对于bounding-box regression,输出为4k,对应四个参数,后面有介绍)
所以整个网络的参数计算为滑动窗参数:3*3*512*512 = 2359296
                                              分类和bbox回归(一个全连接):512*(2+4)*k = 27648
至此,RPN网络的基本结构已经解释完毕,这20000个region proposal作为fast R-CNN中ROI pooling的输入继续进行classify和bounding-box的回归。

2.2 training & loss function 网络训练和损失函数

在训练的过程中,我们给每一个anchor对应的区域标注label。
正标签:(1)对于那些和任意一个ground truth box的重叠区域IOU最大的,标正标签。
       (2)对于那些和指定的ground truth的IOU超过0.7的,标正标签
负标签:与所有的ground truth的IOU都小于0.3的,标负标签。

损失函数:
Fast R-CNN类似,损失函数同时考虑了分类的损失和bounding-box regression的损失。其中pi是对于anchor i的预测概率,如果为正标签,则pi* = 1,如果为负标签,则pi* = 0;其损失用的是对数损失。
ti是bounding-box的参数,包含4个参数分别为xywh,定义如下:
这里的xy为bounding-box对应的中心点坐标,w和h对应的是bounding-box的尺寸,xa、wa、ya、ha对应的是预测的回归后的准确的bounding-box的对应坐标和尺寸。
bounding-box的损失函数如下定义:
其中R为smooth函数定义如下:
        
训练时,所有的新layer的W都初始化为0均值的高斯分布。损失函数的λ一般取10。

三、总结
      
        Faster R-CNN在Fast R-CNN之前加入了一个RPN网络,用于更快的提取所有的region proposal。加速的效果很明显。
R-CNN的识别速度为47秒/张
Fast R-CNN的识别速度为3秒/张
Faster R-CNN的识别速度为0.05-0.2秒/张(5-17 fps)

Faster R-CNN的准确率可以达到PASCAL VOC 2007上是73.2%mAP(平均准确率),PASCAL VOC 2012上是70.4%。

猜你喜欢

转载自blog.csdn.net/zhangjunbob/article/details/52622349