本博文旨在记录小编工作之余研读RCNN系列论文时的一些疑惑和笔记,以及整理的一些流程图,方便日后查阅。如有理解有误的地方,欢迎大家指正,期待和大家一起学习、进步。
目录:
- R-CNN
- SPP-Net
- Fast-RCNN
- Faster-RCNN
- 演变汇总
R-CNN
论文链接:https://arxiv.org/pdf/1311.2524.pdf
操作流程
- step-1. 由selective search产生约2k region proposals;
- step-2. 利用每个proposal的信息从原图得到img_region,然后resize到ConvNet的输入尺寸,得到resize_region;
- step-3. 将resize_region输入ConvNet,在目标层截取feature,并存入disk;
- step-4. 将抽取的feature输入到SVM进行分类;
- step-5. 利用bbox regression对分类后的bbox进行refine.
方法缺点
- 训练分为多个阶段,步骤繁琐:微调网络+训练SVM+训练边框回归器;
- 训练耗时,占用磁盘空间大;5000张图像产生几百G的特征文件;
- 速度慢:使用GPU,VGG16模型处理一张图像需要47s;
- 测试速度慢:每个候选区域需要运行整个前向CNN计算;
- SVM和回归是事后操作,在SVM和回归过程中CNN特征没有被学习更新.
SPP-Net
论文链接:https://arxiv.org/pdf/1406.4729.pdf
操作流程
- step-1. 利用selective search算法在图像中从上到下提取2000个左右的Region Proposals;
- step-2. 将整张图片输入ConvNet提取feature,并将proposal映射到特征图得到roi_feature;
- step-3. 利用Spatial-Pyramid-Pooling从roi_feature提取统一大小的feature
- step-4. 将抽取的feature输入到SVM进行分类;
- step-5. 利用bbox regression对分类后的bbox进行refine.
优点
- 提出了Spatial-Pyramid-Pooling方法,突破了传统ConvNets输入图片尺寸必须固定的限制;
- 相对于R-CNN而言,所有的roi_feature共享feature_map,大大提升了计算效率;
缺点
- 依然是multi-step的操作流程,没有实现end-to-end;
- SVM和回归是事后操作,在SVM和回归过程中CNN特征没有被学习更新.
Fast R-CNN
论文链接:https://arxiv.org/pdf/1504.08083.pdf
github : https://github.com/rbgirshick/fast-rcnn
操作流程
- step-1. 输入测试图像;
- step-2.利用selective search算法在图像中从上到下提取2000个左右的Region Proposals;
- step-3.将整张图片输入ConvNet,进行特征提取;
- step-4.把建议窗口映射到ConvNet的最后一层卷积feature map上;
- step-5.通过RoI pooling层使每个建议窗口生成固定尺寸的feature map;
- step-6.利用Softmax Loss和Smooth L1 Loss对分类概率和Bounding box regression联合训练.
与R-CNN的不同点
- 在最后一层卷积层后加入了ROI pooling layer;
- 损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练
why Fast ?
- R-CNN : 每个建议框在经过拉伸后都会单独通过ConvNet提取特征. 实际上,这些建议框之间大量重叠,造成算力的浪费.
- Fast R-CNN : 在原始图像传入ConvNet后得到的feature_map上加入proposal-info来获取Region的feature.
Faster R-CNN
论文链接:https://arxiv.org/pdf/1506.01497.pdf
github:https://github.com/jwyang/faster-rcnn.pytorch
tutorial:http://www.telesens.co/2018/03/11/object-detection-and-classification-using-r-cnns/
操作流程
- step-1. 输入测试图像;
- step-2. 将整张图片输入ConvNet,进行特征提取;
- step-3. 用RPN生成建议窗口(proposals),每张图片保留约300个Region Proposals;
- step-4. 把建议窗口映射到ConvNet的最后一层卷积feature map上;
- step-5. 通过RoI pooling层使每个RoI生成固定尺寸的feature map;
- step-6. 利用Softmax Loss和Smooth L1 Loss对分类概率和Bounding box regression联合训练.
与Fast R-CNN的不同点
- Fast使用Selective Search算法来生成proposal,faster则使用RPN来产生proposal;
改进点
- 基于FCN的RPN产生的proposal数量少但质量更高;
- 生成proposal的网络和用于detection的网络共享ConvNet;
参考文献
[1]. Rich feature hierarchies for accurate object detection and semantic segmentation[CVPR-2014]
[2]. Fast R-CNN[ICCV-2015]
[3]. https://www.cnblogs.com/hellcat/p/9629942.html
[4]. https://blog.csdn.net/wodemimashi125/article/details/81591362
[5]. https://blog.csdn.net/qq_28123095/article/details/79765999
[6].https://www.cnblogs.com/guoyaohua/p/8994246.html [耀华]