0. 前言
-
R-CNN 系列是目标检测的经典开端,包括后面的Fast RCNN等在内,提出了很多目标检测中的重要概念,是做目标检测必须要了解的。
-
下面进行逐一介绍
一. R-CNN
- 功能来自于结构,因此我们首先看网络结构
上图中表明了R-CNN的框架,描述如下:
- 输入一张图片
- 基于Selective Search提取出提议区域(region proposal) ,也就是上图2.中的黄色框
- 因为CNN后面的全链接层需要固定大小的输入,这里我们把所有的region proposal缩放到所需要的大小(227 × 227 pixel size 见附录A),也就是变成了上图的warped region。对此时的region proposal应用CNN网络,进行特征提取。
- 将CNN提取后的特征,经过全链接层之后一部分放入SVM分类器,得到分类结果。另一路进行边框回归(Bounding-box regression),并应用非极大值抑制。
- 讨论:从其结构可以明显看出,首先要得到大量的提议区域,这会消耗一定的时间,其次是对每个提议都应用CNN,其效率可想而知。但是足以作为深度学习在目标检测上的开山大作,给目标检测提供了一个新思路。
二. SPP Net
-
该网络是对RCNN的改进。相比RCNN,SPP(空间金字塔变换)使用了共享卷积层,然后通过原图上的RoI映射到最后的卷积层,找到最后卷积层上对应的RoI。这些提议窗口尺寸是不同的,也不能直接输入到全连接进行分类。因此把这些提议窗口通过SPP层映射到相同的尺寸大小,便可以链接全连接层了。
-
讨论:
通过共享卷积层,提高了推理和训练速度
最大的特点是通过特征金字塔进行尺寸适应
三. Fast R-CNN
- 结构
- 给定图片
- 输入到卷积神经网络,进行特征提取,这一步不同于RCNN,这里使用了权值共享。这和上面的SPP Net是同样的操作。
- 同样是因为输入的图像尺寸可能不一致,而后面的全链接需要固定的输入尺寸。此处用RoI Pooling将CNN之后的特征统一到一个固定的大小。RoI Pooling 有被称为单层SPP,原因是之进行了一下Pooling操作,而SPP相当于进行了多尺度下采样。
- 将得到的固定尺寸特征输入全连接层,进行线性+softmax分类和bbox线性回归
- 讨论
相比于R-CNN,共享了CNN层
相比SPP Net,RoI映射更快
四. Faster R-CNN
- 结构
-
和上一代相比,最大的不同是提出了RPN网络,用这个网络找到提议RoI。需要注意,RPN网络只负责找到是否有物体的RoI,分类还要在后面再加上分类器,用来确定具体属于哪一类。
-
训练和测试####待更新
参考:
- fast rcnn
- rcnn 、 fast rcnn、faster rcnn