版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于神经网络的人脸识别算法研究目录TOC\o"1-3"\h\u312601绪论 [10]进行分类输出,全程使用的sigmoid激活函数。从图4.1可以看出LeNet-5网络模型一共有七层,两层卷积层,两层池化层,两层全连接层。如果加上输入层那么就是八层,但是严格意义来说输入层不计入这个网络模型的层数。可以看出网络模型的输入是一个一维的32*32大小的手写字图片。第一层是卷积层,通过6个5*5的卷积核,使得该卷积层可生成6个大小为28*28的特征图,28是(32-5+1)是bias得来的;参数公式为卷积核大小加上步长然后乘以卷积核的数量,故(5*5+1)*6=156参数存在于这一层,连接数公式为参数乘以特征图大小,那么该层的连接数有(5*5+1)*6*28*28=122304个。第二层是第一个池化层,池化层又称下采样层,由6个2*2的池化单元构成。在这个一层之中,池化单元2*2,边长与步长是相等的,那使得输入图片的每一个像素点只与池化单元做一次池化,也就是不重复交叉池化。此时特征图的数量就由上一层的28*28变为14*14,也就是边长减少一般,面积大小变为以前四分之一。采样种类6个即6个14*14特征图,神经元=14*14*6;连接数=(2*2+1)*6*14*14;第三层是第二个卷积层,为了表征这一层的图像特征,这一层的每个特征图是和上一层(池化层)的全部或者其中的几个来进行连接。卷积核大小5*5,16个卷积核种类,输出10*10大小的特征图,10=10*10(14-5+1),输出从而可以学习到不同的人脸特征,丰富输入数据特征;可训练参数:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516;连接数:10*10*1516=151600;有必要说的是这里从上面一层6个特征图变为16,是由于模型作者采用一种不对称的组合连接的方式有利于提取多种组合特征,这里不详细叙述。第四层是一个池化层,第四层连接方式和第二层类似。不重复阐述,窗口大小2*2,16个5*5特征图,5*5*5*16个连接,第五层是一个具有120个特征图的卷积层,该卷积层中的每个单元与上层𝑆4层输出的16个单元为5*5的特征图做卷积之后变成120个1*1的图。𝐶5层有(5*5*16+1)*120=48120个可训练参数。全连接层的训练参数和连接数是相同的,即有48120个连接。第六层是全连接层。有84个1*1特征图。该层的训练参数和连接数是(120+1)*84=10164。Output层同样是连接层,共有10个输出,分别代表数字0到9,即最后的识别结果。4激活函数与数据集选取4.1激活函数的概述通常在神经网络当中,前一个神经元都会作为输出传到下一个神经元作为输入,在多层神经网络中,前一层的神经元和后一层神经元会有一个对应关系——激励函数(激活函数);之所以要使用激活函数,就是因为不使用激活函数,那么上一层解节点和下层节点之间就是简单的线性组合。换句话说就是每一层的输入节点都是上一层输出的线性函数,会限制个神经网络限制,近能力就有限。故引入激活函数,就目前你来看激活函数都是非线性的,为模型提供非线性计算方式,提高结构表征能力。常用的激活函数是sigmoid函数以及tanh函数。sigmoid的数学表达式如下:fx其几何图像如图4.1.1:图4.1.1sigmoid函数由图我们不难看出sigmoid函数的值域是零到壹,而他的取值范围是正无穷到负无穷。特别的,输入是非常大的数那么其输出就是1,反之,输入足够小那么其输出就是0,能把输出值控制在0到1。但是当x趋于无穷大的时候,f(x)的取值会接近0或1,这个现象就叫做饱和。一旦处于饱和,激活函数就会丢失信息。自然就会对结果造成不利影响。早期还有一个激活函数用的很多那就是tanh,tanh函数解析式:tanh=extanh函数图像如下图4.1.2:图4.1.2tanh函数可以看出和sigmoid函数相比,自变量取值范围没变,不同的是值域范围扩展了变成了-1到1。这两个个函数虽然都具有非线性的特点,都在中央这一个区域能有很好的增高强效果,但是在输入值都过大或者过小的时候,他们的弊端就暴露出来了,那就是处于饱和,梯度就逐渐消失,那么参数变化就会越来越小,对我们整个模型的不利影响很大,如训练的时间,严重的情况就是提取的特征信息不足以来支持最后的识别等等。目前最常用的激活函数就是relu函数,在上面两个函数的基础上做了优化,整个函数取值都在正区间,即取值大于等于0。值得一提的是函数的右边才有大于零的取值,也就是当输入值小于0的时候,输出值都是0,但是当输入值大于0的时候,那么整个输出值就会有很大的梯度,那么后期图像处理的时候就会让数据就有很好的稀疏性,在特征提取中发挥更优的作用。因此relu函数在神经网络可以有较好的拟合效果。故在本文的网络模型结构设计选择relu函数进行激活操作。4.2Dropout技术提及到dropout就不得不提过度拟合这一现象,过度拟合可谓是机器视觉这一领域存在的通病。深层神经网络一般都是包含多个非线性隐层,使得输入的特征图和最后输出的表达之间非常地复杂,这些复杂的关系是采样的结果,而由于训练的数据太少,或者训练的参数太多,从而导致模型在训练的时候结果是很符合理想状态的——损失函数是很稳步下降,并且逐渐趋于0,但是当用训练好的模型来进行预测的时候就发现了问题,损失函数其实很大,识别的精准度并不是像训练的时候那样优异。如何解决这个问题,有学者就提出了dropout技术,它的原理就是在全连接的时候随机地舍弃一些神经元,减少很多参数的后传,虽然不用它们,但是剩余的神经元并不会对整个结果的表征有错误的影响,换句话说就是依旧可以很好的识别。因为在后面提到的ZLenet模型参数可以达到百万级别的参数,适当的减少参数不仅对于计算时间可以减少,加快训练速度,更重要的是防止模型过拟合,增强人脸识别算法的精准度。4.3Padding技术对于padding即像素填充,目前主要是三种模式,分别是same,valid,full。由于模板在滑动时,可能存在覆盖不完全的地方,就比如用2*2的模板,这三种模式情况下其覆盖情况就有所不同。当卷积核为3*3的时候,图片为7*7的时候,Full模式如下图4.3.1:图4.3.1full模式图如图橙色部分为输入大小范围,卷积核的部分则用蓝色表示。后面几个图一样,就不再重复解释。full模式的意思是当卷积核和输入图片刚相交开始做卷积,白色部分为填0。same模式如下图4.3.2:图4.3.2same模式图当卷积核的中心与输入图片的边角重合时,开始做卷积运算valid模式如下图4.3.3:图4.3.3valid模式图当卷积核全部在输入图片里面的时候,进行卷积运算。损失函数:损失函数(lossfunction):用来评价预测值和真实值之间的差距程度,也是评价整个模型的好坏的最直接的标准。在理解损失函数之前,要知道设计CNN的目的就是期望计算机能够模仿动物学习知识,并达到某种目的,就好比如进行人脸识别。本质上会给这个模型一些训练的样本(xi,yi),希望CNN学习到X到Y的一个映射,然后在给一个不在样本中的X0,但这个X0和之前训练的某一个Xi其实是一个物质,只是表达形式有区别,CNN也能识得这个X0,并接近yi。那在这个过程中就需要一个评价标准——损失函数。损失函数有很多的种,常见的有均方差损失(MSE),平均绝对误差损失(MAE)等,都是对回归问题很有效,不做展开描述,这里介绍一个对于分类问题有效的,也是本文选取的交叉熵损失CrossEntropyLoss。如图交叉熵损失函数表达式:NLL4.4AR人脸数据集这个AR人脸数据库是一个公开的人脸数据库,它包含126张人脸,其中有70名男性和56名女性。这些图片具有不同面部表情、光照条件和遮挡(太阳镜和围巾)的特点,所以这个数据集有良好的人脸差异性,更好判断模型是否具有健壮性。所有图像作为RGB原始文件(像素信息)存储在10个不同的CDROM中,图像为768×576像素。但是我选取的是10个男性和10女性作为模型的训练集,原因是如果将所有的数据用来训练的话电脑其实是带不动。对cpu、gpu的消耗太大,然后就是训练时间可能会很久,几个小时也不一定能解决,最终选择少一点的数据来说明问题即可。AR人脸数据库截图如图4.4.1。图4.4.1AR数据集截图5网络模型结构设计在卷积神经网络里面,设计出一个好的模型,那这个模型所表现出来识别的准确率、识别速度,收敛性都会更倾向预期设想。上文提到的LeNet-5模型在手写字的识别方面具有高效性和高准确性。但是,直接把这个网络模型搬过来不作任何的修改,显然是达不到很好的效果。所以本节就是在借鉴这一经典模型的基础之上,着重的思考关于卷积神经网络的结构构建,即卷积层池化层的数量、卷积核大小、损失函数和激活函数的选取以及dropout,来修改部分的内容使得新建立的模型,提出改进之后的网络模型,记为ZLeNet网络模型。后期实验结果显示这个模型可以有很好的人脸识别能力。ZLeNet网络模型人脸识别的流程图如图5.1:图5.1流程图ZLeNet模型结构的基本构成是:连续两次卷积和池化相接,然后就是两层全连接层。输入的人脸数据为197*197像素。第一层是卷积层,采用5*5的卷积核,输出了32个128*128的特征图。Padding(填充像素的模式)选择的是same,全填0,当卷积核的中心与输入图片的边角重合时,开始做卷积运算,之后得到的特征图的大为128*128。第二层为第一层池化层,采用2*2的核体积,采用的是最大池化来对整个特征图大小缩减,但是并不妨碍后面特征的提取,池化之后的特征图缩小到原来的一半变为64*64。第三层是第二个卷积层,padding即填充像素的模式选择的是valid,同样地与第一层卷积层一样,采用的是5*5的卷积核,不同的是这里有48个特征图,且大小为60*60。第四层是第二个池化层,采用的和第二层一样的操作,输出为48个30*30的特征图。第五层是Flatten层,作为一个过渡层,Flatten层用来将输入“压平”,即把多维的输入通过此层变成一个一维数据。第六层是第一层全连接层,后面就紧接着dropout层。第七层为第二层全连接层。最后一层是输出层,将84个卷积核分类至20个,并通过softmax函数分类得到最后的分类结果20,也就是20个的人脸对应。ZLeNet网络结构的具体配置如表5-1所示。表5-1层数类型卷积核大小卷积核个数参数个数输出C1卷积层5*532832128*128ReluS2池化层3264*64C3卷积层5*5403844860*60ReluS4池化层4830*30F6全连接层1*1256110594561*1F7全连接层1*184101641*1Output2020*16实验及结果分析6.1数据预处理在本实验中选取了AR人脸数据集,在准备实验之前,我们要对于这个图片进行预处理,选取的语言为python,整个编译器是pycharm。后期会将处理过后的照片作为实验的输入来训练模型。下面是预处理的基本过程:在图像处理的过程中使用resize函数将图像大小转换成规定尺寸,批量处理图片,包括图像增强、去噪和缩放;然后就是将这些图片存在另一新路径,值得一提的是,由于原图片的格式为.pgm的格式,不妨方便后期各种操作,故直接存为.jpg格式。6.2算法逻辑过程这里想证明ZLeNet网络模型可以用来进行人脸识别,将整个模型即运行代码的的算法逻辑过程做个简单说明:(1)数据的提前处理,便于后面操作。首先就是读取之前保存的.jpg的图片路径,选择的数据是20个人,每个人有26张图,将属于每个人的图都分成20张用来训练,剩余的6张则用来进行预测。(2)然后就是核心模型的训练:①数据预处理,对训练数据进行随机旋转,偏移图像处理,这样可以尽可能让训练数据差异化以保证该模型的数据足够说明问题,另外处理数据方式采用分批无序读取的形式,避免了数据按目录排序训练。②创建ZLeNet网络模型,将上一步分好的数据集,直接输入模型,让其自主学习,提取属于各自的特征,并分好属于这20个人的特征类别。③这一步主要是一个反馈过程,在判定loss函数大小的基础上依据优化器来调整模型参数,以便达到最优的输出结果。与此同时还将实时的loss和accuracy作个图输出以便直接观测数据走向。④此时,依据模型的loss函数走向趋于0,发现这个模型是可以检测人脸,开始保存模型。⑤预测阶段,将之前分好的val(预测)板块的图片调出来,让这个已经被好的模型来预测输出,值得强调的是,测试效果已经很理想,接近预期。6.3实验结果分析这里为了凸显并非偶然性,选取了四次训练完的模型,四次训练的模型分别取名为T1、T2、T3、T4,如下图6.3.1,6.3.2,6.3.3,6.3.4分别是T1、T2、T3、T4四次训练对应的损失函数的图,横、纵坐标分别代表的是训练的轮数和损失函数值:6.3.1T1损失图6.3.2T2损失图6.3.3T1损失图6.6.4T2损失图如下图6.3.5,6.3.6,6.3.7,6.3.8分别是T1、T2、T3、T4四次训练对应的识别精度的图,横坐标是训练的轮数,纵坐标就是精确数值:6.3.5T1精度图6.3.6T2精度图6.3.7T1精确度图3.3.8T2精确度图在上述提及到的四次实验模型训练中,在多次轮数的设置之后,发现在40左右都是缓慢增长精确度,故选取50作为总轮数,而在50次中每次再训练五次。通过上面的损失函数的四个图,不难看出训练次数在30轮的时候,基本上损失函数值已经是0.5了,并且当达到50轮的时候甚至是可以下降到0.1。与此同时精确度在50论的时候已经是0.9左右。而预测的数据正确率已经是可以达到97%,且准确度也是比较高。故而此模型是可以用于人脸识别的,而且精度达到理想的效果。7总结与展望本文虽然在AR这个公开的数据集上有较好的效果,但是不能保证此文所提出的模型可以适用于其他所有的场景与应用,所以在面对更为复杂的环境,更加苛刻的条件,本模型的提升空间还是巨大的。希望在未来有机会可以把这个模型真正用于真实的生活场景,为我们提供更好的服务,让我们能够享受科技带来的硕果。参考文献王科俊,姚向辉.人脸图像检测与识别方法综述[J].自动化技术与应用,200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湖南省湘乡市高二生物上册期末考试模拟卷附答案【基础题】
- 2025年福建省建瓯市高二生物上册期末考试真题附参考答案【B卷】
- 2025年福建省晋江市高二生物下册期末考试模拟检测卷附答案(考试直接用)
- 2025年山东省海阳市高二生物下册期末考试模拟卷附答案【B卷】
- 2025-2026学年名爵6按键教学设计
- 高中信息技术选修1教学设计-2.2.1 居民生活消费支出的计算-粤教版
- 2025年河南省卫辉市高二生物下册期末考试模拟试卷及参考答案(A卷)
- 2025年广东省信宜市高二生物上册期末考试真题附完整答案(名校卷)
- 2025年江苏省扬中市高二生物下册期末考试模拟测试卷附答案(培优)
- 2026年黑龙江省安达市高二生物下册期末考试模拟卷【典优】附答案
- 2026年高校教师资格证考试题库附参考答案(满分必刷)
- 2026-2030年中国天文望远镜行业市场发展趋势与前景展望战略分析报告
- 2027届新高考语文精准冲刺复习作文审题立意指导及范文
- 《无人机维护技术》全套教学课件
- 超24 h急性缺血性脑卒中患者血管内取栓治疗的研究进展
- 户口本英文翻译模板
- 社区常见病诊疗技能标准化培训
- 临床试验期中分析报告
- 学堂在线 批判性思维-方法和实践 章节测试答案
- 氨分解炉安全操作标准流程手册
- 毕业设计(论文)-某水库除险加固工程设计
评论
0/150
提交评论