基于小波和余弦变换的神经网络人脸识别法

基于小波和余弦变换的神经网络人脸识别法
谢志文, 吴玉香, 刘少军
(华南理工大学 自动化学院,广东 广州 540641)
2009-03-12

   摘  要:提出了利用小波变换和余弦变换与BP神经网络相结合的人脸识别方法。将人脸图像归一化后进行小波变换,再用余弦变换对低频信号提取特征向量,达到降维和去除干扰的目的,并把特征向量送进BP神经网络训练。识别时,对人脸图像进行相同的变换后,送入神经网络进行辨别。实验结果表明,该算法优于传统的人脸识别法。 

   关键词:小波变换;离散余弦变换;BP神经网络;人脸识别

 

    近年来,人脸识别的应用需求日益迫切,在刑侦破案、证件核对、保安监视、医学应用、人机交互系统等方面都有巨大的应用前景,计算机人脸识别技术受到了广泛的重视。目前对复杂环境下的人脸识别提出了更高的要求。 

    人脸识别研究主要有两个方向:一是基于整体的研究方法。该方法考虑了模式的整体性,包括特征脸法、基于SVD分解的方法、人脸等密度线分析匹配法、弹性匹 配方法、隐马尔可夫模型方法以及神经网络法等;二是基于特征分析的方法,也就是将人脸基准点的相对比例和其他描述人的脸部特征的形状参数或类别参数一起构 成识别特征向量。该方法通过提取出局部轮廓信息及灰度信息来设计具 体识别算法。由于神经网络的输入节点很庞大,因此实际训练网络时参数繁多,实现起来很困难,识别速度也相对较慢,但它的优点是可以针对特定的问题进行子空 间设计,如神经网络的方法可以用作性别识别等问题。本文提出基于小波变换和离散余弦变换与BP神经网络相结合的人脸识别方法。实验表明,这种方法能快速有 效地识别不同人脸,且识别率很高。 

1 小波变换 

    小波变换的概念是由法国从事石油信号处理的工程师J.Morlet在1974年首先提出的,1988年S.Mallat提出了小波多分辨率分析后,为图像 模式识别领域提供了一种有效的工具。它是一种信号的时间-频谱分析方法,具有多分辨率分析的特点,而且在时频两域都具有表征局部信号特征的能力。 

    对尺寸为M×N的图像f(x,y)的离散小波变换是: 

     

式中,j0是任意的开始尺度,系数定义了在尺度j0的f(x,y)的近似。附加了水平、垂直和对角方向的细节。 

    本文采用哈尔小波作为小波变换。哈尔基函数定义为: 

     

     

    对离散小波变换(DWT)采用Mallat人字形算法,即快速小波变换(FWT)[1],如图1所示。 

 

 

    小波变换示意图如图2所示。一幅图像经过一次一维小波变换后,可以被划分为4个子块频带区域LL1、HL1、LH1和HH1,分别包含了相应频带的小波系 数。LL1频带保持原图像的内容信息,图像的能量集中于此频带;HL1频带保持了原图像的水平方向上的高频边缘信息,人像的眼睛和嘴巴的水平特征比垂直特 征明显,而人的丰富表情主要反映在眼睛和嘴巴上,所以HL1描述了人像的表情特征;LH1频带保持了原图像的垂直方向上的高频边缘信息,描述了人像的姿 势;HH1频带保持了原图像在对角线方向上的高频信息,这部分对人脸表情变化的反应是最明显的。若对低频子带图像LL1再次进行二维小波变换,则又可以得 到四个子块频带区域LL2、LH2、HL2和HH2。 

 

 

    图像的大部分信息集中在低频部分LL2上,所得到的水平、垂直和对角方向的高频信号则包含了大量的冗余信息和干扰,在人脸识别中,其作用是非常微小的。如 图2(d)直观地表明,当直接对低频分量提取特征时,图像中的有用信息相对集中,因此能有效地降低图像的维数,去掉干扰,从而节省存储空间,提高计算效 率。 

2 离散余弦变换 

    离散余弦变换(DCT)是一种常用的图像数据压缩方法,其变换核为实数的余弦函数,因而DCT的计算速度比较快。而且因为频域变化因子u、v较大 时,DCT系数的值g(u,v)比较小,而数值较大的g(u,v)主要分布在u、v较小的左上角区域,所以DCT具有很好的能量集中特性,变换后的图像能 量主要集中在变换系数的低频分量上,这些低频分量幅值较大,可以用来重建图像。当用DCT系数重建图像时,保留少数离散余弦变换的低频分量,而舍去大部分 高频分量,利用逆变换仍可获得与原始图像相近的重建图像,新图像与原图像存在一定误差,但重要信息被保存下来。 

    对一幅M×N的数字图像f(x,y),其离散余弦变换的定义为: 

     

