Faster RCNN 粗略理解

Faster RCNN 简单来说,是将区域框的建议做成了一个可以训练的网络框架(RPN)。随后对RPN出来的结果来进行 Fast RCNN 的筛选。

RPN 网络如何做到建议框的推荐

首先,说到RPN框的推荐就不得不说,anchor box 一般来说,我个人理解相当于是一个区域覆盖。比如对于一个 800 * 600 的图片,对于 { 128128,256256, 512*512 } 【这个我理解成对原图的像素覆盖】,对应 { 1:2,1:1 ,2:1 } 的覆盖方式,总共会有 9 中的覆盖方式。好了,我们以原图中心为起始点去看这九种方式的覆盖面积:

我们可以看到,以中心点为起始,它的覆盖面积基本上涵盖了整张图片。那么起始我们知道,anchor box 起始是对于最后一层卷积出来后每一点都拥有这么9个覆盖方式。好了,到这里我们可以设想一下,(简化说,比喻不恰当)特征图是原图的一种另一个意义上的缩放。那么我们特征图最左上角一个点,那其实对应的是原图左上角的一片区域信息,根据这个 anchor box 的覆盖方式,我们以这篇区域信息为中心区域,就可以相当于覆盖了左上角一大片的区域信息,以此类推。这样每一个点都含有这9个 anchor box 那么在大概率上,我们其实已经覆盖了原图的所有的内容。
因为每一个点都会有 9个 anchor box,每一个点拥有 deep 深度的信息。所以这个 deep 深度信息需要转化成包涵这个点的 anchor box 是否含有目标信息(就是一个二分类问题),且这个点与 ground truth 之间的坐标位置信息就有 4 个偏移量。所以可以理解成如下: 一个点的 feature (deep 维度 设 K-d)
-- one point K-d → 2 * 9 (用于每个 anchor box 的分类)
-- one point K-d → 4 * 9(用于每个 anchor box 的回归)

训练方式:

Faster R-CNN的训练,是在已经训练好的model(如VGG_CNN_M_1024,VGG,ZF)的基础上继续进行训练。实际中训练过程分为6个步骤:

  • 在已经训练好的model上,训练RPN网络,对应stage1_rpn_train.pt
  • 利用步骤1中训练好的RPN网络,收集proposals,对应rpn_test.pt
  • 第一次训练Fast RCNN网络,对应stage1_fast_rcnn_train.pt
  • 第二训练RPN网络,对应stage2_rpn_train.pt
  • 再次利用步骤4中训练好的RPN网络,收集proposals,对应rpn_test.pt
  • 第二次训练Fast RCNN网络,对应stage2_fast_rcnn_train.p

总图如下:

开始说明分图训练:
这里先看一个总的框架图:

然后根据总的框架图,我遮挡一些内容,就可以看到各部的训练过程:
首先:

  1. RPN 网络的训练过程
  1. faster - rcnn 网络训练过程:

【参考资料】:

  1. https://zhuanlan.zhihu.com/p/31426458 【写的巨好】
  2. https://zhuanlan.zhihu.com/p/24916624

你可能感兴趣的:(Faster RCNN 粗略理解)