SPP-net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

空间金字塔池化(Spatial Pyramid Pooling) 上面这个图可以看出SPPnet和RCNN的区别,首先是输入不需要放缩到指定大小。其次是增加了一个空间金字塔池化层,还有最重要的一点是每幅图片只需要提取一次特征。SPPnet虽然解决了CNN输入任意大小图片的问题,但是还是需要重复为每个region proposal提取特征啊,能不能我们直接根据region proposal定位到他在卷积层特征的位置,然后直接对于这部分特征处理呢?答案是肯定的。 阅读详情

    一提到SPP-net就不可避免的会提到R-CNN,那这两者之间是个什么关系呢?通过之前的博客也可以了解到,R-CNN它是用于目标检测的一个框架,它使用了selective search提出了proposals,然后训练AlexNet提取特征,最后通过训练SVM分类器完成分类,从而最终完成detection的功能。那么SPP-net也是一个新的框架吗?我认为应该不能算是一个新的框架,事实上,SPP-net是对R-CNN的一种改进,而改进的核心之处便在于作者提出的用Spatial Pyramid Pooling layer替换AlexNet的pool5。不仅仅是对R-CNN,对于所有的基于CNN的模型都可以加上Spatial Pyramid Pooling layer。上面这段文字只要是先对SPP-net有一个直观的印象,下面正式开始介绍SPP-net。
    一般情况下,深度网络要求输入的图片是固定尺寸的。这是为什么呢?以AlexNet为例,因为只有固定尺寸了,在最上层的池化层pool5的尺寸才是固定的。那么为什么我们想要pool5层的尺寸是固定的呢?因为其后面连接的是两层全连接网络fc6和fc7,fc6和pool5的输出直接相连。因为fc6的输入维度是固定的,所以要求pool5的输出是固定尺寸的,进而反推回去才是要求输入的图片是固定尺寸的。这样我们就明白了,其实最根本的不是要输入图片的尺寸固定,而是要pool5层的输出尺寸是固定的,固定输入图片的尺寸只是实现pool5层输出尺寸固定的一种途径。那么我们看一下固定输入尺寸带来了什么不好之处呢?
    实现输入图片尺寸固定的方式有两种,一种叫做crop,一种叫做warp。以下图为例解释什么是crop和warp:
这里写图片描述
    假如我们要求输入图片的尺寸是224*224,那么对于左图,就是从原始图片的中间crop(裁剪)出一块能够大致表示原始图像的224*224的区域,可以看到,这样的操作使得最后输入网络的图片并没有完整地包含物体,导致了信息的丢失。而对于右图,则是先把目标图片框出来,然后对这个目标图片进行不固定宽高比的warp(变形),使得最后的图片也满足224*224的要求,可以看到,这样的操作虽然包含了完整的物体,但是使得最后输入网络的图片包含的物体是变形和扭曲了的,同样也是一种信息的丢失。正是由于这些信息丢失的存在,使得神经网络的识别精度有所降低。
    前面我们提到,固定输入图片的尺寸只是实现pool5层有固定尺寸的输出的一种方式,那么还有没有其它方式可以允许我们输入任意尺寸的图像而可以获得同样固定尺寸的pool5层的输出呢?这便是SPP-net要解决的问题,也是其核心所在。下图展示了没有Spatial Pyramid Pooling layer(后面简称为spp)的cnn和有spp的cnn分别是如何工作的,可以直观的看到,有了spp之后,对输入图片便没有尺寸的要求了,所以也不用做crop和warp的预处理了,从而最大可能地保留了原始的信息。
