卷积神经网络中图像池化操作全解析

原创 2016年05月30日 22:34:20

一 池化的过程

  卷积层是对图像的一个邻域进行卷积得到图像的邻域特征,亚采样层(池化层)就是使用pooling技术将小邻域内的特征点整合得到新的特征。
  在完成卷积特征提取之后,对于每一个隐藏单元,它都提取到 (r-a+1)×(c-b+1)个特征,把它看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,然后在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练,这个过程就是池化。

二 池化的优点

1 显著减少参数数量

  通过卷积操作获得了图像的特征之后,若直接用该特征去做分类则面临计算量的挑战。而Pooling的结果可以使得特征减少,参数减少。
例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) * (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样本都会得到一个 892 * 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。

2 池化单元具有平移不变性

  pooling可以保持某种不变性(旋转、平移、伸缩等)
  

三 池化的方式

1 一般池化(General Pooling)

1) mean-pooling,即对邻域内特征点只求平均,对背景保留更好;

2) max-pooling,即对邻域内特征点取最大,对纹理提取更好;

3) Stochastic-pooling,介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样;

  特征提取的误差主要来自两个方面:(1)邻域大小受限造成的估计值方差增大;(2)卷积层参数误差造成估计均值的偏移。一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则。

这里写图片描述

  下面给出matlab中max-pooling的代码实现:
  

function [outputMap, outputSize] =  max_pooling(inputMap, inputSize, poolSize, poolStride)
% ==========================================================
% INPUTS:
%        inputMap - input map of the max-pooling layer
%        inputSize - X-size(equivalent to Y-size) of input map
%        poolSize - X-size(equivalent to Y-size) of receptive field
%        poolStride -  the stride size between successive pooling squares.
% OUTPUT:
%        outputMap - output map of the max-pooling layer
%        outputSize - X-size(equivalently, Y-size) of output map
% ==========================================================
outputSize = inputSize/ poolStride;
inputChannel = size(inputMap, 3);

padMap = padarray(inputMap, [poolSize poolSize],0, 'post');
outputMap = zeros(outputSize, outputSize, inputChannel, 'single');

for j = 1:outputSize
    for i = 1:outputSize
        startX = 1 + (i-1)*poolStride;
        startY = 1 + (j-1)*poolStride;
        poolField = padMap(startY:startY+poolSize-1,startX:startX+poolSize-1,:);
        poolOut = max(reshape(poolField, [poolSize*poolSize,inputChannel]),[],1);
        outputMap(j,i,:) = reshape(poolOut,[1 1 inputChannel]);
    end
end
2.重叠池化(Overlapping Pooling)

  重叠池化的相邻池化窗口之间会有重叠区域。该部分详见参考文献[4]

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

  空间金字塔池化拓展了卷积神经网络的实用性,使它能够以任意尺寸的图片作为输入。该部分详见参考文献[3]

四 参考文献

[1]池化 http://ufldl.stanford.edu/wiki/index.php/%E6%B1%A0%E5%8C%96

[2]卷积神经网络初探 - Lee的白板报的个人空间 - 开源中国社区 http://my.oschina.net/findbill/blog/550565

[3]池化方法总结http://blog.csdn.net/mao_kun/article/details/50533788

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

[5]http://yann.lecun.com/exdb/publis/pdf/boureau-icml-10.pdf

[6]http://yann.lecun.com/exdb/publis/pdf/boureau-cvpr-10.pdf

[7]http://yann.lecun.com/exdb/publis/pdf/boureau-iccv-11.pdf

[8]http://ais.uni-bonn.de/papers/icann2010_maxpool.pdf

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标注原地址http://blog.csdn.net/u010402786

相关文章推荐

cs231n-(7)卷积神经网络:架构,卷积层/池化层

卷积神经网络的架构,以及常用到的层

深度学习中卷积和池化的一些总结

最近完成了hinton的深度学习课程的卷积和池化的这一章节了,马上就要结束了。这个课程的作业我写的最有感受,待我慢慢说来。 1:里面有几个理解起来的难点,一个是卷积,可以这么来理解。 这幅...

深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测

空间金字塔池化,又称之为“SPP-Net”,记住这个名字,因为在以后的外文文献中,你会经常遇到,特别是物体检测方面的paper。这个就像什么:OverFeat、GoogleNet、R-CNN、Alex...
  • hjimce
  • hjimce
  • 2015-12-05 17:40
  • 8602

深度学习笔记5:池化层的实现

池化层的推导 池化层的输入一般来源于上一个卷积层,主要作用是引入不变性,并且减少了冗余。池化层一般没有参数,所以反向传播的时候,只需对输入参数求导,不需要进行权值更新。 池化层的前向计算 前向计...

Centos7安装TensorFlow

TensorFlow也火了一段时间,想想既然要研究NLP,为什么不好好应用一下Google开源的Deep Learning平台呢,一切还是先从搭建环境开始。 很多大神们也做了这方面的工作,汲取他人...

ARM 浮点运算详解

一:早期ARM上的浮点模拟器:早期的ARM没有协处理器,所以浮点运算是由CPU来模拟的,即所需浮点运算均在浮点运算模拟器(float math emulation)上进行,需要的浮点运算,常要耗费数千...

池化方法总结(Pooling)

在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合)。 为什么可以通过降低维度呢? 因为图像具有一种“静态...

卷积神经网络池化层和卷积层作用

链接:https://www.zhihu.com/question/36686900/answer/130890492 个人觉得主要是两个作用: 1. invariance(不变性),这种不变性...

ubuntu与centos安装tensorflow经验总结

这几天做深度学习,把谷歌的开源框架tensorflow安装做个总结台式机ubuntu与centos服务器都进行了安装 ubuntu版本16.04 安装准备  ubuntu16.0...

池化层实现

池化层的推导 池化层的输入一般来源于上一个卷积层,主要作用是提供了很强的鲁棒性(例如max-pooling是取一小块区域中的最大值,此时若此区域中的其他值略有变化,或者图像稍有平移,poolin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)