文档章节

CNN的池化工程理解

小祁1124
 小祁1124
发布于 2016/11/22 10:14
字数 942
阅读 80
收藏 0

一 池化的过程

  卷积层是对图像的一个邻域进行卷积得到图像的邻域特征,亚采样层(池化层)就是使用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://www.voidcn.com/blog/mao_kun/article/p-4986504.html

[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

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 池化理解
小祁1124
粉丝 15
博文 78
码字总数 18220
作品 0
海淀
程序员
私信 提问
深度学习笔记11:利用numpy搭建一个卷积神经网络

前两个笔记笔者集中探讨了卷积神经网络中的卷积原理,对于二维卷积和三维卷积的原理进行了深入的剖析,对 CNN 的卷积、池化、全连接、滤波器、感受野等关键概念进行了充分的理解。本节内容将...

鲁伟
07/24
0
0
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(下)

欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 在上一篇文章中,已经介绍了Keras对文本数据进行预处理的一般步骤。预处理完之后...

磐石001
04/12
0
0
一文读懂卷积神经网络CNN(学习笔记)

首先文章的提纲为: CNN栗子镇楼 What is CNN 什么是卷积 什么是池化 Why CNN 对CNN的其他一些理解 CNN实现(接口) 1、CNN栗子(A Beginning Glimpse of CNN) Modern CNN since Yann LeCu...

技术小能手
01/02
0
0
卷积神经网络(CNN)模型结构

1. CNN的基本结构     首先我们来看看CNN的基本结构。一个常见的CNN例子如下图:     图中是一个图形识别的CNN模型。可以看出最左边的船的图像就是我们的输入层,计算机理解为输入若...

文艺小青年
2017/11/23
0
0
94页论文综述卷积神经网络:从基础技术到研究前景

  选自arXiv   机器之心编译   参与:Panda      卷积神经网络(CNN)在计算机视觉领域已经取得了前所未有的巨大成功,但我们目前对其效果显著的原因还没有全面的理解。近日,约克...

机器之心
04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

降压变换器 Buck

特点 输入输出极性相同。 工作过程 在 MOS 导通时,输入电源通过 L 和 C 滤波后向负载端提供电流;当 MOS 断开后,L 通过二极管续流,保持负载电流连续。输出电压因为占空比的作用,不会超过...

colinux
今天
1
0
Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
今天
3
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
今天
4
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
3
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部