这里写图片描述
下图便是spp的一个示意图:
这里写图片描述
    可以看到输入图片在经过卷积层到达conv5的feature maps的时候,按照传统的方式是用一个固定尺寸比如2*2的窗口,以步长(stride)为2在feature maps上面滑动,对每一个窗口内的值都取最大值或者平均值(分别叫做最大池化和平均池化),从而得到池化层的输出,并将这个输出输入到全连接层中。而这里的spp则不一样,它是事先固定好我要进行L次池化,这里设L=3,每次池化的尺度不一样,但也都是规定好的。比如说第一次池化是将图像分为4*4的区域,对每个区域取最大值,这样会获得16*256(256是滤波器的个数,也就是feature maps的个数)个输出,然后第二次池化是将图像分为2*2个区域,对每个区域取最大值,这样会获得4*256个输出,第三次池化是将图像分为1*1个区域,也就是feature map本身,并取其最大值,这样会获得1*256个输出,把这三次池化的输出级联起来,就得到了(16+4+1)*256个输出,并将这些输出输入到全连接层fc6中。
    比较上面提到的传统的池化方式和spp池化方式,我们不难发现,在测试(test)阶段,如果图片的尺寸改变了,对于传统的池化方式而言,其得到的池化层的输出的维度也会改变,这是由于feature maps的尺度改变了造成的,从而造成无法和全连接层fc6的维度吻合,而对于spp池化而言,其得到的池化层的输出的维度还是保持不变,因为输出的维度与feature maps的尺寸无关,只与我事先定义好的L次池化的参数有关(eg:4*4,2*2,1*1),从而可以和全连接层fc6的维度吻合。
    上面说的是在测试阶段,spp可以允许任意尺度的图像作为输入,但是在训练阶段也是允许任意尺度的图像作为输入吗?答案是否定的。下面来探究原因。首先看看在测试阶段,有spp的cnn当输入图像尺寸发生改变的时候,什么在改变?改变的是在conv5的feature maps上面进行滑窗的窗口的尺寸和步长,这是为了产生固定的4*4的、2*2的以及1*1的池化输出。在测试阶段一次只有一张图片,所以可以根据该图片得到的feature maps的尺寸调整滑窗窗口的尺寸和步长,使得可以产生出4*4、2*2以及1*1的spp池化层输出,而在训练阶段,一个batch里面的输入图像的尺寸如果不一样,则无法找到一个合适的滑窗窗口的尺寸和步长使得对于batch中的各个尺度的图片都能产生4*4、2*2以及1*1的spp池化层输出。除非对于每一个训练图片都重新计算其滑窗窗口的尺寸和步长,这是不现实的。因此,在训练的时候,输入图片的尺度应该是一样的。
    训练阶段分为两种方式,一种是单一尺度的训练方式,一种是多尺度的训练方式,这儿的多尺度是指把用多组不同尺度的数据集进行交替训练,和之前说的输入图片的尺度应该是一样的不冲突。
    [1]单一尺度的训练方式
    以尺度固定为224*224为例,经过图像经过crop后变成要求的224*224的图像,在经过AlexNet的五层卷积层后的feature maps的尺度应该是13*13,假设采用L=3层的,获得的池化结果分别为3*3,2*2以及1*1的spp池化策略,那么对于获得3*3的池化结果的第一层,滑窗窗口尺寸应该是(13/3)向上取整为5,步长为(13/3)向下取整为4,同理可以推出对于获得2*2以及1*1的池化结果的池化层的滑窗窗口参数。具体见下图:
这里写图片描述
    [2]多尺度的训练方式
    多尺度的训练方式是为了模拟在测试阶段输入图像的尺度大小不一致,所以在训练阶段也加入了多尺度的训练方式。在以224*224为固定尺度的单一尺度训练基础上,把每张224*224的图片都按比例缩放到180*180的尺度上,再次训练一个单一尺度的网络模型。多尺度还不仅仅是分别训练两个单一尺度的网络模型,注意观察,事实上无论是输入为224*224的图片还是180*180的图片,训练的这两个模型的参数是一模一样的(包括卷积层和全连接层,只有在spp池化层的窗口尺度和步长不一样,但这里不影响而这共享网络参数)。正是由于这一个特性,所以作者还采取了让这两个模型共享卷积层参数的交替训练方式,第一个epoch(把一个尺度下的所有训练图片都训练了一遍叫做一个epoch)训练尺度为224*224的网络模型,然后把网络参数赋给180*180的模型,然后再训练一个epoch,如此交替。正也是在模拟测试的时候输入图像尺度各不一样的情况,为的是提高检测效果。
    SPP-net出彩的地方不仅仅在于它使得对于神经网络而言,在测试图片的时候可以是任意尺度的图片,还有一个非常出彩的地方在于它对于R-CNN在速度上的提高。首先回顾R-CNN在测试图片的时候是怎么做的。首先对图片进行selective search,选出大约2k数量的检测建议(detection proposals),随后将这些检测建议都warp到固定尺寸依次输入到网络模型中,也就是说对于一张测试图片,我们要进行大约2k次神经网络的前向传播,这无疑是耗费时间的。那么有了SPP-net后我们可以怎么做呢?我们先对测试图片提取2k个proposals,然后我们直接将测试图片输入到神经网络中,而没有将proposals输入到神经网络中,并将proposals在测试图片中的位置映射到proposals在conv5后的feature maps中的位置,虽然这些proposals的feature maps大小不一,但是有了spp层,就都可以得到同样维度的池化结果。因此,没有spp的时候,对于一张测试图片要进行2k次前向传播才能得到2k个池化结果,而有了spp之后,对于一张测试图片仅仅需要进行一次前向传播便可以得到2k个池化结果。检测速度得到了极大的提升。
    因此,spp的提出,有以下两个贡献,一个是使得网络可以有任意尺度的图片输入,第二个避免了重复计算卷积特征,达到了对R-CNN极大的加速效果。

