卷积神经网络 – CNN简介
概念
人工神经网络(Artificial Neural Networks,ANN)是一种模拟生物神经系统的结构和行为,进行分布式并行信息处理的算法数学模型。ANN通过调整内部神经元与神经元之间的权重关系,从而达到处理信息的目的。而卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,是一种深度学习模型,它由若干卷积层和池化层组成,尤其在图像处理方面CNN的表现十分出色。
卷积神经网络与传统多层神经网络对比
- 传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适
- 卷积神经网络CNN,在原来多层神经网络的基础上,加入了更加有效的特征学习部分,具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与池化层。卷积神经网络出现,使得神经网络层数得以加深,深度学习才能实现
传统多层神经网络
卷积神经网络:
卷积神经网络-CNN 的基本原理
典型的 CNN 由3个部分构成:
- 卷积层
- 池化层
- 全连接层
卷积——提取特征
卷积层的运算过程如下图,用一个卷积核扫完整张图片:
这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。
在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6中基础模式就能描绘出一副图像。以下就是25种不同的卷积核的示例:
池化层(下采样)——数据降维,避免过拟合
池化层简单说就是下采样,他可以大大降低数据的维度。其过程如下:
上图中,我们可以看到,原始图片是20×20的,我们对其进行下采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。
之所以这么做的原因,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行下采样。
全连接层——输出结果
这个部分就是最后一步了,经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。
经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。
典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 LeNet-5 的结构就如下图所示:
卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层
卷积神经网络的几点说明
1. 训练算法
1.同一般机器学习算法,先定义 Loss function,衡量和实际结果之间差距。
2.找到最小化损失函数的 W 和 b, CNN 中用的算法是 SGD(随机梯度下降)。
2.优缺点
1)优点
- 共享卷积核,对高维数据处理无压力
- 无需手动选取特征,训练好权重,即得特征分类效果好
(2)缺点
- 需要调参,需要大样本量,训练最好要 GPU
- 物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)
3. 典型 CNN
LeNet,这是最早用于数字识别的 CNN
AlexNet, 2012 ILSVRC 比赛远超第 2 名的 CNN,比
LeNet 更深,用多层小卷积层叠加替换单大卷积层。
ZF Net, 2013 ILSVRC 比赛冠军
GoogLeNet, 2014 ILSVRC 比赛冠军
VGGNet, 2014 ILSVRC 比赛中的模型,图像识别略差于 GoogLeNet,但是在很多图像转化学习问题(比如 object detection)上效果奇好
4. fine-tuning
何谓 fine-tuning?
fine-tuning 就是使用已用于其他目标、预训练好模型的权重或者部分权重,作为初始值开始训练。
那为什么我们不用随机选取选几个数作为权重初始值?原因很简单,第一,自己从头训练卷积神经网络容易出现问题;第二,fine-tuning 能很快收敛到一个较理想的状态,省时又省心。
那 fine-tuning 的具体做法是?
复用相同层的权重,新定义层取随机权重初始值
调大新定义层的的学习率,调小复用层学习率
5. 常用框架
Caffe
- 源于 Berkeley 的主流 CV 工具包,支持 C++,python,matlab
- Model Zoo 中有大量预训练好的模型供使用
PyTorch
- Facebook 用的卷积神经网络工具包
- 通过时域卷积的本地接口,使用非常直观
- 定义新网络层简单
TensorFlow
- Google 的深度学习框架
- TensorBoard 可视化很方便
- 数据和模型并行化好,速度快
卷积神经网络 – CNN简介相关推荐
- 卷积神经网络(CNN)简介
卷积神经网络(CNN)简介 多层的线性网络和单层的线性网络没有区别,而且线性模型的能够解决的问题也是有限的 1. 更复杂抽象的数据 一个单隐含层有更多的神经元,就能捕捉更多的特征.而且有更多隐层,意味 ...
- 深度学习:应用于机器视觉领域的卷积神经网络(CNN)简介
1 背景介绍 深度学习是近几年的热门研究话题.深度学习受到神经学的启示,模拟人脑的认知与表达过程,通过低层信号到高层特征的函数映射,来建立学习数据内部隐含关系的逻辑层次模型.深度学习相比于一般的浅层模 ...
- TensorFlow实现卷积神经网络CNN
一.卷积神经网络CNN简介 卷积神经网络(ConvolutionalNeuralNetwork,CNN)最初是为解决图像识别等问题设计的,CNN现在的应用已经不限于图像和视频,也可用于时间序列信号,比 ...
- 卷积神经网络CNN权威介绍
**本文更完整的内容请参考极客教程的深度学习专栏:https://geek-docs.com/deep-learning/cnn/cnn-introduce.html,欢迎提出您的宝贵意见.感谢. 在 ...
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...
- DL之CNN:卷积神经网络算法简介之原理简介——CNN网络的3D可视化(LeNet-5为例可视化)
DL之CNN:卷积神经网络算法简介之原理简介--CNN网络的3D可视化(LeNet-5为例可视化) CNN网络的3D可视化 3D可视化地址:http://scs.ryerson.ca/~aharley ...
- DL之CNN:卷积神经网络算法简介之卷积矩阵、转置卷积(反卷积Transpose)、膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略
DL之CNN:卷积神经网络算法简介之卷积矩阵.转置卷积(反卷积Transpose).膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略 目录 卷积矩阵的简介 卷积.转置卷积--Tran ...
- TF之CNN:Tensorflow构建卷积神经网络CNN的简介、使用方法、应用之详细攻略
TF之CNN:Tensorflow构建卷积神经网络CNN的简介.使用方法.应用之详细攻略 目录 TensorFlow 中的卷积有关函数入门 1.tf.nn.conv2d函数 案例应用 1.TF之CNN ...
- DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图)、七大层级结构(动态图详解卷积/池化+方块法理解卷积运算)、CNN各层作用及其可视化等之详细攻略
DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图).七大层级结构(动态图详解卷积/池化+方块法理解卷积运算).CNN各层作用及其可视化等之详细攻略 目录 CNN 的层级结构及相关概念 ...
最新文章
- java io 缓冲流_记忆系列-Java IO的缓存输入输出流(高效流)
- 计算两个日期之间有多少天多少小时多少分钟
- Windows XP中的用户分为3类。
- Access数据库访问助手类
- 察看linux内存使用情况
- 【项目管理】用LoC衡量程序员的工作效率是不科学的
- python时间控件遮罩层_jquery遮罩层插件
- 暑假周进度总结报告7
- 第七课 Linux裸机开发+SourceInsight3.5使用+notepad++使用
- iozone联机测试
- 网页游戏外挂辅助AMF模拟通讯必备
- 移动应用数据统计平台(之一)
- 威联通 nas mysql_威联通(NAS)应用篇:自建OwnCloud网盘(百度网盘,拜拜~~~)
- 图像处理之基础---去污算法
- Terracotta 3.2.1简介 (一)
- 无缝切地图的3D赛车游戏火了,小哥花16个月用JS打造,浏览器免费就能玩
- cesium加载各类地图服务
- Word2vec浅显的理解
- Harry Potter and the Half-Blood Prince
- Oracle Database SQL Language Reference 笔记(3)—— 伪列(续)