哈尔滨工业大学沈俊楠:典型模式-卷积神经网络入门

简介: 在2018年3月13日云栖社区,来自哈尔滨工业大学的沈俊楠分享了典型模式-卷积神经网络入门。本文详细介绍了关于卷积神经网络的基础概念和知识与讲解,并列举实例展示了卷积和池化的效果。

哈尔滨工业大学的沈俊楠分享了典型模式-卷积神经网络入门。本文详细介绍了关于卷积神经网络的基础概念和知识与讲解,并列举实例展示了卷积和池化的效果。
直播视频回顾请点击
以下是精彩视频内容整理:
问题引出
学习知识从问题引出入手是一个很好的方法,所以本文将可以围绕下面三个问题来展开:
1.CNN从何而来?有何作用?运行原理是什么?
2.为什么现在图像上用得这么多?怎么用?
3.我想要入门,怎么实践操作下?
本文思维导图如下:

_1

概念原理
预备知识-神经元
神经网络有大量的节点(或称“神经元”、“单元”)和相互链接而成。每个神经元接受输入的线性组合,进行非线性变换(亦称激活函数activation function)后输出。每两个节点之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。

_2

以上图为例,该图即为一个神经元。神经元有a1,a2,a3...an输入,而每个输入中都有权值以及偏置值,对应图中的w1,w2,w3...wn以及b。这些输入与权值的乘积加上偏置会经过激活函数的处理得到输出t。
神经元的作用我们可以根据上图以是否参加音乐节的决策为实力来详细介绍一下。图中a1,a2代表是否有人陪同参加音乐节,w1,w2代表今天的天气如何。分别赋值a1为1,a2为0,w1为5,w2为-2,偏置b代表随意事件,此处赋值为0。这些值的和为s,s=a1 w1+a2w2+b。
s作为输入进入激活函数,此处激活函数代表决策,当决策大于某一个值时就参加音乐节,若小于该值就不参加音乐节,最后的输出t即为是否参加音乐节。这就是神经远的构成。
预备知识-激活函数
常用的非线性激活函数有sigmoid、relu等等,前两者sigmoid比较常见与全连接层,后者relu常见与卷积层。这里先简要介绍下最基础的sigmoid。
sigmoid的函数表达式如下:

_3

其中z时一个线性组合,比如z可以等于:z=b+w1 a1+w2a2。通过带入很大的正数或很小的负数到g(z)函数中可知,其结果趋近于0或1。因此,sigmoid函数g(z)的图形表示如下图(横轴表示定义域z,纵轴表示值域g(z))。

_3

Sigmoid函数的功能是相当于把一个输出压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。压缩至0到1之间的作用是这样以来便可以把激活函数看作一种“分类的概率”,比如激活函数的输出为0.9的话便可以解释为90%的概率为正样本。
预备知识-神经网络
定义:将神经元组织在一起,其实便形成了神经网络。下图便是一个三层神经网络结构

_4


最左边的原始输入信息称之为输入层,最右边的神经元称之为输出层(上图中输出层只有一个神经元),中间的叫隐藏层。
输入层(Input layer)众多神经元(Neuron)接受大量非线性形输入讯息。输入的讯息称为输入向量。
输出层(Output layer)讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息成为输出向量。
隐藏层(Hidden layer)简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有同多个隐藏层,则意味着多个激活函数
同时,每一层都可能有单个或多个神经元组成,每一层的输出将会作为下一层的输入数据,不断传递,最终有输出层输出最终结果。
CNN的结构

_5


卷积神经网络(Convolutional Neural Network,CNN)是受到神经科学启发后的多层感知机模型的进化。
卷积的概念来自信号处理,是对输入信号经过持续的转换持续的输出另一组信号的过程。图像处理中可以通过卷积完成边缘检测、模糊、锐化等效果。
在计算机视觉(Computer Version)领域中卷积层是指感受野(Receptive Field)与卷积核(Kernel)的内积通过激活函数(Activation Function)之后输出特征图像(Feature Map)
结果多层的卷积层、池化层、全连接层,卷积神经网络便可以赋予计算机视觉等能力。
CNN的机构-感受野
感受野是指某个卷积核在输入图像所看到的空间。

