论文下载地址:RCNN:http://fcv2011.ulsan.ac.kr/files/announcement/513/r-cnn-cvpr.pdf
Fast RCNN:https://arxiv.org/abs/1504.08083
Faster RCNN:https://arxiv.org/abs/1506.01497
RCNN系列是应用最广泛的目标检测的算法。本章我们主要讲解一下RCNN,FastRCNN,FasterRCNN三个目标检测算法之间的联系和区别。
1.RCNN
RCNN的运行过程主要分为三个部分:1.候选区域的选取 2.CNN提取特征 3.分类和标注目标。
1.候选区域的选取:使用Selective Search方法在每张图片上选取1k~2k张候选区域,传入到网络中提取特征。这一步是最浪费时间的大约要耗时2-3秒左右。
2.CNN特征提取:将第一步得到的候选区域传送到CNN网络里面进行处理。
3.分类和标注:将第二步得到的特征向量传到SVM里面进行分类,之后再经过bbox回归得到标注框。
RCNN的整体流程如下图所示:
RCNN的缺点主要有:1.选取候选区域的时候会产生大量的候选区域占用磁盘空间。2.候选区域传到CNN里面的时候会预先进行归一化处理造成信息的丢失。3.每一个候选区域都放到网络里面造成相同的特征重复提取浪费资源。
2.Fast RCNN
fast-Rcnn在rcnn的基础上做出了改进:
1.训练和测试速度得到了提升。
2.直接通过网络就行标注框回归和分类。
3.加入了ROI感兴趣区域。
下面我们就讲一下fast-rcnn是如何运行的。
1.候选区域的选取和rcnn的操作一样,都是通过Selective Search来选取2K张候选区域。
2.通过CNN来提取特征,CNN结构很简单是由CONV+RELU+POOLING组成。
3.这时候使用ROI对特征图进行统一化处理,传到fc层得到分类和标注框结果。
ROI详解:
我们详细的介绍一下ROI。如上图所示,左边后色标注框是我们传到网络里面的候选区域,经过卷积池化之后我们得到一个特征图,我们将特征图传到ROIpooling层里面进行处理:将特征图分成m*n大小,然后在每一块里面采用去最大值的方法这个无论候选区域及时大小不相同都可以得到一个m*n的特征图。
操作如上图所示。FAST RCNN仍然存在着很多问题:1.还是使用ss选取候选区域浪费时间。2.并不是严格意义上的端到端。
3.Faster RCNN
Faster-rcnn在前两个算法的基础上进行了改进。Faster-rcnn引入了RPN网络用来代替 Selective Search选取候选区域。
上图所示faster-rcnn的流程图,faster-rcnn主要分为四个部分:1.特征提取 2.RPN 3.ROI感兴趣区域 4.分类和回归。
RPN网络详解:
Anchor是RPN网络中一个较为重要的概念,传统的检测方法中为了能够得到多尺度的检测框,需要通过建立图像金字塔的方式,对图像或者滤波器(滑动窗口)进行多尺度采样。RPN网络则是使用一个3×3的卷积核,在最后一个特征图(conv5-3)上滑动,将卷积核中心对应位置映射回输入图像,生成3种尺度(scale){128^2,256^2,512^2}{128^2,256^2,512^2}和3种长宽比(aspect ratio){1:1,1:2,2:1}{1:1,1:2,2:1}共9种Anchor,如下图所示。特征图conv5-3每个位置都对应9个anchors,如果feature map的大小为W×HW×H,则一共有9个anchors,滑动窗口的方式保证能够关联conv5-3的全部特征空间,最后在原图上得到多尺度多长宽比的anchors。
下图是faster-rcnn的流程图: