SPP-NET阅读笔记

来源:互联网 发布:js控制树的展开和收起 编辑:程序博客网 时间:2024/06/06 19:17
大神何凯明2014年的SPP-NET主要创新点在于提出了空间金字塔池化,在一定程度上解决了目标检测任务中的尺度变化问题,是后续各种尺度问题中金字塔结构的原型。

Background

在之前物体检测的文章,比如R-CNN中,他们都要求输入固定大小的图片,这些图片或者经过裁切(Crop)或者经过变形缩放(Warp),都在一定程度上导致图片信息的丢失和变形,限制了识别精确度。两种方式如下所示。
这里写图片描述
在网络实现的过程中,卷积层是不需要输入固定大小的图片的,而且还可以生成任意大小的特征图,只是全连接层需要固定大小的输入。
因此,固定长度的约束仅限于全连接层。
在本文中提出了Spatial Pyramid Pooling layer 来解决这一问题,使用这种方式,可以让网络输入任意的图片,而且还会生成固定大小的输出。这样,整体的结构和之前的R-CNN有所不同。

本文去掉了crop/warp,用SPP代替最后一个卷积层的max-pooling层,完成大小固定的处理。

Spatital Pyramid Pooling

Spatital Pyramid Pooling空间金字塔池化,本质上也是一种池化。
这里写图片描述
来看这张完整的图像,因为卷积层输入的任意大小的图片,所以Conv5计算出的feature map也是任意大小的,现在经过SPP之后,就可以变成固定大小的输出了,以上图为例,一共可以输出(16+4+1)*256的特征,16+4+1表示空间盒的数量(Spatial bins),256则表示卷积核的数量。

Compare with RCNN

(1)pipeline对比
在每张原始图片上提取2000个Region Proposal,然后对每一个候选区域框进行一次卷积计算,差不多要重复2000次,而SPP-net则是在卷积原始图像之后的特征图上提取候选区域的特征。所有的卷积计算只进行了一次,效率大大提高。
这里写图片描述
(2)处理步骤对比
R-CNN的处理步骤:
1、首先通过选择性搜索,对待检测的图片进行搜索出2000个候选窗口;
2、把这2k个候选窗口的图片都缩放到227*227,然后分别输入CNN中,每个候选窗台提取出一个特征向量,也就是说利用CNN进行提取特征向量;
3、把上面每个候选窗口的对应特征向量,利用SVM算法进行分类识别,同时利用线性回归得到边界框。

SPP-Net的处理步骤:
1、首先通过选择性搜索,对待检测的图片进行搜索出2000个候选窗口。这一步和R-CNN一样。
2、特征提取阶段。这一步就是和R-CNN最大的区别了,同样是用卷积神经网络进行特征提取,但是SPP-Net用的是金字塔池化。这一步骤的具体操作如下:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用金字塔空间池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,速度是大大地快啊。江湖传说可一个提高100倍的速度,因为R-CNN就相当于遍历一个CNN两千次,而SPP-Net只需要遍历1次。
3、最后一步也是和R-CNN一样,采用SVM算法进行特征向量分类识别。

本文的亮度如下:
1) 对输入图像尺度无限制,同时输出的是定长特征,但运用滑动窗口的pooling技术就不能;

2) SPP可运用不同大小的pooling窗口,但CNN只能是单一的窗口;

3)SPP可以从尺度变化中提取特征;

4) 大大提高了图像处理速度,24-102*faster than the R-CNN method;

SPP-net仍存在缺陷:
一是SPP-net虽然极大的提高了RCNN的速度,但和RCNN一样,他们的训练过程都是一个多阶段过程:即包含着特征抽取,网络微调,分类器SVM的训练以及最后的对BB回归器的匹配。
二是SPP-net中用到的微调技术只能更新FC层,这无疑限制了深度CNN的潜力。

0 0
原创粉丝点击