Faster_rcnn

Faster R-CNN

继RCNN,Fast R-CNN后于2015年提出,主要用区域生成网络(RPN)代替了Fast R-CNN的Selective Search方法。下面讲下一下Faster R-CNN所涉及到的所有步骤及涉及到的其他思想。特征提取网络以VGG-16为例。

一、概述

目标识别需要完成两个任务,定位和分类。分类已经有很久的历史了,长久以来都是用特征提取然后逻辑回归,这点毋庸置疑。而如何定位目标(目标分割)才是整个目标识别算法中的核心。例如R-CNN采用的是经典的图像处理方法,Selective Search,通过一些颜色纹理等特征来达到目标分割的任务,但是这样太耗时间,果然被抛弃。Fast R-CNN并没有修改定位这部分,只是将定位后的检测算法通过卷积网络一步实现,达到提升速度的效果,这里后面会详谈。而Faster R-CNN则直接用深度学习的方法实现目标分割,这一下大大提高了定位的速度,且减少了待检测块的数量,成为2015年目标识别领域最好的算法(state-of-the-art)。尽管Faster R-CNN,速度已经很快,但要达到实时检测仍然有些不够,特别是对于类似自动驾驶的场景。2016年,YOLO(You Only Look Once:Unified, Real-Time Object Detection)算法被提出,速度有质的提升,采用的方法当然与Faster R-CNN有所不同。YOLO算法是通过将图片分成 n * n大小的栅格,然后对于每个栅格,识别网络同时给出位置坐标和类别概率,一步到位速度当然有提升,但带来的缺陷就是一个栅格只能检测一个物体,且定位有一定误差。后面的YOLO版本在吸取一些先进的思想后有比较大的提高,甚至在精确度上超过Faster R-CNN。

二、特征提取网络

卷积 + 池化 + 激活 向来是卷积神经网络的标配,VGG网络也不例外。RPN网络和Fast R-RCNN网络公共结构如下:

image → conv3-64 → conv3-64 →pool2 → conv3-128 →conv3-128 → pool2 → conv3-256 → conv3-256 → conv3-256 → pool2 → conv3-512 → conv3-512 →conv3-512 →pool2→conv3-512 → conv3-512→ conv3-512

VGG网络特点是只用3*3大小的卷积核

三、 RPN网络

滑动窗口

初始图像经过特征提取网络得出特征图(feature),要想识别出图片所有可能存在的物体,穷举法必然是我们的第一反应。而对应于图片识别的穷举法便是滑动窗口了,顾名思义,就像滑动的窗口一样一步一步探测窗口内是否含有物体。可是对特征图滑窗可以真的映射到原图片吗?答案是肯定的,正是因为如此Fast RCNN才能达到比较高的速度。具体如何实现可以参考(OverFeat: Integrated recognition , localization and detection using convolutional networks)。仅仅有窗口并不够,我们要的是物体的具体坐标,而窗口只能给出大致的位置,或者说该物体的局部位置,于是有了锚箱(anchor box)的想法。对于每个窗口,有k个锚箱与之对应。论文中给出的锚箱有9个,三种面积{1282,2562,5122} * 三种比例{1:1,1:2,2:1}。对于每个锚箱,有6个输出向量,2个变量代表是目标和不是目标的概率,另外4个是关于坐标的预测。既然每个锚箱都有了具体的位置,为什么还要对坐标进行具体预测呢?实质上锚箱只能给出模糊的位置,所以每个锚箱对应到具体的物体还需要添加偏移量。具体公式

tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha)
tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha)

x,y,w,h 分别表示预测值;
xa,ya,ha,wa表示Anchor Boxes;
tx,ty,tw,th表示真实物体位置

感受野

对于特征图中的每个点,对应原图片中的面积大小,称之为感受野。这里有一个疑惑,感受野的大小(已经计算经过VGG网络的特征图,感受野为228)竟然可以小于锚箱的大小,不能理解。
这里给出相关计算公式

nout=nout+2pk/s+1

jout=jins

rout=rin+(k1)jin

startout=startin+((k1)/2p)jin

n表示特征点个数,j表示特征点数的距离,r表示感受野,start有效表示开始点(考虑paddle)

具体网络

feature(conv3-512) conv3-512conv1-18,conv1-36(18为9 * 2类别预测,36为9 * 4位置预测)

损失函数

L(pi,ti)=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)

Lcls=(pilogpi+(1pi)log(1pi))

Lreg(ti,ti)=smoothL1(titi)

smoothL1(x)={0.5x2,if |x|<1|x|0.5otherwise.

四、Fast R-CNN

RPN网络预测物体位置,然后将位置信息传给Fast R-CNN检测网络,提取给定位置后的特征图信息进行分类,并进行位置精修得出最后的结果

ROI层

RPN预测的物体大小不一,意味着给出的特征图的向量维数不一致。然而对于后面的全连接层必须保证维数一致。因此这里借鉴了SPPNET的思想,进行了MaxPooling。对于任意特征图m * n,固定输出为7 * 7矩阵。即进行卷积核大小为m/7 * n/7的MaxPooling。

具体网络

feature(conv3-512),RPNproposalROI(7*7*512)FC(4096)FC(4096)(SVD)FC21,(SVD)FC84

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页