Convolutional Neural Network
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的更多相关文章
- 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)
Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...
- 卷积神经网络(Convolutional Neural Network,CNN)
全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网 ...
- Convolutional Neural Network in TensorFlow
翻译自Build a Convolutional Neural Network using Estimators TensorFlow的layer模块提供了一个轻松构建神经网络的高端API,它提供了创 ...
- 卷积神经网络(Convolutional Neural Network, CNN)简析
目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...
- HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK阅读笔记
HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK 论文地址:https:/ ...
- A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记
A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...
- 【论文阅读】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices
- 《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 ...
- 《Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences》
Kalchbrenner’s Paper Kal的这篇文章引用次数较高,他提出了一种名为DCNN(Dynamic Convolutional Neural Network)的网络模型,在上一篇(Kim ...
- 论文笔记之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》
1. 文章内容概述 本人精读了事件抽取领域的经典论文<Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networ ...
随机推荐
- 总结 一下UML 类图的关系
1,实线三角 表示 泛化 是一种继承关系,它指定了子类如何特化父类的所有特征和行为 2,虚线三角 表示 实现 是一种类与接口的关系,表示类是接口所有特征和行为的实现 3,空心菱形 表示 聚合 是整 ...
- hdu4565(矩阵快速幂+经典的数学处理)
注意题目的一个关键条件(a-1)2< b < a2 , 于是可以知道 0 < a-√b < 1 ,所以 (a-√b)^n < 1 . 然后 (a+ √b)^n+(a ...
- java动态编译 (java在线执行代码后端实现原理)(二)
在上一篇java动态编译 (java在线执行代码后端实现原理(一))文章中实现了 字符串编译成字节码,然后通过反射来运行代码的demo.这一篇文章提供一个如何防止死循环的代码占用cpu的问题. 思路: ...
- Vue.js_数据绑定
一.文本 data {{data}} <div id="div1">{{message}}</div> <script> var div1 = ...
- SpringBoot专题1----springboot与mybatis的完美融合
springboot大家都知道了,搭建一个spring框架只需要秒秒钟.下面给大家介绍一下springboot与mybatis的完美融合: 首先:创建一个名为springboot-mybatis的ma ...
- Go语言性能优化
原文:http://bravenewgeek.com/so-you-wanna-go-fast/ 我曾经和很多聪明的人一起工作.我们很多人都对性能问题很痴迷,我们之前所做的是尝试逼近能够预期的(性能) ...
- [Android]反编译apk + eclipse中调试smali
从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...
- 3.Write Scripts for the mongo Shell-官方文档摘录
总结 1 使用js进行获取数据的方法 2 js方式和原生mongo shell的交互方式的区别写法 3 需要将所有数据打印出来使用到的循环示例 cursor = db.collection.find( ...
- (3.8)常用知识-临时表、表变量、CTE的对比
转自:https://www.cnblogs.com/xiaozhi1236/p/5895935.html 深入了解:https://www.cnblogs.com/kissdodog/archive ...
- [转载]有经验的Java开发者和架构师容易犯的10个错误
首先允许我们问一个严肃的问题?为什么Java初学者能够方便的从网上找到相对应的开发建议呢?每当我去网上搜索想要的建议的时候,我总是能发现一大堆是关于基本入门的教程.书籍以及资源.同样也发现网上到处充斥 ...