一种Face—age判定方法的设计

2015-12-25 08:56周枫李德强黄达毅徐永红李千目
软件 2015年7期
关键词:图像处理

周枫++李德强++黄达毅++徐永红++李千目

摘要:通过人脸图像对年龄进行识别具有很大的挑战。年龄识别会受到诸多干扰因素的影响,如性别、健康、生活方式等等。本文设计了一种基于主成份分析人脸图片的年龄识别方法,选用FG-NET数据库的图片作为测试样本,挑选了测试集和训练集。论文对选择的图片作直方图均衡化,直接计算图片的欧氏距离并判别近邻,之后,对图片进行人脸提取矫正等预处理后进行测试,最后使用本文方法对人脸提取后的图片进行测试和实验。

关键词:面部年龄判别;图像处理;主成份分析

中图分类号:TP391. 41

文献标识码:A

DOI:10.3969/j.issn.1003-6970.2015.07.010

0 引言

在图像处理领域非常重要的一个组成部分就是人脸,通过对人脸面部图像处理,可以产生很多实际应用,包括进行人脸检测、人脸识别和表情分析等。人脸图像的处理,尤其是年龄属性分析,日益被众多科研机构关注,在多媒体通信、人机交互和信息安全中起到重要作用。例如,通过面部年龄属性判定方法,一家公司想要针对某年龄段的消费者进行产品设计,只要通过购物区的监控设备,非常容易地捕获消费者的年龄统计信息。同样,面部年龄属性判定方法也可以监督购买烟酒顾客中有没有出现可能的未成年人。

目前主流的基于图像年龄识别方法主要包括:利用颅颌面发展理论与面部皮肤皱纹分析用来创建人体模型,该方法适用于年轻人的粗年龄估计;利用老化图案子空间方法表示衰老的人脸图像,该方法根据在子空间的投影来重建的面部图像;利用回归方法,其回归系数根据带有如二次模型的回归函数的训练数据估计,通过制定一个半定规划问题或EM算法来处理年龄的不确定性。

事实上,目前面部年龄判别方法的准确率普遍偏低,原因在于随着年龄的增长,人脸部的变化难以预测,并且因人而异,比如,健康状况、面部保养和化妆都会使得人的外貌发生潜移默化的变化,这些为识别模型的建立带来许多未知的因素。

本文选用FG-NET数据库的图片作为测试样本,挑选了部分作为测试集和训练集,引入主成份分析等算法进行了面部年龄判别设计,并对实验结果进行分析。

1 面部年龄属性判定方法的设计

主成份分析( Principal Component Analysis)算法,是一种对变量进行线性变换,并根据贡献率选出数贡献率较高的变量作为测试依据的一种多元统计分析方法。

面部年龄属性判定就是当给定一张人脸图像(测试图片),就可以根据已有的人脸数据库(训练图片),利用特定的方式将给定的测试图片和每一张训练图片作比较。比较的方式有直接计算欧氏距离,或是将它们投影到计算出的空间中,得到投影向量再比较欧氏距离,欧式距离较小者即为近邻。然后根据近邻的年龄类别,得出测试样本所属的类别,然后判别样本测试所得的类别与其实际所属类别是否一致。最后将测试结构进行记录,整合。

本文方法的思路是:使用主成份分析算法对数据进行降维处理,利用K-L变换提取人脸图像的主成份,构成特征脸空间,将测试集的图像投影到特征脸空间,得到投影向量,然后计算其与训练图片投影得到的向量的欧氏距离,取较小值为近邻。

(1)训练

