SSD与Faster R-CNN 训练过程

一、ssd 训练过程

SSD 模型fine-tune和网络架构

SSD算法评估:AP, mAP和Precision-Recall曲线

二、Faster R-CNN 训练过程

Faster R-CNN,可以大致分为两个部分,一个是RPN网络,另一个是Fast R-CNN网络,前者是一种候选框(proposal)的推荐算法,而后者则是在此基础上对框的位置和框内的物体的类别进行细致计算。

不管是RPN还是Fast R-CNN网络,其网络结构一部分来自于pre-trained model的卷积层(下文简称model),另一部分则是他们各自特有的结构(有卷积和FC,下文简称unique)。
这里,我主要讲的就是训练过程。

第一步:用model初始化RPN网络,然后训练RPN,在训练后,model以及RPN的unique会被更新。

第二步:用model初始化Fast-rcnn网络,注意这个model和第一步一样。然后使用训练过的RPN来计算proposal,再将proposal给予Fast-rcnn网络。接着训练Fast-rcnn。训练完以后,model以及Fast-rcnn的unique都会被更新。
说明:第一和第二步,用同样的model初始化RPN网络和Fast-rcnn网络,然后各自独立地进行训练,所以训练后,各自对model的更新一定是不一样的(论文中的different ways),因此就意味着model是不共享的(论文中的dont share convolution layers)。

第三步:使用第二步训练完成的model来初始化RPN网络,第二次训练RPN网络。但是这次要把model锁定,训练过程中,model始终保持不变,而RPN的unique会被改变。
说明:因为这一次的训练过程中,model始终保持和上一步Fast-rcnn中model一致,所以就称之为着共享。

第四步:仍然保持第三步的model不变,初始化Fast-rcnn,第二次训练Fast-rcnn网络。其实就是对其unique进行finetune,训练完毕,得到一个文中所说的unified network。

这就是总体框架的描述,如果你理解了这些,再想深入内部细节的算法,就不会一头雾水,没有方向。至于细节算法,比如anchor,RoI等等可以参考其他博客文章,都写的不错,只不过从学习者角度来说,他们都把这些算法写在最前面,让学习者看的时候有些茫然。

感谢

你可能感兴趣的:(SSD与Faster R-CNN 训练过程)