这部分主要介绍了通过Alternating Optimization是如何训练RPN网络的,它是怎么样的一个过程。算法过程如下图所示,M4模型是最终的输出。
在该训练过程中,主要分为两大主要的Stage——stage1和stage2。可以看到他的Prototxt文件命名也是通过划分这样两个stage来命名的。stage1包括步骤1-4,stage2包括步骤5-8。
本文主要展现了步骤2与步骤5是如何进行的,即训练RPN网络的过程。RPN网络是Faster R-CNN中最有魅力的部分,所以理解RPN网络的工作原理是十分有意义的。
本人根据stage1_rpn_train.pt文件中的定义,画了网络结构图如下:
首先是由RoIDataLayer生成的各个blob——data、imfo、gt_boxes,该层由python定义。在这里未对该函数进行详细解释的原因,读者只需记住,该函数输出的是什么就可以了。
data就是原始图像,在这里被缩放成了一个某一边长为600的图像。(我这里原始图像是320 x 240,被放大成600 x 800,这里将小边放大成600.如果有一边超过1000,那么就采取其他措施……细节不多说了)
im_info包括图像原始大小与缩放的比例
gt_boxes包括标注数据集的各个box的(xmin,ymin,xmax,ymax)
data被送入卷积网络,这个网络可以是ZF、VGG_16、VGG_CNN_M_102