文相似度标准资源

更新时间:2023-12-21 作者:用户投稿原创标记本站原创 点赞:9878 浏览:43441

摘 要

人脸识别技术有着广阔的应用前景和迫切的现实需求,是当前模式识别,计算机视觉等领域里最热门的研究方向之一.而人脸识别的软件系统开发,则是联系理论和实践的最重要的环节.本文着重介绍了人脸识别软件系统开发的背景,原理以及最后的设计结果.

本文共分为三个部分.第一部分介绍了人脸识别的意义,背景和人脸识别系统的组成.第二部分具体首先介绍了基于Gabor特征抽取并结合Fisherface方法的人脸识别.然后也介绍了用于识别的分类方法和相似度判定方法.第三部分介绍了我开发的人脸识别系统的组成部分和使用方法.最后本文给出一个小规模的测试结果,并根据测试就本系统的优点和不足进行了分析和展望.

关键字:人脸识别软件系统开发Gabor小波变换Fisherface

目录

第一章:人脸识别系统综述---------------------------------------------------01

1.1引言--------------------------------------------------------------------------01

1.2人脸自动识别系统--------------------------------------------------------01

1.3本文的安排-----------------------------------------------------------------03

第二章:基于Gabor特征抽取和Fisherface的人脸识别--------------04

2.1引言--------------------------------------------------------------------------04

2.2Gabor小波基----------------------------------------------------------------04

2.3GABOR基作特征抽取----------------------------------------------------05

2.4Gabor特征矢量的降维以及判据分析----------------------------------07

2.5Fisherface方法--------------------------------------------------------------08

2.6基于Gabor特征的分类规则---------------------------------------------09

第三章人脸识别的软件系统开发------------------------------------------10

3.1开发环境--------------------------------------------------------------------10

3.2系统框架--------------------------------------------------------------------10

3.3系统功能综述--------------------------------------------------------------11

3.4用户管理的程序实现-----------------------------------------------------11

3.5身份识别的程序实现-----------------------------------------------------12

3.6视频管理的程序实现-----------------------------------------------------14

3.7系统的典型使用流程-----------------------------------------------------14

3.8系统的测试-----------------------------------------------------------------16

3.9讨论与展望-----------------------------------------------------------------17

,给出识别结果.

1.3本文的安排

在论文的组织和安排上,本论文按照内容共分为五章:

第一章,人脸识别系统综述.着重介绍了人脸识别的研究对象,研究意义,研究难点以及典型人脸系统的组成.

第二章,基于Gabor特征抽取和Fisherface方法的人脸识别.这章介绍了系统中使用方法的理论基础,包括Gabor小波核,Gabor特征抽取,Fisherface方法,余弦相似度判别等.

第三章,人脸识别的软件系统开发.这章重点介绍了软件系统的构成,使用方法,以及一个小规模测试的结果和分析.

第二章基于Gabor特征抽取和Fisherface方法的人脸识别

2.1引言

人脸识别的核心问题,就是如何将人脸的特征抽取出来,并得到对应于不同用户的可分的若干类.Gabor小波基由于它的生物相关性,是一个很好的特征抽取的方法.但是Gabor滤波后得到的基的维数过高,并不能直接用作识别,所以我们使用了Fisherface的方法进行降维,并对每个用户求训练平均的方法,得到每个用户对应的类,以便进行分类.最后本章介绍了用于分类判别的NFA方法.

2.2Gabor小波基

GaborWelets用在人脸识别上是基于它与生物方面相关性的,哺乳动物视觉皮层简单细胞的感受野空间结构可以在数学上用Gabor函数来描述.简单细胞对大面积的弥散光无反应,而比较时和与检测具有明暗对比的边缘,并对边缘的位置和方位有严格的选择性.GaborWelets也具有一些很好的性质比如空间位置选择,方向选择,频率选择,正交性等,因此适合用于图像的特征抽取上,特别是用在人脸的识别中.