假设训练图片的对应的矩阵大小为MxN,数量为n,设它们为xi(0T设xi拉伸后对应的矩阵为yi(0i依次排列,组成一个MxNxn的矩阵y=[y1 y2 y3…… yn]将矩阵拉伸后将得到的向量y取平均数,得到平均脸:

计算每一张人脸与平均脸的差值:

因此得到协方差矩阵:

求协方差矩阵的特征值和特征向量,并根据此构建特征脸空间。

由于协方差矩阵的维度是(MN)2,这部分实验的图片尺寸为60×160(不包括嘴)和90×160(包括嘴)。以不包括嘴的图片为例,此时构成的协方差矩阵的数据量就是(60×l60)2≈9.2×107,求解这样一个大矩阵的特征值和特征向量,若用常规的方法,普通的计算机的运算速度根本无法支撑。因此采用一种非常巧妙的方法来完成这项任务,也就是奇异值分解(SingularValue Decomposition,SVD)定理。奇异值分解是一种十分重要的矩阵分解方式,是矩阵分析中正规矩阵酋对角化的推广。

设A为mxn阶复矩阵,则存在m阶酋阵U和n阶酋阵V,使得 ,

我们的目的是利用svd分解求得一个非常大的协方差矩阵C的特征值以及对应的特征向量。而由已知条件

因此采用另一种间接的方式,通过计算ATA的特征值和特征向量来得到AAT的特征值和特征向量。

因为AAT的维数为15200×15200,而ATA的维数为480×480,两者相差1000倍,计算效率的差别可想而知。

首先,我们通过直接计算得到ATA,然后使用matlab自带的函数——eig得到AAT的特征值和特征向量。

在matlab中,使用语句 就能得到ATA的特征值和特征向量。其中,D(i,i)为ATA的第i个特征值,而V(:,i)为其对应的特征向量。同时,ATA的所有特征值D(i,i)也是AAT的所有非零特征值。di和vi为ATA的第i个特征值及特征向量,则我们可以得到AAT的第i个特征向量ui 在利用SVD方法求得协方差矩阵C的特征值 和其对应的正交归一化特征向量 后,根据特征值的贡献率选取前p个最大特征值对应的特征向量,这里的贡献率 是指:

其中,a为设定好的贡献率阈值。特征值 根据下标i以降序排列。a百分比的选择意味着训练样本在前p个特征向量集上的投影拥有对应百分比的能量。 由于

可以根据求得的特征向量构建特征脸空间:

之后将训练集拉伸后的人脸图像与平均脸的差值di投影到特征脸空间上

(2)测试 将测试集的图片以相同方式处理,拉伸成M*N的列向量,与平均脸作差,然后投影到特征脸空间上,设得到的投影向量为Ωj,计算它和所有Ωj的欧式距离,之后根据KNN算法判断最近邻。

2 实验与分析

FG-NET数据库是包含了一定数量的脸部图像的图片数据库,图像中的人物年龄从0岁到69岁不等。这个数据库的建立是为了帮助研究人员研究调查人类老化对脸部容貌的影响。数据库被分成两部分,A块和B块。A块用来作人脸识别,而B块依然在开发。数据库负责人要求用户在使用A块的同时,也能传输图片为B块的发展作贡献。A块的数据库包含了82个人的1002幅图像,其中每个人都有6~18张的人脸正面图像,这些图像或是彩色图或是灰度图,并且附有图像中人物的准确年龄。所有的人脸图像均是西方人,且82个人中有34位女性和48位男性,年龄从0岁到69岁不等。图像的获取途径主要是对老旧图片的扫描。图1是部分FG-NET数据库的原始图片。

本文将年龄段进行划分,并从FG-NET的1002张图片中选取600张,每个年龄段都有一定数量的测试图片和训练图片。并且每个年龄段的训练图片数量均为测试图片的4倍,具体的划分见表1。

本文分别对两种图片类别进行识别,并运用K=l,3,5所对应的KNN方法所得到的结果全部列出。表2和表3分别是仅做直方图均衡化图片类别和进行人脸提取后做直方图均衡化的图片类别得到的实验结果。对于仅仅做直方图均衡化的图片类别,可以看出识别率并不是很高,就算是识别率最高的K=3的组别,识别率也只有29.16%,识别图片35张。而上述的完全随机的识别率和识别图片分别是26.06%和31.26张。这里的识别效果仅仅比完全随机的情况好了一点。因此,K值的带来的识别差异,不同年龄组别的识别差异,都很难从数据中说明。

对于将人脸提取后做直方图均衡化的图片类别,相比未提取人脸的实验,识别率提高了将近10%,因此基本可以断定人脸提取对于识别率的上升非常有帮助。

不包括嘴和包括嘴的组别的识别率,在K=l和K=3的时候取得最大值,分别为41.66%和40.83%。并且在K=5的时候都有较低的识别率(35.83%,38.33%)。

同时,可以发现,在不管是K的值如何,在低龄段的识别率都远远高于高龄段。0-9岁和10-19岁两个类的识别率都差不多达到了50%,而20-29岁类的识别率约为25%,而剩下的3个高龄的类的识别率都非常的低。这个现象有两个可能的原因。第一,训练集中从6个年龄类从低龄到高龄的图片数为160,160,80,40,24,16,也就是不同年龄段的训练图片数量非常不均匀,0-9岁和10-19岁类别的训练图片比例都为33.33%,而最低的50-69类别的训练图片比例仅为3.33%。第二,人在刚出生的时候脸部的差异较小,而随着年龄的增大所表现出的老化现象因人而异,因此年龄较大的人脸图片之间差距相对于低龄人脸图片的差距要大很多。

由于经过人脸提取之后,识别效果明显变好,因此将其作为后续实验所需的图片。

根据本文的主成份分析算法的步骤,将包括嘴和不包括嘴的人脸提取图片库分别作为实验图片,我们可以得到两种图片类别的平均脸,如图2所示。

由于训练集里低龄图片占多数,因此平均脸看起来像是一个低龄的人。在得到平均脸后,按主成份分析的步骤执行,构建出投影空间,对训练图片和测试图片进行投影,得到投影矩阵之后进行比对,比对的方法与上一章实验类似(计算欧氏距离)。得到实验结果后同样列表表示,表4,5,6分别表示K=l,K=3,K=5的情况。

从实验结果可以看出,包括嘴的组别的识别率较之前部分的识别率有了很明显的提高,但包括嘴的组别还是处于较低的识别率。因此可以基本认为,在人脸图像的年龄估计,将嘴的部分去除会使得图像的识别率大幅度提高。

再来看看K值对实验结果的影响。这次的实验结果和之前区别非常大,在所有实验条件下,(包括嘴或者不包括嘴,a的值为0.98或是0.9),总的识别率基本上是随着K的增大,识别率逐渐上升,在K=5时基本达到最大值。而之前的实验在K=5的识别率是最差的。可能是因为在主成份分析算法下,去除掉了部分贡献率非常低的因素,使得识别率上升,因此在测试阶段计算得到的每一张图片的前几个近邻都更加的可靠。这就使得在K值较高的情况下,因为计算偶然使得个别近邻错误的风险大大降低了。因此可以初步认为,在识别率较高的情况下,更高的K值能够得到更好的实验结果。相反,在识别率较低的情况下,K值过高会反而使得识别率下降。所以说,在设定K值的时候,应该估计一下实验的识别率,根据此选择最优的K值。

同样,贡献率阈值的选择也会对实验的识别率产生影响。可以看出,在上面的实验结果中,a=0.9和a=0.98会使得实验结果产生非常细微的波动,在K值不同,图片不同的情况下都有高有高有低,并且差别都非常小。因此很难判断哪个a值的设定能使实验结果更加好。但是在a=0.9的时候,所被采用的特征向量的数量会少很多,因此形成的投影矩阵就更加小,这回导致识别的速度更快。因此就识别速度这一点来说,在主成份分析算法中,a=0.9的选择是更优的。

3 结论

本文引入主成份分析算法实现了面部年龄属性判定,并且对不包括嘴的图片库进行了实验。主成份分析算法有明显更高的识别率和更高的识别速度,但是主成份分析也存在着协方差矩阵维数高等问题,这些需要后续深入研究。endprint

猜你喜欢
图像处理
海战场侦察图像处理技术图谱及应用展望
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
Bayesian-MCMC算法在计算机图像处理中的实践
改进压缩感知算法的图像处理仿真研究
基于图像处理的定位器坡度计算
基于图像处理的晶圆表面缺陷检测
对图像处理中ROF全变分模型的两种算法的比较研究