_6


上图表示卷积操作为:卷积核3x3、填充1、步长2。第一排是对5x5蓝色图像进行卷积操作,得到3x3绿色图像。相对左侧的通常表示方法, 左侧表示方法更容易观察到特征的关注点(感受野的中心)和视野(感受野的范围)。第二排是对3x3的绿色图像进行卷积操作,得到2x2黄色图像。
CNN的结构-卷积操作
图像处理中,卷积操作是从输入图像中取出与卷积核大小相同的区块,与卷积核执行内积后生成一个像素,计算完毕后取下一个区块一次类推,最终得到特征图像,过程如下图所示:

_7


卷积操作的好处有两点,第一稀疏连接:眼睛在看东西的时候目光是聚焦在要给相对很小的局部,而不是全部。相对传统多层感知器的隐层节点会连接到图像的每个像素点上,卷积神经网络模拟了眼睛的特性,每个隐层节点通过卷积核连接到图像某个足够小局部的像素点上,从而大大减少权值参数。第二权值共享:如同神经中枢中的神经细胞,知识对某些形状有反应,这样的神经细胞被卷积核来模拟,同一个特征图像中的卷积核的权值是一样的,从而大大减少全职参数。通过仿生而提出的稀疏连接,卷积不仅仅符合视觉原理,复杂度也得到了很好的控制。
CNN的结构-卷积核

_8


_9


以图像为例,卷积是从输入图像中取出与卷积核大小相同的区块,与卷积核执行点乘后生成了特征图像(feature Map)中的一个像素,当一个像素计算完毕后,移动一个像素取下一个区块执行相同的运算。
不同的卷积核会得到不同的输出数据,比如深浅,轮廓等。如果想提取图像的不同特征,则需要使用不同的卷积核。所以卷积核有时候也被形象的称为检测器(Detector)。
CNN的结构-激活函数&特征图像
激活函数(Activation Function)是用来增加非线性能力,使得神经网络可以更好的解决较为复杂的问题。典型的激活函数有Rectified Linear Unit(非线性激活函数),即ReLU函数:Y=max{0,x}。

_10


不同的卷积核将产生不同的特征图像,适合的卷积核就可以为特征来进行图像识别。
CNN的结构-池化层
池化是对某个区域内的内容进行一定统计操作以改变输出的图像。池化层操作有两个典型用途:
1.降低计算
理想情况下,学习到的特征都嗯那个用来分类就好了,但是这种做法不仅在计算机的压力会非常打,还会容易造成过拟合。鉴于图像的特征往往出现在图片的多个地方,所以对于特征进行聚合来提高抽象程度,便显得非常合情合理了。这种池化操作往往通过控制步长使得感受野不重叠。
2.平移不变性
如果特征在不同的图像上有轻微的移动,池化操作能够确保该特征以一定概率在感受野上被识别与保留。这样,比如MNIST所针对的手写数字,及时有轻微的平移,仍然能够被正确识别。这种池化操作的感受野往往是重叠的。
池化操作的算法有两个,分别为平均池化核最大池化。平均池化考虑各种特征,最大池化强调突出特征。
CNN的结构-全连接层

_11


最后的两列小圆球就是两个全连接层,在最后一层卷积结束后,进行了最后一次池化,输出了20个12 12的图像,然后通过了一个全连接层变成了1100的向量。
自所以能够做到这样,其实就是有20 100个1212的卷积核卷积出来的,对于输入的每一张图,用了一个和图像一样大小的核卷积,这样整幅图就变成了一个数了,如果厚度是20那就是20个核卷积完了之后相加求和。这样就能把一张图高度弄成了一个数了。
由于传统的网络输出都是分类,也就是几个类别的概率甚至就是要给数类别号,那么全连接层的目的就是高度提纯特征,方便交给最后的分类器或者回归。
CNN的处理图像的例子-卷积效果与池化效果

