事先声明
本文只是笔者对经典论文《Fast R-CNN》的个人阅读总结,可能存在错误,请留言批评一起学习进步
看这篇文章前,建议阅读01 R-CNN阅读总结
R-CNN系列论文之Fast R-CNN
- 1 论文相关信息
- 2 什么是Fast R-CNN?
- 3 Fast R-CNN要解决的问题是什么?
- 4 Fast R-CNN的贡献或创新点(以及一些个人看法)
- 5 结论及感悟
- 6 参考文献
1 论文相关信息
标题: Fast R-CNN
时间: 2015
出版源: ICCV
论文观看下载地址: http://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html
备用下载地址: https://pan.baidu.com/s/1jonJc0xhgZXlzQKW-WCE9w
提取码:iq0n
原文作者给的代码复现地址(原文代码都是基于Caffe的):
01 R-CNN(http://www.cs.berkeley.edu/~rbg/rcnn)
02 Fast R-CNN (https://github.com/rbgirshick/fast-rcnn)
2 什么是Fast R-CNN?
- (1)从文章的标题可以清晰知道,Fast R-CNN最大的优点就是相对于R-CNN更快(表现在训练速度、测试速度上)
- (2)Fast R-CNN可以简单看为对R-CNN与Sppnet的融合.由于R-CNN是对每个目标候选框都进行卷积神经网络的正向传递,导致了R-CNN慢,所以作者结合Sppnet的共享计算思想,提出了Fast R-CNN
- (3)Fast R-CNN与R-CNN一致都是two-stage
- (4)Fast R-CNN的结构是经过训练的端到端的多任务损失。该方法首先将输入图像与感兴趣区域(ROLS)输入到全卷积网络中;其次将每个ROI集合成一个固定大小的特征映射;第三,通过完全连接层(FCS)映射到一个特征向量;最后输出Softmax概率和每类bounding-box回归偏移量。
3 Fast R-CNN要解决的问题是什么?
- (1)R-CNN网络训练与测试速度都很慢
在R-CNN网络中,一张图经由selective search算法提取约2k个建议框(这2k个建议框大量重叠),而所有建议框变形后都要输入AlexNet CNN网络提取特征(即约2k次特征提取),会出现上述重叠区域多次重复提取特征,提取特征操作冗余 - (2)R-CNN训练所占内存大
20类即20个SVM分类器和20类即20个Bounding-box 回归器在训练过程中需要大量特征作为训练样本,这部分从CNN提取的特征会占用大量存储空间 - (3)R-CNN操作繁琐
R-CNN网络需要对建议框进行形变操作后形变为227×227 size再输入CNN网络提取特征,其实像AlexNet CNN等网络在提取特征过程中对图像的大小并无要求,只是在提取完特征进行全连接操作的时候才需要固定特征尺寸R-CNN中将输入图像形变为227×227可正好满足AlexNet CNN网络最后的特征尺寸要求,然后才使用SVM分类器分类
注:这部分思想来源于博客https://blog.csdn.net/WoPawn/article/details/52463853
4 Fast R-CNN的贡献或创新点(以及一些个人看法)
- (1)弥补R-CNN与Sppnet缺点.相对于R-CNN和SPPnet在检测速度、检测精度(MAP)以及空间存储上都有较大提升
- (2)简化了训练过程,通过一个微调阶段联合优化Softmax分类器和bounding-box回归器(R-CNN是将Softmax分类器、svms和回归器训练在三个不同的阶段)
- (3)R-CNN使用Alexnet网络,而Fast R-CNN使用的是vgg16(那我是不是改用ResNet效果会更好呢?不同的网络结构真的能够使结果更好吗?使用深层的网络一定更好吗?)
- (4)微调了vgg16中的conv层提高了MAP值
- (5)使用了单尺度模式训练和测试
- (6)微调conv层可以说是Fast R-CNN的最大亮点之一.
对于是否需要对vgg16中的所有conv层进行微调,作者进行了实验,发现对conv3_1及以上conv层进行微调效果才更好(如果换成其他网络呢?是否真的需要对conv3_1及以上conv层进行微调呢?R-CNN证实了卷积神经网络的主要表达能力在卷积层中,在这里是否可以去除全连接层?) - (7)作者们验证了多任务损失的单阶段训练相对于单纯的分类训练提高了纯分类的准确性
这不是废话吗,三个臭皮匠都顶个诸葛亮了,更何况多任务呢?不过这是不是集成的思想呢? - (8)在解决尺度不变性问题时,作者使用了两种方式处理:brute-force(单一尺度)和image pyramids(多尺度),证实了多尺度应该比单一尺度效果好,并给出深度网络擅长直接学习尺度不变性
单一尺度直接在训练和测试阶段将image定死为某种scale,直接输入网络训练就好,然后期望网络自己能够学习到scale-invariance的表达;多尺度在训练阶段随机从图像金字塔(缩放图片的scale得到,相当于扩充数据集)中采样训练,测试阶段将图像缩放为金字塔中最为相似的尺寸进行测试 - (9)证实了更多的训练数据确实能够提高模型精度,但更多的候选区域却可能导致精度变低,所以候选区域并不一定越多越好
换句话说,一个人学的知识越多,他在解决同类似问题时效果会更好,简称熟能生巧。不过在真实的应用场景中我们可能得不到大量的数据进行训练,这时该怎么办?现在有人提出用GAN生成模拟数据,但是模拟出来的数据往往要保证与原数据集是同一分布,但这是否合理? - (10)相对于R-CNN用SVM作为分类器,Fast R-CNN使用了Softmax作为分类器,且实验结果表明Softmax的分类精度更好(那R-CNN中为什么要用SVM作为分类器呢?)
- (11)作者在文章结尾说:稀疏的目标建议似乎能提高检测器的质量
5 结论及感悟
对于该文章,笔者自己通过精读后首先写下了自己的读后感和该文章的创新点和贡献,然后寻找其他人的读后感进行对比.结果发现自己通过精读得到的对文章的很多观点、看法都与原文有着较大误差,说明自己在阅读论文方面还有着许多欠缺,特别是在拜读了这篇博客后,更是感触颇深,发现自己对论文的见解还停留在表面,没有深度剖析出文章内涵,这是由于自己基础理论不够扎实而造成的,所以以后在周日更新论文后,在周三会更新论文中的一些基本理论便于理解.
6 参考文献
【1】Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
强烈荐读
【2】大佬读后感 https://blog.csdn.net/WoPawn/article/details/52463853
【3】https://www.jianshu.com/p/fbbb21e1e390
看这篇文章前,建议阅读01 R-CNN阅读总结
- 更多精彩内容欢迎关乎我的公众号