收藏 分销(赏)

基于深度学习的图像超分辨率重建研究.doc

上传人:xrp****65 文档编号:5752164 上传时间:2024-11-19 格式:DOC 页数:62 大小:6.17MB 下载积分:10 金币
下载 相关 举报
基于深度学习的图像超分辨率重建研究.doc_第1页
第1页 / 共62页
基于深度学习的图像超分辨率重建研究.doc_第2页
第2页 / 共62页


点击查看更多>>
资源描述
毕业设计(论 文) 基于深度学习的图像超分辨率重建研究 院 别 数学与统计学院 专业名称 信息与计算科学 班级学号 5133117 学生姓名 楚文玉 指导教师 张琨 2017年06月10日 基于深度学习的图像超分辨率重建研究 摘 要 人工神经网络凭借其超强的学习能力,使得人工智能得到迅猛的发展,让人工神经网络再次成为研究热点。目前深度学习已经广泛应用于计算机视觉,语音处理,自然语言处理等各个领域,甚至在某些领域已经起到了主导作用。单一图像超分辨率重建技术旨在将一个低分辨率图像经过一系列算法重构出对应的高分辨率图像。目前比较成熟的方法有基于频域法,非均匀图像插值法,凸集投影法,最大后验概率法以及稀疏表示法。本文主要研究利用深度学习实现单一图像超分辨率重建。 本文首先简要介绍人工神经网络的发展历程,然后介绍深度学习在计算机视觉方面的应用。然后介绍神经网络的一些理论知识,最后介绍深度学习中的卷积神经网络(CNN, Convolutional Neural Network)。 本文研究如何利用卷积神经网络实现超分辨率重建。卷积神经网络分为三层结构,第一层的作用是特征块的提取和表示,第二层的作用是非线性映射,第三层的作用是重建出高分辨率图像。本文首先将一个图像降采样再双三次插值作为低分辨率图像,作为卷积神经网络的输入,而高分辨率图像作为卷积神经网络的输出,利用卷积神经网络建立低分辨率,高分辨率之间的映射。最后针对该模型进行改进,再加入一层作为特征提取。最后利用深度学习框架TensorFlow实现上述模型。最后研究快速超分辨率重建模型,并针对模型层数和过滤器大小进行改进,与先前实验做比对。 关键字:超分辨率重建,卷积神经网络,深度学习,TensorFlow Image Super-Resolution Using Deep learning Author: Chu Wen-yu Tutor: Zhang Kun Abstract Artificial Neural Network because of its strong ability to learn, get rapid development of artificial intelligence, let the Artificial Neural Network become the research upsurge again. Deep learning has been widely used in computer vision, speech processing, natural language processing and so on. The super-resolution(SR) technique is designed to refactor a low-resolution image through a series of algorithms to reconstruct the corresponding high-resolution image. Currently, the method of frequency domain, Non-uniform image interpolation, Projection onto convex set(POCS), Maximum a posterior(MPA) and sparse matrix method are the more mature methods. This paper mainly researches the realization of super-resolution(SR) reconstruction using deep learning. In this thesis, first is a brief introduction of the development of artificial neural network, then introduces the application of deep learning in computer vision. With that introduces some theoretical knowledge of neural network, and finally introduces the convolution neural network(CNN) in deep learning. This article mainly researches how to use the convolution neural network(CNN) to get the super-resolution reconstruction. The convolution neural network contains three structures, the effect of the first layer is Patch extraction and representation, the second is the function of Non-linear mapping, the role of the third layer is the high-resolution image reconstruction. First to downscale and bicubic interpolation an image as the low-resolution images as the input of the convolution neural network, and the high-resolution image as the output of the convolution neural network, using convolution neural network established end-to-end mapping between the low -resolution and high-resolution. Finally, the model is improved, and then a layer is added as feature extraction. The model implements using deep learning frame TensorFlow. Finally, learn more about the accelerate super-resolution reconstruction model and improve the model layer and filter size, and compare with the previous experiment. Key Words: Super-Resolution, Convolution neural network, Deep learning,TensorFlow 东北大学秦皇岛分校毕业设计(论文) 第IV页 目 录 1 绪论 1 1.1 课题背景及意义 1 1.2 国内外研究现状 2 1.3 论文的内容结构 3 2 深度学习理论 5 2.1 人工神经网络理论 5 2.1.1 神经网络基础理论 6 2.1.2 BP反向传播算法 9 2.1.3 随机梯度下降法 12 2.2 深度神经网络理论 13 2.2.1 深度学习的核心思想 13 2.2.2 卷积神经网络 14 2.3 TensorFlow简介 19 3 基于SRCNN的超分辨率重建算法研究 21 3.1 SRCNN模型简介 21 3.2 SRCNN模型的改进 22 3.3 改进的模型的实现 23 3.3.1 数据集制作 23 3.3.2 TensorFlow实现卷积神经网络 24 3.4 FSRCNN模型 27 3.4.1 FSRCNN模型简介 27 3.4.2 FSRCNN模型改进 28 4 实验及分析 29 4.1 具体实验结果分析 29 4.2 与其他实验对比分析 31 结 论 35 致 谢 36 参考文献 37 附 录 A 39 附 录 B 44 东北大学秦皇岛分校毕业设计(论文) 第 56 页 1 绪论 1.1 课题背景及意义 从2016年AlphaGo完胜李世石到2017年5月战胜柯洁等诸多世界围棋顶级高手,人工智能和深度学习这些概念再次引起了学术界的关注。谷歌、脸书、阿里巴巴、百度等众多国内外互联网公司纷纷宣布要将人工智能作为他们的下一个战略重心[1]。在类似AlphaGo、无人机驾驶汽车等最新技术的背后,深度学习是推动这些技术发展的核心力量。目前我们所熟知“深度学习”基本上是深层神经网络的一个代名词,而神经网络技术可以追溯1943年。深度学习之所以看起来像一个新技术的原因是在21世纪初期并不是很流行。神经网络的发展史大致可以分为三个阶段。 早期的神经网络模型类似于仿生机器学习,它试图模仿大脑的学习机理。最早是在1943年由Walter Pitts教授和Warren McCulloch教授提出的McCulloch-Pitts Neuron(MP)计算结构模型,大致模拟了人类神经元的工作原理,使用了简单的线性加权和的方式来模拟变换[2]。Frank Rosenblatt教授在1958年提出了一个感知机模型(perceptron)[3]。它首次实现了依据样本数据集来学习权重。这两个模型深深的影响了现代机器学习,为现代机器学习奠定了基础,但自身也存在许多不足。Seymour Paper教授和Marvin Minsky教授在1969年出版的《Perceptron》书中证明了感知机模型只能解决线性可分问题,无法解决异或问题。在之后的十几年里,关于神经网络的研究全部处于停滞状态。 直到20世纪80年代末,第二波神经网络研究热潮因为分布式知识表达(distributed representation)和神经网络反向传播算法的提出而重新兴起。这大大增强了模型的表达能力,让神经网络从宽度的方向走到了深度的方向。这为之后的深度学习奠定了基础。1986年David Everett Rumelhart教授、Geoffrey Everset Hinton教授和Ronald J. Willians教授在自然杂志上发表的Learning Representations by Back-propagating errors文章中首次提出了反向传播算法(BP)[3],此算法大幅降低了训练神经网络的时间。直达今天仍是训练神经网络的主要方法。现如今使用的一些神经网络结构,比如卷积神经网络和循环神经网络,在这个阶段取得了显著的成就。Sepp Hochreiter教授和Juergen Schmidhuber教授于1991年提出的long short-term memory(LSTM)模型可以有效的对较长的序列进行建模,比如一段文字和语音等。直到今天LSTM都是解决自然语言处理,语言识别的有效方法。然而,之后神经网络研究再度步入寒冬。在神经网络发展前景不好的时候,传统的神经网络学习算法却得到了突破性的进展,并在90年代末超过了神经网络,成为当下最先进的方法。典型的案例是1998年,使用支持向量机(SVM)的算法在手写体识别上,可以把错误率降低到0.8%,这是神经网络无法做到的。导致这种情况的原因主要是因为在当时的计算资源下,训练深层的神经网络仍然非常困难,其次,当时的数据量比较小,无法满足训练深层神经网络的需求。 随着计算机性能的进一步提高,以及云计算、GPU的出现,到2010年左右,计算量不再是阻碍神经网络发展的问题。与此同时,随着互联网+的发展,获取海量的数据也不在困难。于是乎新的神经网络高潮再次来临。在2012ImageNet举办的图像分类竞赛ILSVRC中,由Alex Krizhevsky教授实现的深度学习系统AlexNet赢得了冠军。自此之后深度学习作为深层神经网络的代名词被大家所熟知。在2013年,深度学习被麻省理工(MIT)评为了年度十大科技突破之一[4]。在2013年的ImageNet比赛中,效果较好的模型都是使用深度学习。2014年ImageNet比赛,谷歌的GoogLeNet加深网络深度到20多层,将top5错误率降到了6.656%。 在2012年微软亚洲研究院(Microsoft Research Asia,MSRA)二十一世纪计算大会(21st Century Computing)上,微软高级副总裁Richard Rashid现场演示了微软开发的由英文到汉语的同声传译系统。深度学习在图像识别领域的突破掀起了学术界的研究热潮,而深度学习在人机博弈上的突破使得这个概念深入人心。在2016年3月谷歌开发的围棋人工智能系统AlphaGo以4:1战胜韩国棋手李世石,成为人工智能历史上的一个里程碑。而在今年AlpahGo再次战胜我国顶级围棋高手柯洁,让人们对人工智能更加的憧憬。 深度学习的热潮也深深影响了我,让我对深度学习产生了浓厚的兴趣。图像超分辨率重建在现阶段已经非常成熟,但是利用深度学习去做超分辨率重建的案例并不多,借着深度学习,神经网络的热潮,研究深度学习下的超分辨率重建。 1.2 国内外研究现状 单一图像超分辨率重建是计算机视觉的经典问题。本部分主要介绍深度学习在计算机视觉方面的研究现状以及传统的超分辨率重建方法的研究现状。 深度学习算法最早尝试应用的领域就是计算机视觉问题。1989年,Yann LeCun教授提出了卷积神经网络(CNN)的概念,它是一种包含卷积层的深度神经网络模型。起初卷积神经网络在小规模的问题上取得了非常好的效果,但是却没有取得重大突破。归其原因就是卷积神经网络对大图像处理得不到理想的效果。直到2012年深度学习算法AlexNet赢得图像分类比赛ILSVRC冠军,卷积神经网络才得以重新被热议研究。ILSVCR是基于ImageNet图像数据集的图像识别类比赛,在计算机视觉领域有极高的影响力。从2013年开始,ILSVRC上基本都是深度学习在参赛。从2012年到2015年间,通过对深度学习算法的不断研究,ImageNet图像分类的错误率以每年4%的速度递减。这说明深度学习完全打破了传统机器学习算法在图像分类上的瓶颈,让图像分类问题得到了更好的解决。2015年在自然科学杂志上刊登的深度学习综述《Deep Learning》[5],对现在的深度学习理论进行了总结,文章中提到了用ReLu函数代替Sigmoid函数成为最流行的作用函数,加上GPU加速运算等,这些共同促进了深度学习在图像识别的成功,给计算机视觉领域带来了一场革命。 国内互联网巨头百度公司将深度学习相关技术应用到计算机视觉上,推出了一系列产品,并且聘请了美籍华人科学家Andrew Ng (吴恩达)主导百度的深度学习,取得了显著的成果,在2017年的最强大脑中,由吴恩达科学团队设计的小度智能机器人,与国内外顶级最强大脑进行对决,未尝败绩。 图像超分辨率重建算法大致可以分为基于插值的算法[6]、基于重建的算法[7]和基于学习的算法[8]。其中基于插值的算法中,尤其是Keys在1985年提出的双三次插值算法,至今仍然应用在各个计算机视觉领域。当放大倍数较小时,双线性插值,最近邻算法以及双三次插值都可以得到显著的效果。基于重建的算法中,比较突出的是盲超分辨重建,从低分辨率图像预估出高分辨率和模糊核[9]。基于学习的超分辨率重建是近年来比较热门的研究方向,Freeman等人将机器学习方法成功应用到图像超分辨率重建问题上,但是该算法低分辨率面片和低分辨率输入之间不能完全匹配,会引入错误的细节。Sun等人在此基础上做了改进,增强图像中的边缘等基元[10]。Chang等人提出了一种基于局部嵌入的图像超分辨率算法[11]。Yang等人结合压缩感知理论,利用信号的稀疏表示精简训练样本得到学习字典[12]。最近几年深度学习比较热门,汤晓鸥团队提出利用CNN实现超分辨重建,他将基于深度学习的方法和基于稀疏表示的方法对比,得出基于稀疏表示的方法是深度学习神经网络中的一种表示形式[13],并且实验得到的结果比稀疏表示要好。 1.3 论文的内容结构 本部分主要介绍本文的主体架构: 第一部分介绍了课题的研究背景及意义,先简要介绍了深度学习的发展历程,然后介绍深度学习以及图像超分辨率重建国内外的研究现状。 第二部分主要介绍深度学习的基础理论知识,包括人工神经网络基础理论,学习训练网络方法,BP算法,以及卷积神经网络基础理论介绍,还有TensorFlow深度学习框架介绍。 第三部分主要介绍基于卷积神经网络(CNN)的图像超分辨率重建模型,包括网络层的搭建,数据集的制作,模型训练,反馈学习等。然后将模型层数加深进行算法改进,最后学习快速超分辨率重建技术,针对模型的层数和过滤器尺寸进行改进。 第四部分介绍算法实验分析和总结,针对实验效果,模型复杂程度,训练时间等方面进行分析比对。 第五部分对这次论文进行归纳总结,分析不足,提出可行性的建议。 2 深度学习理论 2.1 人工神经网络理论 人工神经网络(Artificial Neural Network, ANN),基于生物学中神经网络的基本原理,模仿大脑神经创建的数学模型。它有并行的分布处理能力、高容错性、自我学习等特征。神经网络中最基本的单元是神经元,也叫感知器,如下图所示: 图2.1 简单神经元的示意图[14] 可以看到,一个神经元由如下部分组成: l 输入权值:一个神经元可以接受多个输入,每个输入都有一个权值以及一个偏执项 l 激活函数:用来做非线性映射,比如Sigmoid函数,又称S形函数 (2.1) l 输出:神经元的输出由下面公式计算 (2.2) 利用感知器可以实现布尔运算,例如可以利用感知器实现AND函数。我们可以令 ,,,激活函数选择阶跃函数 (2.3) 则当为真时(真为1,假为0),输出结果为真,其余为假。 事实上,感知器不但能够实现简单的逻辑布尔运算,还可以拟合出任何的线性函数。 感知器还可以用来解决线性分类问题,回归问题。前面的布尔逻辑运算可以看作是一个二分类问题,回归问题,输出真或假(0或1)。同样感知器也可以用来实现线性分类问题,如下图2.2所示所示,要将三角形和圆形分类,就需要使用AND感知器,每一条 直线叫做一个分类器,每一个分类器可以做一次线性分类,取下侧,取上侧,然后AND运算,即可实现分类。理论上利用线性分类器可以实现所有的区域划分。 0 1 1 图2.2 简单线性分类图 2.1.1 神经网络基础理论 本节主要介绍神经网络的理论模型,学习方式,学习规则(算法),激活(作用)函数,BP算法等。 1.神经网络模型 下图2.3所示为简单神经网络的结构模型图。最左边的层叫做输入层,输入数据为,最右边的层叫做输出层,输出数据为。输入层和输出层之间的层叫做隐藏层。含多个隐藏层的神经网络叫做深度神经网络。深层神经网络相比较浅层神经网络对于拟合任意一个函数而言,浅层神经网络浅而宽,需要大量的神经元,而深层神经网络深而窄,需要更多的层,较少的神经元。一般深层网络节省资源,但是深层网络并不好训练,需要大量的数据,很好的技巧才能去拟合,训练出好的网络。 2.学习方式 神经网络的学习方式很多,根据一种广泛的分类方式,可以将其分为三大类: l 有监督学习:又叫有导师学习,将训练样本的数据加入到神经网络的输入端,将期望答案和实际输出做差,可以得到误差信号,通过控制误差信号来调整权值得大小,以此来适应新的环境。 l 无监督学习:又称无导师学习,起初并不给定标准数据样本,而是直接将网络置于环境之中,由自身根据数据特征进行学习。 l 增强学习:又称作再励学习,输入信息介于有监督和无监督之间,不需要给定标签,但需要对网络的输出做出评判(奖励),以此来调整网络参数。 图2.3 简单神经网络的示意图[14] 3.学习规则 学习规则,其实就是用来修改神经网络的权值和偏置值的过程和方法,其目的就是为了训练网络,更好的拟合我们的需求,完成特殊的任务。常见的学习规则有Hebb学习规则,Delta算法以及最经典的BP算法。BP算法会在下一节详细介绍。 4.激活(作用)函数 激活函数,又叫激励函数,主要作用是对神经元所获得的输入的变换,反应神经元的特性。常用的激活函数有如下几种类型: (1) 线性函数 (2.4) 其中,,为常量。线性函数常用在线性神经网络中。 (2) 符号函数 (2.5) (3) 对数函数(Sigmoid函数) (2.6) 对数函数又称S性函数,其图像如下图2.4所示,是最为常见的激活函数,它将区间映射到的连续区间。特别的,是关于处处可导的,并且有的 导数。 图 2.4 sigmoid函数图像 (4) 双曲正切函数 (2.7) 图2.5 双曲正切函数tanh函数图像 (5) 高斯函数 (2.8) (6) ReLU函数 (2.9) 也可表示为。最近几年神经网络中,ReLU激活函数得到了广泛的应用,尤其在卷积神经网络中,往往不选择Sigmoid或 Tanh函数,而是选择ReLU函数,原因有以下几点: a) 速度快:和Sigmoid函数必须计算指数和导数比较,ReLU代价小,速度更快。 b) 减轻梯度消失问题:对于梯度计算公式,其中是Sigmoid的导数,在经过BP算法求梯度下降的时候,每经过一层Sigmoid神经元,都要乘以,但是的最大值是1/4[8],所以会导致梯度越来越小,这对于训练深层网络是一个大问题,但是ReLU函数的导数为1,不会出现梯度下降,更易于训练深层网络。 c) 稀疏性:有研究发现,人脑在工作时只有大概5%的神经元是激活的,而Sigmoid函数大概有50%的神经元是激活的,而人工神经网络在理想状态时有大概15%-30%的激活率,所以ReLU函数在小于零时是完全不激活的,所以可以适应理想网络的激活率要求。 图2.6 ReLU函数图像 说明:没有一种完美的激活函数,不同的网络有不同的需求函数,需要根据具体的模型选取合适的激活函数。 2.1.2 BP反向传播算法 BP算法学习过程分为两个子过程,即工作信号正向传递子过程和误差型号反向传递子过程。应用到深度学习中就是正向传播求损失,反向传播求偏导[15]。 其完整的学习过程是,对于一个训练样本,输入正向传播到输出,产生误差,然后误差信号反向从输出层传递到输入层,利用该误差信号求出权重修改量,通过它更新权,称为一次迭代过程。当误差或者仍不满足要求是,重复上述操作。 图2.7 神经网络模型 以上图2.7中的三层神经网络模型为例,来说明BP算法的原理及推导求解过程。 1) 工作信号正向传播过程 该网络分为三层,设输入层到隐藏层的权值为,隐藏层到输出层的权值为,输入层单元的个数为,隐藏层,输出层单元个数。并采用Sigmoid函数。 输入层的输入向量,隐藏层输出向量,并有: (2.10) 其中,偏置充当阈值,用来改变单元的活性。同样输出层向量,并有: (2.11) 2) 误差信号反向传递过程 设为期望输出,为实际输出,为损失函数(误差信号),定义为: (2.12) 其中,为输出层第个单元的期望输出,是样本的第个单元的世纪输出。 损失函数展开到隐藏层: (2.12) 损失函数展开到输入层: (2.13) 可以看到损失是一个关于权值的函数,要使损失函数最小,就要沿着梯度的反方向。为使最小化,可以选择任意初始点,从出发沿着梯度下降的方向走,可使得下降最快,所以取: (2.14) 其中,是一个学习效率,取值,用于避免陷入求解空间的局部最小。 同理: (2.14) 对于输出层的: (2.15) 对于隐藏层的: (2.16) 对于输出层和隐藏层各定义一个权值误差信号,令: (2.17) 则: (2.17) 对于输出层和隐藏层,和可以展开为: (2.18) (2.19) 由公式(2.12)可得: (2.20) (2.21) 其中由Sigmoid函数性质可知, 代入可得: (2.22) 同理可得: (2.23) 所以BP算法的权值调节计算公式为(2.17),(2.22)和(2.23)。 再考虑各层的偏置设置,隐藏层的净输出为: (2.24) 隐藏层偏置的更新为(是偏置的改变): (2.25) 相应的,输出层的净输出为: (2.26) 输出层的偏置更新为(是偏置的改变): (2.27) BP算法虽然是经典的深度学习算法,但对于深层网络仍然有许多不足,主要原因就是Sigmoid函数易出现梯度减小甚至消失,这也是为什么最近的深层卷积神经网络利用ReLU函数代替Sigmoid函数的原因。 2.1.3 随机梯度下降法 由上面的BP算法的推导过程我们可以得知,每一次更新权值都需要遍历训练数据中的所有样本,这样的梯度算法叫做批梯度下降(Batch Gradient Descent)。假设我们的数据样本异常的大,比如达到数以百万计,那么计算量将异常的巨大。因此,实用的算法不在是常规的梯度下降法算法,而是随机梯度下降法(Stochastic Gradient Descent, SGD)。在SGD算法中,每次更新权值的迭代,只计算一个样本数据。这样对于一个具有数百万样本的训练数据而言,每完成一次遍历,就会对权值更新数以百万次,这将大大提升运算效率。由于存在样本的噪音和随机性,每次更新权值并不一定会按照损失函数减少的方向行进。尽管算法存在一定随机性,但对于大量的权值更新来说,大体上是沿着梯度减少的方向前进的,所以最终也会收敛到最小值的附近。下图2.8生动的展示了SGD和BGD的区别 图2.8 SGD和BGD算法最小值逼近图[14] 如上图2.8所示,椭圆表示的是函数值的等高线,椭圆中心是函数的最小值点。红色是BGD的逼近曲线,而紫色是SGD的逼近曲线[14]。从图中我们可以看到清楚的看到BGD算法是一直向着函数最小值的最低点前进的,而SGD明显随机(躁动)了很多,但从总体上看,仍然是向最低点逼近的。 SGD算法不仅仅效率高,而且它的随机性有时候并非坏事。现在我们研究的目标函数是一个凸函数,沿着梯度反方向总能找到全局唯一的最小值。但是对于非凸函数来说,存在许多局部最小值。SGD算法的随机性有助于逃离某些不理想的局部最小值,从而获得一个更好的网络架构模型。 2.2 深度神经网络理论 2.2.1 深度学习的核心思想 在现实生活中,人们为了解决某一个问题,比如文本或图像的分类,首先需要做的事情就是怎么样去表示这个对象,即必须抽取一些特征来表示这一个对象,因此特征对结果的影响非常大。在传统的数据挖掘方法中,特征的提取选择一般都是通过人,凭借人的经验或者专业知识纯手工选择正确特征,但是这样做效率很低,而且对于复杂的问题中,人工选择很有可能会陷入困惑,无法选择。于是乎,人们开始寻找一种能够自动的选择特征,并且特征提取的准确率很高的方法。深度学习(Deep Learning)就能实现这一点,它能够利用多层次通过组合低层特征形成更抽象的高层特征,从而实现自动的学习特征,而不需要人参与特征的选取。 假设我们有一个系统,它有层(),它的输入数据是,输出数据是,可以非常形象地表示为:,假设输出数据等于输入数据,即输入数据经过这个系统之后没有任何的信息损失(),这就表示输入数据经过每一层都没有任何的信息损失,所以每经过系统的一层都可以认为是输入数据的另一种表示方式[16]。对于深度学习,我们需要自动地学习提取特征,对于一大堆输入(文本或图像),经过一个系统(有层),我们通过调整系统中参数,使得它的输出仍然是输入,那么我们就可以自动地获取得到输入的一系列层次特征,即。 对于深度学习来说,其思想就是堆叠多个网络层,这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。当然,前面提到的模型系统只是理想状态下的假设,并不一定能够达到,我们可以适当的放松这个限制,只要损失函数达到一个可以接受的范围。 图2.9 人脸特征提取过程图[16] 深度学习将深层的神经网络分成特征提取层和分类层,特征提取层就是自动提取特征信息,这是浅层学习SVM和Boosting无法完成的,上面图2.9展示了特征学习的过程,可以看出复杂的图形一般是由一些基本结构组成,每一层的图形的形状组合出上一层的图形,这是一个不断抽象和迭代的过程,低级的特征组合出高级的特征。 2.2.2 卷积神经网络 深度学习中最最经典的网络模型就是卷积神经网(CNN)络和循环神经网络(RNN)。 1. 卷积神经网络简介 卷积神经网络最早是由Yann LeCun教授和他的同事提出的,是一种专门为实现图像分类和识别而设计的深层神经网络。最经典的卷积神经网络是LeNet-5,网络结构如下图2.10所示 图2.10 LeNet-5网络模型图[17] 利用LeNet-5实现手写体识别,也是非常经典的例子,下图2.11是Yann LeCun主页上实现手写体识别的演示图例。 图2.11 Yann Lecun主页上lenet-5演示[17] 全连接神经网络之所以不适合做图像识别问题是因为参数太多,没有运用到图像像素之间的位置信息,网络层数受限(很难训练一个深层的全连接神经网络)。而卷积神经网络之所以可以做图像识别就是因为解决了全连接神经网络的一些弊端,卷积神经网络相较于全连接神经网络的主要区别为: 1) 局部连接:每一个神经元不需要和上一层神经网络的所有神经元连接,而是只连接其中的一部分,这将大大减少参数的数量。 2) 权值共享:一组连接可以共享同一个卷积核,这又减少了参数量。 3) 下采样:可以利用池化层(Pooling)来减少参数量。 下图2.12生动的解释了全连接和局部连接的差异,对于一个长宽分别为1000的图像作为输入,如果隐藏层有1M个神经元,全连接的话有10^12个连接数,而采用了局部连接后,如果一个神经元只感知的区域,连接数就下降为10^8。 图2.12 全连接和局部连接图[18] 2. 卷积神经网络主要结构 1)输入层。输入层是整个神经网络的输入,在处理图像的卷积神经网络中,它一般代表了一张图片的像素矩阵。其中三维矩阵的长和宽代表了图像的大小,深度代表了图像的色彩通道(channel)。比如黑白图的深度为1,而在RGB色彩模式下,图像的深度为3。从输入层开始,卷积神经网络通过不同的神经网络架构将上一层的三维矩阵转化为下一层的三维矩阵,直到最后的全连接层。 2)卷积层。卷积层是一个网络最重要的部分。卷积层试图将神经网络中的每一个小块进行更加深入地分析从而获得抽象成都更高的特征。一般来说,通过卷积层处理过的节点矩阵会变得更深。 3)池化层(Pooling)。池化层神经网络不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。通过池化层可以进一步缩小最后全连接层中节点的个数,从而达到减小整个神经网络中参数的目的。 4)全连接层。在经过多轮的卷积和池化之后,在卷积神经网络的最后一般会有1到2个全连接层来给出最后的分类结果。经过几轮卷积和池化之后,可以认定图像中的信息已经被抽象成了信息含量更高的特征。我们可以将卷积层和池化层看作是自动图像特征提取的过程。在特征提取之后,仍要用全连接层来完成分类问题。 5)Softmax层。Softmax层主要用于分类问题。通过Softmax层可以得到当前样例属于不同种类的概率分布情况。 3.卷积神经网络输出值的计算 1)卷积层输出值的计算 卷积层神经网络结构中最重要的部分就是过滤器(filter)或者叫做内核(kernel),下图2.13显示了这一结构。过滤器可以将当前神经网络上的一个子节点矩阵转化为下一层神经网络上的一个单位节点矩阵。单位节点矩阵就是长和宽都是1,但深度不限的节点矩阵。 图2.13 卷积层过滤器结构示意图[18] 在一个卷积层中,过滤器所处理的节点矩阵的长和宽都是人为设定的,这个节点矩阵的尺寸也被称为过滤器的尺寸。因为过滤器处理的矩阵深度和当前神经网络节点矩阵的深度是相同的,所以尽管过滤器的节点矩阵是三维的,但是只需给出二维矩阵即可。另外一个需要人为设定的是过滤器的深度,也即输出单位节点矩阵的深度。如上图2.13所示,左侧小矩阵的尺寸为过滤器的尺寸,而右侧单位矩阵的深度为滤波器的深度。 为了清楚的解释卷积神经网络的卷积计算,我们以一张简单的图片作为输入,Filter选取,步长为1,得到一个的Feature Map,用表示输入图像的第行第列的像素点。用表示过滤器的第行第列的值,表示权值偏置(bias),用表示Feature Map的第行第列的值。激活函数选取ReLU函数,则卷积操作可以由下面的公式计算: (2.28) 例如对于下图2.14所示,Feature Map左上角的来说,其计算方法为: 图2.14 简单图片卷积计算示意图[18] 然后可以依次计算出所有的值。上例中步长(stride)为1,当步长变为2时,Feature Map的尺寸变成了2x2,这是由以下公
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服