参考:Spatial Pyramid Pooling in Deep Convolutional
Networks for Visual Recognition

SPP_net的提出

因为传统的CNNs网络只能接受固定size的images。实际上,卷积层可以输入任意尺度的, 但这样就会导致输出的feature map 大小不同;而InnerProduct layer 的输入必须是固定的。因此在CNNs后,InnerProduct 前加入SPP pooling layer ,使得无论输入多大的images, 经过该层后输出的feature vecture 大小都一样。虽然提出来的动机是为了解决多尺度图像的训练问题,但是,设计的SPP pooling layer 设计了几个不同的level,从而这个multi-level pooling 实际上进行了几个多个尺度的抽象。

作者在应用到分类问题上时:

进行了两种训练,一种是用单尺度图像训练,一种是多尺度图像进行训练。虽然理论上,网络可以输入任意尺度的图像,但是作者,为不同尺度的图像设定了完全相同的网络结构,并让它们共享权重,每一个epoch仅使用一个尺度的图像进行训练,然后下一次epoch 再训练另一个尺度的图像。(但是,我怎么感觉实际上就是一个网络呢,理解的还不透。。。)

作者就分类进行了如下四个方面的工作:

multi-view Testing:
在测试的时候,从原始图像(256*xxx)的中间及四个corner 提取的图像以及它们的水平flipping,进行10-view Testing,该结果能提高accuracy.
multi-size Training:
训练网络时,采用multi-size 图像进行训练,相对于single-size 的,能提高accuracy.
multi-level pooling:
训练网络时,仍采用single-size的图像进行训练,相比传统网络仅仅替换了Inner Product layer前得普通pooling layer 为SPP pooling layer, 发现multi-level pooling 能提高accuracy.
full-image representation:
采用full-image进行测试虽然没有10-view的结果好,但是比crop sample上的测试结果好,而且,把full-image及其horizontal flipping 添加到multi-view testing 中,还能进一步提高效率。

简单的进行了测试,把lenet网络中的最后一个pooling替换成spp pooling layer(spp3表示3个level的pooling),看到效果还是有一点点提升的。
SPP层:
message SPPParameter {
enum PoolMethod {
MAX = 0;
AVE = 1;
STOCHASTIC = 2;
}
optional uint32 pyramid_height = 1;
optional PoolMethod pool = 2 [default = MAX]; // The pooling method
enum Engine {
DEFAULT = 0;
CAFFE = 1;
CUDNN = 2;
}
optional Engine engine = 6 [default = DEFAULT];
}

SPP pooling layer相关推荐

  1. Caffe源码中Pooling Layer文件分析

    Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/vision_layers ...

  2. 到底什么是 ROI Pooling Layer ???

    到底什么是 ROI Pooling Layer ??? 只知道 faster rcnn 中有 ROI pooling, 而且其他很多算法也都有用这个layer 来做一些事情,如:SINT,检测的文章等 ...

  3. 深度学习——池化层理论学习(Pooling Layer)

    这里写目录标题 1. 什么是池化层 2. 池化层作用 3. 常见的池化层 3.1 最大池化层(max pooling layer) 3.2 平均池化层(average pooling layer) 3 ...

  4. 池化层(pooling layer)

    来源:Coursera吴恩达深度学习课程 除了卷积层,卷积网络也经常使用池化层(pooling layer)来缩减模型的大小(reduce the size of their representati ...

  5. 关于ROI Pooling Layer的解读

    1. 原理介绍 目标检测typical architecture 通常可以分为两个阶段: (1)region proposal:给定一张输入image找出objects可能存在的所有位置.这一阶段的输 ...

  6. 池化层(pooling layer) 感受野(Receptive Field) 神经网络的基本组成

    目录 (1)本文涉及的函数 (2)池化层 (3)感受野 (4)代码示例(含注释) 承接上两篇博客:卷积层(空洞卷积对比普通卷积).激活函数层 (1)本文涉及的函数 import torch impor ...

  7. 为什么在网络的最后用average pooling layer 代替FC

    Global Average Pooling一般用于放在网络的最后,用于替换全连接FC层,为什么要替换FC? 因为在使用中,例如alexnet和vgg网络都在卷积和softmax之间串联了fc层,发现 ...

  8. 【目标检测】0、目标检测方法发展综述

    引言 目标检测: 目标检测的目标是确定某张给定图像中是否存在给定类别(比如人.车.自行车.狗和猫)的目标实例:如果存在,就返回每个目标实例的空间位置和覆盖范围(比如返回一个边界框). 目标检测的意义 ...

  9. 【目标检测】56、目标检测超详细介绍 | Anchor-free/Anchor-based/Backbone/Neck/Label-Assignment/NMS/数据增强

    文章目录 1.双阶段和单阶段目标检测器 1.1 双阶段目标检测器 1.1.1 R-CNN 1.1.2 SPP 1.1.3 Fast R-CNN 1.1.4 Faster R-CNN 1.2 单阶段目标 ...

最新文章

  1. Ant Design 入门-参照官方文档使用组件
  2. 深度学习必备数学知识之线性代数篇(附代码实现)
  3. 连夜撸了一个简易聊天室
  4. 浅谈format格式化输出
  5. ubuntu导入python的包_在ubuntu环境下怎么利用python将数据批量导入数据hbase
  6. mySQL建表及练习题(下)
  7. java语言特点 字符串不变_面试必问:Java中String类型为什么设计成不可变的?
  8. mybatis依赖_这大概就是公司一直用Mybatis的原因!真的太强了
  9. Sql Server判断某列字段是否为空或判断某列字段长度
  10. 数据挖掘--分类思维导图
  11. mysql password() pam-mysql兼容性_pam_mysql认证ftp虚拟用户账号,且拥有不同的权限
  12. python 两个变量同时循环_python基础篇(子非鱼)
  13. fx2n4ad模块中文手册_特殊功能模块FX2N-4AD用户指南手册三菱FX2N-4AD手册 - 广州凌控...
  14. 海康威视摄像头重置密码
  15. 法拉科机器人编程软件_【新提醒】FANUC发那科机器人离线编程与设计模拟仿真软件Roboguide 步骤、功能与技巧...
  16. AI产品经理的技术了解层级
  17. 查询数据表中重复数据及重复次数
  18. Unity 制作360全景视频 全景图片流程
  19. WINDOWS API编程乱叹
  20. 【MML】华为MML AAA接口联调,Java版本

热门文章

  1. ajax 更新模型数据_PyTorch视觉工具包torchvision重大更新!支持各种检测模型、分割模型,还有许多数据集...
  2. java 右键菜单_界面操作--添加右键菜单
  3. mysql 生成数列_PHP生成器的创建和使用
  4. ios 中ARC与非ARC的转换
  5. arcgis api for javascript 距离与面积量算
  6. 【基础】使用cookies,实现免登陆(七)
  7. mongodb中批量将时间戳转变通用日期格式
  8. linux系统UDP的socket通信编程
  9. Access中出现改变字段“自己主动编号”类型,不能再改回来!(已解决)
  10. mysql闪退或者can not connect 127.0.0.1