《fasterrcnn中对RPN的理解》由会员分享,可在线阅读,更多相关《fasterrcnn中对RPN的理解(7页珍藏版)》请在金锄头文库上搜索。
1、Faster-rcnn 中对 RPN 的理解2017年 05月 28日 00:45:55conv feature mapintermediate layer256-dFigure 1: Left: Region Proposal Network (RPN). Right: Example detections using RPN proposalson PASCAL VOC 2007 test. Our method detects objects in a wide range of scales and aspect ratios.原文中rcnn部分的截图。上图中,k=9,非常重要! !
2、256d是指,对于此处的需要进行区域 提取的点,对应256个特征图中的相同位置的点。这256个特征图来自上级卷积层或池化层的 输出。即,对于特征图中某个中心点对应的k=9个anchor boxes中的每个anchor boxes来说,都 会采用nxn的卷积核生成1*1的特征值。共有256个特征图中对应位置的中心点会输出对应尺 度和形状的anchor boxes所对应的1*1的特征值,构成了 256维的向量。这256维的向量共同 输入一个全连接网络,从而生成两个scores和4个coordinates。图片来自网上,黑色是滑动窗口的区域,就是上图的红色区域的 sliding window 其他颜
3、色 9 种 窗口就是anchor机制生成的9种区域这里要把sliding window和卷积层的滑动区别开,sliding winsow的stride步长是1!(想到经典 的 harr+adaboost 人脸检测)sliding window 只是选取所有可能区域,并没有额外的什么作用!以下是我对 faster-rcnn 中的 RPN 的理解:经过前面的网络 生成了一个 多通道的特征图,接下来就是通过在这些特征图上应用 滑动窗口 加anchor机制进行目标区域判定和分类了,目标检测,就是包括目标框定和目标判定。所以这里的滑动窗口 + anchor的机制的功能就类似于fast rcnn的sele
4、ctive search生成 proposals 的作用rpn 网络用来生成 proposals 用原文的话讲 “we slide a small network over the conv feature map output by the last shared conv layer”1.RPN是一个卷积层(256维)+ relu +左右两个层的(clc layer和reg layer)的小网络 应用在滑动窗口区域上的,所有的滑动窗口共享这个RPN这个卷积层对比普通的卷积层1,它是一个将n x n x channels的输入通过256个n x n大小的卷积核生成1 * 1 * 256的 f
5、eature map,即最后是256维的特征2, 它的输入就是滑动窗口 nxn对应的特征图区域,经过它卷积后特征图变成1 x 1 了3,由于此时输出的是1 * 1 *256,所有cis layer和reg layer是用1 x 1的卷积核进行进一步的 特征提取,这里1 x 1卷积核卷积时,对各个通道都有不同的参数,因为输入又是1 x 1的图片,所以相当 于全连接的功能,相当于把1 * 1 * 256展平成256,然后进行全连接2关于anchor机制anchor机制就是在n x n的滑动窗口上,进一步生成k种不同大小的可能区域。滑动窗口 加anchor机制基本把目标可能出现的区域都涵盖了。所以滑
6、动窗口加anchor就替代了滑动窗 口加金字塔 的功能。3. RPN损失计算RPN提取出的256d特征是被这k种区域共享的,输给clc layer和reg layer后,只要一次前 向,就同时预测k个区域的前景、背景概率(1个区域2个scores,所以是2k个scores),以及 bounding box ( 1 个区域 4 个 coordinates,所以是 4k 个 coordinates),具体的说:clc layer 输出 预测区域的2个参数,即预测为前景的概率pa和pb,损失用softmax loss (cross entropy loss)(本来还以为是sigmoid,这样的话只预
7、测pa就可以了?)。需要的监督信息是Y=0,1,表示 这个区域是否ground truth。reg layer输出预测区域的4个参数:x,y,w,h,用smooth L1 loss。需 要的监督信息是anchor的区域坐标xa,ya,wa,ha和ground truth的区域坐标x*,y*,w*,h*。计算损失时,我们需要确定k个区域中的各个区域是不是有效的,是前景还是背景。有效的区 域才计算损失。上面的监督信息:Y, xa,ya,wa,ha (k个),x*,y*,w*,h* (1个)是根据文 章中的样本产生规则得到的:对于这k个区域1 分配正标签给满足以下规则的区域1.1与某个ground
8、truth(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才有 计算回归损失在使用faster rcnn的时候,rpn预测为前景的区域才是proposal,然后按照softmax score从大到 小排序
9、选出前2000个区域,在用NMS进一步筛选出300个区域,然后输给后面的rcnn进行预 测(注意此时rcnn的预测类别不包括背景,已经RPN输出的已经默认是前景了)88888888888888888888888888888888888888888888888888888888888888RPN全 称 是Region Proposal Network ,RegionProposal的中文意思是“区域选取”,也就是“提取候选框”的意思,所以RPN就是用来提取候选 框的网络;1. RPN的意义RPN第一次出现在世人眼中是在Faster RCNN这个结构中,专门用来提取候选框,在RCNN和 Fast
10、RCNN等物体检测架构中,用来提取候选框的方法通常是Selective Search,是比较传统的 方法,而且比较耗时,在CPU上要2s 一张图。所以作者提出RPN,专门用来提取候选框,一 方面RPN耗时少,另一方面RPN可以很容易结合到Fast RCNN中,称为一个整体。RPN 的引入,可以说是真正意义上把物体检测整个流程融入到一个神经网络中,这个网络结构叫做 Faster RCNN;Faster RCNN = RPN + Fast RCNN图1 Faster RCNN的整体结构我们不难发现,RPN在整个Faster RCNN中的位置,处于中间部分;2. RPN的运作机制我们先来看看Fast
11、er RCNN原文中的图:图 2 RPN 的结构图 2 展示了 RPN 的整个过程,一个特征图经过 sliding window 处理,得到 256 维特征,然后通 过两次全连接得到结果 2k 个分数和 4k 个坐标;相信大家一定有很多不懂的地方;我把相关的 问题一一列举:1. RPN的input特征图指的是哪个特征图?2. 为什么是用sliding window?文中不是说用CNN么?3. 256 维特征向量如何获得的?4. 2k 和 4k 中的 k 指的是什么?5. 图右侧不同形状的矩形和Anchors又是如何得到的?首先回答第一个问题,RPN的输入特征图就是图1中Faster RCNN的
12、公共Feature Map,也称共 享 Feature Map,主要用以 RPN 和 RoI Pooling 共享;对于第二个问题,我们可以把3x3的sliding window看作是对特征图做了一次3x3的卷积操作, 最后得到了一个channel数目是256的特征图,尺寸和公共特征图相同,我们假设是256 x (H x W )。3x3的卷积公共Feature Map256 x (H x W)HxW个特征向量 每个向量256维 conv feature map | 同 手*分数:前景+背景做两次1X1的卷积,分别得到2xHxW和4xHxW的特征图坐标:x, y, w, h 匹2个分数 256维
13、向量个坐标/anchor boxes2/scores| 4才 cooniinalcs M layer、A ny layerXXIl 25ZNx(HxW)才 anchor boxes |Mures4X CkH.rdinjies| |I-I每个点对应图上K个框HxWxk框 Anchor boxes偏移 + Anchors框多大?长宽比例多少?二堆框框一一映射7Tchbr256 x (HxW)对于第三个问题,我们可以近似的把这个特征图看作有HxW个向量,每个向量是256维,那 么图中的 256 维指的就是其中一个向量,然后我们要对每个特征向量做两次全连接操作,一个 得到 2 个分数,一个得到 4 个
14、坐标,由于我们要对每个向量做同样的全连接操作,等同于对整 个特征图做两次1 x 1 的卷积,得到一个2 x H x W 和一个4 x H x W 大小的特征图,换句话说 有HxW个结果,每个结果包含2个分数和4个坐标; H!intermediate la*r.|conv future map! 口!我们得到HxW个结果:2scores + 4个是相对于原图的陪桶的竊禎I图 3 问题 1,2,3 的解答描述图这里我们需要解释一下为何是2个分数,因为RPN是提候选框,还不用判断类别,所以只要求 区分是不是物体就行, 那么就有两个分数, 前景(物体)的分数, 和背景的分数; 我们还需要注意:4 个坐
15、标是指针对原图坐标的偏移, 首先一定要记住是原图; 此时读者肯定有疑问,原图哪里来的坐标呢? 这里我要解答最后两个问题了:首先我们知道有HxW个结果,我们随机取一点,它跟原图肯定是有个一一映射关系的,由于 原图和特征图大小不同,所以特征图上的一个点对应原图肯定是一个框,然而这个框很小,比 如说8 x 8,这里8是指原图和特征图的比例,所以这个并不是我们想要的框,那我们不妨把框 的左上角或者框的中心作为锚点(Anchor),然后想象出一堆框,具体多少,聪明的读者肯定 已经猜到,K个,这也就是图中所说的K anchor boxes (由锚点产生的K个框);换句话说,H x W个点,每个点对应原图有K个框,那么就有H x W x k个框默默的在原图上,那RPN的结 果其实就是判断这些框是不是物体以及他们的偏移;那么K个框到底有多大,长宽比是多少? 这里是预先设定好的,共有9种组合,所以k等于9,最后我们的结果是针对这9种组合的, 所以有H x W x 9个结果,也就是18个分数和36个坐标;图4问题4, 5的解答描述图3. RPN的整个流程回顾3x3卷积1 x 1卷积(2x9)x16x16】X 1卷积(4x9)x16x16256x16x161