SPPNet的原理[通俗易懂]

SPPNet的原理[通俗易懂]简介SPPNet的英文名称是SpatialPyramidPoolingConvolutionalNetworks,翻译成中文是“空间金字塔池化卷积网络”。paper地址https://arxiv.org/pdf/1406.4729.pdf原理    SPPNet主要做了一件事:将CNN的输入从固定尺寸改进为任意尺寸。例如,在普通的CNN结构中,输入的尺寸往往是固定的(如224*224…

大家好,又见面了,我是你们的朋友全栈君。

简介

SPPNet的英文名称是Spatial Pyramid Pooling Convolutional Networks,翻译成中文是“空间金字塔池化卷积网络”。

paper地址https://arxiv.org/pdf/1406.4729.pdf

原理

       SPPNet主要做了一件事:将CNN的输入从固定尺寸改进为任意尺寸。例如,在普通的CNN结构中,输入的尺寸往往是固定的(如224*224*3),输出可以看做是一个固定维数的向量。SPPNet在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。

ROI池化层一般跟在卷积层后面,它的输入是任意大小的卷积,输出是固定维数的向量,如图所示:

SPPNet的原理[通俗易懂]

为什么ROI池化层能够把任意大小的卷积特征转换成固定长度的向量

      不妨设卷积层的输出的宽度为w, 高度为h,通道为c。不管输入的图像尺寸是多少,卷积层的通道数都不会变,也就是说c是一个常数。而w,h会随着输入图像尺寸的变化而变化,可以看做是两个变量。以上图中的ROI池化层为例,它首先把卷积层划分为4*4的网格,每个网格的宽度是w/4,高是h/4,通道数为c。当不能整除时,需要取整。接着,对每个网格中的每个通道,都取出其最大值,换句话说,就是说对每个网格内的特征做做最大值池化(Max Pooling)。这个4*4的网格最终就形成可16c维的特征。接着,再把网络划分成2*2的网络,同样的方法提取特征,提取的特征的长度为4c。再把网络划分为1*1的网络,提取的特征的长度就是c,最后的1*1的划分实际是去处卷积中每个通道的最大值。最后,将得到的特征拼接起来,得到的特征是16c+4c+c=21c维的特征。很显然,这个输出特征的长度与w,h两个值无关的,因此ROI池化层可以吧任意宽度,高度的卷积特征转换为固定长度的向量。

可以这样考虑问题:网络的输入是一张图像,中间进过若干卷积形成了卷积特征,这个卷积特征实际上和原始图像在位置上是有一定的关系的。因此,原始图像中的候选框,实际上也可以对应到卷积特征中相同位置的框。由于候选区域框的大小千变万化,对应到卷积特征的区域形状也各不相同,但是不用担心,利用ROI池化层可以把卷积特征中的不同形状的区域对应到同样长度的向量特征。


参考书籍21个项目玩转深度学习

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145026.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 去除winrar广告

    去除winrar广告Winrar是试用版,软件的使用已超过试用期,需购买一个许可才可正常使用。本人告诉你只需简单几步,就能轻松破解Winrar,不需要花钱购买注册。方法:在文件夹选项中去除“隐藏已知文件类型的扩展名”,单击确定。在桌面上新建一个记事本打开将下面代码复制并保存为rarreg.key文件RARregistrationdataFederalAgencyforEduc

    2022年5月12日
    49
  • CGLIB介绍与原理「建议收藏」

    CGLIB介绍与原理「建议收藏」CGLIB介绍与原理(部分节选自网络)一、什么是CGLIB?CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。二、CGLIB原理CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final

    2022年6月4日
    48
  • 重磅!2021年国内Java培训机构排名十强出炉啦!

    重磅!2021年国内Java培训机构排名十强出炉啦!在IT行业当中,Java是最受欢迎的编程语言之一,作为最早出现的编程语言至今都没有倒下,可以说是YYDS!近年来学习Java的小伙伴也是越来越多,通过参加培训的方式来学习Java技术是最快最有效的方法。如今Java培训机构多如牛毛,到底该怎么选呢?下面小编就给大家发布2021年Java培训机构排名十强的名单来供大家参考:1、动力节点(http://www.bjpowernode.com/)动力节点是Java培训界“口口相传的Java黄埔军校”,成立至今12年,专注Java培训事业,为学员提供更.

    2022年7月7日
    57
  • pytest运行_python缓存机制

    pytest运行_python缓存机制前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

    2022年7月29日
    10
  • SpringBoot跨域设置(CORS)「建议收藏」

    SpringBoot跨域设置(CORS)「建议收藏」目录什么是跨域跨域资源共享(CORS)1.简单请求2.非简单请求SpringBoot设置CORS1.配置过滤器CorsFilter2.实现接口WebMvcConfigurer3.使用注解@CrossOrigin什么是跨域请求url的协议、域名、端口三者有任意一个不同即为跨域。跨域问题是因为浏览器的同源策略的限制而产生的。同源:请求url的协议、域名、端口三者都相同即为同源(同一个域)。同源策略:同源策略(Sameoriginpolicy)是一种约定,他是浏览器最核心也最基本的安全

    2022年6月18日
    26
  • Mybatis分页查询(通过SQL分页实现)[通俗易懂]

    Mybatis分页查询(通过SQL分页实现)[通俗易懂]Mybatis分页查询(通过SQL分页实现)前言实现有哪几种方式:网页分页(一次查询所有数据,加载到网页,那么适合数量小的操作)服务器端分页java程序中查询所有数据,网页需要哪一页,就给哪一页数据,会撑爆java服务器,建议查询缓存优化数据库分页请求一页数据,查询数据库即可本文采用Oracle中的rownum实现分页,数据表使用Oracle中Scott的EMP表一、搭建环境目录结构导入jar包mybatis-3.2.7.jarojdbc6.jar数

    2022年5月8日
    120

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号