RCNN、SPP、Fast RCNN、Faster RCNN
基于侯选区域(Region Proposal)的深度学习目标检测法
1、R-CNN
论文:Rich feature hierarchies for accurate object detection and semantic segmentation
- 候选区域生成(Selective Search)
- 用深度网络提取特征(Alexnet)
- 特征送入每一类的SVM分类器
- 使用回归器精修候选框位置
利用Seclective Search算法选取大约2000个候选区域,将所有候选区域warp成相同大小的图片,输入到Alexnet中提取特征,得到feature map后,将feature输入到各类别的SVM分类器中进行分类,最后通过回归器对预测的边框进行修正。
2、SPP
论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 产生region proposal
- 卷积层,对整张图做卷积,获得featur map,根据原始坐标与feature map上坐标的对应关系,在featur map上选择proposal
原始坐标跟feature map上坐标的对应关系在论文的附录A中给出了,也可以参考这篇博客http://blog.csdn.net/hjimce/article/details/50187655(懒得打公式)
SPP对整张图片做卷积,RCNN是对每个proposal都要做一次卷积,proposal之间如果有重叠,重叠部分就进行了多次卷积,因此SPP在速度上比RCNN要快。
- 空间金字塔池化层
对featur map用4*4,2*2,1*1的kernel提取出21=4*4+2*2+1维的特征向量,根据proposal的大小自动调整kernel中每个块的大小。
- 最后的部分跟RCNN是一样的,都是用SVM分类器进行分类,再用回归器对边框进行精修。
3.Fast RCNN
FRCNN对比之前的RCNN和SPP,前面的region proposal还是一样的,到提取roi pooling部分用的还是SPP, 对每个roi,获取的特征进入两个全连接层,一个是softmax,替代了之前的SVM分类器,另一个是robust L1 loss,用于box regression.Fast RCNN实现了region proposal之后的end-to-end.
4.Faster RCNN
对比前面三种方法,Faster RCNN实现了包括region proposal的end-to-end.
这篇博客写的很详细 http://blog.csdn.net/zy1034092330/article/details/62044941 又偷懒了:)
- Convolutional Network
跟之前不一样了,Faster RCNN的第一步是对图片卷积获得feature map.
- Region Proposal Network
RPN用于获得region proposal,通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals
- Roi Pooling
- Classification
- Box Regression
再进行box regression,获取更高精度的bounding box.
(图片来自http://blog.csdn.net/zy1034092330/article/details/62044941)
从上面的网络结构图就很容易了解Faster RCNN的网络结构了:)