论文源址:https://arxiv.org/abs/1406.4729
tensorflow相关代码:https://github.com/peace195/sppnet
摘要
深度卷积网络需要输入固定尺寸大小的图片(224x224),这引入了大量的手工因素,同时,一定程度上,对于任意尺寸的图片或者子图会降低识别的准确率。SPP-net对于任意大小的图片,可以生成固定长度的特征表述。SPP-net对于变形的图片仍有一定的鲁棒性。基于上述优点,SPP-net会提高基于CNN的图像分类的效果。
SPP-net对于目标检测任务也有一定的贡献,只从整张图片中计算一次获得feature map,然后,通过从任意尺寸区域得到的池化特征中生成固定尺寸的特征表述用于检测器的训练。此模型避免重复的卷积特征提取过程,大大减轻了计算负担。经测试,SPP-net要快于R-CNN 24-102倍。
介绍
对于输入卷积网络图片的尺寸要求为固定尺寸,大多数做法是通过裁剪,或拉伸至目标尺寸中,裁剪过的图片可能并未包含目标物体,而拉伸操作可能会使图片的几何失真。进而可能会对识别的准确率造成一定的影响。当目标物体的大小发生变化时,预训练时的尺寸大小可能会发生矛盾,固定大小的输入忽略了多尺度的问题。如下图吗,
卷积网络要求输入尺寸固定的原因:卷积网络主要包含两部分:卷积层和全连接层。卷积层通过一个滑动窗口并输出代表空间分布的响应。实际上,卷积层并不需要固定的图片尺寸,而且可以输出任意大小的feature map。而全连接层根据定义要求输入必须为固定的大小。
该文提出了空间金字塔池化层用于消除尺寸固定这个限制。具体实现是在最后一层卷积层后添加SPP层。SPP将特征池化处理,并产生一个固定长度的输出,送入全连接层。一句话,SPP-net在网络的较深层中(卷积层与全连接层之间)执行一些聚合不同层次信息的操作来减弱输入时采用裁剪拉伸等操作产生的不良影响。SPP-net实现不同尺寸的输入,这增加了模型尺寸的不变性及防止过拟合。
基于空间金字塔池化的深度网络
卷积网络与feature map:参考七层网络结构,前5层为卷积层,每层参杂池化层,后接几层池化层,最后两层为全连接层,同时输出N路soft-max,N代表类别数。此网络结构需要输入固定尺寸的图片,而固定的性质是由全连接层决定的。卷积层执行滑动卷积操作,输出与输入之间的比是相似的。得到的feature map包含了响应值同时也包含了空间位置信息。
空间金字塔池化层:卷积层接受任意尺寸的输入同时生成不同尺寸的输出。SVM,全连接层分类器要求输入固定尺寸的特征向量。通过词袋方法将特征进行池化。相比词袋,空间金字塔池化层可一个保留池化操作后的空间信息到局部空间bin中。spatial bin与输入成比例的尺寸。而spatial bin的数量不受图片大小的影响。而先前的池化操作滑动窗口的数量受输入大小的影响。该文将最后一层池化层更改为SPP,通过使用不同的核对feature map进行池化操作。SPP层输出kxM维的向量,k为最后一层卷积层核的个数。M为bin的个数,固定维度的向量送入全连接层中。在SPP中有一个全局池化操作,全局平均池化操作可以降低模型的复杂度,同时可以防止过拟合。在测试时,在卷积层后使用平均池化层利于提高准确率,而最大池化操作用于弱监督的目标识别。
网络的训练:分为单尺寸训练和多尺寸训练,单尺寸训练,送入裁剪后固定大小的图片(224x224),对于输入的图片,可以事先计算好bin的大小。conv5输出的feature map大小为axa(13x13)。而一层含有nxn大小的金字塔层,将池化层看作滑动窗口,大小为[a/n], stride 为[a/n],对有l层金字塔层,将其l个输出进行拼接。win中的[]代表向上取整,而stride中的[]代表向下取整。
多尺寸的训练:该文除了考虑224x224大小的输入,同时考虑了180x180大小的输入,将224x224图片resize至大小为180x180大小。 所以,两者窗宽比相同,内容与外形相同,只有像素不同。 输入图片大小发生改变,通过改变金字塔池化层得到与224x224相同维度的向量输入到全连接层中。网络的参数量相同,这样实现了不同尺寸的输入。先用224x224的图片训练一轮,后使用180x180大小的图片进行迭代,该文还使用[224x180]的进行实验。
分类实验
基于ZF-5,Convnet*-5,Overfeat-5/7五个网络结构进行改造,结构如下
目标检测实验
首先将整幅图像输入网络提取特征,采用快速的SS方法提取候选框,然后在每个候选框上应用SPP层进行特征提取,用训练好的二分类SVM进行分类。
Reference
[1] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel, “Backpropagation applied to handwritten zip code recognition,” Neural computation, 1989.
[2] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei, “Imagenet: A large-scale hierarchical image database,” in CVPR, 2009.
[3] A. Krizhevsky, I. Sutskever, and G. Hinton, “Imagenet classification with deep convolutional neural networks,” in NIPS, 2012.