RCNN学习笔记(3):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net) CNN网络需要固定尺寸的图像输入,SPPNet将任意大小的图像池化生成固定长度的图像表示,提升R-CNN检测的速度24-102倍。 固定图像尺寸输入的问题,截取的区域未涵盖整个目标或者缩放带来图像的扭曲。事实上,CNN的卷积层不需要固定尺寸的图像,全连接层是需要固定大小输入的,因此提出了SPP层放到卷积层的后面,改进后的网络如下图所示: SPP是BOW的扩展,将图像从精细空间划分到粗糙 阅读详情

相关推荐

(SPP-net)Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition论文阅读笔记

(SPPNet)Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition论文阅读笔记2014 Abstract 目前的深层CNN都需要固定尺寸的输入图像。这种需要是“人工的”,可能会对任意尺度的图像识别的准确率有所降低。本文中,我们提出了一种新的网络,使用了另一种池化策略,“空间金字塔池化”,来消除上面的这种固定尺寸要求。**我们的新网络,SPP-net,无论输入图像的尺寸,都生成一个固定维度的表示repres

weixin_43422466的博客 1632

SPP(Spatial Pyramid Pooling)解读

1.为什么会出现SPP结构,其作用是什么? 通过Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition论文可以基本了解其作用和基本结构, 从图中可以看到传统的操作是先将原图crop(裁剪/变换,也就是类似resize操作),直接送入卷积层,然后进入全连接分类。但是每幅图像中目标物体位置和大小难以保...

m0_37799466的博客 1万+

SPP-net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

Abstract  SPP-net提出了空间金字塔池化层来解决CNN只是输入固定尺寸的问题,因为单固定尺寸的输入会影响识别效果,并且对于多尺度图像的情况下鲁棒性不好。SPP-net很好的解决了以上问题,对于任意尺度图像都可以提取出固定维度的特征,实验证明SPP-net对分类任务(不同网络结构)和目标探测任务都有积极的作用。RCNN则是将候选区送入模型,这样会非常耗时,而且SPP-net网络以整张...

zzh0908的博客 677

深度学习_目标检测_SPP(Spatial Pyramid Pooling)详解

目标检测中的SPP模块详解(全网最详细)

Rocky Ding相信人工智能、数据科学、商业逻辑、金融工具、终身成长以及顺应时代的潮流会赋予我们超能力。 4205

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

配置虚拟机网络,虚拟机可以与主机互相ping通,虚拟机可以上网

配置虚拟机网络,虚拟机可以与主机互相ping通,虚拟机可以上网

深度学习笔记(一)空间金字塔池化阅读笔记Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

空间金字塔池化      空间金字塔池化层简介:                   在对图片进行卷积操作的时候,卷积核的大小是不会发生变化的额,反向调节的权重仅仅是数值会发生变化。但是,但是,但是,输入的图片的大小你是否可以控制呢?哈哈,我们的输入图片大小是会发生变化的,这里图片大小的变化并不会在卷积操作和polling操作产生影响,但是会对全连接层的链接产生影响。这篇文章的核心就是解决如何

HAHA的专栏 3万+

【YOLO 系列】基于YOLOv8的工业零件表面缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍了如何基于YOLOv8深度学习模型和PyQt5图形界面,构建一套完整的工业零件表面缺陷智能检测系统。内容涵盖从环境搭建、数据集标注、模型训练调参到最终封装成可执行桌面软件的全流程,并深入解析了YOLOv8在工业视觉场景中的技术优势与落地优化策略。

ol78901234的博客 400

RoIPooling与RoIAlign的区别

目录 一、RoIPooling与RoIAlign 1.1、RoIPooling 1.2、RoIAlign 二、双线性插值法(图像插值法) 2.1、为什么要用双线性插值法 2.3、双线性插值法的推导过程 ​​ 一、RoIPooling与RoIAlign 1.1、RoIPooling RolPooling可以使生成的候选框region proposal映射产生固定大小的featur...

weixin_36670529的博客 722

哨兵一号数据下载

哨兵1号数据的下载过程

weixin_59617499的博客 5134

CS算法实战:用MATLAB从零实现SAR点目标成像(附完整代码)

本文详细介绍了如何使用MATLAB从零实现SAR点目标CS成像算法,涵盖Chirp Scaling(CS)算法的核心理论、距离徙动校正(RCMC)和方位压缩等关键步骤。通过完整的代码示例和实战技巧,帮助读者掌握SAR成像处理算法,提升遥感图像处理能力。

weixin_29211309的博客 179

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 文章目录Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition参考链接IntroductionDEEP NETWORKS WITH SPATIAL PYRAMID POOLINGConvolutional Layers and Feature MapsTh