GaborWelets的核函数可以用下式描述[8]:

(1)

其中,分别是方向和尺度因子,等于(x,y)是行矢量,x,y为二维坐标,等于,等于/,等于.(1)式中方括号内第一项是交流成分,第二项是直流补偿,当参数很大的时候第二项可以忽略.

一般对参数的选取是这样的,取5个不同的尺度{0,1,2,3,4}和8个方向{0,等,7},并且取等于2,等于/2,等于.如果x,y坐标的范围是(-63,64)的话,这样得到了一组复数的Gabor基,如图2.1所示,图2.1(a)表示Gabor基的实部,图2.1(b)表示Gabor基的模.

(a)Gabor基的实部

(b)Gabor基的模

图2.1Gabor基

2.3Gabor基作特征抽取

检测设(x,y)表示一幅灰度图像,用(1)式得到的Gabor基对它进行特征抽取,这个过程就是一个卷积的运算,即:

(2)

式中,表示不同的参数对应的Gabor基,表示通过这组Gabor基滤波后得到的Gabor特征,等于(x,y).

在通过(2)式进行卷积运算时,图像边缘需要做延拓.我们可以通过下式来计算积:

(3)

其中和分别代表快速傅立叶变换和反变换.对于一张的人脸图像,我们做Gabor特征抽取可以得到如图2所示的结果.

(a)特征的实部

(b)特征的模

图2.人脸图像的Gabor特征

图2(b)已经包含了人脸的大部分特征,为了方便后面的处理,可以先对取模,然后做如下处理对降采样,我们实验时是将Gabor基滤波后得到的的图片降采样成的图片.将标准化为均值为0,方差为1的矩阵.将矩阵的列与列之间相连接,形成一维长矢量.

由于{0,等,7},{0,1,2,3,4},所以对于同一幅图像我们分别用40组Gabor基作滤波,然后通过上面的处理可以得到40组特征矢量,等,,将这些特征矢量连接起来我们可以得到Gabor特征矢量:

等于(4)

式中,T表示矩阵转置

2.4Gabor特征矢量的降维以及判据分析

从上面得到的Gabor特征矢量处于一个有着极高维数的空间中.然而,心理学的研究表明,例如相同类别判断的感官活动,一般是在感官数据的低维表示下进行的.事物的低维表示对于学习来说尤其重要,因为当表示底层原理的所需要的维度增加时,用以有效学习而需要的事例的数目会指数上涨.而且,当考虑到计算量的问题时,低维表示也是十分重要的.出于对低维表示的需求,我们需要一种有效的降维算法.而如果以均方误差作为标准,那么主元分析(PCA)就是一种很好的降维表示方法,它的主要目标是将高维的视觉刺激(例如人脸图像)投射到一个低维空间.

PCA是一个标准的去相关技巧,它用来求得一组正交的投射基,使得维数减少.检测设是特征向量的协方差矩阵,那么对于一个随机向量的PCA即是将它的协方差矩阵分解成为如下的形式:

(5)

其中是一个正交特征向量矩阵,是一个降续排列的对角特征值矩阵.

PCA的一项重要性质就是,仅用主元的一个子集来表征原始信号时,从最小均方误差的角度来说,PCA拥有最优的信号重建能力.根据这条性质,PCA最直接的一个应用就是降维:

(6)

其中低维向量包含了原始数据中最具有代表性的特征.

然而,我们应该意识到PCA的优点更多的体现在数据压缩以及低阶统计的不相关性上.PCA并没有考虑到识别或分类上的特点,因此PCA的优势并不能很好地在人脸识别等方面体现出来.为了解决PCA的这个缺点,我们需要一种更好的方法,它既能够得到原始数据地低维表示,又是具有高区分度的.解决方法之一,就是使用Fisher线性判据(FLD)得到模式之间的高区分度.该方法在人脸识别上的应用,是由Fisherface方法所实现的.

2.5Fisherface方法

