1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation
技术路线:selective search + CNN + SVMs
Step1:候选框提取(selective search)
训练:给定一张图片,利用seletive search方法从中提取出2000个候选框。由于候选框大小不一,考虑到后续CNN要求输入的图片大小统一,将2000个候选框全部resize到227*227分辨率(为了避免图像扭曲严重,中间可以采取一些技巧减少图像扭曲)。
测试:给定一张图片,利用seletive search方法从中提取出2000个候选框。由于候选框大小不一,考虑到后续CNN要求输入的图片大小统一,将2000个候选框全部resize到227*227分辨率(为了避免图像扭曲严重,中间可以采取一些技巧减少图像扭曲)。
Step2:特征提取(CNN)
训练:提取特征的CNN模型需要预先训练得到。训练CNN模型时,对训练数据标定要求比较宽松,即SS方法提取的proposal只包含部分目标区域时,我们也将该proposal标定为特定物体类别。这样做的主要原因在于,CNN训练需要大规模的数据,如果标定要求极其严格(即只有完全包含目标区域且不属于目标的区域不能超过一个小的阈值),那么用于CNN训练的样本数量会很少。因此,宽松标定条件下训练得到的CNN模型只能用于特征提取。
测试:得到统一分辨率227*227的proposal后,带入训练得到的CNN模型,最后一个全连接层的输出结果---4096*1维度向量即用于最终测试的特征。
Step3:分类器(SVMs)
训练:对于所有proposal进行严格的标定(可以这样理解,当且仅当一个候选框完全包含ground truth区域且不属于ground truth部分不超过e.g,候选框区域的5%时认为该候选框标定结果为目标,否则位背景),然后将所有proposal经过CNN处理得到的特征和SVM新标定结果输入到SVMs分类器进行训练得到分类器预测模型。
测试:对于一副测试图像,提取得到的2000个proposal经过CNN特征提取后输入到SVM分类器预测模型中,可以给出特定类别评分结果。
结果生成:得到SVMs对于所有Proposal的评分结果,将一些分数较低的proposal去掉后,剩下的proposal中会出现候选框相交的情况。采用非极大值抑制技术,对于相交的两个框或若干个框,找到最能代表最终检测结果的候选框(非极大值抑制方法可以参考:http://blog.csdn.net/pb09013037/article/details/45477591)
R-CNN需要对SS提取得到的每个proposal进行一次前向CNN实现特征提取,因此计算量很大,无法实时。此外,由于全连接层的存在,需要严格保证输入的proposal最终resize到相同尺度大小,这在一定程度造成图像畸变,影响最终结果。