基于卷积神经网络的人脸识别
- 格式:docx
- 大小:46.02 KB
- 文档页数:11
《计算机系统项目综合实践》课程报告
报告题目: 基于卷积神经网络的人脸识别
组 长:班级:*学号:*姓名:*
在本项实践中的贡献百分比: 40 %
组 员1:班级: * 学号: * 姓名:*
在本项实践中的贡献百分比: 35 %
组 员2:班级: * 学号: * 姓名:*
在本项实践中的贡献百分比: 25 %
日 期: 2019/12/18
2 一、课程实践目标和内容概述:(各组员对本部分内容撰写的贡献比例,组长:组员1:组员2 = 20% : 20% : 60%)
1. 打算设计和实现一个什么样的计算机综合系统?该系统有什么功能?为什么选择该系统作为实践内容?
基于卷积神经网络的人脸识别。
通过10个人的420张192*168大小单一色彩图片对系统进行训练,从而使系统能够识别这十个人,在通过220张人脸的图片进行识别,统计识别精度,通过调整参数不断使测试精度达到最优,获得使测试精度达到最大的参数集合。
人脸识别应用在生活中十分广泛,卷积神经网络用于人脸识别是一种基于特征的方法,区别于传统的人工特征提取和针对特征的高性能分类器设计,它的优点是通过逐层卷积降维进行特征提取,然后经过多层非线性映射,使网络可以从未经特殊处理的训练样本中,自动学习形成适应该识别任务的特征提取器和分类器,该方法降低了对训练样本的要求,而且网络的层数越多,学习到的特征更具有全局性。因此,我们小组打算将该系统作为实践内容。
2. 运用什么程序设计语言或开发工具实现系统?为什么采用这种开发语言或工具?
运用MATLAB实现。
MATLAB具有封装的卷积神经网络,我们只需要对其设置层数和参数即可。而且MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中, 3 为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,且其对于数学建模和人工智能也很重要。
3. 如何评估所设计的系统的性能?
通过不断调整各方面参数组合,使得测试精度达到最优,使得最后得出的参数组合测试出来的精度在接受范围之内。
二、课程教学目标的理解与实施:(各组员对本部分内容撰写的贡献比例,组长:组员1:组员2 = 30% : 20% : 50%)
1. 分析一下设计和实现该实践系统需要几个阶段?每个阶段涉及的学科知识、基本技术或方法是什么?
阶段一 选题阶段:
在此阶段中,通过大致了解老师所分配的几个命题,明确每样命题所需要的工作,学习人工智能的大概知识,结合组员们自己的爱好,选定一个可以执行的命题。
阶段二 熟悉人脸识别的定义和基本算法:
在这个阶段中,为了实现我们在第一阶段所选的命题-人脸识别,我们更为深入地了解了卷积神经网络的定义,实现策略以及其中每一阶段的结构,还有误差反向传播,一些用到的函数变换等知识。但还没有深入理解到代码级别。
阶段三 代码级实现:
在这个阶段中,我们逐行理解老师所提供的原始代码,并尝试运行。掌握了各个函数的具体功能和使用参数,通过调用参数,调用函数使得系 4 统顺利运行。
阶段四 调整参数组合,得到最优组合:
在上一个代码实现阶段完成后,着手调整参数组合,在调节一组参数时固定其他变量,不断运行程序,得出测试精度。根据收集到的测试精度画出折线图,通过折线图的数据变化找到其中的最优参数集合,使得该参数集合达到的测试精度能够在接受范围之内。
2. 系统实现过程中各个阶段有无重点或难点问题?如果有,是什么?
1) 代码运行一遍的时间比较长,所以说对于修改代码时必须要考虑周到,尽量做到时间的充分利用。
2) 测试精度受诸多相关参数影响,许多参数不能单个进行分析,必须通过组合进行测试,而参数组合使得测试成本量级增大,无疑带来了不小的工作量。
3) 函数的细枝末节纷繁复杂,理解上带来了不小的困难,不过最后在苗军老师细心地讲解下一一得到了解决。
3. 分析影响系统完成的主要因素有哪些?作为一个整体,实践小组如何合理地分配时间和精力以完成系统的实现(各阶段的时间比例)?阐述组长和每个组员在实现系统过程中各自总的花费时间(单位:学时)。
前期算法的理解和时间的分配,环境的配置和硬件支持也花了功夫,如果对于卷积神经网络有一个很好地理解,对于其中的每一个环节都能很好地掌握,那么后期的编程将会节省很多时间。
后期参数调整以及测试精度的收集与分析,表格的绘制,和在数据变 5 化中找到最优的参数集合,对系统的完善与改进也是至关重要,但在大家的配合与努力之下顺利完成,使得最后的系统的精度达到理想范围之中。
本次实验中:
组长*:20-25学时
组员*:15-20学时
组员*:10-15学时
4. 阐述组长和每个组员各自在哪些学科知识、基本技术或方法上较为擅长、较能发挥自己的特长?
组长赵振昊较为主动,对于新知识的接受能力较快,自学能力较强,通过问老师和查阅资料做了大部分工作,在不断的沟通与探讨下,掌握了绝大多数相关知识,并给组员讲解不明白的知识点,对系统的顺利运行起到了功不可没的作用。
组员罗坤学科基础能力比较扎实,工作态度积极,并提供了硬件支持,认真出席每一次讨论,对于基础知识和各方面的实现提供了很多宝贵的意见,着手于数据的收集与分析,对系统的完善起到一定的促进作用。
组员史磊工作比较有热情,积极参加讨论,在系统的实现和完善中提出了相关意见,也对项目做出了很多贡献。
5. 阐述组长和每个组员在实践内容选题、实践阶段分析、实践内容实现上是如何沟通、协调和确定分工的?
组长选题并对于项目难点进行攻克,代码的整理与修改,并给组员讲解;组员罗坤负责基础知识的梳理,数据收集与分析,完善系统;组员史磊负责协调工作,在团队有分歧时提供意见。 6 6. 阐述组长和每个组员在实践内容选题、实践阶段分析或实践内容实现上遇到了哪些以往课程知识没有讲解过的新内容、新问题或新概念?是否各自自主地进行了相关知识的资料查找、学习和归纳?如果是,列出组长和每个组员具体学习、归纳的知识是什么?
组长*:卷积神经网络的两个函数和细节结构。
组员*:卷积神经网络中参数配置与相关设置。
三、计算机综合实践系统的具体实现:(各组员对本部分内容撰写的贡献比例,组长:组员1:组员2 = 20% : 30% : 50%)
1.一个或多个数据库的选择及训练和测试样本的情况描述,如有人工特征提取或可视化步骤,一并加入描述;
选取YaleB(192*168)中的420张192*168的图片进行训练,其中210张192*168的图片进行测试。
2. 系统的结构设计和参数描述,所运用到的关键知识、所采用的机器学习/人工智能模型的简单原理描述;
卷积神经网络:基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二 7 次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。
RNN:循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
3. 实验过程描述,包括为寻找一个最优系统所进行的训练、测试的具体步骤和过程描述。单独组队者或者联合组队者应该独自或分工配合把系统测试率随参数变化而变化的情况绘制成曲线、曲面或列成表格,可以选择以下一种或多种方式:
(a) 系统测试率随任意一个参数变化而变化情况,比如说总共有三个参数,那么应该绘制三张性能曲线图,每张图的横坐标是参数的变化刻度,纵坐标是系统的在测试集上的测试率,或者列成三张性能变化表,表的第一列是参数的变化值,表的第二列是系统在测试集上的测试率;
(b) 系统测试率随任意两个参数变化而变化情况,比如说总共有三个参数,那么应该绘制三张性能曲面图,每张图的x,y坐标是两个参数各自的变化刻度,z坐标是系统的在测试集上的测试率,或者列成三张性能变化表,表的第一、二列是两个参数各自的变化值,表的第三列是系统在测试集上的测试率;
注:为降低寻优实验次数,一种简化的寻优方法是,先遍历选出一个最优参数(其它参数此时先随机确定一个值),然后固定选好的这一个参数,对剩下的参数反复套用上述方式顺次选出剩余的参数。
8
12345678910第一个卷积神经层滤波器个数15151515202020252530第二个卷积神经层滤波器个数15202530202530253030测试精度0.86360.87270.88640.88180.86820.87730.88180.87730.92090.87730.830.840.850.860.870.880.890.90.910.920.9305101520253035测试精度卷积神经层滤波器个数卷积神经层滤波器个数对精度的影响第一个卷积神经层滤波器个数第二个卷积神经层滤波器个数测试精度220.9209330.818200.511.522.533.5最大池化层读取大小步长测试精度最大池化层读取大小步长测试精度系列2330.8182系列1220.9209最大池化层参数对精度影响系列2系列1 9
四、实验结果分析和结论:(各组员对本部分内容撰写的贡献比例,组长:组员1:组员2 = 25 % :25 % :50 %)
根据实验结果,分析并给出系统的最优参数组合,判断一下在最优参数组合下,系统是否达到了足够好或令人满意的性能。( 如有能力,对照数据或系统结构的特性,简单分析一下为什么选出的是这种参数组合?如果系统可以改进,你觉得将来可以从哪方面进行改进?)
我们组主要是调整卷积神经网络中的特征提取层中的第一个卷积层和第二个卷积层的滤波器个数,最大池化层中读取数据的尺寸大小和步长;以及卷积神经网络中的特征映射层中第一层隐单元个数和第二层隐单元个数。最后得到的最优参数组合为:第一个卷积神经层滤波器个数为25,第二个卷积神经层滤波器个数为30;最大池化层读取2*2,步长为2;第一个隐单元个数为100,第二个隐单元个数为200。该参数组合下,此系统能够达到的测试精度为0.9209,在接受范围之内,符合预期测试目标。
12345第一个隐单元个数100100150150200第二个隐单元个数100200150200200测试精度0.87730.92090.86820.88180.89091001001501502001002001502002000.87730.92090.86820.88180.89090.840.850.860.870.880.890.90.910.920.93050100150200250测试精度隐单元个数隐单元个数对精度的影响第一个隐单元个数第二个隐单元个数测试精度