SPP Net是何凯明大神提出的一种基于SPP(空间金字塔池化)的卷积神经网络,对于RCNN系列的发展也起到了很重要的作用。本文按照原文目录摘录。如下:
一、引言
问题:现存的CNN要求固定尺寸的输入图片,需要通过对原图进行warping或者croping来实现,分别限制了图像的aspect ratio和scale,造成图像形变或不全;
产生原因:CNN主要由卷积层和全连接层组成,其中卷积层输出尺寸为一个关于输入大小的变量,而全连接层则产生固定大小的输出,也需要固定大小的权重和输入,即卷积神经网络固定输入尺寸的要求来自于全连接层;
解决方案:SPP,Spytial Pyramid Pooling,空间金字塔池化;
功能:remove the fixed-size constraint of the network:对于任意大小feature map进行池化的方法,产生固定长度的输出到FC,避免warp或resize,与特征提取的卷积层独立;
源由:传统图像处理方法的Spatial Pyramid Matching(SPM),将图像由精到粗分为不同等级,分别提取局部特征并叠加;Bag-of-Words;
特性:1.对不同输入尺寸产生固定长度的输出;2.使用多层级spatial bins而非单一大小的池化窗口,对形变有鲁棒性;3.可以池化不同尺度的特征,因为输入尺寸的灵活;
作用:解决RCNN执行多个卷积操作的time consuming,在shared卷积之后通过SPP对不同ROI提取特征输入全连接。
二、Deep Networks with Spatial Pyramid Pooling
1.卷积层与特征图
*使用滑动卷积核的卷积层输出与输入大小大致相等。
发现:一个filter可以被几种不同的语义内容激活,而一个目标形状可以激活特征图上的相应位置(可用于计算锚点位置)。
结论:不固定输入尺寸时产生的特征图与SIFT等方法产生的SIFT vector或image patches类似,经过densely extracted、 encoded(sparse encoded、 vector quantization)、pooled产生特征向量。
2.SPP层
*替代最后一个池化层
1.SPP在局部的spatial bin进行池化,保留了空间信息;
2.bin大小与输入尺寸成比例,且个数固定。
生成(k代表最后一个卷积层的通道数,M代表池化框的个数)维度的向量。
3.全局池化(最大、平均):对一个特征图产生一个值,即池化窗口大小等于特征图尺寸,the coarest pyramid level。用于降维,代替FC,3Dtensor变为1Dvector。
3.训练
1.single-size:同滑窗池化,池化框尺寸k=ceil(a/n),池化步长s=floor(a/n);目的:使用多级池化。
2.multi-size:将224尺寸resize为180,训练两个网络,由于卷积层参数相同,fc输入也相同,所以两个网络共享参数。进一步的,使用同一网络在每两个full epoch中交替训练两个size。
三、分类实验
1.SPP的效果是由于多级池化对目标形变和空间布局变化的鲁棒性,而非更多的参数。
2.10-view prediction:原图及水平镜像各取中间、四角5个224像素的patch,对十个子图的送饭他妈想输出求平均。
四、检测实验
1.RCNN:对200个region重复应用cnn,time consuming;
2.SPPnet:extract feature maps from entire image once and apply SPP on each candidate window of feature map to pool a fixed-length representation.
3.SVM:
4.bbox regression
5.时间复杂度,或
五.结语
1.解决的问题:a flexible solution for handiling different scales, sizes and aspect ratios.
2.意义:show that many time-proven techniques/insights in cv can still play important roles in deep-network-based recognition.