FLD是一个很常用的判别准则,它的原理是判别经过类内分布归一化后的类间分布.检测设和分别为类,以及每一类内的图片数量.又令和M为每一类的平均,以及总的平均.类内和类间分布矩阵和由下式定义:

(7)

(8)

其中是先验概率,,L是类的总数.

FLD得到一个投射矩阵,使得的比例达到最大.该比值取得极大值的条件是由矩阵的特征向量组成,即:

(9)

其中分别是矩阵的特征向量和特征值矩阵.

当然FLD也有它的缺点,其中之一的就是它需要大量训练样本才能得到更好的概括.如果这个条件不能被满足的话,FLD对于新的测试数据的判别能力就会显得很差.

2.6基于Gabor特征的分类规则

当一幅图片进入系统后,我们首先按2.3相似度检测绍的方法得到该图片的Gabor特征向量,低维的特征则是由(6)得到的.然后再对(低维的)Gabor特征向量进行Fisherface.定义,为某类经过Fisherface后得到的训练样本的平均值.那么GFC则使用相似度判据,来寻找(相对于均值的)全局最近邻作为分类方法.

(10)

当使用相似度判据时,图像的特征向量,被认为属于距离平均值最近的那类.

本系统采用的相似度判别方法是余弦相似度判据,由下式定义:

(11)

需要注意的是,使用余弦相似度判据时,分子上有一个负号,这是因为最近邻法以最小距离,而不是最大距离作为判别.

第三章人脸识别的软件系统开发

3.1开发环境

本系统使用了MicrosoftVisualC++6.0作为开发环境.VisualC++是一个有着广泛应用的软件开发环境,他在语法上对C/C++完全支持,并且在用户界面(GUI)上使用了所见即所得的理念,同时,VisualC++继承了MFC,使得开发基于Windows系统的应用软件的过程非常简便,程序员可以更多的着重于算法的实现,而不被界面,消息等繁文缛节所拘束.

本系统还使用了Intel公司开发的OpenCV4.0(OpenSourceComputerVisionLibrary)和IPLib2.5(ImageProcessingLibrary)类库.OpenCV集成了一些比较常见的用于图像处理的算法,用C/C++语言进行实现,在实际应用中,可以减少很多重复劳动,达到更高的效率.IPLib则提供了一系列高度优化的C函数,用于在Intel架构的处理器上进行各种图像处理.

3.2系统框架

在本系统中,主要界面如图3.1所示,分为四个子视窗.

图3.1系统的基本界面

视窗一为摄像头显示.当摄像头被打开以后,用户可以在这个视窗里看到实时的摄像头拍摄到的画面.另外,当人脸检测功能被打开时,检测到的人脸会被动态地用红色方框表示出来.

视窗二为用户资料区.当前数据库中的所有用户的姓名,性别,身份和年级都在这里显示.用户也可以在这里通过右键菜单进行添加,删除用户等操作.

视窗三为控制面板.为方便操作,这里提供了一些常用功能的按钮.

视窗四为用户图像察看区.当用户资料区中的某一个用户被双击后,这里会显示数据库中该用户的头像资料,以供察看.

3.3系统功能综述

系统的功能主要有三个菜单实现,分别为:用户管理,身份识别,视频管理.

用户管理菜单用于对数据库内的用户进行管理操作.下拉菜单的各项分别为:添加用户,取消添加,删除用户,用户列表,开始训练.

身份识别菜单用于对未知图像进行识别,分为摄像头识别和图片识别两个部分.前者通过摄像头动态捕捉人脸并识别,后者则对一幅静态图像(支持BMP,JPG和GIF格式)进行识别.

视频管理则用于对摄像头进行设置,包括打开/关闭摄像头,已经对摄像头的参数进行适当调整.

3.4用户管理的程序实现

