传统的目标检测方法大概分为区域选择、特征提取(SIFT、HOG等)、分类器(SVM等)三个部分,其主要问题有两方面:一是区域选择策略没有针对性、时间复杂度高,窗口冗余;另一方面手工设计的特征鲁棒性较差。以下介绍基于Region Proposal的深度学习目标检测算法R-CNN->SPP-NET->Fast R-CNN->Faster R-CNN.
R-CNN
创新点
- 采用CNN网络提取图像特征,从经验驱动的人造特征范式HOG、SIFT到数据驱动的表示学习范式,提高特征对样本的表示能力;
- 采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题(迁移学习)。
整体流程框架
- 生成region proposal: 方法选用selective search,大约2K个/图,并wrap到固定尺寸(227x227,各向同性缩放)
- 特征提取:CNN从每个region proposal中提取出一个4096维的特征(Alexnet等,5卷积层,2全连接层),输出大致为2000x4096
- 类别分类:SVM对4096维特征进行分类,得到一个2000x20的矩阵(20种类别),然后对每一列进行NMS非极大值抑制
- 位置修正:回归器校正非极大值抑制后剩下的region proposal,输入CNN网络pool5层的特征,输出为xy方向的缩放和平移,具体公式见参考1
训练方法
- 对CNN的有监督预训练:在ILSVRC样本集(只有分类标签)上对CNN网络进行有监督预训练,此时网络最后的输出是4096维特征->1000类分类的映射,并不完全是R-CNN的部分。
- 特定样本下CNN的微调:即domain specific fine-tuning, 在本文中是在PASCAL VOC 2007上进行,学习率是第1步预训练学习率的1/10,将第1步中的1000类分类输出改为21类(20类+背景),注意此处仍然是softmax,而不是SVM。
- 正样本:Ground Truth+与Ground Truth相交IoU>0.5的Region proposal
- 负样本:与Ground Truth相交IoU≤0.5的建议框
- 每一类的SVM的训练:输入正负样本在CNN网络计算下的4096维特征(fc7层)
- 正样本:Ground Truth
- 负样本:与Ground Truth相交IoU<0.3的建议框,由于负样本太多,采用hard negative mining的方法在负样本中选取有代表性的负样本
- 每一类的Bounding-box regression训练:
- 正样本:与Ground Truth的IoU最大,且IoU>0.6的Region Proposal
补充
- NMS非极大值抑制是什么?
选择一类(即SVM输出的某一列),对该类下每一个bounding box根据score排序,把score最大的bounding box作为选定的框,计算其余bounding box与当前最大score对应的box的IoU,去除IoU大于设定的阈值的bounding box(说明两者重复了)。然后重复上面的过程,直至候选bounding box为空,最后再将score小于一定阈值的选定框删除得到这一类的结果(然后继续进行下一个分类)。 - 为什么微调时和训练SVM时所采用的正负样本阈值(0.5 vs. 0.3】不一致?
微调阶段是由于CNN对小样本容易过拟合,需要大量训练数据,故对IoU限制宽松;SVM由于其适用于小样本训练,故对样本IoU限制严格。这也可以解释