Why CNN for Image

图片是由像素点组成的,可以这样来解释深度神经网络对图片的处理。

第一层的layer是最基本的分类器,区分一些基本的特征,比如颜色、是否有斜线。

第二层的layer会检测更加复杂的东西,比如一些简单的组合线条;

后面的layer也会越来越复杂……

我们可以通过思考图像的特征来简化网络。

1.图片中一些特征通常比整个图片要小,比如要检测图像中是否有鸟嘴。

我们的neuron不需要看整个图像来发现某些特征,所以我们只需要把鸟嘴那一小部分的图片,用很少的参数跟neuron关联起来。

2.同样的特征可能出现在图片的不同位置。

我们不会为每个不同位置的特征单独训练一个neuron,因为它做的都是同样的事情,就是检测是否出现鸟嘴,只是出现的位置不一样罢了。

3.subsampling 可以使图片缩小,但不影响图片的表达。

每隔一行、一列删除一行pixel,就是subsampling,我们同样可以看到图片表达的信息,就是一只鸟。

由于图片缩小了,这样又可以减少参数了。

The whole CNN

来看看整个CNN的架构

从图片作为输入开始,经过多层的Convolution层+MaxPooling的组合,然后是Flatten层,最后经过一个Fully Connected network。

其中,上面讨论的关于图片的三个特点,在CNN的不同层中有相应处理。

Property1、2是小的特征和 特征的不同位置,通过Convolution层进行处理;

Property3 Subsampling通过MaxPooling处理。

CNN – Convolution

这里需要提到的是Filter。Filter其实就是一个矩阵,它们是神经网络需要学习的参数。

每个Filter在图片中进行扫描,检测3*3的特征。

Filter从图片的左上角开始,以stride为步长进行图片扫描,图片中每3*3的子图会和Filter作内积,然后得到一个输出值。

上面就是FIlter1扫描整个6×6图片后得到的4×4的结果矩阵。

可以进一步理解的是,该Filter对角线全为1,表示检测图像是否出现类似的斜线,出现斜线的地方在结果矩阵中的值为最大。

对于一张图片,我们会同时检测很多特征,每个filter只做一件相同的事情,所以需要有很多的Filter,

它们放在一起就叫做Feature Map。

对于彩色图片,一个Filter是3维的,如上图,Filter是3×3×3的立方体(tensor).

下面将Convolution层和Fully Connected连接对应理解。

将图片拉直成一个列向量,上面的Filter连接的是1,2,3,7,8,9,13,14,15的输入单元,而不是全连接,Filter的每一个分量可以看作是全连接网络中的w和b。

这样相比于全连接的网络,就只需要更少的参数。

而且,之前讨论过,检测同一个特征只使用相同的Filter,所以每一个neuron共用相同的参数,这就是Shared weights。

这会使CNN的参数变得更少。

CNN – Max Pooling

将每一个Filter检测后的结果,划分成2×2的小块,在每一块中可以取均值或最大值,代替这四个值,这样就实现了Subsampling的功能。

取最大值的方法就是Maxpooling。

一副图像,经过Conv和Maxpooling后,会变成一幅小的新图像。可以再它之上继续进行Conv和Maxpooling。

经过MaxPooling处理后会产生和Filter数目相同的“新图像”,每一个Filter都可以看作是处理之前图像的一个channel。

Flatten

最后的Flatten就是将上一层Maxpooling得到的image拉直成列向量,作为全连接网络的输入。

以上就是一个CNN神经网络的所有模块简介。最后附一张全图。

Convolutional Neural Network的更多相关文章

  1. 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)

    Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...

  2. 卷积神经网络(Convolutional Neural Network,CNN)

    全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网 ...

  3. Convolutional Neural Network in TensorFlow

    翻译自Build a Convolutional Neural Network using Estimators TensorFlow的layer模块提供了一个轻松构建神经网络的高端API,它提供了创 ...

  4. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  5. HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK阅读笔记

    HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL  DEEP  CONVOLUTIONAL NEURAL NETWORK 论文地址:https:/ ...

  6. A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记

    A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...

  7. 【论文阅读】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

    ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices

  8. 《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》

    代码: keras:https://github.com/phdowling/abcnn-keras tf:https://github.com/galsang/ABCNN 本文是Wenpeng Yi ...

  9. 《Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences》

    Kalchbrenner’s Paper Kal的这篇文章引用次数较高,他提出了一种名为DCNN(Dynamic Convolutional Neural Network)的网络模型,在上一篇(Kim ...

  10. 论文笔记之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》

    1. 文章内容概述 本人精读了事件抽取领域的经典论文<Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networ ...

随机推荐

  1. [转]C#自定义控件属性与行为

    原文链接:http://blog.csdn.net/a237428367/article/details/5926445 控件应该定义属性而不是公共字段,因为可视化设计器在属性浏览器中显示属性,而不显 ...

  2. java动态编译 (java在线执行代码后端实现原理)

    需求:要实现一个web网页中输入java代码,然后能知道编译结果以及执行结果 类似于菜鸟java在线工具的效果:https://c.runoob.com/compile/10 刚开始从什么概念都没有到 ...

  3. 170110、Spring 事物机制总结

    spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...

  4. delphi ,1)控件根据窗口大小,一直居中显示 2)显示最大化最小化按钮控件

    一.控件根据窗口大小,一直居中显示 1)onResize:当窗体尺寸改变时发生 例子:如何使控件随窗口的放大和缩小动态改变自己的大小,使控件“保存.返回”在窗口变大变小中随着变. 在Panel调用 p ...

  5. php 正则表达式一.函数解析

    php正则表达式官方手册参考....... 一.php中 常用的正则表达式函数 1.preg_match与preg_match_all preg_match: 函数信息 preg_match_all: ...

  6. 2.sublime的配置,

    sublime配置完成后,感觉好强大..

  7. Java基础语法 - 面向对象 - 局部变量

    如果在一个成员方法内定义一个变量,那么这个变量就被称为局部变量. 局部变量在方法执行时被创建,在方法执行结束时被销毁.局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误 package m ...

  8. 在MyEclipse中改了项目名称,到tomcat的webroot下发现,部署的名称还是原来的。

    在MyEclipse中改了项目名称,到tomcat的webroot下发现,部署的名称还是原来的. 解决方法:选中项目名称右键properties,展开Myeclipse,选择web,web Conte ...

  9. delphi 模拟POST提交数据

    unit GetHttpInfo; interface uses Classes, WinINet, Sysutils, windows, IDURI, IdSSLOpenSSL , IdBaseCo ...

  10. POJ_1195 Mobile phones 【二维树状数组】

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013912596/article/details/33802561 题目链接:id=1195&qu ...