SPP-Net理解
文章没有看完,先挑几个点谈一下。
1. 动机
在上一篇文章的末尾提到,RCNN做了很多重复计算,SPP就是为了解决这个问题而提出的的一个方法----空间金字塔池化。
感觉这个问题本质上还是全连接层对region-based目标检测算法造成的困难。全连接层要求其输入为固定尺寸,从而也就要求CNN的输入为固定尺寸,而region proposals往往大小不一。RCNN选择先在原图上截取region proposals截取下来,然后warp到要求的尺寸,再一个一个的送入CNN...,这就造成了测试时要执行很多次CNN,重复计算的问题;SPP-Net的目标是共享卷积计算,也就是在原图过一遍CNN,在生成的fearure map上截取region proposals(依然靠selective search生成),此时region proposals相比原图是特征密集语义丰富的,直接warp可能造成偏差大的多,会影响效果(个人猜测,具体实验验证吧),作者提出用空间金字塔池化代替卷积层和全连接层之间的max pooling,不管是输入任何尺寸,输出总是某个固定尺寸。
2. 具体操作
SPP-Net沿用了RCNN的框架,只用空间金字塔池化代替卷积层和全连接层之间的max pooling。
而这个空间金字塔池化实际上就是把feature map(3维)用不同的网格切分,然后对切分出来的每个小方块做最大池化,左后重组成一个2维向量。这个2维向量尺寸依赖于网格设置,调整到符合全连接层输入尺寸即可。

如图,用4*4,2*2,1*1大小的三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的切割方式,分别在每一个区域取最大池化,那么就可以得到21组特征。这种以不同的大小格子的组合方式来池化的过程就是空间金字塔池化(SPP)
3. 优点
实现了共享卷积计算,并且可以通过设置不同的网格来得到多层尺度的特征(?用max pooling不还是“点”特征?)
4. 缺陷
使用多尺度池化,导致梯度回传很复杂;某些层不能更新...【待更】
SPP-Net理解的更多相关文章
- SPP空间金字塔池化技术的直观理解
空间金字塔池化技术, 厉害之处,在于使得我们构建的网络,可以输入任意大小的图片,不需要经过裁剪缩放等操作. 是后续许多金字塔技术(psp,aspp等)的起源,主要的目的都是为了获取场景语境信息,获取上 ...
- SPP Net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)论文理解
论文地址:https://arxiv.org/pdf/1406.4729.pdf 论文翻译请移步:http://www.dengfanxin.cn/?p=403 一.背景: 传统的CNN要求输入图像尺 ...
- 对蓝牙profile的理解
蓝牙profile协议概览.pdf 之所以把Profile翻译为配置文件,是为避免和JavaME中的简表混淆.配置文件也是蓝牙 SIG官方网站给出的标准翻译. 想要使用蓝牙无线技术,设备必须能够翻译特 ...
- 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)
想直接看公式的可跳至第三节 3.公式修正 一.为什么需要SPP 首先需要知道为什么会需要SPP. 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对 ...
- Faster RCNN代码理解(Python)
转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...
- spring常用注解以IOC理解
使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...
- 原 CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)
1. 什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Netwo ...
- 理解CSS视觉格式化
前面的话 CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...
- 彻底理解AC多模式匹配算法
(本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...
- 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信
接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...
随机推荐
- 如何做一个项目.ppt
链接:https://pan.baidu.com/s/1q8Ogj0xYQV_vk-HGcszxqw 提取码:0a82 复制这段内容后打开百度网盘手机App,操作更方便哦
- 分享一个VueCli 3.0的项目模板
个人搭建的Vue项目模板 默认自带 Vuex Less 封装内容如下 vue.config axios 封装 vue 配置环境文件 vue 自定义路径映射 (cli3.0取消了默认@ 映射src的 ...
- 基于Python的Webservice开发(二)-如何用Spyne开发Webservice
一.功能需求 本次案例是开发一个Item的新建的WebService.IN&OUT的类型JsonDocument. 通过传入相关的参数创建Item,且相关的参数可以被缺省. 二.实现代码 引入 ...
- request模块
一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 # 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模 ...
- 各种手工DIY
http://www.guokr.com/scientific/subject/diy/ 高仿宜家莲花灯 http://www.guokr.com/article/179863/ 做一只会发光的魔幻吊 ...
- linux编译相关命令
一.编译可执行文件 g++ –c Hello.cpp 编译文件,生成目标文件Hello.o g++ Hello.o –o a.out 链接并重命名为可执行文件a.out g++ Hello.cc ...
- Cassandra 原理介绍
Cassandra最初源自Facebook,结合了Google BigTable面向列的特性和[Amazon Dynamo](http://en.wikipedia.org/wiki/Dynamo(s ...
- python正则表达式--findall、finditer方法
findall方法 相比其他方法,findall方法有些特殊.它的作用是查找字符串中所有能匹配的字符串,并以结果存于列表中,然后返回该列表 注意: match 和 search 是匹配一次 finda ...
- iOS 仿抖音 视频裁剪
1.最近做短视频拍摄.其中的裁剪界面要做得和抖音的视频裁剪效果一样 需求: 裁剪有一个最大裁剪时间.最小裁剪时间.左右拖动可以实时查看对应的视频画面.拖动进度条也能查看对应的画面 .拖动底部视图也能 ...
- shell 其他杂项知识点笔记
// 其他杂项知识点 对于普通用户,Base shell 默认的提示符是美元符号$:对于超级用户(root 用户),Bash Shell 默认的提示符是井号# ------- \#!是一个约定的标记, ...