1. 概述

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

2. 算法原理

2.1. 固定大小的输入

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

假设输入大小为224×224224\times 224224×224,卷积核大小为4×44\times44×4,paddding为000,步长为444,则卷积操作的输出大小为56×5656\times5656×56,Pooling的大小为4×44\times44×4,步长为222,则Pooling操作后的输出大小为27×2727\times2727×27,则全连接的输入为729729729。

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

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

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

2.2. Spatial Pyramid Pooling Layer

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

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

win=⌈an⌉str=⌊an⌋\begin{matrix} win=\left \lceil \frac{a}{n}\right \rceil \\ str=\left \lfloor \frac{a}{n}\right \rfloor \end{matrix}win=⌈na​⌉str=⌊na​⌋​

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

空间金字塔池化Spatial Pyramid Pooling相关推荐

  1. 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)

    想直接看公式的可跳至第三节 3.公式修正 一.为什么需要SPP 首先需要知道为什么会需要SPP. 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对 ...

  2. [Neck] 空间金字塔池化【池化策略】(Space Pyramid Pool, SPP)模块和路径聚合网络【增强】(Path Aggregation Network, PANet)的结构

    文章目录 背景 yolo v4 中的空间金字塔池化(Space Pyramid Pool, SPP)模块和路径聚合网络(Path Aggregation Network, PANet)的结构 SPP ...

  3. Spatial Pyramid Pooling(空间金字塔池化)-变尺度CNN训练

    1. 需求创造好的产品,产品拓宽原始的需求 当前的深度神经网络一般都需要固定的输入图像尺寸(如224*224). 这种需求很明显是人为的,潜在性的弊端会降低识别精度(为了使图像尺寸相同,一定会涉及到图 ...

  4. 基于空间金字塔池化的卷积神经网络物体检测

    基于空间金字塔池化的卷积神经网络物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187655 作者:hjimce 一.相关理论 本篇博文 ...

  5. CNN应用之SPP(基于空间金字塔池化的卷积神经网络物体检测)-ECCV 2014-未完待续

    基于空间金字塔池化的卷积神经网络物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187655 作者:hjimce 一.相关理论 本篇博文 ...

  6. 深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测-ECCV 2014

    基于空间金字塔池化的卷积神经网络物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187655 作者:hjimce 一.相关理论 本篇博文 ...

  7. 深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测

    基于空间金字塔池化的卷积神经网络物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187655 作者:hjimce 一.相关理论 本篇博文 ...

  8. 深入理解空间金字塔池化(SPP,ASPP)

    读Lawin Transformer这篇论文,里面有介绍到在Transformer结构中使用ASPP,有很多细节没有理解,于是打算从CNN里的SPP开始学习. SPP[Space Pyramid Po ...

  9. 空间金字塔池化SPP

    空间金字塔池化 1.提出的原因 下面这里是我们在网上反复可以看见的话(所以关键是理解这些内容): 提出的原因: 在SPP提出之前,传统的网络具有它有两大缺点: 1.通常需要输入固定大小的图片来进行训练 ...

最新文章

  1. AAAI 2020 论文接收结果出炉,得分 997 论文被拒,388 反而中了?
  2. echarts 样式 配置 vue
  3. 【知识总结】回文自动机(Palindrome_Automaton)
  4. boost::mp11::mp_replace相关用法的测试程序
  5. JS基础入门篇(二十)—事件对象以及案例(二)
  6. HBuilderx中编译sass文件
  7. Android LiveData组件分析
  8. 程序员必备高频英语词汇
  9. c语言科学计数法 10的负8次方,3*10的负8次方等于多少?为什么计算
  10. Win10硬盘安装器(WinNTSetup 64位) v3.9.4 中文绿色版
  11. 软件构造过程与配置管理
  12. 2010年11月30日
  13. eWebEditor编辑HTML,eWebEditor编辑器免费版
  14. 经典的测试开发面试题
  15. 【电脑讲解】笔记本怎么连接宽带,拨号和无线网络连接方法
  16. excel 导出加水印
  17. 【工具-DVWA】DVWA的安装和使用
  18. Quartz的一般配置方法
  19. 腾讯手游助手王者服务器,腾讯手游助手王者荣耀正在定位无法进入的解决教程...
  20. VS2019 - 动态库的编写和调用

热门文章

  1. 牛客网-推理判断练习
  2. vim工具——常用插件
  3. 视频直播只是指的实时互动直播吗?
  4. char to hex
  5. mysql gis polygon_把POLYGON转换到MULTIPOLYGON 中
  6. uva 1471 Defense Lines
  7. VTP-------详解
  8. jeeplus2.0 ani 版 定时任务的创建
  9. 美通社企业新闻汇总 | 2019.1.11 | 耐克中国物流中心升级,属于中国味蕾的黑珍珠餐厅指南发布...
  10. 以梦为马之89c51单片机精确1s时间LED灯闪烁(中断技术+定时/计数器技术)