空间金字塔池化Spatial Pyramid Pooling

news2025/7/9 10:47:57

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从源码角度分析Mybatis级联映射的实现原理

Mybatis是一个半自动化ORM框架,可以将数据库中的记录转换为java实体对象,但是java实体属性通常采用驼峰命名法,而数据库字段习惯采用下划线分隔命名法,因此需要用户指定java实体属性与数据库表字段之间的映射关系。 mybatis的Mapp…

智慧网格解决方案-最新全套文件

智慧网格解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、民生管理2、网格化管理3、智慧党建4、网上政务5、综治管理四、获取 - 智慧网格全套最新解决方案合集一、建设背景 在我国现代化转型中,社会环境的复杂性和不确定性增强,传统的基层…

智能合约开发 基于Hardhat(实操)

Hardhat是一个编译、部署、测试和调试以太坊应用的开发环境。 ​ Hardhat内置了Hardhat网络,这是一个专为开发设计的本地以太坊网络。主要功能有Solidity调试,跟踪调用堆栈、 console.log() 和交易失败时的明确错误信息提示等 ​安装 # 创建项目目录 …

TSRFormer:复杂场景的表格结构识别新利器

编者按:近年来,各大企业和组织机构都在经历数字化转型。将文档转换成计算机所能识别的样态,是数字化转型的关键步骤,如何识别出图片中表格具体的结构与内容,并直接提取其中的数据和信息是学术界和工业界共同瞩目的焦点…

C语言操作符大全(建议收藏)

前言 💖作者:龟龟不断向前 ✨简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。 👻专栏:C初阶知识点 👻工具分享: 刷题: 牛客网 leetcode笔记软件&#xff…

操作系统4小时速成:进程管理占考试40%,进程状态,组织,通信,线程拥有调度,进程拥有资源,进程和线程的区别

操作系统4小时速成:进程管理占考试40%,进程状态,组织,通信,线程拥有调度,进程拥有资源,进程和线程的区别 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招…

生活中的5 个自动化Python 项目——从初学者到高级(附零基础学习教程)

前言 如果你正在学习 Python,你应该尝试自动化你的日常任务。(文末送读者福利) 您不仅可以通过实现您已经知道的知识来学习更多 Python,而且最终,您可以看到所有的辛勤工作是如何得到回报的。 最近,由于…

拉格朗日粒子扩散FLEXPART模式

当前,大气污染是我国重要的环境问题之一。为了高效、精准地治理区域大气污染,需要弄清污染物的来源。拉格朗日粒子扩散模式FLEXPART通过计算点、线、面或体积源释放的大量粒子的轨迹,来描述示踪物在大气中长距离、中尺度的传输、扩散、干湿沉…

第五节.常用Linux命令—远程管理

第五节.常用Linux命令—远程管理 1.关机/重启:(shutdown) 1).命令格式: 命令作用shutdown 选项 时间关机/重新启动 2).常用命令: 命令含义shutdown -r now重新启动操作系统,其中now表示现在shutdown now立刻关机,其中now表示现在shutdown …

热门Java开发工具IDEA入门指南——从Eclipse迁移到IntelliJ IDEA(一)

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 本文…

css水平居中的几种方法

实现方法实现方法:定位 position 偏移值 left margin-left 回退定位 position 偏移值 left CSS-2d transform文字居中:text-align:center; 行内块元素弹性布局: display:flex; [推荐]实现方法: 1、添加 margin 值 auto 2、定位 positio…

[附源码]计算机毕业设计JAVA电影影评网

[附源码]计算机毕业设计JAVA电影影评网 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Mav…

企业 SDLC 安全生命周期管理

最近看了很多SDLC的东西,把其中比较重要关键的记录一下,用简洁的语言说清楚 0x01 SDL 介绍 SDL是微软提出的一种软件开发安全生命周期管理的一种最佳安全实践,全称为Security Development Lifecycle 0x02 为什么要SDL 目的是为了从安全漏…

硕士论文阅读——基于机器视觉和深度学习的工人安全帽检测与身份识别方法

文章目录零、摘要一、绪论1、背景与研究意义2、国内外研究现状(1)安全帽佩戴检测研究现状与不足(2)身份识别研究现状与不足(3)基于深度学习的目标检测二、深度学习目标检测理论1、卷积神经网络(…

jQuery基础

目录 jQyery简介 获取jQuery jQuery基本语法 1.使用jQuery弹出提示框 2.$(document).ready()与window.onload的区别 jQuery选择器 jQuery层次选择器 jQyery简介 jQuery由美国人John Resig于2006年创建。jQuery是目前最流行的JavaScript程序,它是对JavaScript对…

Windows OpenGL 图像灰度图

目录 一.OpenGL 图像灰度图 1.原始图片2.效果演示 二.OpenGL 图像灰度图源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES …

27k入职阿里测试岗那天,我哭了,这5个月付出的一切总算没有白费~

先说一下自己的个人情况,计算机专业,16年普通二本学校毕业,经历过一些失败的工作经历后,经推荐就进入了华为的测试岗,进去才知道是接了个外包项目,不太稳定的样子,可是刚毕业谁知道什么外包不外…

Linux任务调度

基本原理: crontab [选项] -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 快速入门 设置任务调度文件: /etc/crontab 设置个人任务调度。执行crontab -e命令。 接…

100道Spring面试题以及参考答案(2022年最新版)

77道Spring面试题以及参考答案(2022年最新版),分享给大家~ 一、Spring概述 1. 什么是spring? Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各…

netstat命令应用和ifconfig命令应用

记录: 318 场景: 在CentOS 7.9操作系统上,使用netstat命令监控和查看TCP/IP等网络信息;使用ifconfig命令查看IP地址等网络信息。 版本: 操作系统: CentOS 7.9 1.基础环境 在CentOS 7.9操作系统,使用netstat命令和ifconfig命令&#xff…