_12


四张图片对应不同卷积核计算结果非别为:左上角模糊blur、右上角向下Sobel、左下角emboss、右下角outline

_13


该池化操作通过max_pool进行的,max_pool为最大池化。如图中为4 4的特征图像,对其用一个22的框架进行最大池化。可以看出提取出的四个结果分别为四个模块中的最大值分别为6、4、5、8。
应用介绍-LeNet5数字分类
LeNet是第一个卷积神经网络,它的架构是由Yann LeCun等在1998年的论文Gradient-Based Learning Applled to Document Recognition中首先提出的,主要用来识别数字。下图为LeNet的架构:

_14


MNIST数据作为场景。很大程度上,LeNet+MNIDST已经称为深度学习图像处理的Hello World了。MNIST包含三种数据:55000个训练数据点,10000个测试数据点,5000个验证数据点。每个MNIST 数据点有两部分内容:手写数字的图像,对应图像的标签。每个图像的长和宽都是28个像素,总共784像素。
LeNet模型包含:1.使用卷积核最大池化。2.仍然是卷积核最大池化,只是使用64个特征,卷积核仍然是5x5。最大池化后图像大小变为7x7。3.全连接层。4.对全连接层的输出使用劝退。5.直观的softmax层,得到最后的概率输出。
训练是通过损失函数表示模型的预测对比预期有多糟糕,训练的目标是最小化损失函数。预测是最后通过计算图谱便能够完成的。
本文由云栖志愿小组谭昊整理,编辑百见
数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!
目录
相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
31 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
1天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
30 11
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
2天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
17 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
1天前
|
机器学习/深度学习 人工智能 算法
深度学习中的卷积神经网络(CNN)入门与实践
【9月更文挑战第19天】在这篇文章中,我们将探索深度学习的一个重要分支——卷积神经网络(CNN)。从基础概念出发,逐步深入到CNN的工作原理和实际应用。文章旨在为初学者提供一个清晰的学习路径,并分享一些实用的编程技巧,帮助读者快速上手实践CNN项目。
|
1天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第19天】在人工智能的浩瀚星海中,卷积神经网络(CNN)如同一颗璀璨的星辰,照亮了图像处理的天空。本文将深入CNN的核心,揭示其在图像识别领域的强大力量。通过浅显易懂的语言和直观的比喻,我们将一同探索CNN的奥秘,并见证它如何在现实世界中大放异彩。
|
1天前
|
机器学习/深度学习 人工智能 TensorFlow
深入探索深度学习中的卷积神经网络(CNN)
【9月更文挑战第19天】本文将深入浅出地介绍卷积神经网络(CNN)在深度学习领域的应用和原理,旨在为初学者提供一个清晰的理解框架。通过实例演示,我们将展示如何利用Python和TensorFlow库构建一个简单的CNN模型,用于图像分类任务。此外,文章还将探讨CNN在不同应用场景下的优化策略和挑战。
|
23小时前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
24 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种结合粒子群优化(PSO)与分组卷积神经网络(GroupCNN)的时间序列预测算法。该算法通过PSO寻找最优网络结构和超参数,提高预测准确性与效率。软件基于MATLAB 2022a,提供完整代码及详细中文注释,并附带操作步骤视频。分组卷积有效降低了计算成本,而PSO则智能调整网络参数。此方法特别适用于金融市场预测和天气预报等场景。
|
6天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
24 7
|
4天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第16天】本文将深入浅出地介绍卷积神经网络(CNN)的基本概念、结构和工作原理,同时通过一个实际的代码示例来展示如何在Python中使用Keras库构建一个简单的CNN模型进行图像识别。我们将看到,即使是初学者也能够通过简单的步骤实现深度学习的强大功能,进而探索其在复杂数据集上的应用潜力。