池化方法总结(Pooling)

在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合)。

为什么可以通过降低维度呢?

因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)来代表这个区域的特征。[1]

1.  一般池化(General Pooling)

池化作用于图像中不重合的区域(这与卷积操作不同),过程如下图。

我们定义池化窗口的大小为sizeX,即下图中红色正方形的边长,定义两个相邻池化窗口的水平位移/竖直位移为stride。一般池化由于每一池化窗口都是不重复的,所以sizeX=stride。

最常见的池化操作为平均池化mean pooling和最大池化max pooling:

平均池化:计算图像区域的平均值作为该区域池化后的值。

平均池化:选图像区域的最大值作为该区域池化后的值。

2. 重叠池化(OverlappingPooling)[2]

重叠池化正如其名字所说的,相邻池化窗口之间会有重叠区域,此时sizeX>stride。

论文中[2]中,作者使用了重叠池化,其他的设置都不变的情况下, top-1和top-5 的错误率分别减少了0.4% 和0.3%。

3. 空金字塔池化(Spatial Pyramid Pooling)[3]

空间金字塔池化可以把任何尺度的图像的卷积特征转化成相同维度,这不仅可以让CNN处理任意尺度的图像,还能避免cropping和warping操作,导致一些信息的丢失,具有非常重要的意义。

一般的CNN都需要输入图像的大小是固定的,这是因为全连接层的输入需要固定输入维度,但在卷积操作是没有对图像尺度有限制,所有作者提出了空间金字塔池化,先让图像进行卷积操作,然后转化成维度的特征输入到全连接层,这个可以把CNN扩展到任意大小的图像。

空间金字塔池化的思想来自于Spatial Pyramid Model,它一个pooling变成了多个scale的pooling。用不同大小池化窗口作用于卷积特征,我们可以得到1X1,2X2,4X4的池化结果,由于conv5中共有256个过滤器,所以得到1个256维的特征,4个256个特征,以及16个256维的特征,然后把这21个256维特征链接起来输入全连接层,通过这种方式把不同大小的图像转化成相同维度的特征。

对于不同的图像要得到相同大小的pooling结果,就需要根据图像的大小动态的计算池化窗口的大小和步长。假设conv5输出的大小为a*a,需要得到n*n大小的池化结果,可以让窗口大小sizeX为
,步长为 。下图以conv5输出的大小为13*13为例。

疑问:如果conv5输出的大小为14*14,[pool1*1]的sizeX=stride=14,[pool2*2]的sizeX=stride=7,这些都没有问题,但是,[pool4*4]的sizeX=5,stride=4,最后一列和最后一行特征没有被池化操作计算在内。

1.        Reference

[1]    UFLDL_Tutorial

[2]    Krizhevsky, I. Sutskever, andG. Hinton, “Imagenet classification with deep convolutional neural networks,”in NIPS,2012.

[3]    Kaiming  He, Xiangyu Zhang, Shaoqing Ren, Jian Su,Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,LSVRC-2014 contest

时间: 2024-11-03 05:41:01

池化方法总结(Pooling)的相关文章

Azure 动手演示之一:采用定制化方法在 Azure 中创建虚拟机

也许大家看过很多关于 Windows Azure (Microsoft Azure) 介绍或如何使用的文章,但即使看过很多图片或 PPT,也难以真正理解这一全球领先的公有云平台. 鉴于此,我制作了一系列如何使用 Azure 的视频录像,主要是实时录制我在屏幕上对 Azure 的操作.希望能对大家深入的了解 Windows Azure (Microsoft Azure) 有所帮助. 本演示看上去非常简单,目的是如何在 Azure 上创建虚拟机,但事实上,它是如何在 Azure 上创建整个企业部署的

图像处理之常见二值化方法汇总

