cs231n笔记(11++)--faster-rcnn 中 RPN与Fast R-CNN特征共享详细过程

RPN与Fast R-CNN特征共享详细过程

总结:一句话:训练rpn时保持与fast-rcnn共享的卷基层参数不变,fine-tune其它层;反过来也是保持共享卷基层参数不变。

 

Faster-R-CNN算法由两大模块组成:

1.PRN候选框提取模块;

2.Fast R-CNN检测模块。

我们已经描述了如何为生成区域建议训练网络,而没有考虑基于区域的目标检测CNN如何利用这些建议框。对于检测网络,我们采用Fast R-CNN,现在描述一种算法,学习由RPN和Fast R-CNN之间共享的卷积层。

RPN和Fast R-CNN都是独立训练的,要用不同方式修改它们的卷积层。因此需要开发一种允许两个网络间共享卷积层的技术,而不是分别学习两个网络。注意到这不是仅仅定义一个包含了RPN和Fast R-CNN的单独网络,然后用反向传播联合优化它那么简单。原因是Fast R-CNN训练依赖于固定的目标建议框,而且并不清楚当同时改变建议机制时,学习Fast R-CNN会不会收敛。

RPN在提取得到proposals后,作者选择使用Fast-R-CNN实现最终目标的检测和识别。RPN和Fast-R-CNN共用了13个VGG的卷积层,显然将这两个网络完全孤立训练不是明智的选择,作者采用交替训练(Alternating training)阶段卷积层特征共享:

第一步,我们依上述训练RPN,该网络用ImageNet预训练的模型初始化,并端到端微调用于区域建议任务;

第二步,我们利用第一步的RPN生成的建议框,由Fast R-CNN训练一个单独的检测网络,这个检测网络同样是由ImageNet预训练的模型初始化的,这时候两个网络还没有共享卷积层;

第三步,我们用检测网络初始化RPN训练,但我们固定共享的卷积层,并且只微调RPN独有的层,现在两个网络共享卷积层了;

第四步,保持共享的卷积层固定,微调Fast R-CNN的fc层。这样,两个网络共享相同的卷积层,构成一个统一的网络。

注意:第一次迭代时,用ImageNet得到的模型初始化RPN和Fast-R-CNN中卷积层的参数;从第二次迭代开始,训练RPN时,用Fast-R-CNN的共享卷积层参数初始化RPN中的共享卷积层参数,然后只Fine-tune不共享的卷积层和其他层的相应参数。训练Fast-RCNN时,保持其与RPN共享的卷积层参数不变,只Fine-tune不共享的层对应的参数。这样就可以实现两个网络卷积层特征共享训练。相应的网络模型请参考https://github.com/rbgirshick/py-faster-rcnn/tree/master/models/pascal_voc/VGG16/faster_rcnn_alt_opt

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值