之前的文章中对于Faster R-CNN的总体流程进行了梳理,详情参见这里。本篇文章将要以源码中的结构为基础,对于训练的整体流程进行梳理,以便后续源码的阅读。
首先我们要明确的是,实际的Faster R-CNN中训练分为6个步骤:
- 第一次训练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.pt
上述的迭代训练过程使用了两次循环,因为作者通过实践表明,再进行更多的循环网络的效果并不会再得到提升了。
由于两次迭代的过程基本相同,因此仅仅分析第一次迭代过程。