Faster R-CNN中RPN和anchor解释

Faster R-CNN中的RPN和anchor机制

  • 前段时间写了一篇关于Detection的文章Object Detection 之 R-CNN/SPPNet/Fast R-CNN/Faster R-CNN,只是粗浅的介绍了下Faster R-CNN之前Detection的网络架构,直到今天看到RPN,实在是不知道怎么做到生成proposal
    的,看了很多博客,感觉都不是特别靠谱。现在好像明白了,在这里记录一下
    R-CNN解决Object Detection问题
  • Fast R-CNN嫌弃R-CNN太慢,做了很多重复计算的东西,于是改进SSPNet,组合Classification和Regression,做成single Network,使其end2end进行训练,速度上提高了不少,但还是基于Selective Search 产生proposal,现在成了Fast R-CNN计算瓶颈。
  • Faster R-CNN嫌弃Fast R-CNN使用Selective Search,毕竟一张图像需要消耗0.3s用于生成proposal,Faster R-CNN不能忍,于是交给CNN去生成proposals,于是Region Proposal Network(RPN)应运而生:
  • 先上图看一下Faster R-CNN操作流程:
  • Faster R-CNN中RPN和anchor解释_第1张图片 图片说明:Faster R-CNN=Fast R-CNN+RPN,其中Fast R-CNN结构不变;RPN负责生成proposals,配合最后一层的feature map,使用ROI Pooling,生成fixed length的feature vector。我们详细讨论一下RPN的操作过程
    • Faster R-CNN中RPN和anchor解释_第2张图片 图片说明,红框只是一个滑窗的操作过程,注意这里的anchor是原图像像素空间中,而不是feature map上的。这样的话,就可以理解anchor咯。。。
      • anchor是RPN的核心:假设我们现在得到的feature map为W * H * C(13 * 13 * 256就是feature map的width=13,height=13,channel=256),我们如何产生网络需要的proposals呢?我们在feature map使用滑动窗口的操作方式(stride=1,padding=1),当前滑窗的中心在原像素空间的映射点称为anchor,以此anchor为中心,生成k(paper中default k=9, 3 scales and 3 aspect ratios)个proposals。
      • 在此feature map滑动一个mini-network,这个network输入是3 * 3 * 256,经过3 * 3 * 256 * 256的卷积,得到1 * 1 * 256的低维向量;接下来进行分支:①Classification:经过1 * 1 * 256 * 18的卷积核,得到1 * 1 * 18的feature vector,分别代表9个proposals的是/不是Object的概率(这里有一个疑惑,为什么要生成一对?生成一个是Object的概率不就好了?也许是为了设计方便?);②Regression:经过1 * 1 * 256 * 36的卷积核,得到1 * 1 * 36的feature vector,分别代表9个proposals的(center_x,center_y,w,d)。
    • 上述操作只是一个3 * 3的滑动窗口的操作过程,实际操作过程中,必须将13 * 13的feature map均执行一边;于是在RPN中,产生了两个损失函数:①Classification loss②Regression loss。
    • 这样的话,通过滑动窗口和anchor机制,我们就可以找到固定比例、一定大小的proposals:①物体大小不同导致的proposal被覆盖②物体aspects ratios不同导致proposals也被覆盖
    • 由上可知,NRP可以代替Selective Search产生proposals,而且最关键的一点是RPN 更快
    • ROI pooling V.S. SSP Pooling
      • ROI是只有一层的SSP Pooling:ROI Pooling将proposal在feature map上的对应区域分为W * H 份,每一份取Max/Avg 将其放到固定位置
      • SSP Pooling是将proposal分为(4 * 4 / 2 * 2 / 1 * 1份,然后进行拼接,得到fixed length=21的feature vector)

好像是这样的,有不妥之处还请大神们多多批评指正。

*作者:gengmiao 时间:2018.05.08,原创文章,转载请保留原文地址、作者等信息*

你可能感兴趣的:(Deep,Learning)