SPPNet

首先介绍最为传统的alexNet,本文以及R-CNN有基于该网络上进行改进

1.输入224*224的图片,经过卷积池化等操作后在最后的卷积层会变成13*13的图片
2.后面接两个全连接层
3.最后接一个softmax进行打分分类(分成1000类是因为ImageNet上的图片总类为1000类)

SPPNet的介绍

  • 之前的卷积神经网络只能输入固定的尺寸进去因此不得不裁剪/变形。如图所示:

  • 本文作者提出对于输入图片的尺寸要求只需要在全连接层,对于卷积层没有要求,所以为了能够在输入的时候能够输入任意大小的图片作者在最后一层卷积层和全连接层之间加了一个特征金字塔池化层
  • 具体如下图所示:第一个为传统的CNN结构,下面为加了SPPNet的网络结构

作者为什么要这么加?

  1. 对于分类任务这样做就可以在输入图片使输入多尺度图片(将原图片变大变小等)扩充数据集
  2. 对于后面的目标检测任务可以改进传统的R-CNN,传统的R-CNN需要将图片通过select search选出大概两千个区域再通过CNN卷积层,非常耗时。而加上SPPNet后可以输入整张图片进入卷积层,节省时间
  • 形象理解如下图所示:

进入之后框如何画?

  • 作者发现,卷积后对应的位置并不会发生改变,每个卷积层会匹配响应的区域。如下图所示:

1.上图显示,车轮在原图中的位置在特征图上也会出现在响应的位置
2.上图卷积核匹配的响应的(轮廓,颜色,纹理)与(c)匹配的也相似
3.这样在目标检测使可以根据特征图画出该物体的位置,也就可以画出具体的框了

SPPNet的具体工作原理?

  • SPPNet需要在最后的卷积层将不同的尺寸的特征图变化到统一尺寸大小具体使怎么做的呢?
  • 在读论文使作者说到最大池化,我刚开始误解为是和前面的池化层一样通过滑动窗口实现。然而并不是。具体如何请看下图:
  1. 对于分类任务提取特征时:

  2. 对于目标检测任务提取特征时

1. 例如上图,特征池化层分别为(4*4,2*2,1*1)
2. 将4*4的池化层等比例映射到特征图中,然后再取16格中的每个小格的最大值,再将其拉伸为16*1的vector
3. 同理可得,将2*2的池化层等比例映射到特征图中,再取4格,最后将其拉伸为4*1的vector
4. 1*1的将其拉伸成1*1的vector
5. 最后形成的时(16+4+1)*256(256是深度)的向量

更为具体的如下图所示:

1.左边是8*8的特征图的池化层的划分和将其拉伸成一维向量
2.右边是任意尺度的特征图的划分
  • 综上所述:任意尺度的特征图都可以划分维固定大小的维度

总览:



SPPNet(特征金字塔池化)学习笔记的更多相关文章

  1. Spatial pyramid pooling (SPP)-net (空间金字塔池化)笔记(转)

    在学习r-cnn系列时,一直看到SPP-net的身影,许多有疑问的地方在这篇论文里找到了答案. 论文:Spatial Pyramid Pooling in Deep Convolutional Net ...

  2. 【神经网络与深度学习】【计算机视觉】SPPNet-引入空间金字塔池化改进RCNN

    转自: https://zhuanlan.zhihu.com/p/24774302?refer=xiaoleimlnote 继续总结一下RCNN系列.上篇RCNN- 将CNN引入目标检测的开山之作 介 ...

  3. SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...

  4. 空间金字塔池化(Spatial Pyramid Pooling,SPP)

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

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

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

  6. 空间金字塔池化 ssp-net

    <Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition>,这篇paper提出了空间金字 ...

  7. SPP空间金字塔池化技术的直观理解

    空间金字塔池化技术, 厉害之处,在于使得我们构建的网络,可以输入任意大小的图片,不需要经过裁剪缩放等操作. 是后续许多金字塔技术(psp,aspp等)的起源,主要的目的都是为了获取场景语境信息,获取上 ...

  8. R语言函数化学习笔记6

    R语言函数化学习笔记 1.apply函数 可以让list或者vector的元素依次执行一遍调用的函数,输出的结果是list格式 2.sapply函数 原理和list一样,但是输出的结果是一个向量的形式 ...

  9. R语言函数化学习笔记3

    R语言函数化学习笔记3 R语言常用的一些命令函数 1.getwd()查看当前R的工作目录 2.setwd()修改当前工作目录 3.str()可以输出指定对象的结构(类型,位置等),同理还有class( ...

随机推荐

  1. js常用的函数库

    阻止冒泡.默认行为.事件捕获 /* funname preventEventPropagation * desc 阻止冒泡事件&阻止默认行为&阻止事件捕获 * params {name ...

  2. Anaconda安装tensorflow和keras(gpu版,超详细)

    本人配置:window10+GTX 1650+tensorflow-gpu 1.14+keras-gpu 2.2.5+python 3.6,亲测可行 一.Anaconda安装 直接到清华镜像网站下载( ...

  3. python-筛法求素数

    [题目描述]用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数. [练习要求]请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释. [输入格式 ...

  4. Mybatis 多表实现多对多查询、添加操作

    Mybatis 多表实现多对多查询.添加操作 学习内容: 1. 多对多之添加操作 1.1.需求 1.2.数据库表(多对多数据库设计需要设计中间表) 1.3.类设计 1.4.Mapper 接口和 Map ...

  5. [前端学习]vue的指令学习记录 vu-if | text | for | on | model | bind | pre

    vue的指令学习记录 vue-if | text | for | on | model - 目录 vue的指令学习记录 vue-if | text | for | on | model ... 预备 ...

  6. 文档声明(Doctype)和<!Doctype html>有何作用? 严格模式与混杂模式如何区分?它们有何意义?

    文档声明的作用: 文档声明是为了告诉浏览器,当前HTML文档使用什么版本的HTML来写的,这样浏览器才能按照声明的版本来正确的解析. <!doctype html> 的作用就是让浏览器进入 ...

  7. python中其他数据类型内置方法

    补充字符串数据类型内置方法 1.移除字符串首尾的指定字符可以选择方向1: s1 = '$$$jason$$$' print(s1.strip('$')) # jason print(s1.lstrip ...

  8. 学生管理系统(python实现)

    # 定一个列表,用来存储所有的学生信息(每个学生是一个字典) info_list = [] def print_menu(): print("------------------" ...

  9. 都2022年了,HDFS为何还如此能战!

    摘要:HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术. 本文分享自华为云社区<HDFS为何在大数据领域经久不衰?>,作者: JavaEdge. 1.概述 1.1 简介 ...

  10. vue3项目后台管理系统模板

    Vue3.0 发布第一个版本至今有一段时间了,到现在一直在更新优化,在性能方面,对比 Vue2.x ,性能的提升比较明显,打包后体积更小 来看下 Vue3.x 新增了哪些功能和特性. Performa ...