空间金字塔池化(Spatial Pyramid Pooling,SPP)

本文解析SPP(Spatial Pyramid Pooling)如何解决卷积神经网络(CNN)输入图像大小固定的问题,介绍SPP原理及公式,适用于宽高比不固定的街景文字识别等场景。

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

一、为什么需要SPP

卷积神经网络(CNN)是由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对数据大小有要求的则是第一个全连接层,因此基本上所有的CNN都要求输入数据固定大小,例如著名的VGG模型则要求输入数据大小是(224*224)

固定输入数据大小有两个问题:

  1. 很多场景所得到数据并不是固定大小的,例如街景文字基本上其宽高比是不固定的,如下图所示红色框出的文字。
    在这里插入图片描述
  2. 可能你会说可以对图片进行切割,但是切割的话很可能会丢失重要信息。

综上,SPP的提出就是为了解决CNN输入图像大小必须固定的问题,从而可以使得输入图像宽高比和大小任意

二、SPP的原理
最详细的信息请查询论文:
《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
在这里插入图片描述
上图是原文中给出的示意图,需要从下往上看:

  1. 首先是输入层(input image),其大小可以是任意的
  2. 进行卷积运算,到最后一个卷积层(图中conv5)输出得到该层的特征映射 (feature maps),其大小也是任意的
  3. 下面进入SPP层
    3.1 我们先看最左边有16个蓝色小格子的图,它的意思是将conv5得到的特征映射分成16份,另外16×256中的256表示channel,即SPP对每一层都分成16份(不一定是等比分,原因看后面的内容就能理解了)
    3.2 中间的4个绿色小格子和右边1个紫色大格子也同理,即特征映射分别分成4×256和1×256份

那么特征映射分成若干等份是做什么用的呢?我们看看SPP的名字就知道了,是池化操作,一般选择MAX Pooling,即对每一份进行最大池化。

我们看上图,通过SPP层,特征映射被转化成了16×256+4×256+1×256=21×256的矩阵,在送入全连接时可以扩展成一维矩阵,即1×5376了,所以第一个全连接层的参数就可以设置成5376了,这样也就解决了输入数据大小任意的问题了。

注意上面划分多少份是可以自己根据情况设置的,例如我们也可以设置成3×3等,但是一般建议还是按照论文中说的进行划分。

三、SPP公式
理论应该理解了,那么怎么实现呢?下面介绍论文中给出的计算公式,但是在这之前先要介绍两种计算符号以及池化后矩阵大小的计算知识。

  1. 预先知识
    在这里插入图片描述
  2. 公式
    在这里插入图片描述
  3. 公式修正
    在这里插入图片描述
    在这里插入图片描述

参考:
https://www.cnblogs.com/marsggbo/p/8572846.html#anchor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值