空间金字塔池化Spatial Pyramid Pooling

SpatialPyramidPooling层由Kaiming He等人提出,旨在解决卷积神经网络(CNN)对输入图像大小的限制。传统的CNN在全连接层前需要固定大小的输入,但SpatialPyramidPooling通过动态调整Pooling窗口大小和步长,能将任意大小的特征图转换为固定大小,从而允许网络处理不同尺寸的图像,提高识别能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

通常在卷积神经网络CNN中主要是由卷积层(包括Convolution和Pooling两部分组成)和全连接层组成,对于任意一张大小的图片,通常需要通过裁剪或者拉伸变形的方式将其转换成固定大小的图片,这样会影响到对图片的识别。Kaiming He等人在2015年提出了Spatial Pyramid Pooling的概念[1],通过Spatial Pyramid Pooling操作后的CNN网络消除了对输入图像大小的限制,这样能够提升网络对图像的识别能力。

2. 算法原理

2.1. 固定大小的输入

在一般的CNN结构中,通常是由卷积层和全连接层组成的,卷积层中的Convolution和Pooling是采用的滑动窗口的方式对特征图进行计算,因此这两个操作不要求固定的输入的大小;而全连接层的特征数是固定的,所以在网络输入的时候,会要求具有固定的输入大小,以一个通道,单个卷积层和全连接层为例,如下图所示:

在这里插入图片描述

假设输入大小为 224 × 224 224\times 224 224×224,卷积核大小为 4 × 4 4\times4 4×4,paddding为 0 0 0,步长为 4 4 4,则卷积操作的输出大小为 56 × 56 56\times56 56×56,Pooling的大小为 4 × 4 4\times4 4×4,步长为 2 2 2,则Pooling操作后的输出大小为 27 × 27 27\times27 27×27,则全连接的输入为 729 729 729

如果输入的大小变成 250 × 250 250\times250 250×250,卷积操作的输出大小为 63 × 63 63\times63 63×63,Pooling操作的输出大小为 30 × 30 30\times30 30×30,则全连接的输入为 900 900 900,这样全连接层就不能工作了,因为全连接层的参数个数上下两种情况下并不统一。

针对上述问题,通常的做法是对原始图片裁剪或者拉伸变形的方式将图片变换到固定大小,如下图所示:

在这里插入图片描述

这样的变换操作使得原始的输入图像被改变,会扭曲原始的图像。由于是在全连接层出现了问题,因此只需要在全连接层增加一个层,能够将任意大小的特征图转换成固定大小的特征图,这样就能解决任意大小图像的输入问题。在[1]中提出了Spatial Pyramid Pooling层的概念,其过程如上图所示。

2.2. Spatial Pyramid Pooling Layer

为了应对不同大小的输入问题,在CNN网络的卷积层和全连接之间增加一个空间池化层(Spatial Pyramid Pooling Layer),对于每一特征图,采用不同尺度的Pooling操作,对于一般性的max-pooling操作如下图所示:

在这里插入图片描述

通过窗口大小为 2 × 2 2\times 2 2×2,步长为 2 2 2的max-pooling操作,将尺寸大小为 4 × 4 4\times4 4×4的特征图转换成 2 × 2 2\times2 2×2的特征图,那么如果对于输入的特征图大小为 8 × 8 8\times 8 8×8,要使得输出的特征图大小依然为 2 × 2 2\times2 2×2,那么窗口的大小就得是 4 × 4 4\times4 4×4,且步长为 4 4 4。与原始的Pooling操作不同的是原先的Pooling操作是固定好窗口大小和步长,而此处的Pooling操作是固定好想要的输出大小,那么输入,输出以及窗口,步长之间的关系为:

w i n = ⌈ a n ⌉ s t r = ⌊ a n ⌋ \begin{matrix} win=\left \lceil \frac{a}{n}\right \rceil \\ str=\left \lfloor \frac{a}{n}\right \rfloor \end{matrix} win=nastr=na

其中 a × a a\times a a×a表示的是输入的特征图的大小, n × n n\times n n×n表示的是输出的特征图的大小。 ⌈ ⋅ ⌉ \left \lceil \cdot \right \rceil 表示的是向下取整, ⌊ ⋅ ⌋ \left \lfloor \cdot \right \rfloor 表示的是向上取整。在Spatial Pyramid Pooling层中,为了能够对任意输入大小的特征图能得到固定大小的输出,可以采用上述动态的窗口大小和步长,为了能够得到不同尺度下的特征,可以设计不同大小的输出,如下图中设计了三种大小的输出,分别为 4 × 4 4\times 4 4×4 2 × 2 2\times 2 2×2 1 × 1 1\times 1 1×1,具体如下图所示:

在这里插入图片描述

3. 总结

针对不同大小的输入图像,在传统CNN网络中,需要首先将图像通过裁剪或者拉伸等变换转换到固定大小,通过分析,不同尺寸的输入主要是对全连接层有影响,SPP-Net中,在全连接层之前引入Spatial Pyramid Pooling Layer,可以将任意大小的输入转换成固定大小的输出。

参考文献

[1] He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE transactions on pattern analysis and machine intelligence, 2015, 37(9): 1904-1916.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值