




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 生 毕 业 论 文题目 人脸图像姿态校正方法研究 姓 名 学 号 指导教师 专 业 计算机科学与技术 学 院 计算机学院 A Dissertation Submitted to Zhejiang University for the Degree of Bachelor of EngineeringTITLE: Research of Face Image Pose Correction MethodAuthor: Supervisor: Major: Computer Science and TechnologyCollege: Computer Science and TechnologySubmitted Date: 2015.6.15 浙江大学本科生毕业论文(设计)诚信承诺书 1.本人郑重地承诺所呈交的毕业论文(设计),是在指导教师的指导下严格按照学校和学院有关规定完成的。2.本人在毕业论文(设计)中引用他人的观点和参考资料均加以注释和说明。3. 本人承诺在毕业论文(设计)选题和研究内容过程中没有抄袭他人研究成果和伪造相关数据等行为。4. 在毕业论文(设计)中对侵犯任何方面知识产权的行为,由本人承担相应的法律责任。 毕业论文(设计)作者签名: 年 月 日浙江大学计算机科学与技术学院本科毕业论文 摘要摘要人脸识别,是指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。在这一领域,伴随着大的姿态变化的脸部识别在计算机视觉方面一直是一个技术瓶颈。本文通过一种基于深度学习的脸部描述符:脸部特征保持特征(FIP),基本实现了对人脸图像的姿态校正以及特征值匹配的功能。另外,本文还将提取出的FIP特征用OpenCV中的PCA进行了分析和测试。通过实验分析,本文的方法在大的姿态变动下的人脸识别准确率有显著的提高。关键词人脸识别 姿态校正 深度学习 主成分分析全套设计加扣 3012250582I浙江大学计算机科学与技术学院本科毕业论文 AbstractAbstractFace Recognition is a computer technology that does the work of identification by analyzing the feature information of human faces. In this field, the recognition with diverse poses variations has always been a technical bottlenecks. This paper basically implements the pose correction and eigenvalue matching of face images through a face descriptor, FIP, based on deep learning. Moreover, this paper analyzes and tests the gained FIPs by PCA in OpenCV. After the experiment and analysis, the method presented in this paper is proved to be efficient in enhancing the accuracy of face recognition under the circumstance of diverse poses.KeywordsFace Recognition , Pose Correction , Deep Learning , Principal Component AnalysisII浙江大学计算机科学与技术学院本科毕业论文 目录目录摘要I第1章 绪论11.1 课题背景11.2 研究内容31.3 本文结构安排3第2章 文献综述42.1 背景介绍42.2 部分现有消除人脸姿态变化的识别方法介绍52.3 传统的人脸特征描述符62.4 深度学习的基本概念92.5 本章小结11第3章 研究方案123.1 系统架构图123.2 深度网络的构建123.2.1 本课题参考的深度网络的架构123.2.3 网络的训练143.3 本课题的深度网络的计算实现方法153.3.1 输入层第一隐藏层的计算153.3.2 第一隐藏层第二隐藏层的计算163.3.3 第二隐藏层第三隐藏层的计算183.3.4 第三隐藏层输出层(重构层)的计算193.3.5 局部连接(Local Connection)和最大池化(Max Pooling)实现203.4 利用PCA对FIP特征效果测试223.5 本章小结23第4章 实验结果244.1 FIP的提取和匹配244.2 利用PCA分析人脸图像并测试FIP的效果254.2.1 利用Mean和EigenFace进行测试254.2.2 利用投影之后的向量进行测试274.3 本章小结30第5章 分析与讨论315.1 FIP特征的提取和匹配315.2 PCA对人脸图像的分析和对FIP效果的测试315.3 本章小结32第6章 本文总结33参考文献34致谢35IV浙江大学计算机科学与技术学院本科毕业论文第1章 绪论第1章 绪论1.1 课题背景人脸识别,特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找;而狭义的人脸识别特指通过人脸进行身份确认或身份查找的技术或系统。人脸识别是一项热门的计算机技术研究领域,其优势在于其自然性和不被被测个体觉察的特点。所谓自然性,是指该识别方式同人类进行个体识别时所用的生物特征相同;而不被察觉的特点使得该识别方法不令人反感,并且因为不容易引起人的注意而不容易被欺骗。因此,人脸识别在很多方面都得到了充分的应用:门禁系统:受安全保护的地区可以通过人脸识别辨别试图进入者的身份;摄像监视系统:在例如银行、机场、商场等公共场所对人群进行监视,以达到身份识别的目的;网络应用:利用人脸识别辅助信用卡网络支付,以防止非信用卡拥有者使用信用卡。虽然人脸识别有着诸多优势,但是它本身也存在很多困难:1、不同个体之间的区别不大,所有人脸的结构都相似,甚至人脸器官的结构外形都很相似。这样的特点对于利用人脸进行定位是有利的,但是对于利用人脸区分人类个体是不利的。2、人脸的外形很不稳定,人可以通过脸部的变化产生很多表情,而在不同的观察角度,人脸的视觉图像也相差很大。另外,人脸识别还受光照条件(例如白天和夜晚,室内和室外等)、人脸的很多遮盖物(例如口罩、墨镜、头发、胡须等)、年龄等多方面因素的影响。在人脸识别中,通常称第一类变化为类间变化(inter-class difference),而第二类变化为类内变化(intra-class difference)。第一类变化是应该放大而作为区分个体的标准的,而第二类变化应该消除,因为它们可以代表同一个个体。对于人脸,类内变化往往大于类间变化,从而使在受类内变化干扰情况下的类间变化区分个体变得异常困难。一般来说,人脸识别包括图像摄取、人脸定位、图像预处理、以及人脸识别(身份确认或者身份查找)。系统输入一般是一张或者一系列含有未确认身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图像或者相应的编码,而输出往往是一系列相似度得分,表明识别的人脸的身份。目前人脸识别的算法可以分类为:基于人脸特征点的识别算法(Feature-based recognition algorithms);基于整幅人脸图像的识别算法(Appearance-based recognition algorithms);基于模板的识别算法(Template-based recognition algorithms);利用神经网络进行识别的算法(Recognition algorithms using neural network)。在许多实际的应用中,姿态(观察角度)的变化成为了人脸识别的瓶颈。现有的许多方法被提出来去计算这种差异,这些方法方法通常被分为基于2D的和基于3D的。然而以上的这些方法都具有一定的局限性,例如,捕获3D数据需要额外的资源和开销而现有的人脸识别方面的深度学习的方法可以被分为两种类型:(1) 深模型的无监督学习,然后使用判别方法(如SVM)进行分类;(2) 直接使用类标签作为深度模型的监测。在第一种类型中,与身份、姿态和光照相关的特征在被深度模型学习的时候是耦合的,之后再依赖SVM去区分它们太迟了。而在第二种类型中,“0/1”这样的类标签是比较差的监督。1.2 研究内容1) 查阅了深度学习和人脸识别方面的相关文献、书籍,了解了人脸识别、姿态校正和深度学习等方面的基础知识;2) 对一个全新的姿态校正人脸特征描述符(FIP-The Face Identity-preserving Features)进行了研究,了解了该特征提取算法的基本原理,在此基础上实现了FIP特征的提取和匹配;3) 利用PCA(主成分分析)对FIP进行匹配验证,测试FIP校正人脸姿态的效果。1.3 本文结构安排本文首先概述了人脸识别这一技术的应用和当前存在的问题以及技术瓶颈。然后,从FIP出发,结合现有的知识对人脸识别领域的姿态校正算法进行了研究,并加以实现,随后又利用PCA对FIP的效果做了测试。本文一共分为六章,大致内容如下:第一章 绪论:从人脸识别的定义和一些基本的人脸识别算法阐述了研究课题的背景,同时阐述了本次研究的内容。第二章 文献综述:主要介绍几种处理不同姿态情况下人脸识别的方法,以及一些传统的人脸描述符,指出人脸识别在姿态多变时的瓶颈。第三章 研究方案:详细描述了针对本文研究课题进行的各种研究,并对其中的一些技术进行了实现。第四章 实验结果:展示了利用深度网络校正人脸图像,得到标准库中的正面人脸特征描述符(FIP)以及利用OpenCV中的PCA对经过FIP处理的图像进行测试和验证的结果。第五章 分析和讨论:针对实验结果以及在研究中出现的各种问题做了一定的分析和讨论。第六章 本文总结:对整个研究工作进行了总结,指出研究结果的不足,并对将来的工作进行了分析和展望。3浙江大学计算机科学与技术学院本科毕业论文第2章研究方案第2章 文献综述2.1 背景介绍作为图像分析和理解方面最成功的应用,人脸识别(FRT)最近受到了极大的关注,特别是在过去几年。这种趋势的原因至少有两个:第一个是广泛的商业和执法应用程序的应用,第二个是在40年的研究之后有了可用的技术。另外,机器识别人脸也持续的吸引着来自如图像处理、模式识别、神经网络、计算机视觉、计算机图形学和心理学的研究人员。对于那些能够保护我们的财产和隐私并且不会泄露我们的身份的用户友好型系统的巨大需求是显而易见的。商业和执法系统对FRT的应用范围从静态的、格式可控的照片到不可控的视频图像,这构成了广泛的技术挑战,这需要同样广泛的图像处理、分析、理解和模式识别技术。机器识别人脸的问题通常可以被表述如下:给定一张静止或者视频图像的一个场景,识别或者验证这之中的一个或多个人脸,这些人脸是提前存储在一个人脸数据库中的。像种族、年龄、性别、面部表情或语言这样的可以用来提供担保的信息可以缩小搜索的范围(增强识别)。在身份识别性问题中,输入到系统中的是一个未知的人脸,识别系统反馈的是从一个已知身份的人脸数据库中确定的身份;而在验证性问题中,系统需要接受或者拒绝输入人脸所声称的身份。人脸感知是人类感知能力中的一个重要组成部分,同样也是人类的一个日常任务,但是建立一个类似的计算机系统仍然是一个需要持续研究的领域。最早的人脸识别工作可以追溯到上个世纪50年代的生物领域。但是真正意义上的机器自动识别人脸的研究是从上世纪70年代开始的。过去的40多年,神经科学家、神经物理学家以及工程师们在从各个方面对人脸识别做了大量的研究。在这一领域,研究人员们提出了许多基于相当小的图像集的假说和理论。这些研究成果对于设计机器识别人脸算法和系统的工程师们有着重要的影响。在许多实际的应用中,姿态(观察角度)的变化构成了人脸识别的瓶颈,许多方法都被提出来以消除识别中的这种差异。2.2 部分现有消除人脸姿态变化的识别方法介绍这一节主要介绍现有的几种消除人脸识别中的姿态差异的算法的基本原理和特点,我们称这种算法为“姿态不变(pose-invariant)算法”。姿态不变方法分为两类:基于2D的:Cao等人在2中指出,大部分的方法都采用两个策略,分别是通过整体的和通过局部的。前者是在一个完整的人脸上重建一个姿态不变(pose-invariant)的模型,而后者则是通过局部的面片来描述人脸。另外,在面片层面的整体人脸的重建模型是另一种流行的方法。因为利用局部人脸的方法相比于利用整个人脸的方法在面对姿态变化时是更为稳健的。Carlos等人在9中指出,大幅度的姿态变化下的2D人脸识别虽然非常有挑战性,但是这些困难是由于倾斜面的透视缩短匹配算法造成的,而这种算法需要提供鲁棒性的照明变化。Carlos等人通过设计一个新的、动态规划的立体算法来计算表面倾斜。这种方法在CMU PIE数据集下的识别性能相比于传统的方法有显著的提高。 Florian等人在10中提出了一个新颖的数据驱动的方法。Florian等人通过一个有序的身份库来描述脸部图像。列表的顺序按照库图像和探针图像的相似度来排列。列表作为每个人脸图像的签名:人脸图像之间的相似度是通过签名的相似度来确定的。这种方法比较一对人脸图像但是并不需要直接比较这对图像的签名,并且允许可见部分很小的图像之间的识别和验证。它在处理大幅度的姿态变化时的表现要优于像FPLBP这样的利用局部特征的方法。基于3D的: Li等人在3中指出,匹配一对在不同姿态下的人脸图像可以被转换成匹配这对人脸图像对应于相同语义面部点的像素点的问题。顺着这个思路,两张不同姿态下的人脸图像G和P,Li等人提出了一种命名为MDF(Morphable Displacement Field形变位移场),以便在P的虚拟视图下匹配G的姿态。通过制定MDF作为数字的凸组合,从3D人脸数据库生成模板位移场,这种模型同时满足整体整合和局部一致性。Li等人进一步提出一个近似的但是有效的处理MDF模型的方法,称之为iMDF(implicit Morphable Displacement Field隐含的形变位移场),它通过最小化残留配合合成MDF的虚拟视图的隐藏性。这种方法不仅避免了高维度位移场顽固性的优化,也有利于约束二次优化。这种方法可以很好的工作,即使只有两个面部标志标记,这使得它特别适用于FRAP系统。 Asthana等人在4中提出了一种处理连续姿态变化的方法,这种方法是不依赖数据库的,并且能够达到很高的精度,无需任何人工干预。Asthana等人提出了一个全自动系统来实现姿态不变(pose-invariant)人脸识别,这种方法不仅能够满足不依赖数据库和高精度的要求,而且还优于其他同类的方法。这种方法是一个3D姿态归一化的方法,而且是完全自动的,它利用系统找到的准确的2D脸部特征点。该系统能够处理正负45的左右倾角和正负30的俯仰角范围内的姿态变化。该方法不仅通过在5个人脸数据库(USF 3D,Multi-PIE,CMU-PIE,FERET和FacePix)下的高精度显示出良好的通用性,而且表现上明显优于其他方法。2.3 传统的人脸特征描述符本节主要介绍了一些常用的人脸图像过滤或者说特征提取方法。LBP:Local Binary Pattern:局部二值模式。是一种用来描述局部纹理特征的算子,它的作用是进行特征提取,而且,提取的特征是图像的纹理特征,并且是局部纹理特征。原始的LBP算子定义在3*3的窗口内,以窗口中心像素的灰度值为阈值,将相邻的8个像素的灰度值与其进行比较,若大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3的领域内的8个点可以产生8bit的无符号数,即该窗口的LBP值,并用这个值来反映该区域的纹理信息,如图2.1所示:图2.1 3*3区域下的LBP算子示意图原始的LBP被提出后,研究人员不断地对其提出了各种改进和优化,从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子LBPP.R;LBP均匀模式;LBP旋转不变模式;LBP等价模式等等,具体可以参考11。Gabor:Gabor变换属于加窗傅里叶变换,Gabor函数可以在频域的不同尺度、不同方向上提取相关的特征。由于Gabor函数与人眼的生物作用相仿,所以经常被用在纹理识别上,并且取得了很好的效果。Gabor变换的本质实际上是对二维的图像求卷积。在很多前人的研究中,我们都能看到Gabor的应用。例如在12中,Bai等人利用Gabor子波进行特征提取,从而实现自动的人脸识别。而在13中,Laurenz等人利用Gabor子波变换从人脸数据库中标记出人脸的特征点。PCA:PCA(Principal Component Analysis主成分分析)简而言之就是利用数学计算将原本稀疏的高维数据中不重要的特征值过滤掉,降低数据的维度。换言之,原本需要使用n个特征来表示的数据,经过PCA的分析,将只需要m个特征来表示(其中n大于m)。要理解PCA,首先要明白数据降维的必要性和降维的目的性:降维的必要性:1.多重共线性-预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。2.高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有0.02%。3.过多的变量会妨碍查找规律的建立。4.仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。降维的目的性:1.减少预测变量的个数2.确保这些变量是相互独立的3.提供一个框架来解释结果一些相关知识:样本X和样本Y的协方差(Covariance):协方差为正时,说明X和Y是正相关关系,为负时是负相关关系,为0 时说明X和Y相互独立。当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是。比如三维数据(x,y,z),计算它的协方差就是:当AX = X,就称是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量上,仅仅使得X的长度发生了变化,缩放的比例就是相应的特征值。当A是矩阵时,就变成了特征向量。当A是n阶可逆矩阵时,A与p-1Ap相似,相似矩阵具有相同的特征值。特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1 = QT),使得下式成立:对A进行奇异值分解就能求出所有的特征值和Q矩阵。上式中D是由特征值组成的对角矩阵,由特征值和特征向量的定义知,Q的列向量就是A的特征向量。PCA过程:1、 特征中心化:即每一维数据都减去该维的均值。这里的“维”指的就是一个特征(或者属性)。变换之后每一维的均值都变成了 0,接着用矩阵A的每一列减去该列的均值后,得到矩阵B2、 计算协方差:计算B的协方差矩阵C3、 计算协方差矩阵C的特征值和特征向量4、 选取大的特征值对应的特征向量,得到新的数据集2.4 深度学习的基本概念深度学习的概念源于人工神经网络的研究,是机器学习中一个非常接近AI的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它的目的是模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习的概念由Hinton等人于2006年提出。Hinton提出的基于深信度网(DBN)无监督逐层训练算法,为解决深层结构相关的优化难题带来了希望,随后Hinton又提出了多层自编码的深层结构。此外,Lecun等人提出的卷积神经网络是第一个真正的多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。同机器学习方法一样,深度机器学习方法也分为有监督和无监督学习之分,不同的学习框架下建立的学习模型很是不同。例如,卷积神经网络(Convolutional neural networksCNN)就是一种监督学习下的深度机器学习模型;而深度置信网(Deep Belief NetworksDBN)就是一种无监督学习下的机器学习模型。深度网络往往会有输入层,隐藏层和输出层,主要的学习和训练一般都在隐藏层之中完成(如图2.2所示)图2.2 深度网络的一般结构示意图深度学习和深度网络到底“深”在哪,通过下面的两张图片就可以形象而清晰地看出区别(如图2.3和图2.4所示):图2.3 浅度学习示意图图2.4 深度学习示意图很多浅层学习算法可以看作是从被标记的数据之间寻找规律的过程,我们试图通过这些被标记的数据建立一个属于它们的世界,让它们在我们建立的世界中学习,可是这个过程是很困难的。不考虑浅层网络的结构对这些数据表示的影响,单单从对真实世界的还原度来说,浅层网络显然太过于简单,对真实世界的表示有着很大的局限性。而深度学习则试图利用被人类主观理解和处理分类过的数据去训练网络,并将人类世界已经抽象出的规则作为网络训练的约束条件。这样的训练对真实世界的还原就更接近人类理解的真实世界,而且也更为接近人脑神经对数据的处理和解释。2.5 本章小结本章重点阐述了人脸识别的背景、应用以及目前的识别中存在的技术瓶颈;介绍了部分现有的分别基于2D和基于3D的消除人脸姿态变化的方法的原理和优缺点。随后又介绍了LBP,Gabor和PCA等几种传统的人脸特征描述符的原理以及深度学习和深度网络的概念,说明我们的研究的必要性和重要性。第3章 研究方案3.1 系统架构图整个系统的架构图如下:图3.1 系统架构示意图具体流程如下:1) 准备训练集人脸图像;2) 准备测试集人脸图像;3) 构建深度网络;4) 将训练集的人脸图像作为深度网络的输入,并让网络不断地学习训练集的数据,从而不断地调整网络各个部分的权重和偏置参数;5) 输入测试集的人脸图像6) 让已经训练好的深度网络对输入进行计算7) 输出重构之后的图像3.2 深度网络的构建本节将先阐释我们参考的网络架构的结构和原理,本课题的网络架构和这个架构类似,后面的3.3节我们会结合代码详细阐释我们在具体实现时的网络架构。3.2.1 本课题参考的深度网络的架构本课题参考的深度网络架构一共有三层(如图3.2所示):图3.2 本课题参考的深度网络架构本课题深度网络的输入是一张在任意姿态下的人脸图像x0,输出的是一张标准人脸库MultiPIE中与输入图像FIP特征最接近的正面人脸图像y。它们都有个维度。特征提取层有三个局部连接层和两个汇聚层,被编码成x0在FIP特征x3中。在第一层中,x0通过权重矩阵W1被转换成32个特征映射图,这个矩阵包含32个子矩阵,每个子矩阵都是稀疏的以便保留局部的连接结构。直观地,的每一行代表一个小的过滤器,这个过滤器对应x0中的某个像素,以使得该行的所有元素都是0除非这个元素属于过滤器。由于这些的权重是不共享的,因此这些行的非零值是不同的。权重矩阵的结果是32个特征映射图,每个特征映射图都有个维度。另外,有一个矩阵,其中,这个矩阵编码汇聚层的2D形貌,将每一个特征映射图下采样到以便减少需要被学习的参数的数量以及保留更多健壮的特征。每个能被如下的公式计算: (1)其中是修正过的线性函数,这个函数是特征保持的。所以它对形状和光照的变化具有很好的鲁棒性。能够通过连接所有的来得到,而后得到一个大的在维度下的特征映射图。在第二层中,每个被转换成,32个子矩阵, (2)其中是使用到的下采样的。等式(2)表示第一层的每个小的特征映射图都和32个子矩阵相乘然后相加。这里,正如上面讨论过的,每个子矩阵都有着稀疏的结构。我们可以再用矩阵的形式形式化的表示等式(2): (3) 其中并且。通过简单地重复32次来获得。这样,就有个维度了。在第三层中,被转换成,比如说FIP特征,类似于第二层,但是没有汇聚。所以,和的大小一样。 (4)其中并且。最后,重建层通过一个权重矩阵将FIP特征转换到正面人脸图像 (5)3.2.3 网络的训练因为该网络的输入、输出的数据在不同的空间里,因此网络的权重矩阵是不共享权值的,网络的训练目标就是使下式的值最小: (6)其中是弗罗贝尼乌斯范数。优化等式(6)是不简单的,因为它并非线性的。然而,可以像下面这样对权重矩阵进行层间优化式的初始化: (7) (8) (9) (10)在等式(7)中,是一组输入的图像。已经在第3节中进行了介绍,所以为每一个输入生成一个32个特征映射的输出。是一个固定的二进制矩阵,这个矩阵将这些特征映射图中相同位置的像素点相加使得和尺寸相同。在等式(8)中,是汇聚前的第一个局部连接层的一组输出,也是一个固定的二进制矩阵,这个矩阵将在一起的像素点求和并且重新调整结果使得结果的尺寸与一样,等式(9)中的也是以相同的方式定义的。直观地,我们首先直接通过一个没有汇聚的线性变换用来逼近。一旦被初始化完成,就被用来通过另外一个线性变换再次逼近。我们重复这个过程直到所有的矩阵都被初始化完成。所有上述的等式都有封闭解。例如,。其余的矩阵可以运用相同的方法进行计算。3.3 本课题的深度网络的计算实现方法在本节,我们将结合代码详细阐述我们是如何构建深度网络、完成人脸图像的姿态校正(即FIP特征的提取和匹配)的。构建深度网络:本课题的深度网络在输入和输出之间一共有三个隐藏层(Hidden Layer),除了最后一个隐藏层和输出层之间是全连接(Fully Connected)外,其余的各个层之间(包括输入层和第一个隐藏层之间)都是局部连接的(Locally Connected),而且本课题使用的卷积核是一个的卷积核,但是和一般的卷积神经网络不同,我们的网络每一层的权重矩阵和偏置矩阵是不共享的。3.3.1 输入层第一隐藏层的计算这两层之间的处理主要是通过卷积和类似于自编码的形式,将原始的维的灰度人脸图像映射成32个特征映射图(Feature Map)。而后对这32个特征映射图进行最大池化(Max Pooling),得到32个维的特征映射图,以便第二隐藏层学习。具体过程如下:程序读入的是一张像素的人脸灰度图;权重矩阵共由32个子矩阵(i从1到32)组成,每一个子矩阵都是的,直接从文件local1_weights.txt中读入程序中(如图3.7所示),偏置矩阵也直接从文件local1_biases.txt中读入程序中(如图3.8所示):图3.7 读入第一个权重矩阵图3.8 读取第一个偏置矩阵两个矩阵读入之后,调用神经元的计算函数local_connection,同时对每一维数据进行非负化处理,处理之后的非负矩阵数据存储在neuronOutputMap这个Mat类型的变量中(如图3.9所示):图3.9 计算第一隐藏层输出的特征映射图(MaxPooling之前)接着,调用max_pooling函数对上一步计算出的特征映射图做最大池化,从而降维到(如图3.10所示):图3.10 对特征映射图做最大池化(Max Pooling)最后,第一个隐藏层的输出就是32个维的特征映射图(其实就是这一层的32个神经元)。3.3.2 第一隐藏层第二隐藏层的计算第二隐藏层以第一隐藏层输出的32个的特征映射图为输入,并再次通过和3.3.2.1中类似的卷积和自编码的形式将输入的32个的特征映射图映射成新的32个特征映射图,通过和已经训练好的权重矩阵以及偏置矩阵进行计算,尽可能的消除这些映射图中反应姿态差异的特征,同时尽可能的保留其他的反应脸部结构的特征。随后再进行同样的最大池化,得到32个的特征映射图,以便给第三个隐藏层学习。具体过程如下:权重矩阵同样有32个子矩阵(i从1到32),每个子矩阵的都是的。直接从文件local2_weight.txt中读入程序(如图3.11所示),偏置矩阵也直接从文件local2_biases.txt中读入程序(如图3.12所示):图3.11 读入第二个权重矩阵图3.12 读入第二个偏置矩阵两个矩阵读入之后,再次调用神经元的计算函数local_connection,同时对每一维数据进行非负化处理,处理之后的非负矩阵数据存储在neuronOutputMap这个Mat类型的变量中(如图3.13所示):图3.13 计算第二隐藏层输出的特征映射图(Max Pooling之前)接着与3.3.2.1一样,对上面的32个的特征映射图做最大池化(如图3.14所示):图3.14 对特征映射图做最大池化经过上述处理之后,第二个隐藏层就能够输出32个的特征映射图了,这32个特征映射图相比上一节中的特征映射图来讲,有两个不同点:一是每个特征映射图的维度从降到了(最大池化做的处理);二是这32个特征映射图中隐含的图像特征成分中,已经基本没有关于姿态方面的特征了,但是关于脸部结构方面的特征则几乎完全的保留了下来,甚至有了增强(虽然这无法显式的看出,但是多隐藏层的深度网络在不断地对前面层的特征映射图进行抽象和学习的过程,实际就是根据权重和偏置不断地过滤次要特征、增强主要特征的过程)3.3.3 第二隐藏层第三隐藏层的计算这两层之间做的主要的处理仍然是卷积和自编码,唯一的区别就是没有进行池化,因此,第三隐藏层处理完之后的输出是和第二隐藏层维度同样为的32个特征映射图。不过,这里的卷积核和权重、偏置矩阵被设计成将上一步的32个特征映射图更加特征化(换言之,就是在上一步基本去除了反应姿态变化的特征之后,这一步要再对数据的隐含特征进行提取),以便进一步减少数据量(也就说输出的就是我们要的FIP特征)。具体过程如下:权重矩阵和偏置矩阵的结构和上一节中的以及是一致的,同样地,它们的值将分别从文件local3_weight.txt和local3_biases.txt中读入程序(如图3.15和图3.16所示):图3.15 读取第三个权重矩阵图3.16 读取第三个偏置矩阵同样地,在读入了两个矩阵的数据之后,调用神经元的计算函数local_connection,同时对每一维数据进行非负化处理,处理之后的非负矩阵数据存储在neuronOutputMap这个Mat类型的变量中(如图3.17所示):图3.17 计算第三隐藏层的特征映射图由于不用做池化,因此该层的输出就是32个的特征映射图,这32个特征映射图比第二隐藏层输出的32个更为抽象化,我们的FIP特征也就是在这一层输出的。3.3.4 第三隐藏层输出层(重构层)的计算这一层和前面的三层都是不同的,这一层是全连接的,也就是说,重构出的图像的每一个像素的值都是上一层算出的32个的特征映射图(即FIP特征)在权值和偏置矩阵下共同作用得出的,这一层最终将输出标准人脸库中FIP特征和输入层最接近的正脸灰度图像。具体过程如下:先新建一个能够存储重建人脸图像像素值的的矩阵(如图3.18所示):图3.18 新建重构矩阵区域图3.18的代码中的input就是第三隐藏层中的输出(即FIP特征)接着分别从文件fc_weight.txt和文件fc_biases.txt中读入该层需要使用的权重矩阵和偏置矩阵(如图3.19所示),然后直接带入公式:中即可算出重构图像的矩阵值了(如图3.20所示):图3.19 读入重构层的权重和偏置矩阵图3.20 计算重构图像的矩阵值上述四小节的过程结束之后,将得到的重构图像矩阵值以灰度图像的形式输出就可以了。3.3.5 局部连接(Local Connection)和最大池化(Max Pooling)实现在前面的4节中,我们多次调用了如下两个函数local_connection和max_pooling,在这一节我们就简单说明下它们的原理和实现。3.3.5.1 局部连接(local_connection)函数的实现这个函数在我们的深度网络中的作用是在每一层的运算中,将上一层的输入中的局部数据作为条件,计算出这一层的某一个神经元的值,它和全连接(fully connection)不同:比如在从原始图像(即输入层)到第一隐藏层的计算过程中,在权重矩阵和偏置矩阵被读入程序之后,我们根据设计的网络结构,将参数送到local_connection函数中(如图3.21所示)图3.21 local_connection函数的定义和具体的参数而函数主要就是将inputMap中的数据按照训练好的weights和biases,做卷积核大小为MAP_SIZE的卷积运算,FILTER_NUM的值在我们这里一直是32,表示要按照不同的权重和偏置做32次局部过滤(即在inputMap中对FILTER_SIZE大小的区域作32次卷积运算,从而得到第一隐藏层的32个特征映射图),函数的关键代码段如图3.22和图3.23所示:图3.22 函数最内层的卷积计算图3.23 对输入进行多次卷积(这里为一直为32次)3.3.5.2 最大池化(max_pooling)的实现池化(Pooling)的概念就是指在图像中用一块方形区域中的一个值来代替整个方形区域的像素值的方法,这里我们用的是最大池化(max_pooling),举例来说,在如下这个图像(如图3.24所示)中,我们如果将图像分成4个的区域(在图3.24中用不同的颜色表示),用每个区域中4个像素值里面最大的来代表这相邻的4个像素的值(如图3.25所示),这就叫做最大池化(max_pooling):1326457940893265图3.24 一个图像5949图3.25 经过最大池化之后的图像可以看出这样经过最大池化之后,数据的维度直接降为了原来的1/4,这样的处理在面对高维度的图像数据时十分有用,不仅不会损失太多的图像特征信息(经验告诉我们,图像的特征信息的像素值往往是相邻区域中的最值,因而取相邻像素的最大值就能很好的保持图像的特征信息),还会大幅度地降低数据的维度,为后续的处理和计算带来很大的好处。具体到我们的代码中,我们也是采用最大池化,而且同样是采用作为池化的大小,实现的时候只要按照图3.24和图3.25那样的处理方法对图像进行遍历(只要注意池化的区域是不重叠的即可)找到每个区域中的最大灰度值即可,关键的代码如图3.26所示:图3.26 max_pooling函数的关键代码截图3.4 利用PCA对FIP特征效果测试为了验证利用我们算出的“标准正脸”是否真的能够提高人脸的识别率,我们想到了PCA。我们的思路有两个:一是找到一组人脸数据库中的人脸图像,对所有的这些图像(我们称之为RawImgs)进行FIP特征提取和匹配,得到它们对应的匹配正脸(我们称之为FipImgs),然后分别对RawImgs和FipImgs做PCA分析,分别得到它们的Mean(均值)和EigenVectors(特征向量即能够通过这些特征向量的线性组合很大程度地还原所有的RawImgs或者FipImgs),接着显式地输出Mean的数据对应的人脸(我们称之为MeanFace)和EigenVectors数据对应的人脸(我们称之为EigenFaces),共两组,比较他们的显示效果,从而测试FIP特征的效果。二是将一部分原始图像用作训练集,算出PCA变换需要用到的参数;将剩下的一部分原始图像和这些图像经过FIP处理得到的标准正脸图像作为两个相互对照的测试集,并分别对两个测试集中的图像进行PCA变换(变换的参数由前面的训练集数据算出),得到两组降维后的投影向量;接着计算测试集中投影向量和训练集中投影向量的欧式距离,从而判断测试集中图像的ID和训练集中图像的ID是否相同,最后对比两个测试集的识别率。我们的方案是:先将图像以灰度的方式读入,再将图像拉伸成一个一维的行向量(比如一张6464的人脸图像,将它的每个像素的灰度值按照像素的顺序排列成一行,组成一个14096的一维行向量),若干张训练集的图像组成了新的矩阵,这个矩阵的每一行都是一张测试集图像的灰度值的有序数组,矩阵的列数量就是训练集图像的数量。利用同样的处理方法,我们将剩余的原始图像和剩余的经过FIP处理的图像作为两个相互对照的测试集。利用OpenCV中的PCA类和相关的函数对训练集的数据进行计算,得到后续PCA投影所需的均值(Mean),特征向量(EigenVectors)和特征值(EigenValues)。所有的图像(训练集和测试集的所有原始图像以及测试集中经FIP处理的图像)都根据上面算出的三个值进行PCA投影,得出降维后的图像特征向量。最后比较相同ID下:经过FIP处理和没经过FIP处理的两组测试集的PCA投影向量的相似程度(也就是人脸特征的匹配程度),从而测试FIP在姿态校正方面的效果。3.5 本章小结本章对本课题参考的系统架构图进行了阐释,并且结合代码详细解释了在实际的实现中我们的深度网络架构,以及我们的深度网络每一层的工作原理和实现方法,并阐述了利用PCA对FIP测试效果的两种思路和具体方案。24浙江大学计算机科学与技术学院本科毕业论文第4章 实验结果第4章 实验结果4.1 FIP的提取和匹配为了测试系统的效果,我们选用了AT&T人脸数据库作为输入,该数据库有40个个体的共400张图片(每个个体10张),我们将这些数据作为系统的输入,对系统进行测试,由于图片量过大,我们仅展示前64张图片和它们的测试结果:(如图4.1和图4.2所示):图4.1 用作输入的64张人脸图像图4.2 利用FIP匹配出的64张标准库的正脸图像可以看出,我们的系统能够很好的将输入图像匹配到用于训练的标准人脸库中的正脸图像上。4.2 利用PCA分析人脸图像并测试FIP的效果本节将具体展示3.4节中提到的两种测试思路的具体实现和测试结果。4.2.1 利用Mean和EigenFace进行测试和4.1节一样,我们的测试图像选用的是AT&T实验室的人脸数据库里的400张图像,原始图像(RawImgs)经过PCA算出的平均脸(MeanFace)和特征脸(EigenFaces)如图4.3和4.4所示(注:因为我们的PCA主成分数选的是30,所以有30个(以的形式表示)EigenFace:图4.3 用RawImgs算出的MeanFace图4.4 用RawImgs算出的EigenFaces经过FIP特征提取和匹配的图像(FipImgs)经过PCA算出的平均脸(MeanFace)和特征脸(EigenFaces)如图4.5和4.6所示:图4.5 用FipImgs算出的MeanFace图4.6 用FipImgs算出的EigenFaces可以从图4.3和图4.5明显的看出差别,用RawImgs算出的MeanFace明显没有用FipImgs算出的MeanFace清楚,后者甚至可以说是一张实实在在的人脸图像了,可见FIP的效果还是很不错的。而对比图4.4和图4.6,可以发现后者的轮廓明显更为清楚,这说明这些EigenFace携带了更多的特征,由此也可以验证我们的FIP的效果是好的。4.2.2 利用投影之后的向量进行测试同样采用AT&T中的数据进行测试,这里我们选取了前100张图片分别属于10个不同的个体(s1到s10),我们分别标号为Sample-1.jpg Sample-100.jpg。其中每个个体的最后一张图像都被用来作为测试集的图像。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家能源东营市2025秋招笔试模拟题及答案
- 青海地区中石油2025秋招面试半结构化模拟题及答案财务与审计岗
- 国家能源张家界市2025秋招网申填写模板含开放题范文
- 德阳市中石化2025秋招写作申论万能模板直接套用
- 营口市中石化2025秋招笔试行测专练题库及答案
- 赣州市中石化2025秋招面试半结构化模拟题及答案电气仪控技术岗
- 中国移动昭通市2025秋招市场与服务类专业追问清单及参考回答
- 盘锦市中石油2025秋招笔试模拟题含答案数智化与信息工程岗
- 国家能源西藏地区2025秋招面试专业追问及参考综合管理岗位
- 国家能源延边自治州2025秋招交通运输类面试追问及参考回答
- 2025合伙制合同协议书
- 福建省全国名校联盟2026届高三上学期联合开学摸底考试语文试题及参考答案
- 心血管衰老的分子机制探索
- 医院收费室培训课件
- 重点小学小学语文毕业总复习小升初资料大全
- 高原健康培训课件
- 血站差错管理课件
- 小班区域观察记录表30篇
- 转子泵培训课件
- 二级公立医院绩效考核三级手术目录(2020版)
- 司美格鲁肽学习课件
评论
0/150
提交评论