faster rcnn的理解

结构:

faster rcnn是fast rcnn的改进版,一个更快的算法。为了理解faster rcnn,建议读者先理解fast rcnn, fast rcnn结构的理解,可以参考我的一篇博客:fast rcnn 理解

                                                                               图一 fast rcnn的结构 

 

                                                                             图二 faster rcnn的结构 

 

从图一和图二对比可知,faster rcnn和fast rcnn在结构上的唯一区别,是RoI(region of interest,感兴趣区域)的获取,fast rcnn是通过selective search来获取的,而faster rcnn是通过RPN(region proposal network)来获取的。RPN可以通过我的另一篇博客了解:RPN理解 。RPN生成原输入图像上的proposal(候选框)。这些proposal再按位置关系映射到feature map,得到feature map上对应的RoI。

faster rcnn之所以更快,是因为selective search很慢,用CPU在一张图片上操作,需要花2秒。而RPN是一个很小的网络,而且在训练时,与后面的检测器共享权重,所以不管是训练,还是预测,都比fast rcnn要快很多。

训练

faster rcnn有主体的检测网络,还有一个生成proposal的小网络RPN,为了把faster rcnn设计成端到端的网络,这两部分网络需要同时训练。然而,不能简单地使用梯度下降同时优化两个网路的损失值就行了,因为检测网络依赖于固定的RoI,同时优化两个网络,会使检测网络每次使用的RoI都不同,这可能导致训练无法收敛。为了解决这个问题,并且使两个网络共享卷积层的权重,faster rcnn的作者们设计了一个4步交替训练法,参考图三:

                                                                                             图三  训练解释 

1.按S1这条线路训练RPN。使用ImageNet预训练模型作为CNNs的初始化权重。训练过程参考RPN理解

2.按S2这条线路训练检测器。也是使用ImageNet预训练模型作为CNNs的初始化权重。使用第1步产生的RoI来作为这一步的RoI。

在第一次循环中,这两步,是单独训练的,CNNs的权重没有共享

3.将第2步得到的CNNs的权重,作为Step 1这条线路的CNNs权重初始化,训练RPN,并且固定CNNs的权重,只更新S1这条线路独有的权重,也就是RPN层的权重。

从此开始RPN和检测器开始共享CNNs的权重了

4.固定CNNs的权重,训练Step 2这条路的检测器,只更新Step 2这条线路独有的权重,也就是检测器的全连接层。

交替迭代这4步,进行训练。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值