RCNN学习笔记
R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation,” in Proceedings of the IEEE conference on computer vision and pattern recognition, 2014.
1. Background
至2010年RBG大神提出DPM ( Deformable parts models ) 算法以来,目标检测领域一直在传统方法DPM上做一些集成优化,难以显著性的改善目标检测的效果。直到2012年AlexNet在ILSVRC2012的比赛中大放异彩,CNN的出现颠覆了传统的handcraft特征提取模式,其强大的特征表征能力展现了无尽的潜力。
此阶段江湖人称RBG大神的Ross Girshick利用深度学习来做目标检测,并于2013年发表了目标检测算法Region CNN简称RCNN。RCNN显著提升VOC2012的mAP约30%。关于RBG大神,大家耳熟能详的目标检测里程碑算法都有他的工作,其主页地址见下。
RBG大神的个人主页:Ross Girshick (rbg)
arXiv:Ross Girshick
2. Training
训练分为两个部分,先粗调,再微调。
- 在分类数据集ImageNet上进行初始训练,IoU阈值为0.5;
- 在检测数据集PASCAL_VOC上进行微调,IoU阈值为0.3;
- batch_size: 128 = 32P + 96N,实际负样本比例可能远大于96。
3 Testing
- 输入图像,使用Selective Search算法从待检测图像中生成2K左右个区域推荐框,候选框可能包含要检测的目标,将推荐框统一缩放至:227×227;
- 使用DCNN (conv layer: 5, fc layer: 2) 提取每个推荐框的特征:固定为4096维的特征向量;
- 将提取的特征向量送入线性SVM分类器进行分类,并执行NMS筛选出最佳的推荐框;
- 和上一步同时送入全连接网络,使用bound box regression回归坐标位置,调整推荐框的位置和标注值接近。
4 Problem
R-CNN虽然设计巧妙,但仍存在很多缺点:
-
重复计算。R-CNN虽然不再是暴力穷举(划窗),但通过Selective Search生成推荐框的方案依然有两千个左右的候选框,这些候选框均需要单独经过backbone网络提取特征,计算量依然很大。并且候选框之间存在重叠,造成计算浪费;
-
训练测试多阶段执行,不够简洁。候选区域提取、特征提取、分类、回归都是分开操作,中间数据还需要单独保存出来。
-
速度慢。前面的缺点导致R-CNN很慢,GPU上处理一张图片需要十几秒,CPU上则需要更长时间。
-
无论输入图片尺寸如何,在推荐框处须强制缩放成固定大小:227×227,参考论文附录可以发现改种方法会造成物体形变,进而特征减弱或丢失,导致检测性能下降。原因:在卷积神经网络中,卷积层并不要求输入图像的尺寸固定,只有第一个全连接层需要固定尺寸的输入,因为它和前一层之间的权重矩阵是固定大小的,其他的全连接层也不要求图像的尺寸固定。如果在最后一个卷积层和第一个全连接层之间做一些处理,将不同大小的图像变为固定大小的全连接层输入就可以解决问题。