RCNN,SPP-NET,FAST_RCNN,FASTER-RCNN结构及训练方法总结

To be done:
1,Fig.1 需要补充图片说明
2, SVD 相关
3,roi 到 feature map 的映射该怎样确定?即 feature map 上的一个点对应的是 原图中的一块区域。
4,faster-rcnn部分总结有待完善。


通常做 detection 的流程是:
1,确定 ROI(即很多粗略的 bounding-boxes)
2,对每个 ROI 进行分类
3,利用每个 ROI 所属类别所对应的 bounding-box regressor 对相应 ROI 的区域进行微调。
4,non-maximum suppression 决定最终的 bounding-box 类别

所以在这个过程中我们就需要:
1,产生 roi区域
2,训练一个 classifier
3,训练一个 class-specific bounding-box regressor来对roi区域进行微调

RCNN,SPP-NET,FAST-RCNN,FASTER-RCNN都是基于以上方法一步一步地改进:


对于RCNN而言,
1,使用selective search作为产生roi的算法
2,引入了CNN+SVM作为分类器,
起初选择的是pre-trained CNN(没有fine-tune) + SVM其中训练的正样本仅仅由groud-truth区域构成,负样本由iou小于0.3的bounding-box区域构成,后来想到fine-tune pre-trained CNN,即fine-tune pre-trained CNN + SVM,训练样本的选择方法不变,实验发现结果变差了,所以最后又改变了训练CNN时选取样本的规则: roi区域中iou大于0.5即作为正样本,小于0.5的为负样本,每个mini-batch部分由采样得到的32个正样本,96个负样本组合而成。这个方法把训练的样本增加了三十倍。
由于实验发现直接选取CNN作为classfier是map会下降,作者推断是因为训练过程中没有强调精准定位,而是iou>0.5即可作为正样本,且因为负样本远远多于正样本,没有向SVM使用‘hard example mining’来训练。
3,bound-box regressor
将roi区域pool5层作为特征,建立预测的bounding-box与ground-truth之间的联系。因此训练是需要选择样本对,将bounding-box与对应的ground-truth区域iou大于0.6的作为训练对,如果一个bounding-box与多于1个ground-truth区域同时满足条件,则不选择该bounding-box.

优点:将 CNN based 的模型成功引入 detection 任务中
缺点:
1, 对于有一张 image 而言,每个 region proposal 都需要通过CNN,没有共享机制。
2,训练是分多个阶段进行的,即先训练好了一个 fine-tune 的CNN 模型。都利用这个 CNN 模型 在训练一个 SVM 和 bounding-box regressor。有可能不同阶段的最优并不能导致总的最优。


对于SPP-NET而言
1,使用selective search作为产生roi的算法
2,引入了CNN+SVM作为分类器,不在需要将一张图片的每个bounding-box区域都通过CNN,提升了训练和测试效率.
文章最开始的动机是为了解决 CNN 只能接受固定输入尺寸的问题,其原因是在于全连层的输入维数必须固定,不然影响的了全连层第一层的权值数量,因此文章使用在卷积层最后一层使用 ROI pooling 的方法使得全连层输入维数固定。进而联想到对于一张图片 region proposal 区域对应的卷积层其相应的区域与单独取出 region proposal 通过卷积后的结果大致相同(忽略zero padding 等一类因素。)又因为 roi pooling 可以对不同大小的卷积层区域提取相同大小的特征维数,所以可以通过对整张图片的一次 forward,得到每个 proposal 的特征。训练时只fine-tune了最后两个全连层,因此可以先对每个bounding-box提取一个固定维数的特征向量,用此特征向量作为训练数据来进行fine-tune最后的全连层
3,训练一个 class-specific bounding-box regressor来对roi区域进行微调


对于fast-rcnn而言
1,使用selective search作为产生roi的算法
2,3,结合roi-pooling,同时训练一个 classifier,class-specific bounding-box regressor,去除了svm

RCNN,SPP-NET,FAST_RCNN,FASTER-RCNN结构及训练方法总结

Fig.2


对于FASTER-RCNN
1,使用RPN产生proposal
训练数据为每个anchor,其中与ground-truth iou大于0.7或与ground-truth iou最大的anchor被选为正样本,iou小于0.3的为负样本。RPN损失项同时包含分类和位置损失
2,3,同FAST-RCNN