用于用户管理的,主要是三个类:CPersonBase,CPerson,CPersonImage.CPersonBase是一个用作保存所有用户资料的类,当每新建活着打开一个文档时,一个CPersonBase类型的变量即被创建,用来保存当前文档中包含的用户资料.CPersonBase中的每一个用户资料,由一个CPerson类型的变量保存,该类的成员变量包括了用户姓命,性别,身份,年级的基本信息,以及其他程序运行所需要的信息.另外,每个用户用于训练的5张人脸图像,则由CPersonImage类型的变量表示,该类能够很方便的对图像进行存取.


添加用户命令,用于将信用户的信息和图像添加到现有系统中.首先,需要将用户姓名和其他信息(可选)输入系统.其次,系统将使用摄像头进行人脸检测.在本系统中,我采用了目前被广泛采用的AdaBoost的人脸检测算法.AdaBoost是一种多分类器的方法,速度相对较快,效果在实际应用中非常好.每个用户需要录入总共5张人脸图像.如果选择自动人脸定位,则结束录入后用户添加过程即结束,如果选择手工人脸定位,则在录入结束后将出现定位对话框,用户可以通过定位双眼来手工定位人脸.如果手工定位结果满意的话,可以按确定结束添加用户,反之则可按取消删除当前添加的用户.

取消添加命令,可以删除当前添加的用户.在添加过程中,如果由于各种原因想放弃当前添加的用户,可以使用该命令,则拍摄过程将被中指,录入的图片也将被删除.

删除用户命令,用于删除当前数据库内已有的用户的资料和照片.用户可以通过菜单命令,在弹出的用户列表对话框中选择需要删除的用户,或者在主界面的用户资料区中选择用户,并在右键菜单中选择删除用户.

开始训练命令,用于将当前数据库内的所有用户图片进行训练,以供识别是作为基进行比对,只有先经过训练,才可以使用人脸识别的功能.主要训练的方法在第二章提出,即结合了Gabor变换和Fisherface的一种特征提取降维方法.在训练中,首先对每个用户的每一张图像作Gabor滤波.完成之后,再对得到的Gabor基做Fisherface.最后对每个人求训练平均,得到可供识别比对的训练基.训练的过程如图3.2所示.

