转载请注明出处:http://blog.csdn.net/ben_ben_niao/article/details/52005989
文章只做思路的总结,有理解不妥之处望指正。
简介:
- 这一系列主要分为三部:提取候选区域,提特征,分类。
- 传统的方法中,这三步有1)滑窗+尺度来遍历,2)sift,hog,cn特征等,3)SVM,Adaboost分类算法。
- 深度学习的方法有1)ss,EdgeBox,RPN,2)CNN特征,3)SVM,softmax
1.R-CNN
- 简介:
- 作者Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik:【UC Berkeley】
- 发表年限,14年,文论[1].
- 优点,见效果。缺点,速度超慢[~50s/image],特征重复计算[SPP-Net提出后解决],BBox没有置信度,训练分开:fine-tune网络+SVM+BBox。
- 步骤:
- 用selective方法提取proposal[~2k]。方法有selective,edgeBox,和bing的方法。三种对比recall:selective>edgeBox>Bing,速度相反。
- cnn提特征并分类.
- BBox回归。
- 框架图:
- 由上图,可以看见,检测的具体步骤为:
- 输入图像,从图像中利用SS提取~2K个候选区域(proposal)
- 将proposal,resize到227*227作为网络的输入。
- 取fc7的特征输入到SVM进行分类。
- 用pool5后的feature进行BBox回归(mAP提升3~4%)。
- train的具体步骤的不同在于: 先对pre-train的AlexNet/VGG网络进行fine-tune,得到CNN网络部分,然后用网络提取特征来训练SVM
- 效果:与DPM相比,在VOC2007上mAP从~34%提升到~58%
2.SPP-net
- 简介:
- 作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun
- 发表年限,2015,论文[2]
- 优点,引入金字塔采样,从而较少proposal的重复提特征
- 训练依然存在R-CNN的问题,每次都单独训练[Fast-RCNN提出后解决]。
- 步骤:
- 流程,主要解决R-CNN特征重复计算问题,做法为:整张图进行卷积,在con5_3的featureMap上,对每个proposal进行三个尺度的划分,见下图Figure3,使特征维度固定为(4*4+2*2+1)*512
3.FR-CNN
- 简介:
- 作者Ross Girshick [Microsoft Research],文献[3]
- 特征,引入ROI-pooling(SPP-精简版),将R-CNN的SVM分类器换为softmax,并引入multi-box回归的loss函数,从而实现了end-to-end.
- 缺点:proposal耗时,并且和CNN网络无关联。
- 步骤:
从上图可知,检测步骤为:
- CNN卷积后得到FeatureMap,利用ROI-pooling将每个proposal特征固定为7*7大小,作为fc的输入。
- 最后一层分为不同的分支:softmax分类分支和BBox回归分支,将两个分支的loss函数结合,从而实现end-to-end的训练,但是proposal耗时,并且和网络分离问题还是没解决[Faster-RCNN提出RPN解决]。
- 耗时~3s/image,主要时间在proposal的计算耗时,VGG网络分类只需要~0.3s.
- 效果:
4.Faster-RCNN
- 简介:
- 作者Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun
- 特点,RPN网络:解决proposal的问题,引入anchor概念和共享网络,从而大大加速[~5fps]。
- 步骤:
流程图,和anchor
由上图可知,具体流程如下:
- 和F-RCNN一样,提取特征。
- 在特征图上首先运用RPN网络提取proposal.
- 将提取的proposal进行分类(和fast-RCNN一样,只不过proposal用RPN替换SS).
注:RPN的过程为,假设最后的FeatureMap为40*60,则采用3*3的窗口在featureMap上滑动,同时预测9个尺度[anchor],后面接两个分类和回归网络,这里的分类只是前景背景分类,回归是得到较好的proposal,最后得到40*60*9个proposal.
- 关于anchor的问题:
这里在详细解释一下:(1)首先按照尺度和长宽比生成9种anchor,这9个anchor的意思是conv5 feature map 3x3的滑窗对应原图区域的大小.这9个anchor对于任意输入的图像都是一样的,所以只需要计算一次. 既然大小对应关系有了,下一步就是中心点对应关系,接下来(2)对于每张输入图像,根据图像大小计算conv5 3x3滑窗对应原图的中心点. 有了中心点对应关系和大小对应关系,映射就显而易见了[见http://m.blog.csdn.net/article/details?id=51247371].在整个faster RCNN算法中,有三种尺度。
原图尺度:原始输入的大小。不受任何限制,不影响性能。
归一化尺度:输入特征提取网络的大小,在测试时设置,源码中opts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224。
train的时候是先训练RPN,然后用RPN来训练分类网络,这样交替,其中featureMap是共享的。
- 效果:
参考文献:
[1].R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014
[2].Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
[3].Fast R-CNN
[4].Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks