韩睿
摘要:本文设计描述了三种人脸识别技术:(1)通过肤色模型训练的图像变化技术对图像的人脸区域进行识别并分割出来。(2)Eigenface人脸识别算法的图像表示技术通过输入已知人脸图片,可视化特征脸,与系统相似脸匹配并计算识别准确率。(3)全连接神经网络技术和卷积神经网络技术实现对对输入人脸的识别分析和匹配测试,从系统库里找到与之最相近的的脸,并可视化展示。
[关键词]人脸识别深度学习神经网络
1引言
1.1课题研究的目的和意义
近年来,随着科学技术的进步和社会的发展,对有效辨别人身的需求越来越迫切。传统的指纹识别和密码识别等方式虽已发展较为完善但存在着识别率偏低,应用性不广等问题。人脸识别技术在识别身份和图像处理方面有着广泛的应用和发展空间,与其他身体特征相比,人脸不容易被遗忘,不易窃取,且具有非接触性和稳定性。而身份验证和人脸检测方面对人脸识别的准确度提出越来越高的要求,故而人脸识别智能算法对识别准确度有着较为重要的影响。
1.2设计需求
在当今社会中,人脸识别技术主要适用于身份识别和匹配,一方面需要将获取到的人脸图像进行面部识别,即将图像中的人脸区域进行提取,另一方面需要将识别到的人脸与系统库里已有的人脸图像进行匹配验证进而达到身份验证的目的。
本文通过多建立人脸训练肤色模型检
测人脸区域部分,提取人脸区域,分别使用Eigenface算法,全连接网络的人脸识别,卷积神经网络的人脸识别实现简易人脸识别系统并测试其准确率。
2多人脸训练肤色模型检测
2.1训练肤色模型
人脸的肤色不依赖于面部的其他特征,不受表情和妆容影响,具有很好的稳定性。由于不同肤色的人脸对应的色调基本一致,故人脸肤色的特征主要通过肤色模型描述,故本方案采用高斯模型来表示。
2.1.1色彩空间
为了把人脸区域从非人脸区域分割出来,需要使用适合不同肤色和不同光照条件的可靠的肤色模型。在本文的实验中选用YCrCb空间作为肤色分布统计的映射空间,该空间的优点是受亮度变化的影响较小,而且是两维独立分布,能较好地限制肤色分布区域。进而大大提高了人俩检测的效率和正确性。
2.1.2建立肤色样本
建立肤色模型需要使用大量包含不同肤色的图像信息,由于本设计目的为对一已知面部图片进行肤色识别,进而可以只截取3-5张该图像的肤色信息图片(即人脸的一小部分)作为肤色样本。将其从RGB图片转化为YCbCr色彩空间。
2.1.3建立肤色模型
在构建肤色模型之后,首先使用二位高斯分布来描述这种Cb-Cr的色度分布,然后对肤色样本进行一定的分析得到一个分布中心,在根据所观察的像素离该中心的远近来得到一个肤色的相似度。利用已知样本图像,计算均值和方差得到高斯分布模型。
均值计算公式:a=s/(m*n);(像素值总和除以像素个数)
方差计算公式如下:a2==s/(m*n-1);(S为所有像素与均值的平方和)
二维高斯分布表达式为:
2.2测试分析
2.2.1阈值分割
在进行閾值分割之前,首先将彩色图像转换为灰度图像,实验证明,不同的肤色具有相同的2D模型G(m,V^2)。灰度值对应属于皮肤区域的可能性,同过设定门限,就可以转换为二值图像,1,0分别表示皮肤和非皮肤区域。使得图像对存储需求和传输带宽的要求大大降低,从而达到在完成图像压缩的同时也保证了视觉上几乎没有损失的效果,进而使得图像的传输速度更快,存储更加方便。
由于人体皮肤区域的像素与肤色模型的相似程度较高,计算得到相似度比1较大,因此在肤色灰度图中,皮肤区域会显得比其他部分更亮。通过尝试改变阈值即可达到目的效果。
本设计通过选择的阈值以0.05为间隔从0。8逐渐减小。根据阈值的选择,就可以将肤色灰度图转化为二值图。转化二值图片效果如图1所示。
2.2.2人脸区间分析
由于二值化图像可能包含多个类肤色区域,受环境亮度影响,可能会导致人脸判断错误。
故而需对图像进行标记和判决,以便于逐个处理,本设计采用形态学判断法,即人为设定长宽高比,逐像素判断是否在设定的肤色范围内将符合条件的像素设置为白色,其余像素设置为黑色获取图片中的连通区域,删除面积较小的连通区域对于每个保留的连通区域,画出包含连通区域的最小矩。当检测区域的高度比值落在该区间时,则认为该区域为人脸候选区域。
并用矩形方框框出满足条件的部分,如图2所示。
3Eigenface实现人脸识别系统
3.1特征脸与平均脸的构建
3.1.1平均脸
由系统已知的图像知共165张图像,实验证明,将15人的165张图像划分为训练集和测试集,训练集主要用于平均脸的计算以及计算特征值,测试集主要用于和训练集中的人脸图像进行匹配进而得到识别准确度。
平均脸的计算需要先计算各张训练集图像的像素以及求出平均值。由于数量巨大,本设计采用将每张图片依次读取各张测试集图片并存储成一个向量。即获取包含M张人脸图像的集合S。每张图像可以转换成一个N维的向量然后把这M个向量放到一个集合S里。在获取到人脸向量集合S后,计算得到平均图像甲,计算公式如下:
将平均脸按像素排列顺序进行排列如图3所示。
3.1.2特征脸
由高等数学知识知求特征脸即为计算九张测试集的特征向量,其中ψ表示平均图像,C为特征向量计算公式如下:
即先计算每张图像和平均图像的差值φ,就是用S集合里的每个元素减去步骤二中的平均值。
找到M个正交的单位向量un,这些单位向量其实是用来描述φ(步骤三中的差值)分布的。un里面的第k(k=1,2.,..M)个向量uk是通过下式计算的
当这个Nk(原又里取了个名子叫特征值)
取最小的值时,uk基本就确定了。
上面的等式使得uk为单位正交向量。计算上面的uk其实就是计算如下协方差矩阵的特征向量:
其中A={中,P2,φ,....,中。}
对于一个NxN(比如100x100)维的图像来说,上述直接计算其特征向量计算量实在是太大了(协方差矩阵可以达到10000x10000),所以有了如下的简单转化计算。如果训练图像的数量小于图像的维数比如(M 一旦我们找到了L矩阵的M个特征向量vI,那么协方差矩阵的特征向量ul就可以表示 这些所求的特征向量即为特征脸,根据像素排列顺序进行排列,在程序中用可视化界面显示即可得到九张特征连,如图4所示。 其中2代表要判别的人脸,S2k代表训练集内的某个人脸,两者都是通过特征脸的权重来表示的。式子是对两者求欧式距离,当距离小于阈值时说明要判别的脸和训练集内的第k个脸是同一个人的。 3.2识别准确率检测 由上式得特征脸可以用如下方式表示: 其中k=.2...M,对于第k个特征脸uk,上式可以计算其对应的权重,M个权重可以构成一个向量: 计算识别的准确率本设计采用欧式距离的最小值进行计算,当测试集中的图像与训练集的图像一对应(即为同一个人)计数加一,用识别正确的数量比测试集的图像数量进而得到准确率。 由已知可以通过上式对测试集求特征值,从而进行特征值比进而得到欧式距离。其中Q代表要判别的人脸,9k代表训练集内的某个人脸,两者都是通过特征脸的权重来表示的。式子是对两者求欧式距离,当距离小于阈值时说明要判别的脸和训练集内的第k个脸是同一个人的。采用公式如下: 4全连接网络人脸识别系统 4.1数据结构的构建 构建结构体储存图像的数据,其中包含:训练集与测试集的图像数据,训练集的均值,图像数据所属类别,训练集验证机的索引。将数据集分为3组,将每个人的十张照片分为训练集,验证集和测试集,比例为6:2:2。其中训练集作为以上程序的训练样本,另外两组作为检验样本和验证。结构存储如下所示: imdb.images.data%训练集与测试集的图像数据 imdb.images.data_mean%训练集的平均值 imdb.images.labels%data中图像所属类别 imdb.images.set%训练集,验证集的引索 imdb.meta%储存元数据信息 其中本设计由于读入数据为图像信息,故采用计算特征脸的方法,具体步骤如下: (1)创建并申请录入数据的矩阵内存 (2)從地址中依次读入图像并把图像矩阵按列顺序转化为行向量 (3)计算录入图片信息的平均值 (4)进行特征值归一化处理 读取图片及转化函数如下: imdb.images.labels(10*i-10+j)=i;. b=sprintf("%d_%d.bmp',ij); c=strcat(a,b); im=imread(c); imdb.images.raw(..,.10*i-10+j)=im; im一imresize(im,[28,28]'nearest); im=double(im); 4.2网络结构的构建 使用函数创建神经网络,并确立损失函数,同时需要设置网络参数神经网络创建函数如下: net=newff(minmax(input),[103],{'logsig''purelin'},'traingdx'); net=vl_simplenn_tidy(net);%用默认值初始化网络参数 网格参数设置如下:net=vl_simplenn_tidy(net);%用默认值初始化网络参数 net.meta.inputSize一[112,92,1];%图像加载大小. net.meta.trainOpts.learningRate0.001;%学习率 net.meta.trainOpts.numEpochs=150;%迭代次数 net.meta,trainOpts.batchSize=64;%batchsize 测试数据归一*化如下所示:testInput=tramnmx([t1,t2,t3,t4]',minI,maxI) 4.3训练集进行训练 选择最优函数,通过网络训练得到最优参数。读取测试函数,将测试数据归一化,对结果进行仿真。 训练函数使用如下: images=imdb.images.daa(:;;,batch); labels=imdb.images.labels(l,batch); 测试数据归一化函数使用如下: testInput=tramnmx([t1,t2,t3,t4]',minI,maxI); 4.4最优结果测试 测试结果计算识别准确率,经过训练达92%,实验结果如图5所示。 5卷积神经网络的人脸识别系统 5.1网络结构构建 卷积神经网络目的在于通过构建模型,并经过训练,进而完成对人脸的匹配。对于一张待识别的图片,无论旋转平移还是镜像变换,总是本人。对图像进行预处理,能够更好地提高准确率。识别总流程为: (1)输入待识别人脸图片p (2)对p进行旋转平移镜像变化等产生批量人脸图片pp (3)将pp输入人脸识别模型中,进行批量分量检测,产生输出与pp对应的批量输出qq (4)选取qq相似度最大的类型输出,该类别最大程度的代表输入人脸的类别。 网络构建并构建数据结构并录入数据构建方法与全连接网络相似,主要步骤同为定义网络结构并进行训练,并用测试集图像进行测试。在构建模型时,取两层卷积层,一层全连接层为模型,两层卷积层的过滤器分别为36个[5,5,1]与40个[4,4,36]。 6总结与展望 本设计通过使用多种算法,从不同角度实现了对人脸的识别处理。其中,多人脸训练肤色模型通过对图像的处理进而分割出人脸部分区域,进而达到人脸的识别。Eigenface人脸识别算法的图像表示技术,以及全连接神经网络技术和卷积神经网络技术是在已知输入图像的基础上进而达到与系统库里的人脸图像的准确匹配。且进过一定的训练,准确率达到90%以上。本次设计中,对算法的优化程度上依然有较大的提升空间。 本次设计中,初步了解了人脸识别算法的实现过程和数学思维,加深了对算法的理解程度。实践能力和编程能力均得到了较大的提 参考文献 [1]张洪明,赵德斌,高文.基于肤色模型,神经网络和人脸结构模型的平面旋转人脸检测[J].计算机学报,2002,25(11):1250-1256. [2]夏良正。数字图像处理(修订版)[M].南京:东南大学出版社,1999. [3]梁淑芬,刘银华,李立琛.基于LBP和深度学习的非限制条件下人脸识别算法[J].通信学报,2014,35(06):154-160. [4]楊健,杨静宇,王正群等,一种组合特征抽取的新方法[J].计算机学报,2002,25(06):570-575.