您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > fasterrcnn中对RPN的理解_20180802
Faster-rcnn中对RPN的理解2017年05月28日00:45:55原文中rcnn部分的截图。上图中,k=9,非常重要!!!256d是指,对于此处的需要进行区域提取的点,对应256个特征图中的相同位置的点。这256个特征图来自上级卷积层或池化层的输出。即,对于特征图中某个中心点对应的k=9个anchorboxes中的每个anchorboxes来说,都会采用nxn的卷积核生成1*1的特征值。共有256个特征图中对应位置的中心点会输出对应尺度和形状的anchorboxes所对应的1*1的特征值,构成了256维的向量。这256维的向量共同输入一个全连接网络,从而生成两个scores和4个coordinates。图片来自网上,黑色是滑动窗口的区域,就是上图的红色区域的slidingwindow其他颜色9种窗口就是anchor机制生成的9种区域这里要把slidingwindow和卷积层的滑动区别开,slidingwinsow的stride步长是1!(想到经典的harr+adaboost人脸检测)slidingwindow只是选取所有可能区域,并没有额外的什么作用!以下是我对faster-rcnn中的RPN的理解:经过前面的网络生成了一个多通道的特征图,接下来就是通过在这些特征图上应用滑动窗口加anchor机制进行目标区域判定和分类了,目标检测,就是包括目标框定和目标判定。所以这里的滑动窗口+anchor的机制的功能就类似于fastrcnn的selectivesearch生成proposals的作用rpn网络用来生成proposals用原文的话讲“weslideasmallnetworkovertheconvfeaturemapoutputbythelastsharedconvlayer”1.RPN是一个卷积层(256维)+relu+左右两个层的(clclayer和reglayer)的小网络应用在滑动窗口区域上的,所有的滑动窗口共享这个RPN这个卷积层对比普通的卷积层1,它是一个将nxnxchannels的输入通过256个nxn大小的卷积核生成1*1*256的featuremap,即最后是256维的特征2,它的输入就是滑动窗口nxn对应的特征图区域,经过它卷积后特征图变成1x1了3,由于此时输出的是1*1*256,所有clslayer和reglayer是用1x1的卷积核进行进一步的特征提取,这里1x1卷积核卷积时,对各个通道都有不同的参数,因为输入又是1x1的图片,所以相当于全连接的功能,相当于把1*1*256展平成256,然后进行全连接2.关于anchor机制anchor机制就是在nxn的滑动窗口上,进一步生成k种不同大小的可能区域。滑动窗口加anchor机制基本把目标可能出现的区域都涵盖了。所以滑动窗口加anchor就替代了滑动窗口加金字塔的功能。3.RPN损失计算RPN提取出的256d特征是被这k种区域共享的,输给clclayer和reglayer后,只要一次前向,就同时预测k个区域的前景、背景概率(1个区域2个scores,所以是2k个scores),以及boundingbox(1个区域4个coordinates,所以是4k个coordinates),具体的说:clclayer输出预测区域的2个参数,即预测为前景的概率pa和pb,损失用softmaxloss(crossentropyloss)(本来还以为是sigmoid,这样的话只预测pa就可以了?)。需要的监督信息是Y=0,1,表示这个区域是否groundtruth。reglayer输出预测区域的4个参数:x,y,w,h,用smoothL1loss。需要的监督信息是anchor的区域坐标{xa,ya,wa,ha}和groundtruth的区域坐标{x*,y*,w*,h*}。计算损失时,我们需要确定k个区域中的各个区域是不是有效的,是前景还是背景。有效的区域才计算损失。上面的监督信息:Y,{xa,ya,wa,ha}(k个),{x*,y*,w*,h*}(1个)是根据文章中的样本产生规则得到的:对于这k个区域1分配正标签给满足以下规则的区域1.1与某个groundtruth(GT)的IoU最大的区域1.2与任意GT的IoU大于0.7的区域(使用规则2基本可以找到足够正样本,但对于所有区域与GT的IoU都不大于0.7,可以用规则1)(一个GT可能分配正标签给多个anchor,具体怎么分配?)2分配负标签给与所有GT的IoU都小于0.3的区域。非正非负的区域不算损失,对训练没有作用RPN只对有标签的区域计算loss。最后参与训练RPN的区域都有参与最后rcnn的训练,只是只有RPN预测为前景的区域在rcnn才有计算回归损失在使用fasterrcnn的时候,rpn预测为前景的区域才是proposal,然后按照softmaxscore从大到小排序选出前2000个区域,在用NMS进一步筛选出300个区域,然后输给后面的rcnn进行预测(注意此时rcnn的预测类别不包括背景,已经RPN输出的已经默认是前景了)88888888888888888888888888888888888888888888888888888888888888RPN全称是RegionProposalNetwork,RegionProposal的中文意思是“区域选取”,也就是“提取候选框”的意思,所以RPN就是用来提取候选框的网络;1.RPN的意义RPN第一次出现在世人眼中是在FasterRCNN这个结构中,专门用来提取候选框,在RCNN和FastRCNN等物体检测架构中,用来提取候选框的方法通常是SelectiveSearch,是比较传统的方法,而且比较耗时,在CPU上要2s一张图。所以作者提出RPN,专门用来提取候选框,一方面RPN耗时少,另一方面RPN可以很容易结合到FastRCNN中,称为一个整体。RPN的引入,可以说是真正意义上把物体检测整个流程融入到一个神经网络中,这个网络结构叫做FasterRCNN;FasterRCNN=RPN+FastRCNN图1FasterRCNN的整体结构我们不难发现,RPN在整个FasterRCNN中的位置,处于中间部分;2.RPN的运作机制我们先来看看FasterRCNN原文中的图:图2RPN的结构图2展示了RPN的整个过程,一个特征图经过slidingwindow处理,得到256维特征,然后通过两次全连接得到结果2k个分数和4k个坐标;相信大家一定有很多不懂的地方;我把相关的问题一一列举:1.RPN的input特征图指的是哪个特征图?2.为什么是用slidingwindow?文中不是说用CNN么?3.256维特征向量如何获得的?4.2k和4k中的k指的是什么?5.图右侧不同形状的矩形和Anchors又是如何得到的?首先回答第一个问题,RPN的输入特征图就是图1中FasterRCNN的公共FeatureMap,也称共享FeatureMap,主要用以RPN和RoIPooling共享;对于第二个问题,我们可以把3x3的slidingwindow看作是对特征图做了一次3x3的卷积操作,最后得到了一个channel数目是256的特征图,尺寸和公共特征图相同,我们假设是256x(HxW)。对于第三个问题,我们可以近似的把这个特征图看作有HxW个向量,每个向量是256维,那么图中的256维指的就是其中一个向量,然后我们要对每个特征向量做两次全连接操作,一个得到2个分数,一个得到4个坐标,由于我们要对每个向量做同样的全连接操作,等同于对整个特征图做两次1x1的卷积,得到一个2xHxW和一个4xHxW大小的特征图,换句话说,有HxW个结果,每个结果包含2个分数和4个坐标;图3问题1,2,3的解答描述图这里我们需要解释一下为何是2个分数,因为RPN是提候选框,还不用判断类别,所以只要求区分是不是物体就行,那么就有两个分数,前景(物体)的分数,和背景的分数;我们还需要注意:4个坐标是指针对原图坐标的偏移,首先一定要记住是原图;此时读者肯定有疑问,原图哪里来的坐标呢?这里我要解答最后两个问题了:首先我们知道有HxW个结果,我们随机取一点,它跟原图肯定是有个一一映射关系的,由于原图和特征图大小不同,所以特征图上的一个点对应原图肯定是一个框,然而这个框很小,比如说8x8,这里8是指原图和特征图的比例,所以这个并不是我们想要的框,那我们不妨把框的左上角或者框的中心作为锚点(Anchor),然后想象出一堆框,具体多少,聪明的读者肯定已经猜到,K个,这也就是图中所说的Kanchorboxes(由锚点产生的K个框);换句话说,HxW个点,每个点对应原图有K个框,那么就有HxWxk个框默默的在原图上,那RPN的结果其实就是判断这些框是不是物体以及他们的偏移;那么K个框到底有多大,长宽比是多少?这里是预先设定好的,共有9种组合,所以k等于9,最后我们的结果是针对这9种组合的,所以有HxWx9个结果,也就是18个分数和36个坐标;图4问题4,5的解答描述图3.RPN的整个流程回顾图5RPN整个流程最后我们再把RPN整个流程走一遍,首先通过一系列卷积得到公共特征图,假设他的大小是Nx16x16,然后我们进入RPN阶段,首先经过一个3x3的卷积,得到一个256x16x16的特征图,也可以看作16x16个256维特征向量,然后经过两次1x1的卷积,分别得到一个18x16x16的特征图,和一个36x16x16的特征图,也就是16x16x9个结果,每个结果包含2个分数和4个坐标,再结合预先定义的Anchors,经过后处理,就得到候选框;整个流程如图5。888888888888888888888888888888888888888888888888888888888888888888888888888区域推荐网络RPN2017年08月13日21:53:32阅读数:12455RegionProposalNetworkRPN的实现方式:在conv5-3的卷积featuremap上用一个n*n的滑窗(论文中作者选用了n=3,即3*3的滑窗)生成一个长度为256(对应于ZF网络)或512(对应于VGG网络)维长度的全连接特征.然后在这个256维或512维的特征后产生两个分支的全连接层:(1)reg-layer,用于预测proposal的中心锚点对应的proposal的坐标x,y和宽高w,h;(2)cls-layer,用于判定该proposal是前景还是背景.slidingwindow的处理方式保证reg-layer和cls-layer关联了conv5-3的全部特征空间.事实上,作者用全连接层实现方式介绍RPN层实现容易帮助我们理解这一过程,但在实现时作者选用了卷积层实现全连接层的功能.(3)个人理解:全连接层本来就是特殊的卷积层,如果产生256或512维的fc特征,事实上可以用Num_out=256或512,kernel_size=3*3,stride=1的卷积层实现conv5-3到第一个全连接特征的映射.然后再用两个Num_out分别为2*9=18和4*9=36,kernel_size=1*1,stride=1的卷积层实现上一层特征到两个分支cls层和reg层的特征映射.(4)注意:这里2*9中的2指cls层的分类结果包括前后背景两类,4*9的4表示一个Proposal的中心点坐标x,y和宽高w,h四个参数.采用卷积的方式实现全连接处理并不会减少参数的数量,但是使得输入图像的尺寸可以更加灵活.在RPN网络中,我们需要重点理解其中的anchors概念,Lossfucntions计算方式和RPN层训练数据生成的具体细节.Anchors:字面上可以理解为锚点,位于之前提到的n*n的slidingwindow的中心处.对于一个slidingwindow,我们可以同时预测多个proposal,假定有k个.k个proposal即k个referenceboxes,每一个referencebox又可以用一个scale,一个aspec
本文标题:fasterrcnn中对RPN的理解_20180802
链接地址:https://www.777doc.com/doc-4268458 .html