RCNN--Fast RCNN--Fastrer RCNN

传统目标检测的方法:

将CNN引入目标检测领域之前,经典的目标检测算法使用滑动窗口依次判断所有可能的区域,并在区域中提取人工标定的特征。

引入CNN之后,RCNN采用Selective Search预先提取候选区域,并采用深度网络提取特征。

 

RCNN

pic1


 

基本流程:

1、 每张图片生成2k个候选区域

2、对每个候选区域使用卷积神经网络提取特征(4096维)

3、使用SVM进行类别判断,使用回归器对位置进行回归

注意点:

(1)得到的候选框大小不同,而CNN要求输入图片大小固定,因此需要把候选框缩放成大小相同的图片。

(2)采用现成的Alexnet(VGG计算量大当时)进行训练和初始化参数,再进行fine-tuning,核心是前边的层次用于提取基础特征,后边的全连接层用于特定的任务特征。

pic2


 

(3)CNN训练时的softmax层可用于分类,为啥还要使用SVM:原因是SVM分类准确率高,因为SVM和CNN对正负样本的定义不同,CNN中只要是重叠区域大于某一值就认为是正样本,而SVM要求bounding box把整个物体都包含进去才是正样本。

pic3


 

存在的问题:

1:、不共享卷积网络,每个region proposal都对应不同的卷积网络,使得运算很慢

2、分类使用SVM增加了计算量

3、提取的特征给SVM分类时,需要大量磁盘存放特征值和中间结果

Fast RCNN

RCNN在训练和测试时不是端到端(end to end)的,大体可分为提取proposal、特征提取、SVM分类、Bounding box回归四个阶段

Fast RCNN实现了除提取proposal之外的端到端的操作,将特征暂存在显存中,把多任务的损失函数合到一起实现单级训练

主要改进点:

1、还是先产生RoIs(主要的耗时操作),但共享卷积层

2、提出RoI Pooling层,得到固定大小的特征,后边可以连接全连接层

如何得到固定大小的特征:不同的proposal大小不一样,因此经过卷积之后得到的特征大小也不一样,就不能统一连接全连接层,因此提出RoI Pooling的概念,将不同大小的特征pooling成固定代大小的。

pic4


 

这里需要特别注意的是:ROI是指在特征图上的框,在Fast RCNN中是经过Selective Search完成后得到的“候选框”在特征图上的映射,在Faster RCNN中指的是经过RPN层后得到的候选框在特征图上的映射;RoI Pooling的输入有两个,一个是特征图,一个是RoIs(这里参考系不是特征图,而是原始图片),在Fast RCNN中是Selective Search的输出,在Faster RCNN中是PRN的输出。

Faster RCNN

1、引入RPN,在神经网络的特征图中产生候选框

2、在RPN中的分类是前景还是背景,还有回归跟groud truth的差异;而RoI Pooling后的分类是判定物体的类别,回归的也是bound box的位置

 

posted @ 2019-02-20 11:25  Luckid  阅读(328)  评论(0编辑  收藏  举报