关于Faster-RCNN训练细节
Faster RCNN训练:
四部训练法:
Faster R-CNN,可以大致分为两个部分,一个是RPN网络,另一个是Fast R-CNN网络,前者是一种候选框(proposal)的推荐算法,而后者则是在此基础上对框的位置和框内的物体的类别进行细致计算。首先训练 RPN,用 RPN 输出的 proposals 训练 Fast R-CNN。Fast R-CNN 精调后用于初始化 RPN 网络参数,如此循环迭代。
不管是RPN还是Fast R-CNN网络,其网络结构一部分来自于共享的卷积层(下文简称 共享cov),另一部分则是他们各自特有的结构。
这里,我主要讲的就是训练过程。
第一步:用 Imagenet 初始化共享cov 部分初始化RPN网络,然后训练RPN,在训练后,共享cov以及RPN的特有部分参数会被更新。
第二步:用Imagenet 初始化共享cov 部分初始化Fast-rcnn网络,这里是重新初始化。然后使用训练过的RPN来计算proposal,再将proposal给予Fast-rcnn网络。接着训练Fast-rcnn。训练完以后,共享cov 以及Fast-rcnn的特有部分都会被更新。
说明:第一和第二步,用同样的COV初始化RPN网络和Fast-rcnn网络,然后各自独立地进行训练,所以训练后,各自对cov的更新一定是不一样的(论文中的different ways),因此就意味着model是不共享的(论文中的dont share convolution layers)。
第三步:使用第二步训练完成的 共享cov 来初始化RPN网络,第二次训练RPN网络。但是这次要把 共享cov 锁定,训练过程中,model始终保持不变,而RPN的unique会被改变。
说明:因为这一次的训练过程中, 共享cov始终保持和上一步Fast-rcnn中共享cov一致,所以就称之为着共享。
第四步:仍然保持第三步的 共享cov不变,初始化Fast-rcnn,第二次训练Fast-rcnn网络。其实就是对其特有部分进行finetune,训练完毕,得到一个文中所说的unified network。
anchor如何生成?:https://blog.csdn.net/sinat_33486980/article/details/81099093
参考:https://blog.csdn.net/weixin_40449426/article/details/78141635