图像处理之常见二值化方法汇总 图像二值化是图像分析与处理中最常见最重要的处理手段,二值处理方法也非常多.越 精准的方法计算量也越大.本文主要介绍四种常见的二值处理方法,通常情况下可以满 足大多数图像处理的需要.主要本文讨论的方法仅针对RGB色彩空间. 方法一: 该方法非常简单,对RGB彩色图像灰度化以后,扫描图像的每个像素值,值小于127的 将像素值设为0(黑色),值大于等于127的像素值设为255(白色).该方法的好处是计算 量少速度快.缺点更多首先阈值为127没有任何理由可以解释,其次完全不

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

http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加灵活,分析到卷积网络对尺寸并没有要求,固定尺寸的要求完全来源于全连接层部分,因而借助空间金字塔池化的方法来衔接两者,SPPNet在检测领域的重要贡献是避免了R-CNN的变形.重复计算等问题,在效果不衰减的情况下,大幅提高了识别速度. 用于视觉识别的深度卷积网络空间金字塔池化方法 Spatial Py

Tensorflow 池化层(pooling)和全连接层(dense)

一.池化层(pooling) 池化层定义在 tensorflow/python/layers/pooling.py. 有最大值池化和均值池化. 1. 最大池化层 tf.layers.max_pooling2d max_pooling2d( inputs, pool_size, strides, padding='valid', data_format='channels_last', name=None ) inputs: 进行池化的数据.pool_size: 池化的核大小(pool_heigh

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

想直接看公式的可跳至第三节 3.公式修正 一.为什么需要SPP 首先需要知道为什么会需要SPP. 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对数据大小有要求的则是第一个全连接层,因此基本上所有的CNN都要求输入数据固定大小,例如著名的VGG模型则要求输入数据大小是 (224*224) . 固定输入数据大小有两个问题: 1.很多场景所得到数据并不是固定大小的,例如街景文字基本上其高宽比是不固定的,如下图示红色框出的文字. 2.可能你会说可以

【转】图像灰度化方法总结及其VC实现

转载自:  http://blog.csdn.net/likezhaobin/article/details/6915754 最近一段时间作者开始进行运动目标识别定位系统设计,本文以及后续的几篇文章都是从一个图像处理初学者的角度来总结目标检测定位过程中所应用到的各种常 见的算法,尤其是解决算法实现过程中由于粗心大意或者C编程基本功不扎实所引起的各种问题.本文主要对彩色图片灰度化的方法及其实现过程进行总结,最终给 出实现的C代码. 在进行视频流目标识别与跟踪时,通常第一个步骤就是对采集到的彩色图像

光栅化方法优化

之前用包围盒和重心坐标法做过光栅化实现,但是那个方法存在问题,这次要实现一个更高效的光栅化方法. 包围盒的问题 之前使用的包围盒方法确定光栅化范围,但是包围盒确定的范围是矩形,要光栅化的是三角形,那么每次都会有不需要的像素参加运算,一个面当然没啥问题,但是如果是100个面问题就大了. 改进方法 在 <3d游戏编程大师技巧> 中作者使用了三角形扫描线插值的方法,效率不错,实现方法类似下图: 通过计算三角形三条边的方程和每条扫描线的两个交点以确定光栅化x值的范围,然后就能够准确地进行光栅化计算,这

Atom windows 版不完全汉化方法 附代码

刚刚发布的 Atom 1.0 . 看到的第一眼就喜欢上了它. 不太喜欢 vs code 的庞大. 可惜没中文, 于是找啊找.终于找到个半吊子的方法来汉化 - - 不喜勿喷 查看的官方开发文档  https://atom.io/docs/api/v1.0.0/MenuManager 以及git仓库 https://github.com/atom/atom 由于只有添加的方法,没有消除的方法,所以就这个样子了,没法删除原来的菜单. 诸君也可以自己试试看. 而且以下汉化用代码是根据 https://g

深度学习全优化方法总结比较(转)

https://zhuanlan.zhihu.com/p/22252270 https://zhuanlan.zhihu.com/p/27449596 http://cs231n.github.io/neural-networks-3/#sgd 前言 (标题不能再中二了)本文仅对一些常见的优化方法进行直观介绍和简单的比较,各种优化方法的详细内容及公式只好去认真啃论文了,在此我就不赘述了. SGD 此处的SGD指mini-batch gradient descent,关于batch gradien