式中,g(u,v)为离散余弦变换后的结果,即DCT系数。 

       

    图3是人脸图像的DCT变换和利用DCT系数重建原图的过程。图3(a)是128×128的原图,图3(b)是离散余弦变换后的结果,图3(c)是利用所 有DCT系数进行反变换的重构图像,图3(d)是利用32×32个DCT系数反变换的重构图像,图3(e)是8×8个DCT系数反变换的重构图像。从中可 以看出,与原图全部128×128个灰度值相比,图3(e)只用了64个DCT系数,就已经保留了原图的重要脸部特征,很好地表现了原图,这使得数据量庞 大的人脸图像可用它的部分离散余弦变换分量来表示,从而实现对高维信息的降维。而且图3(e)把原图人脸的表情和不利于识别的高频噪声信息滤除了,可以更 有效地减少高频干扰对特征的影响,更有利于人脸的识别。 

 

 

3 神经网络 

    人工神经元网络是一门交叉学科,在许多领域得到了越来越广泛的应用。目前,在人工神经网络的实际应用中,大部分神经网络模型都是采用BP网络及其变化形 式,它是前向网络的核心部分,也是人工神经网络最精华的部分。BP网络主要用于:函数逼近、模式识别、数据压缩等领域。BP网络是一种前向网络,一般包括 输入层、中间层(隐层)和输出层,如图4所示。中间层可以有一层甚至更多层以便于分析各因素间的相互作用,每一层由若干个神经元组成,相邻两层的每一个神 经元之间均有一权值联系,权值的大小反映了这两个神经元之间的连接强度,整个网络的计算过程是由输入层到中间层再到输出层单向进行,所以称为前向网络。它 利用实际输出和期望输出之差对网络的多层连接权由后向前逐层进行校正,其训练方法被称为误差反传播算法。 

 

 

    BP网络能够进行人脸识别的根源在于它能够实现一种特殊的非线性映射,将输入空间变换到由输出所造成的空间,使得在输出空间的分类问 题变得简单易行。在实际应用中,如何设计神经网络的结构,学术界有许多讨论。一般来说,多个模式用一个网络来识别分类,会引出隐层节点数非常庞大的问题。 本方法由于引入小波分解和离散余弦变换,用了一个三层的BP网络来识别分类,使得神经网络的输入向量的维数大大降低。 

3.1  输入/输出层的设计 

    由 于本方法采用了小波变换和离散余弦变换进行图像的数据压缩,所以最终采用8×8像素大小的窗口。因此,将输入层节点数设计为64个,分别对应于8×8像素 图像窗口中按Zig-Zag扫描方式展开的各个像素。而输出层的数目即由输入训练样本的类别数来决定。在训练阶段,如果输入训练样本的类别标号是i,则训 练时的期望输出假设第i个节点为1,而其余输出节点均为0。在识别阶段,当一个未知类别样本作用到输入端时,考察各输出节点的输出,并将该样本类别判定为 具有最大值的输出节点对应的类别,如果具有最大值的输出节点与其他输出节点之间的距离较小(小于某个阈值),则作出拒绝判断。 

3.2  隐层节点数的选择 

    隐层节点数的选择是一个十分复杂的问题。如果数目过少,网络将不能建立复杂的判断界限,使网络不能训练出来,不能识别以前没有看过的样本,容错性差;但如果数目过多,就会使学习时间过长,网络的泛化能力降低,而且误差也不一定最佳,因此存在一个最佳的隐层节点数。可根据经验公式:和n1=log2n(n、m分别为输入层和输出层的节点数,α为1~10之间的常数)计算出隐含层的节点数范围,再根据实验结果改变节点数。 

3.3  输入预处理 

    由于本方法采用的激活函数是S型函数,该函数对0附近的数字变化比较敏感,而本方法的DCT系数的值域范围在0~255,由于数值较大,如果直接输入数据 势必影响计算效率和训练效果。所以有必要将输入数据从0~255转换为0~1之间,以便于后续神经网络权值与阈值的调节和运算。 

