SPP-NET

SSP-Net
这个网络主要的思想是为了让输入CNN的图像保持原始尺寸,而不像R-CNN等神经网络一样,需要将原始图像转换成固定的尺寸后,再输入网络。例如:warping,cropping等。

因为将原始图像压缩或转换为固定的尺寸是一个有损的过程,可能不包括整个对象或因图像扭曲而导致不必要的几何失真,可能会降低tasks的精度。

并且,CNN包括卷积层和全连接层。卷积层以滑动窗口的方式操作,输出的feature maps表示激活的空间排列。所以,固定的图像大小。而全连接层则需要通过其定义固定长度的输入,因此,只需要在进入全连接层时,固定输入特征的个数即可。

因此,作者设计了SPP-net,可以让输入的图像尺寸是任意的,在卷积与全连接层之间加一个spatial pyramid pooling,从而产生一个固定长度的representation(也就是说作者希望在网络层次结构(卷积层和全连接层之间)的更深阶段执行一些信息“聚合”,以避免开始时所需的裁剪和变形).

此外,SPP-net从整个image计算feature maps仅仅一次,然后使用pool将features映射到任意尺寸的sub-images(fixed-length representation),最后使用这些sub-images去训练检测器。

Spatial pyramid pooling 是Bag-of-Words(Bow)模型的扩展,Bow是计算机视觉最成功的方法之一。它将图像划分为从精细到粗的层级,并聚合其中的局部信息。

J. Sivic and A. Zisserman, “Video google: a text retrieval
approach to object matching in videos,” in ICCV, 2003.

论文中作者提到了SPP对于深度CNNs的一些显著特性:

  1. SPP能够产生固定长度的输出,而不用考虑输入的尺寸,这在之前deep networks中,使用sliding window pooling是做不到的。
  2. 与sliding window pooling的单一窗口尺寸相比,SPP使用multi-level spatial bins。这使得SPP对目标的形变更鲁棒(对于多层级的空间bins,可以初步解释为,根据每个level的bins的个数,将每层中图像划分成不同个数的区域块。由于每层bins是不一样的,所以对空间中,区域目标特征的激活也是不一样的)。
  3. 由于输入数据比例的灵活性,的特征。实验证明,这些因素提高了深度网络的识别准确性。

S. Lazebnik, C. Schmid, and J. Ponce, “Beyond bags of features: Spatial pyramid matching for recognizing natural scene
categories,” in CVPR, 2006.

论文中作者提到了在测试中,SPP-net不仅能够对于任意尺度的图像产生表观,而且在训练中输入不同尺度和缩放比例的图像。

为了验证SPP-net单一多尺度训练方式的有效性,作者训练了共享所有参数的多个网络。在每一个epoch,使用固定输入大小的的图像训练网络,切换到下一个epoch时,使用另外一个输入大小的图像训练网络。实验中表明,这种多尺度训练与传统的单一多尺度训练一致可以提高测试的准确性。
论文中提到SPP-net在目标检测方面也展示出了很好的性能。与R-CNN相比,SPP-net需要较少的计算代价。因为,其对图像中提取的每个warping region都会使用深度学习去提取特征。 SPP-net仅仅在整张图像上运行卷积层一次,而不用考虑select search windows的数量,然后,使用SPP-net在feature 提取特征。

作者提到在feature maps上训练/运行一个检测器(而不是在图像上)是一种更受欢迎的想法。作者在生成region proposal时,使用的方法是EdgeBoxes,处理一张图只需要0.5秒的时间。

C. L. Zitnick and P. Dollar, “Edge boxes: Locating object ´
proposals from edges,” in ECCV, 2014.

前面提到,对于输入图像固定尺寸的要求仅仅是全连接层需要固定长度的输入,而在卷积层可以接收任意大小的输入。卷积层使用滑动滤波器,输出具有与输入大致相同的宽高比。卷积层输出为feature map,特征图不仅涉及强度响应,也与空间位置有关系。具体内容见下面论文。

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.

通过对上面提取到的filter和激活区域进行描述,作者说通过卷积层提取的特征类似于传统的方法提取到的特征。传统方法中,SIFT矢量、图像块被densely extracted,然后编码,这些编码由特征图组成。最后,使用Bag-of-Words或空间金字塔进行汇集。

分类器(SVM/softmax)或完全连接层需要固定长度的矢量,而固定长度的向量可以使用Bag-of-Words(BoW)方法,将特征汇集在一起。空间金字塔汇集改进了BoW,它通过汇集局部空间箱来维护空间信息。空间箱(bins)的大小与图像大小成正比,所以无论图像大小如何,箱的数量都是固定的。

上图所示是SPP-net的模型,在卷积层后增加了一个spatial pyramid pooling, 再接全连接层。在pooling层对图像进行了金字塔划分,输出为M*k维向量,M是bins的数量(及16、4、1)。k代表滤波器的数量图中为(256)。对于空间金字塔来说,最粗糙的pyramid level是单个bin覆盖整张图像。

Training the Network
理论上,上面的网络结构能够在不考虑输入图像尺寸的情况下,应用于反向传播。但是实际上,GPU实现上最好在固定输入图像上运行。

Single-size training
论文中,首先考虑一个输入固定尺寸图像的网络。一个给定的图像通过cropped得到固定的尺寸(cropping 是为了数据增强)。由于conv5后,feature map的大小为13乘13(a乘a),这里的spatial pyramid pooling考虑了L-level pyramid。其中的一个pyramid level有 n*n个bins。该pooling level通过sliding window pooling实现。这里的window size win=ceil(a/n),步长stride str = floor(a/n)。最后,紧接着的全连接层将L层金字塔concat到一起。

这里论文中介绍了GPU对图像输入大小的要气,看下面的论文:

But in practice the GPU
implementations (such as cuda-convnet [3] and Caffe
[35]) are preferably run on fixed input images.

Mutil-size training
为了在训练中,SPP能够被应用到任何尺度上,作者考虑了一组预定义尺寸的集合。论文中设定了两个尺寸分别是:180乘180与224乘224。这里仅仅对图像进行放缩,仅仅在分辨率上不同,上下文内容没有改变。对于180乘180的输入,作者设计了另外一个网络,其与224的网络卷积结构是一样的,所以能够共享权重。但是,由于图像本身变小了,所以conv5卷积层也变小了。但是保持spatial pyramid pooling保持不变,还是n乘n,L-level pyramid。

因此,作者提到他们实现了一种varying-input-size SPP-net by two fixed-size networks that share parameters。

为了节省开销,在训练时,作者train each full epoch on one network, and then switch to the other one for the next full epoch。

上面的Single/Multi-size只针对训练时,在测试阶段,对于各种尺寸的图像直接使用SPP-net。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值