`

3.5身份识别的程序实现

需要进行身份识别的图像可以有两个来源,即摄像头即时获取,和静态图片输入.虽然输入方式不同,但实际上的处理过程是相同的.首先对输入的图像用AdaBoost方法进行人脸检测.检测出的图像经过去光照,转换成灰阶后,再做Gabor滤波.得到的Gabor基则和训练基作比较.在本系统中,我采用了以样本中心为参考点的最小角度分类方法(NFA).最终就可以得到识别出的用户名.身份识别的过程如图3.3所示.

3.6视频管理的程序实现

视频管理的功能比较简单.打开/关闭摄像头控制摄像头开关,如果有其他程序需要使用摄像头,可以暂时关闭本系统的摄像头,放弃对摄像头的占用.当用户需要运行其他程序,而本软件又不能关闭的时候(比如进行训练),控制摄像头的作用尤其明显.

摄像头参数设置调用了摄像头驱动程序里的相关DLL文件,所以不同的摄像头会有不同的界面.这里用户可以对摄像头的各种功能设置进行微调.比如在一个长期不变的环境使用本系统时,就可以针对该环境精确地调整摄像头的,焦距等参数,使得识别性能进一步提高.

3.7系统的典型使用流程

作为一套人脸识别系统,它将各个功能模块有机地结合起来.在使用中,则必须按照相应的操作流程,才能够达到更好的使用效果和效率.

第一步是硬件的配置.由于人脸识别的各个功能模块都有着比较大的运算量,所以为了系统的通顺的运行,推荐使用主频较高的CPU以及较大容量的内存.又由于软件采用了Intel开发的OpenCV和IPLib开发包,使用Intel公司的芯片会有更好的表现.在开发和测试过程中,我使用的是主频为2.4GHz的奔腾4芯片,以及512MB内存.同时,摄像头也是必需的.一般市面上的摄像头都能满足要求,连上USB断口后就可以使用.当然,更高清晰度的摄像头也能够在一定程度上提高系统的性能.

第二步是用户信息采集.当系统初次使用时,数据库里面是空的,因此我们要添加用户进去.通过单击"添加用户"的命令,一个弹出框会要求输入用户的信息,包括姓名,性别,身份和年龄.同时下方可以选择自动人脸定位,或者手工人脸定位,默认的是自动人脸定位,即系统自动将人脸检测并保存下来,不许要手动干预,效率较高(如图3.4所示).如果选择的是自动人脸定位,则当系统连续录入5张图像以后,添加新用户即告完成,可以在用户资料区看到添加用户的信息已经出现.如果选择的是手动人脸定位,则录入完毕后还需要进行定位.定位的方法是用鼠标点出两眼坐标,则系统会自动根据两眼的坐标确定人脸的范围.同时用户还可以根据需要调整适当的白平衡值,使得人脸的色彩更真实.当5张图像都满意地确定了人脸范围以后,可以通过"确定"键完成添加用户的过程,若不满意,也可以按"取消"键放弃本次添加.(如图3.5所示)

图3.4添加新用户的弹出对话框

图3.5手动人脸定位的对话框

第三步是训练.单击"开始训练"的命令即开始,无需其他操作.当用户数量增加时,训练需要的时间也会随之增加,一般会要几分钟左右.

最后就是人脸识别.单击"摄像头单帧识别",则系统会自动在摄像头中检测人脸.如果检测到人脸,则将该人脸图像进行识别,并显示出识别结果,以及对应的用户的数据库内的图像.(如图3.6所示)或者也可以使用"图片识别",则系统会提示打开一个图像文件,并对该文件进行检测和识别,效果与前面相同.

图3.6身份识别的对话框

3.8系统的测试

由于本系统主要用于摄像头采集的场合,所以没有用大量静态图片进行测试,而是找了12位同学进行小规模的测试.

首先是训练的过程.训练时间在晚上,主要光源是正对脸的一盏台灯,亮度调整到摄像头可以拍摄到清晰脸的状态.分别将他们的信息和图像录入系统.

训练之后立即进行了测试,用摄像头对每位同学进行身份识别,结果令人满意:12位同学都被正确的识别出来了,正确率为100%.

然后,到第二天再上,再次进行了测试.早上的光照条件发生了变化,主要光源变为了从单侧侧面照入的自然光.在这样的条件下,测试结果并不理想,只有8为同学被成功识别,成功率67%.

从最后的结果来看,在同一环境中,本系统的表现令人满意,识别率达到100%.但是系统的鲁棒性比较差,当光源分布改变后,识别率就会下降,主要原因是光照的改变会一定程度上改变Gabor特征,使得需要识别的人脸和训练人脸差距扩大.

3.9讨论与展望

本系统耗时数月,最后完成了所要求的功能.总结下来,主要优点如下:

界面人性化,容易操作.

对用户的添加,录入,删除十分方便,数据库管理效率高.

在环境变化不大时,识别率可以达到100%.

模块化编程,可扩充性好,以后可以添加进一步的功能.

当然,系统也有它的缺点,主要是下面的两点:

训练时间过长,不能动态的添加用户.

鲁棒性较差,环境光照的改变会影响识别率.

基于这些优缺点,今后如果要进行改进,首先解决的问题必然是鲁棒性的问题.如何将光照对识别的影响减小到最少,是一个很有难度的问题.目前的去光照处理的效果并不令人满意,白平衡处理则只能对总体进行小幅度的修正,不能解决光照造成的左右不平衡的问题.当然也可以从其它角度解决这个问题,例如将摄像头和灯光结合,使得每次识别的主光源都位于正前方.

其次是增加对侧面脸进行识别的功能.我们知道人类对人脸的辨认能力远远超过正面,而是可以从正面到侧面的各种角度进行辨别.如何使得计算机也能对侧面脸进行识别也是目前研究的一个热点.可行的方法之一是使用三维的人脸模型,当模型足够细腻的时候,就可以模拟出人脸各个角度的图像.

最后就是缩短训练时间的问题.由于现在训练过程要进行Gabor特征抽取和Fisherface,时间长得令人难以容忍.但是,基于现在的训练方法和硬件条件(微型机),大幅度压缩训练时间并不现实.未来解决手段主要从两个角度入手,其一是使用更快的CPU和更大容量的内存,如果计算基的运算能力能够大大增强,那么训练时间必然可以减少,其二是使用更好的训练方法,尤其是运算更小的训练方法.

总而言之,根据不同的应用需求,就会有不同的侧重点.例如作为一个图书馆检索系统来说,环境光照和人员是比较固定的,那么就可以适用本系统,只需要在固定时间(比如每一年入学)进行用户的批量管理.但是如果要应用在交通工具上,那么就必须考虑到不同的光照导致的情况,又或者对于一个流动性很大的场合(比如宾馆),那么很短的训练时间就是一个重要的考虑因素,否则实际应用中会遇到严重瓶颈.

参考文献

[1]ChengjunLiuandHarryWechsler,"GaborFeatureBasedClassificationUsingtheEnhancedFisherLinearDiscriminantModelforFaceRecognition,"IEEETrans.ImageProcessing,VOL11,No.4,April2002.

[2]PeterBelhumeur,JoaoHespanhaandDidKriegman,"Eigenfacesvs.Fisherfaces:RecognitionUsingClassSpecificLinearProjection,"IEEETrans.PatternAnalysisandMachineIntelligence,VOL19,No.7,July1997.

[3]孙雄勇着,VisualC++6.0入门与提高实用教程,中国铁道出版社,2003年11月.

[4]徐晓刚等着,VisualC++6.0入门与提高,清华大学出版社,1999年5月.

[5]叶伊松,人脸识别中特征提取及识别方法的研究,同济大学工学硕士学位论文,2005年3月.

[6]IntelCorporation,"OpenSourceComputerVisionLibraryReferenceManual,"December2001.

[7]IntelCorporation,"IntelImageProcessingLibraryReferenceManual,"August2000.

致谢

首先感谢我的导师张立明教授对我的帮助和指导.从我加入图像与智能实验室至今,张老师一直给予我无私的指导与帮助,使得我能有机会在实践中学习提高.在做毕业设计期间,张老师也一直关心项目的进展,并提出了很多意见和建议.应该说,张老师以及图像与智能实验室为我打开了通向科研的一扇大门,这些都将是我人生中最宝贵的记忆之一.

同时也要感谢刘成明师兄在整个设计过程中对我的辅导与帮助.每当我遇到问题时,刘师兄总是热心地和我讨论解决问题.在与刘师兄的相处中,我学到很多东西,受益非浅.

最后要感谢我们单元,也就是南区36号楼301室的同学们.林宇得同学将他的摄像头借给了我,使得我能顺利地进行毕业设计.而我们单元的全体同学,也很多次的充当了"模特"给我拍摄,进行系统的调试和测试,这些对最后设计的完成功不可没.

20

人脸检测定位

已有人脸库

图像预处理

特征提取与选择

训练

获取图像

人脸检测定位

图像预处理

特征提取与选择

识别

给出身份

取得相对应的

用户资料

图3.3身份识别的流程图

识别开始

训练结束

最小角度分类得到角度最小的样本

读训练基

作Gabor滤波

去光照处理

将人脸图像传成

灰阶形式

读Gabor核

用AdaBoost

检测人脸

N

Y

图3.2训练的流程图

对每个人求

训练平均

训练开始

训练结束

保存训练基

对得到的Gabor图像作Fisherface

全部用户

全部图像

作Gabor滤波

去光照处理

转成灰阶形式

读取下一幅图像

读取下一个

用户的信息

读取用户数量以及对应的图像数量

读取Gabor核