3.4  BP学习算法步骤 

    BP学习算法步聚如下。     

    第一步 设置变量和参量。k=1,2,…,N为输入向量,M为输入特征的个数,N为训练样本个数,由Zig-Zag扫描方式展开的DCT系数组成。 

   N为第n次迭代时网络的实际输出,P为要识别的样品类别个数。 

   N为期望输出。当输入样品类别标号是i时,相应的dki=1,其他为0。 

    WMI(n)和WIP(n)分别为第n次迭代时输入层与隐含层之间、隐含层与输出层之间的权值向量。 

    第二步 初始化,赋给WMI(0)、WIP(0)各一个较小的随机非零值。 

    第三步 输入样本Xk, n=0。 

    第四步 对输入样本Xk,前向计算BP网络每层神经元的输入信号u和输出信号v。其中: 

     

    第五步 由期望输出dk和上一步求得的实际输出Yk(n)计算误差E(n),判断其是否满足要求,若满足则转至第八步;不满足则转至第六步。 

    第六步 判断n+1是否大于最大迭代次数,若大于则转至第八步;否则,对输入样本Xk,反向计算每层神经元的局部梯度δ。其中: 

     

    第七步 按下式计算权值修正量Δw,并修正权值;n=n+1,转至第四步。其中: 

     

式中,η为学习速率,n为迭代次数。 

    第八步 判断是否学完所有的训练样本,若是则结束,否则转至第三步。 

4 实验步骤和结果分析 

    本文采用ORL人脸库[2]进 行训练和测试。原始的ORL人脸库包括40个人,每人10张图,共400张人脸图像,具备不同的光照、表情、发型和有无眼镜等,并且人脸有一定的侧转角 度,每幅图像均为112×92的灰度图像。为了方便程序读入数据,本文把ORL人脸库的图像大小改为128×128的灰度图像。图5为修改后的ORL人脸 库的部分人脸。训练集由每个人的其中5张图组成,测试集由另外5张组成。本文采用VC++作为实验平台[3]。 

 

 

    实验步骤与结果如下: 

    (1)读入ORL人脸库的人脸图像,使图像归一化为128×128的灰度图像,对这些图像进行二层二维小波变换,就可得到32×32的人脸低频图像。具体算法如图6所示。 

 

 

    (2)将得到的32×32图像进行离散余弦变换,其具体算法与FFT相同,都是采用蝶形算法实现。从图像的左上角开始取8×8个(即64个)系数作为神经网络的输入,这样既可以达到压缩特征维数的目的,又去除了表情和光照造成的干扰。 

    (3)采用BP网络对人脸进行识别。本文设计的神经网络输入层节点数为64个;隐含层分别取20、25、30、35、40、45个节点进行试验。结果发现 隐含层取35个时效果最好;输出层节点数则取40个。分别处理200张人脸图,给每个人标上记号i,然后随机输入到神经网络进行训练,最后得到所要求的 BP网络。采用VC实现的神经网络算法如图7所示。 

 

 

    识别时把需要辨别的人脸图像经过二层二维小波变换和离散余弦变换后,取64个DCT系数输入训练完的神经网络,通过一次前向计算,看输出向量的哪位最接近 1,即可判断是哪个人脸。本文对ORL人脸库的200张图像随机输入进行测试,其识别率达到97.5%,参考文献[4]和参考文献[5]同样对ORL人脸 库进行实验,结果其识别率分别为89.5%和95%,低于本文的识别率。本文采取了减少特征维数的方法,使训练时间大大减少,而参考文献[5]的输入向量 维数最少为986。所以随着数据量的增多,本文的神经网络算法体现出它对大样品分类的优势。本文实验中对每张图片的训练时间为1.3秒。不同算法的人脸识 别率如表1所示。 

 

 

    本文提出了一种结合小波变换和离散余弦变换的人脸识别方法。该方法利用小波变换提取图像低频信息的优点,降低了人脸表情和侧转角度对识别效果的影响,并利 用离散余弦变换进一步降低图像的特征维数,克服了神经网络训练时间过长的缺点,提高了人脸识别的准确率。对ORL人脸库的识别实验表明,经过小波变换和余 弦变换的神经网络识别方法明显优于传统的方法。 

参考文献 

[1] RAFAEL C, GONZALE Z, RICHARD E W. Digital image processing[M]. Second Edition. Publishing House of Electronics Industry,2003. 

[2] 甘俊英,张有为. 基于BP神经网络的人脸识别[J].系统工程与电子技术,2003,25(1):113-115. 

[3] 苏彦华. 求是科技.Visual C++ 数字图像识别技术典型案例[M]. 北京:人民邮电出版社,2004. 

[4] 陈荣元,蒋加伏,蒋卫祥. 基于神经网络和层次SVM的多姿态人脸识别[J].计算机工程,2006,32(24):209-215. 

[5] 王洪波,武妍. 基于小波变换和BP神经网络的人脸识别方法[J]. 计算机工程与应用,2004,40(24):51-53. 

[6] 梁淑芬,甘俊英. 基于局部小波变换与DCT的人脸识别算法[J]. 微计算机信息,2006,22(1):213-216.

你可能感兴趣的:(网络)