基于深度学习卷积神经网络图像识别技术的研究与应用

2018-12-18 13:24杨子贤
中国设备工程 2018年23期
关键词:池化层池化图像识别

杨子贤

(,河南 郑州 450000)

图像识别技术属于计算机视觉领域,在人脸识别、自动驾驶等方面已卓有成效,在医学、安防、通讯等领域仍有巨大的发展空间。图像识别技术的实现,简言之相当于寻找一个适当的函数,使得输入的是被识别的图片或图片的一部分,而输出的是我们需要的图片的语义概念。我们的目的是通过对模型的训练,找到这个合适的函数。在深度学习提出之前,传统的机器学习方式,通常是用人类的经验知识,把原始数据预处理成各种特征,然后对特征进行分类。这些科学家们把大部分时间花在寻找合适的特征上,所以它也叫“特征工程”。然而特征的繁多以及一些特征难以表示,都要求机器学习方式的革新。直到Hinton等人提出深度学习,图像识别技术才有了新的生机。深度学习即让机器自己进行特征学习,将原始数据作为输入,通过层层抽象将原始数据抽象为自身任务所需的特征标识,以特征到目标的映射结束。从原始数据到最终任务目标,中间没有人为操作(端到端的思想)。CNN作为深度学习的一种代表算法,本论文将重点介绍。

1 卷积神经网络的基本结构

CNN是一种层次网络结构,可分为输入层、卷积层、激活函数层、池化层、全连接层及输出等部分(如图1所示)。输入原始数据(例如图像的原始像素值),经过卷积、激活函数及池化等层层操作,最终将原始数据中的高层语义概念剥离出来,这就是前馈运算。通过误差函数通过计算真实值和输出值之间的误差值,反向逐层反馈,更新每层参数,这是反馈运算。通过前馈运算与反馈运算,最终使模型收敛,实现完成训练的目的。

图1

2 卷积神经网络的特征结构

卷积层。首先应了解什么是卷积操作,如图2,画面中间一个3×3大小的矩阵,将矩阵中的参数与对应图像(画面左)位置像素所对应的参数分别相乘并相加,此即为卷积操作。将所得数值作为一次卷积操作的输出,之后选择将卷积核往某个方向平移一个单位长度,再次进行卷积操作,直到得到新的一层,这一层同时也作为下一层的输入。这个含有一定大小的矩阵(这里是3×3)叫做卷积核(滤波器),每次平移的距离(这里是1)叫做步长。进行卷积操作的一层即是卷积层。

图2

卷积层的作用。卷积层通过卷积核完成对图像信息的提取,故卷积核上的参数决定了该卷积层的作用。例如有一种边缘滤波器,当该滤波器作用于图片中物体的边缘时,那么边缘和其四周的像素值差异应比较大。如果作用该滤波器,那么边缘四周像素值差异小的部分就会被消除,而差异较大的部分就被凸显,从而实现提取边缘特征的作用。应该指出的是,卷积核里的参数是通过网络训练得出的,可以构建任意方向的滤波器。用卷积的方式处理的数据,即对每一个像素数据赋予一定的权值,该过程是线性的。但因为训练的模型不一定是线性可分的,所以引入激活函数以增加网络的非线性因素表现力,否则无法形成复杂的函数。

激活函数。激活函数模拟了神经元的特性,当输入信号超过该神经元的阈值后,该神经元就处于激活的状态,否则为抑制。下面介绍两种常见的激活函数。

图3

图4

但是通过观察函数图像可以发现一个问题,当输入数据较大或较小时,都会被压缩到1或0。当输入值大于5或小于-5时,函数的梯度会接近于0(如图4),梯度在反向传播的时候因为需要乘上一个sigmoid的导数,所以会使得梯度越来越小,导致误差在反向传播的过程中无法更新参数继而导致网络无法进行训练。这就是函数的梯度饱和效应对网络训练的不利影响。

(2)ReLU函数。为了避免梯度饱和效应的发生,我们引入了ReLU函数(Rectified linear unit):

函数图像如图5所示,其梯度图像如图6所示。

对于x≥false0的部分梯度为1,反之为0。对于x≥false0的部分可以完全消除梯度饱和的现象。同时实验结果也表示,采用ReLU函数比使用sigmoid函数网络训练速度快6倍左右。ReLU函数成为卷积神经网络和其他深度学习网络模型的首选激活函数。

图5

图6

池化层。先介绍池化(也叫汇合)操作。在完成卷积之后,它提取的特征图看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练,这个过程就是池化。如图7,采用的是最大值池化,即取该部分最大的值作为池化的结果。池化操作可分为平均值池化,最大值池化和随机池化,在此不再一一介绍。进行池化的结构层即池化层。

