R-CNN 是第一种利用深度学习方法进行目标检测任务的网络,是深度学习方法进行目标检测的开山之作。
注:本文的分析忽略了“选择性算法”。更进一步的细节可以参考相关大佬的文章或者直接看paper.
网络核心思想是:基于候选区域的卷积神经网络的目标检测
方法思路:首先从输入的image中,提取很多个(2000个)类别独立的候选域(region proposals),然后针对每一个候选域,利用CNN网络进行特征提取,生成一个固定长度的特征向量,最后对每个候选域经CNN提取的特征向量,利用支持向量机(SVM)来预测输入候选域的目标类别,并从该目标类别下的众多候选框中选取“最优框”作为该目标检测的预测输出。、
创新点:
(1)提出了“迁移学习”的方式:即采用在ImageNet已经训练好的模型,然后在目标数据集上进行训练“微调”,其具体做法为:
1.在源数据集上(例如ImageNet上)预训练神经网络模型,即“源模型”,保存其模型参数
2.在目标数据集上创建一个新的网络模型,即目标模型,然后加载源模型的模型参数,除输出层外,我们一般不在目标模型中使用源模型的输出层,修改或是减去源模型的输出层,使用匹配目标数据集类别个数的输出层。
3.随机初始化添加/修改层的模型参数
4.最后在目标数据集上训练模型,输出层将“0基础训练”,而其他各层(即迁移过来的各层的网络参数)将在所加载参数的基础上进行“微调”
(2)使用卷积神经网络进行目标检测工作。
R-CNN网络的原理流程如下