椰子奶糖的博客 1348

Eureka常见面试题总结

点击关注我的博客原文 Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程: 流程说明:...

u012105931的博客 2万+

【SPP-net】《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》

vs 10-view prediction(table4 倒数第二行)h) = s,s 属于 (224;256;300;360;448;560)We use。

bryant_meng 1277

ABAP BAPI_PRODORD_CHANGE函数详解:如何高效重读生产订单主数据

本文深入解析ABAP BAPI_PRODORD_CHANGE函数在生产订单主数据高效处理中的应用。通过详细讲解函数架构、主数据重读机制及实战代码示例,帮助开发人员掌握生产订单数据的精准读取与更新技术,提升SAP系统集成与自动化处理效率。

weixin_29207149的博客 462

中远麒麟堡垒机 SQL注入漏洞复现

中远麒麟堡垒机/baoleiji/api/tokens接口处存在sql注入漏洞,未经身份认证的攻击者可通过该漏洞获取数据库敏感信息及凭证,最终可能导致服务器失陷。

0xSec 2993

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-Net)解读

论文发表在ECCV2014 作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun Introduction CNN 在视觉领域虽然取得了很大的成就,但是一直存在一个技术问题是CNN都需要一个固定的图片大小,比如224*224,这限制了输入图像的大小和比例。现在的方法主要是通过crop/warp来满足对图像大小

ForLearning 2677

控制科学与工程(自动化)保研经验【1】——预备篇

个人情况 学校:中末流211 专业:自动化(学科评估B-) 年份:2019 排名:4/128 绩点:4.16/5 竞赛:三个国二(包括数模国赛美赛)、两个省一(机器人、电子设计竞赛) 【本科期间竞赛做的比较多,是我的一大亮点,可以在筛简历这关适当弥补专业排名的不足】 科研:一个校级的大创项目(水) 夏令营报名:中科大科学岛、中科大本部、自动化所、沈自所、北航(仪器17系)、山大、浙江大学、南开、同...

Control Everything 1万+

SPP-Net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

摘要 已知的CNN网络需要固定的输入图像大小,本文提出SPP-Net (Spatial Pyramid Pooling)消除了上述需要。SPP-Net能够生成固定长度的表达,不依赖于输入图像的尺寸和方向率。 使用SPP-Net只需要对整个图像计算一次特征图。避免了(R-CNN)重复计算。 在测试的时候,运算速度是R-CNN的24~64倍。CNN v.s. SPP net当应用CNN到任意尺寸的

夜夜秋雨 717

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2037

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

论文总结——SPP-net (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

为明年的研究生学习打点基础,准备全面的补一下目标检测的相关知识。 因为目的性较强,所以会忽视目标检测外的一些内容,比如针对图像分类的内容,但实际上图像分类也可以看做目标检测的一部分,所以不会对整体理解造成很大影响。 详情参看原论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 发现问题 作者团队考虑到CNNs具有要求输入图像的尺寸一定的特性,而在现实生活中这样的要求往往很难满足。 当时的研究人员的普

weixin_46266147的博客 487

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SPP Net论文笔记--《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》

SPP Net是何凯明大神提出的一种基于SPP(空间金字塔池化)的卷积神经网络,对于RCNN系列的发展也起到了很重要的作用。本文按照原文目录摘录。如下: 一、引言 问题:现存的CNN要求固定尺寸的输入图片,需要通过对原图进行warping或者croping来实现,分别限制了图像的aspectratio和scale,造成图像形变或不全; 产生原因:CNN主要由卷积层和全连接层组成,其中卷积层...

SPACESTUDIO的博客 1150

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RCNN(二)SPP-NET:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

SPP-NET:基于空间金字塔池化深层卷积神经网络的视觉模式识别还记得RCNN一文中提到的缺点之一吗,CNN需要为每一个region proposal进行一次卷积特征提取,尤为耗时。SPP-NET就可以很好的解决这个问题啦,您请往下看。CNN网络一般需要一个固定大小的图片输入,因此我们需要将图片转换成指定大小,而这样会改变图像的分辨率,比例而影响效果。而卷积-池化层是不需要固定输入的,输出会等比例缩

浅小思的博客 1314

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-Net,2014)阅读笔记

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition原文链接 Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition阅读笔记一、解决问题二、解决方法(一)基础原理(二)在R-CNN上的应用三、效果 ...

LiuYY的博客 473

【目标检测】SPP-Net (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014. Kaiming的这篇paper,是在R-CNN的基础上提出了空间金字塔变换层(Spatial Pyramid Pooling)...

SmileLing的专栏 1万+
上一篇: R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation
下一篇: Fast R-CNN
熊彬程的博客
博客等级 码龄11年 208粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值