图7

池化的作用。①减少了参数含量,保留了主要特征。数据的减少即减少下一层的输出大小,减轻运算负担。②增加了特征不变性。池化操作使网络更加关注图像的征称而不是图像的位置。假设在连续的池化区域内,将图像轻微平移或旋转,池化的结果是相同的。③由于减少了参数,所以也可以预防过拟合的发生。上述介绍的卷积层,激活函数和池化操作,在CNN中都是起特征提取的作用,因此还需要全连接层将特征进行分类,最终输出我们需要的结果。

全连接层。全连接层相当于“分类器”的作用。即将卷积层,激活函数和池化层学到的“分布式特征表示”映射到样本标记空间。但由于全连接层参数冗杂(占整个网络参数的80%左右)目前也提出了代替全连接层的方法,如GoogLeNet采用全局平均池化的方法。实际操作过程中,全连接层可以通过卷积操作来实现,即使用卷积核大小为1×1的卷积。

3 经典网络结构分析

下面介绍两种经典CNN模型:LeNet和AlexNet,它们在CNN的发展历史上都占据重要地位。了解它们的结构,不但是欣赏前辈的智慧,也可以为以后CNN发展提供思路。

(1)LeNet如图8,它是较早提出的CNN模型(1994年),有三个卷积层(C1、C3、C5),两个池化层(S2、S4)和一个全连接层(F6),输入时32×32的图像,输出的是0~9十个数字的概率。该网络模型在那时取得了低于1%的错误率。LeNet可以说是第一个具有商业价值的CNN模型,因为当时它被成功用于识别邮件编码。

图8

(2)AlexNet。作为2012年ImageNet大赛第一名,AlexNet(如图9)在CNN发展史上有里程碑的地位。共有5个卷积层和3个全连接层,可采用两个GPU并行训练,且在第三次卷积层和全连接层处可以互相交互。可见相比于LeNet网络,其结构上改进并不大,但在网络深度和复杂度上有较大的优势。AlexNet的意义主要有以下方面。①揭示了CNN强大的学习能力和表示能力,引发了对于CNN研究的热潮。②采用GPU进行运算,缩短了训练所需时间和成本。③引入了ReLU激活函数,数据增广和随机失活等训练技巧,为后续CNN提供了标本。

图9

4 实验

我们这次的实验内容是用编程识别mnist手写数字集,分别以普通神经网络和CNN来实现,并且对比两种方式来讨论CNN对此类问题的表现如何。

(1)用普通神经网络进行试验。BaseLine版本用的是MultiLayer Percepton(多层感知机)。这个网络结构较简单,输入—隐含—输出。隐含层采用的rectifier linear unit,输出则直接选取的softmax进行多分类。第一次错误率为1.81%,经过100次迭代错误率减少至1.46%,但未减少到1%以下。

(2)用CNN进行试验。采用keras的CNN模块,包含卷积层,汇合层等基本结构,是一个简单的CNN网络结构。

经测试,错误率为1.07%。添加一些卷积层后,错误率可降至1%以下,最好测试结果可降至0.22%实验结论:实验中我们通过对比两种网络,相比于普通的神经网络,CNN在识别图像准确率方面表现更好。由此可见,在对于图像识别的开发与应用上,尽量使用CNN,并加快对CNN的改进提高。

5 结语

卷积神经网络的特征结构有卷积层、激活函数、池化层和全连接层等。卷积层用以提取图像结构特征,激活函数增加网络的复杂度和表现力,池化层提取主要特征,减少参数个数。全连接层将学到的特征进行分类。这些结构组成了优秀的卷积神经网络。通过进行卷积神经网络与普通网络对比实验,可以发现卷积神经网络在图像识别方面有较大优势。在准确率方面与普通网络拉开了较大差距。但CNN仍有不足之处,如何优化算法,在减少参数量的同时提高运算效率,在训练卷积神经网络模型的过程中,如何选择合适的卷积核大小,如何设计网络结构等等,这都是在未来CNN网络发展中不得不面对的问题。近来,科学家拟准备实现自动化构建CNN网络,非常期待这一技术能尽快实现,也激励着我继续研究和学习。本文介绍了CNN的发展,结构,以及编程测试的结果。可见CNN在图像识别方面的作用。此外,对CNN的进一步优化方案也在不停的研究中,应用于图像识别领域的CNN终将改变我们的生活。

猜你喜欢
池化层池化图像识别
基于高斯函数的池化算法
卷积神经网络中的自适应加权池化
卷积神经网络模型研究分析*
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
基于卷积神经网络和池化算法的表情识别研究
图像识别在物联网上的应用
图像识别在水质检测中的应用