数据挖掘在企业财务分析中的应用基于卷积神经网络中LeNet5 网络的人脸识别算法探究Word格式文档下载.docx
《数据挖掘在企业财务分析中的应用基于卷积神经网络中LeNet5 网络的人脸识别算法探究Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据挖掘在企业财务分析中的应用基于卷积神经网络中LeNet5 网络的人脸识别算法探究Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
虽然传统的身份验证方式在技术上已经发展的十分成熟,并且可以结合手机等工具进行多重的验证,但是这些传统验证技术归根到底,还是将人和需要验证的证件、密码等分开核查。
这就导致了这种验证方式始终是有缺陷的,如果密码、证件等丢失、被窃取甚至被伪造,那么传统的身份验证方式就彻底失去了它具有的安全性。
如果是特殊行业,这种错误将带来巨大的安全隐患。
与传统的身份验证方式相比,生物识别技术拥有众多优势,具备快速、便捷、更加安全等特点;
是一种被公认的安全高效的身份验证方式。
生物识别技术的运行原理是根据人类所特有的各种生物特点,(比如指纹、面部、姿态、声音等)通过模式识别等方法进行的以后总身份验证方式,它充分利用了,人的各种物理特征,把验证的方式带向了更高的水平。
最新的身份验证技术还包括指纹识别、语音识别、面部识别、眼膜识别等。
是一门交叉性的学科,不仅涉及模式识别、数字图像处理,而且还包含了心理学和机器学习等多门学科。
人脸识别是几种生物身份验证方式中最为重要的一种,它和其他的几种身份验证方式相比具有更高的操作性和更广泛的应用前景。
具有交互性强、难以伪造、方便快捷等优点。
人脸识别是一种通过采集人的面部特征信息并利用计算机特定算法来提取面部特征信息来进行身份验证的一种方式,它通过对人脸特征信息的快速加工、处理、对比等方式,完成身份验证。
需要说明的是,人脸识别是计算机机器视觉研究的一个重要方向,为许多公司企业提供了一种更加先进的一种身份鉴定方式。
尤其是近年来,智能手机的不断发展,这种智能的身份鉴定方式也被应用在了手机上。
人脸识别技术开始二十世纪五十年代,时至今日,已经有了六十余年的发展历史,这期间,涌现了很多更加高效的人脸特征信息提取和分析算法,人脸识别的流程就是对符合要求的人脸进行特征分类和面部特征信息的提取。
人脸识别技术发展早期,更多的是通过人工来选择提取脸部特征信息,这样做不仅效率十分底下,而且也使得识别技术收到人工提取特征是否是关键特征的影响。
后来,计算机硬件的不断发展,使得现代计算机拥有更快的运行速度,这也就意味着处理数据(人脸信息)更加快速,传统的人工提取也被计算机智能算法代替,这些重要的改变极大的促进了人脸识别的发展,给人脸识别推向了发展的新时期。
与此同时,越来越多的研究机构开始在这个技术上大量投入人力物力,争先抢后的去抢占新技术的先锋。
外国的高新科技公司对于人脸识别的研究领先国内几十年之久,比较著名的科研机构既有多伦多大学、麻省理工学院、牛津大学、斯坦福大学等高校,也有google公司、facebook公司等互联网公司。
国外的人脸识别技术的研究,提出了很多有着深刻影响的重要算法,Deepface、Eigenface、FaceNet、几何特征算法等。
其中,哥伦比亚大学的Hinton教授始终在研究人脸识别技术中的神经网络技术。
2000年之后,深度学习的提出和发展,使计算机人脸识别,尤其是支撑它的计算机视觉又重新被重视了起来。
在中国大陆,由于各种硬件条件的限制,和高薪科技流入的缓慢,造成了我国对人脸识别的研究起步也晚了很久。
但是也是有一些值得一提的研究院校和互联网公司。
从北京大学、清华大学、中科院到XX公司、旷视科技等科技公司。
都在国内的人脸识别发展和研究上做出了很多贡献。
旷世科技把人脸识别技术推广到了具体的应用上,它们提出的人脸识别算法在人脸图像识别率上同期赶超了FaceBook技术公司。
XX也利用它们的人脸识别算法开发了人脸识别明星脸的应用。
[1]
一、卷积神经网络相关理论
1.
(一)卷积神经网络的来源
卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一种具有深度结构的前馈神经网络(FeedforwardNeuralNetworks)[2],这种网络包含了卷积计算。
因为卷积神经网络可以执行平移不变分类,因此被称为“平移不变的神经网络”,它在深度学习(deeplearning)领域尤其重要,是深度学习的代表性算法之一。
在二十世纪八九十年代,卷积神经网络开始流行,其中,最早出现在大众面前的是LeNet-5,其次就是世间安延迟网络。
二十一世纪之后,在深度学习理论的提出和不断发展之下,卷积神经网络也随之得到了快速发展,这使得卷积神经网络有了更多的用武之地。
(二)卷积神经网络的历史
1979年和1980年,日本的一名学者福岛邦彦提出了一种名为neocognition的模型。
这是卷积神经网络的起步。
当时,福岛仿造生物视觉皮层设计了以这个模型命名的神经网络。
这种神经网络,隐含层由S层(Simple-layer)和C层(Complex-layer)交替构成。
[3]它的S层单元在感受野内对图像特征进行深度提取,C层单元接收和响应不同感受野返回相同的特征。
Neocognition的两个层次的组合能够更好的进行特征提取并筛选出有用信息,在卷积神经网络中,部分实现了的卷积层(convolutionlayer)和池化层(poolinglayer)的功能,这是一个伟大的进步。
因此称neocognition是一个具有深度结构的神经网络,也被看作是最早提出的深度学习算法之一。
到了1987年,AlexanderWaibel带头提出了一种名为时间延迟网络(TimeDelayNeuralNetwork,TDNN)的卷积神经网络。
并且是第一个卷积网络,因为它实现了移位不变性。
它通过将权重分享与反向传播训练相结合来实现。
因此,虽然也像新自然体中那样使用金字塔结构,但它执行了权重的全局优化,而不是局部优化。
TDNN是卷积网络,沿时间维度共享权重。
它们允许语音信号按时间不变地处理。
这启发了CNN图像处理中的平移不变性。
神经元输出的平铺可以涵盖定时阶段。
TDNN现在在远距离语音识别中实现了最佳性能。
1988年,WeiZhang提出了第一个二维卷积神经网络:
平移不变人工神经网络(SIANN),用于医学图像的检测。
独立于Zhang(1988),YannLeCun在1989年也构建了卷积神经网络用于图像分类,这是LeNet的原始版本。
[4]LeNet是由两个卷积层,两个全连通层混合而成的,共80000个训练指数,同比高于TDNN和SIANN。
LeCun(1989)采用随机梯度下降(randomRadientDescent,SGD)进行随机初始化,在随后的深度学习研究中得到了广泛应用。
此外,LeCun(1989)在讨论其网络结构时,首先使用了术语“卷积”,因此得名“卷积神经网络”。
1989年,LeCun的工作在贝尔实验室被完成代码开发并应用在Ncrd的支票读取系统。
这一时期,一方面受到数值计算能力的限制,另一方面学习样本的不足,都导致各类卷积神经网络在图像处理方面的研究出现停滞状态,始终没有被广泛应用。
到了1988年,在LenNet的基础上,YannLeCun及其合作者在手写数字识别问题上取得了重大进展,他们合作构建了令人称赞的卷积神经网络LeNet-5。
这种神经网络,仿照了LeNet-5的学习方式,并在本来存在的研究成果基础之上构建了池化层对输入特征的过滤和筛选。
交替出现的卷积层和池化层被认为有效的提取了图像的各种特征,尤其是平移不变的特性。
LeNet-5的成功,给卷积神经网络带来了更多的热度。
到了2003年微软公司利用卷积神经网络研发了光学字符读取系统,不仅如此,在人像识别和姿态识别方面也随着卷积神经网络的发展不断出现新的方法。
近些年,深度学习更加完善,卷积神经网络高速发展,逐层学习和参数微调技术的出现,衍生出了更多的优秀的学习方法和优化方式。
(三)卷积神经网络的基本结构
卷积神经网络(ConvolutionalNeuralNetwork,CNN)是最近几年发展起来并受到高度重视的一种前馈神经网络。
[5]备受研究人员的关注和重视。
其中CNN主要由输入层、卷积层、池化层、全连接层和输出层组成[6],如图1.1所示。
图1卷积神经网络结构示意图
1.卷积层
我们作为自然界中高等生物,视觉系统也比较发达。
研究和利用人类的视觉系统也是一种重要的学习方式。
在我们的视觉系统中,视觉皮层收到的局部信息刺激被敏感的神经元接受。
研究人员通过把这一发现进行改进,并应用在神经网络中,造成局部对局部的特殊方式。
也就是说,局部信息只需要被单个神经元感知到即可,然后通过依次连接所有的局部感知信息,就可以得到,逐渐还原出图像的本来面貌。
因此,可以说卷积层是神经网络中不可小看的一层,这种局部连接和全连接如图2(a)与(b)所示。
图2局部连接(a)与全连接(b)示意图
权值共享是卷积神经网络的灵魂所在,是不可忽略的一个因素,它可以使神经网络可以以可见的形式大幅度减少参数个数。
(a)图中,不同的卷积核(滤波器)用不同的色彩来表示,初步设置图像,当处于1000x1000分辨率下时候,暗含神经元个数设定为1M,通过修改为全连接,则隐藏层的指数个数变为1024,如果采用权值共享的方式,设卷积核大小为10X10,那么隐藏层参数量仅仅为100M。
如果想让参数快速减少,并且减少级别可见,最好使用权值共享。
通过对卷积神经网络的分析,我们发现如果对卷积层中的卷积核经过与所输入的图像完成卷积运算之后,在加上偏置,再将所得的结果录入激活函数即可得到对输入图像特征的映射,这种关系就是特征图。
如果对多个的卷积核生成的特征图进行合并操作将会组成特征图组,特征图组显示了输入图像的多重特征。
卷积层的主要操作涉及到的参数有图像的个数、卷积核体积、卷积核的运算步长和添0操作。
如图3所示是一个2x2的卷积核在一个3x3的图像上完成1个步长的卷积操作。
图3卷积运算示意图
在卷积运算之后,需要加上一个偏置项b,一并作为非线性激活函数的输入,神经元输出的计算公式如下:
[7]
(1)
下面列出神经元输出的计算公式,其中在卷积运算之后,我们需要加上一个偏执项b,把上述一并作为非线性激活函数的输入(公式1)。
式中,
代表了当前层第j个特征图的加性偏置,在初始化的时候,一般令
为默认值0,f()代表激活状态的函数。
2.池化层
池化层(PoolingLayer)常常被叫做地下采样层。
[8]池化层在研究中有两种常用的方式:
一种是最大池化层,一种是平均池化层。
它在数据压缩方面有很强的效果。
可以这样描述,经过池化层之后,输出的特征图数量不会改变,但是,特征图的大小却会变小,这将会明显的降低计算复杂度,同时,将保持网络模型的平移、缩放不变性。
2.1最大池化
如图4所示,一个面积为2的池化窗,当它分辨率处于4x4之下,并进行以两个步长的最大池化运算。
处理首次,池化窗中有数值3,2,5,2,通过查找得到最大值是5。
随后,往右移动两个长度,继续计算。
持续到池化窗与右边边框相连,采取将窗口移动到最左边并向下移动2步,继续相同操作,这种形式的操作持续到全图中。
图4最大池化
2.2平均池化
如图5所示,改变操作,建立2x2大小的池化窗,进行分辨率为4x4两个步长的平均池化运算,3,2,5,2是池化窗中首次需要处理的数据,通过简单运算得到4个数的平均值。
再次进行移动的平均池化运算,等到池化窗接触到右下角的边框为止。
图5平均池化
3.全连接层
研究卷积神经网络的内部结构,可以看到数个全连接层,这些连接层位于卷积层、池化层之后,输出层之前。
这个全连接层中,每一个神经元都会与上一个全连接层的所有神经元连接起来,但是同一个层次中的神经元不会连接。
通过这种方式,大幅度限制了网络规模,并起到了分类器的作用,同时也提高了神经网络的非线性映射能力
(四)卷积神经网络的优化方法
1.梯度下降法
将所有的训练样本进行训练,拥有获得全局最优解的训练结果,但是会有训练进度缓慢的缺点,这种被称为梯度下降法。
选取随机的一个样本进行训练,会改善缓慢的训练速度,更快的得到结果,但是如果样本数据基数过于大(例如说几百万)就会造成参数不能达到最优解的现象,同时计算也变得缓慢艰难。
这种被称为随机梯度下降法。
2.Dropout
通过在训练中随机的失活神经元,达到正则优化的效果,这种被称为Dropout。
它可以有效地降低拟合的发生。
如图6所示,(a)图是标准情况下神经网络,(b)是使用Dropout之后的神经网络结构。
图6Dropout结构图
3.ReLU函数
图7ReLU函数
通过设置激活函数ReLU,可以使神经网络各个参数之间的相关程度降低,达到使网络有更高的稀疏性的效果,同时减少拟合几率。
[9]同时,RelU函数训练神经网络收敛更快。
如图7所示,输入0时候,函数值恒为零。
二、基于卷积神经网络的中LeNet-5网络的人脸识别的应用
(一)传统LeNet-5网络的结构
LeNet-5网络在1998年的一篇名为《Gradient-BasedLearningAppliedtoDocumentRecognition》的研究中被第一次提出,最早并不是应用在人脸识别,而是手写字体的简单识别,被视作早起卷积神经网络的代表性网络。
图8LeNet-5网络示意图
如图8所示LeNet-5网络中,卷积层首先被划分为三个层次,C1、C3、C5;
另有池化层S2、S4两层,F6层的含义是全连接,使用径向基函数代表输出层[10],它的详细参数配置如表1所示。
表1LeNet-5参数配置
类型
卷积核大小
特征图个数
神经元数量
连接数
参数量
C1
卷积层
5x5
6
4,704
122,304
156
S2
池化层
2x2
1,176
5,880
12
C3
16
1,600
151,600
1,516
S4
400
2,000
32
C5
120
48,120
F6
全连接层
--
84
10,164
(二)LeNet-5人脸识别的准备工作
1.计算机硬件的介绍
如果只有有限的电脑资源,海量的数据面对有限的计算能力,几乎达不到任何效果。
本章研究采用GPU利用CUDA运算平台,同时处理海量的数据。
操作系统采用Ubuntu16.04,并使用c++和Python编程语言编写程序。
2.Caffe框架介绍
美国加利福尼亚大学视觉和学习中心,开发了一种Caffe的框架,这个框架基于CUDA/Python/C++并完成了一个清晰而高效的卷积神经网络。
[11]可以说,Caffe是一个应用广泛的深度学习系统,系统内置了Matlab、C++等编程语言的绑定接口,从而达到了在GPU和CPU之间高效的切换。
同时,还具有一下特点:
(1)由于框架采用了靠近底层的编程语言C++实现,所以具有了更好的移植特点。
(2)框架支持GPU加速,并可以利用MKL等计算库。
所以拥有很高的执行速度。
(3)与其他框架相比较,Caffe框架提供了完整的工具集合。
用于模型训练等,可以快速实现研究者的自己的想法,并且大部分不用重写代码。
(4)开源原因。
3.Caffe框架的核心介绍
Blob。
Blob在内存中的表示方式是一个数组,维度是4维,分别有Number、Height、Width、Channel几种形式。
在Caffe中扮演了基本数据存储单元的角色,在数据交换、数据存储方面有重要作用。
通过提供统一的存储器入口,完成在CPU和GPU之间的数据同步工作。
数据存储的实现方式:
利用Channel表示处理图片的通道个数,通道越高图像更加饱满,比如说RGB图像通道为3,灰度图像通道为1。
Weight和Height依次代表了图片的宽度和长度,这三维也被称为图片的数据格式信息。
Number代表了Batch,受到计算机内存的限制,我们在训练模型的时候采用分批操作的形式。
Layer。
Layer包括三个操作:
setup、forward和Backwork。
图像在这个层次要完成非常多的数据处理。
其中有读取数据、有innerproduct计算、有归一化等。
因此我们可以这样说,它是神经网络中非常重要的一个环节,也是进行计算的基本单元。
SetUp:
完成对网络的连接初始化,并完成对神经网络的初始化。
Forward:
从下到上的发送计算结果给顶层。
BackWard:
获取之前的运算成果。
并处理,通过梯度运算,在本层传输到下一层。
我们可以通过两种方式实现,Forward和Backward。
首先是速度更快的GPU计算。
其次就是常用CPU运算。
在不采用第一种方式的时候默认实现CPU。
我们讨论过,Caffe框架有在这两种运算中快速切换的特点,因此计算十分方便快捷。
Net。
看做一个有向无环图处理。
Caffe模型有他自己的定义文件,文件名字是prototxt,这个文件功能强大,它与网络模型参数、深度成正比,参数越多、深度越复杂,文件就越复杂。
网络中也有训练好的模型,这些模型被安全带保存在Caffemodel文件。
(三)LeNet-5网络针对人脸识别的改进
LeNet-5网络刚刚出现的时候,是针对手写字体的识别的[12],所以针对人脸这种更加复杂的图像来说需要更多的改进措施。
接下来介绍改进之后的神经网络结构。
由两个独立的子卷积网络合并成为改进的网络,以40x32的分辨率得到人脸图像。
经过重新设计。
这次神经网络分为5个卷积层从C1到C5,4个池化层同样连续的从S1到S4,全连接依靠C3,S4与FC三个来实现,FC代表了全连接层,Softmax回归层用于处理分类操作,它接在FC层的后面。
[13]如图9所示。
将C1层卷积核设置为16个,卷积核大小设置为5x5,步长修改为1;
C2层是一个32个大小的4x4卷积核,它的步长是2;
C3层最多,拥有62个,卷积核大小为3x3步长为1;
C4层卷积核和C1一样为16个,大小6x6,步长2;
C5大小5x5,有32个。
针对人脸识别的重新设计,网络中的所有池化层采取了面积为4,边长为2的窗口,完成最大化的处理操作。
FC层包含了192个神经元结构,Softmax回归层神经元个数与类别个数是一致的[14],详细数据见(表2)。
经过改进处理操作,网络更加智能化,可以利用大小不一的卷积核获取到粒度不同的抽象特征,这样可以得到更加清晰和全面的图像。
图9经过更新后的网络结构
表2经过更新后的网络具体参数
神经元