R-CNN
1、前文
R-CNN是2014年的老文章了,无论作为CNN应用于目标检测中的首篇文章,或是作为Fast R-CNN等等后续文章的基础,都有读的必要性,因此这里对R-CNN的主要流程进行了分析与总结,没有过于深入地分析其特点与细节问题。如有错误之处,还请指正
2、文章解决的问题
① 如何将CNN应用在目标检测里(模型设计问题)
② 训练样本数不足时,如何提升检测性能(模型训练问题)
3、解决方法
3.1 问题①
提取多个建议框–>AlexNet提取出特征向量–>SVM对特征向量进行分类
3.1.1 region proposals
对于一张输入图片来说生成多个建议框 region proposals,文中使用selective search生成2000个。
这一部分为独立部分,使用方法可以有多种,例如:
- objectness
- selective search
- category-independen object proposals
- constrained parametric min-cuts(CPMC)
- multi-scale combinatorial grouping
- Ciresan
一篇博客下的一位大佬的补充(正确性有待商议):
3.1.2 特征提取
采用Alexnet,网络的输入图像大小固定为:227×227,(因为使用了全连接层,所以输入大小必须固定)
因此需要对所有生成的建议框进行变形缩放扩充到227×227大小
网络结构:
卷积层×5 + 全连接层×2
AlexNet结构示意图:(图片来源:https://zhuanlan.zhihu.com/p/47391705)
3.1.3 分类检测
对于每一类都训练一个SVM分类器,即有N个SVM分类器
然后分别使用各类的分类器对每个特征向量进行分类打分(每个特征向量对应N个分数,每一类对应2000个分数(预测框))
对于每一类的打分结果使用非极大值抑制NMS去除掉分数较低的建议框。
3.2 问题②
使用迁移学习
首先在ILSVRC2012数据集上进行预训练,然后在目标数据集上利用随机梯度下降法继续训练网络参数。
文章中将所有与Ground Truth的IOU ≥0.5 的region proposals 视为有效的建议框,同时设定SGD的学习率为0.001
4、总体训练流程
5、测试流程
6、缺点
①使用SS提取建议区域region proposals
每张图片提取2000+,过于耗费时间
②对每个region proposal分别进行特征提取
耗费时间,计算重复
③输入尺寸固定
泛化能力差
④多阶段训练
需要分别训练网络、分类器SVM、回归模块
导致存储特征需要占用大量的磁盘空间
7、参考文献
论文地址:https://arxiv.org/abs/1311.2524
https://blog.csdn.net/briblue/article/details/82012575
https://blog.csdn.net/qq_30091945/article/details/98463403