通俗理解faster-rcnn的rpn网络

其实rpn网络非常简单,只是被各种五花八门的人解读的比较玄学,下图中虚线下面部分就是rpn网络:

 

虚线上面是几个卷积池化,说白了就是提特征,在虚线这一层的上面会得到C个H*W的特征图,这个特征图大小是知道的(不会求的可以自己去面壁思过了,这是卷积的最最最基础的基本功了)这里可以假设100个14*14大小的特征图。

接下来我们我们用一个(3,3,100,256)的卷积核去对这一层进行卷积,如果padding为same的话,得到的256个特征图依然是14*14。现在我们这么理解,我们把256个14*14的三维数据,压缩为14*14的二维数据,这样每一个点就是256维的数据,其实这256维数据代表了原始图片中某一块区域的特征(,感受野概念,不明白的可以再回去好好研究卷积的基础知识),而且这一区域的位置是可以通过映射关系求出来的,假设它在原图的位置是P(x,y,w,h),不过没有人去求它(尴尬),取代的操作是在一区域P随便画了几个框(几个框中可能有与P完全重合的,也有可能比P大,也有可能比P小,反正几个框都尼玛与P在位置上部分重合),原论文中是画了9个框。

好了,现在算算我们可以画几个框,一个点对应9个框,也就是14*14*9个框,将近2k个框。接下来我们就来看这2k个框在原始图像中的坐标怎么得到。

我们知道原始原始图片(本文中图上的inputimage)大小为224*224,现在为14*14。下图展示了每一个点对应原始图的锚点。第一紫色点的坐标(7.5,7.5)(矩阵中位置不能出现小数,具体向上取整还是向下取整自己看着办),然后以这个紫色点为中心画9个框,每个面积,长宽比都是提前定义好的,所以很容就可以把原始图片左上角的9个框的位置全部写出来,然后将这九个框依次往右和往下平移,步长为16(224/14),就可以得到所有框的原始图位置信息喽。

接着上面的前向传播,我们得到了14*14大小的feature,每一个点有256维的特征,我们先对一个点的特征做一次全连接,也就是参数256*18,接着我们对这个再做一次全连接,参数为256*36,如果对14*14个做如上处理,等于做一个1*1*18和1*1*36的卷积。18代表9个框的分类结果,每一个框有个两个类(前景,背景),36代表9个框的偏移值,每一个框有四个偏移坐标(记住,这是偏移坐标,相对于它真是位置偏移的幅度)。

训练:在训练的时候,每一个框的标签有两个,一个是类型(前景,背景),这个想当然就可以知道是看这个框和真是图片对象中的对象框有没有重叠,设置一个阈值T,超过T则为前景,没超过则为背景。另一个标签是位置,相当然的可以把离此框最近的对象的真实框作为该候选框regression_get.现在标签有了,数据有了,网络有了,训练就ok了。至于各种细节,什么非极大值抑制,损失函数的选择,各种小trick都是虎皮,看起来吓人,其实都是虎骨的陪衬,掌握核心思想,才能举一反三。

预测:在预测过程中就更简单了,每个框预测出来都有一个类型,一个位置偏移值,将类别中属于前景的框拿出来,然后用前景框的真实值加上偏移值就是我们要推荐的区域。

以上就是rpn的全部讲解,当然只是粗粒度的解释,如果想对一个算法深入理解,不亲手录一遍代码,不可能掌握很深刻的,虽然rpn能解释的通,但是总感觉漏洞百出,逻辑上也不能说完美,就比如其中anchor。

对anchor的理解:

下面这段话是对anchor(我觉得是我看过的解读中最最合适的一段话,来自链接:https://www.zhihu.com/question/42205480/answer/378130538,作者:大缺弦):

如果说一块 feature map 通过网络的学习,只关注感受野内某一块区域的信息,这个是合理的,但要说它同时来自 9 个不同的区域,这显然有点魔幻的感觉,更不用说有的区域根本就超出了它感受野的范围。

anchor 让网络学习到的是一种推断的能力。网络不会认为它拿到的这一小块 feature map 具有七十二变的能力,能同时从 9 种不同的 anchor 区域得到。拥有 anchor 的 rpn 做的事情是它已知图像中的某一部分的 feature(也就是滑动窗口的输入),判断 anchor 是物体的概率。anchor 可能比感受野大,也可能比感受野小,如果 anchor 比感受野大,就相当于只看到了我关心的区域(anchor)的一部分(感受野),通过部分判断整体,如果比感受野小,那就是我知道比我关心的区域更大的区域的信息,判断其中我关心的区域是不是物体。


 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值