具体实施方式
如图1所示,为根据本发明实施例所述的基于人脸认证的屏幕保护方法流程图:
一方面,由计算机正常执行存储的现有屏幕保护程序,如:
步骤107:播放现有背景视频文件。
步骤108:对视频文件进行音频解码与视频解码。
解码后的音频可以由音频设备输出。视频可以作为与摄像头采集的图像进行合成。
另一方面:
步骤101:首先由视频捕捉设备(例如摄像头)捕捉视频图像。
步骤102:结合人脸模型库,在捕捉的图像基础上进行人脸追踪识别与认证。
步骤103:将捕捉到的视频图像转换成RGB24格式。
视频捕获设备捕获到的原始视频图像,一般是RGB或者YUV2的格式。如果是YUV2或者RGB32格式,那么需要进行格式转换,把它转换成RGB24格式。
步骤104:拆分视频流。
视频图像的拆分与合成技术,现有技术中已经提供,例如,Windows平台的DirectX9.0技术开发的多媒体应用程序既可以实现。本发明的实施例把转换后的RGB24格式的图像通过Inifinite Pin Tee Filter把原始视频图像进行多路拆分,就是把一路视频流按照一定的算法进行多路输出,输出后的视频流输入到视频合成器。
步骤105:合成视频流。
背景视频文件经过视频解码后输入到视频合成器。
步骤106:视频合成器把输入的多路视频进行叠加、锐化等处理后输出到视频显示设备上。
此外,本发明实施例中,还可以进一步对人脸认证设定启动条件,例如,可以通过手动设置其为常开状态,也就是无条件认证,在整个屏幕保护期间都进行人脸认证,还可以设置为当视频图像中的人脸面积占据整帧图像面积的一定比例时启动,例如30%。因为人脸面积过小,说明使用者距离计算机过远,并没有开锁屏幕保护的意愿。通过设置人脸认证开启条件,可以更加灵活的运用本发明。
相应的,从装置角度来说,本发明实施例还提供一种基于人脸认证的屏幕保护装置,包括:
条件设定模块,用于设定对从视频捕捉设备捕捉到的视频图像启动人脸认证的条件;
背景播放模块,用于播放背景视频文件作为当前屏幕保护图像的背景;
编码转换模块,用于将视频捕获设备捕捉到的视频图像进行编码转换。
视频拆分模块,用于将视频捕获设备捕捉到的、经由所述编码转换模块转换成RGB24格式的视频图像拆分成多路视频流;
视频合成模块,用于将所述多路视频流与所述背景视频进行合成并显示;
人脸认证模块,用于检测所述条件设定模块设定的启动条件是否满足,如果满足,则在所述由视频捕获设备捕捉到的视频图像中进行人脸识别,将识别出的人脸与数据库中存储的基础模型进行比对认证,认证通过时开锁屏幕保护。
同样,所述条件设定模块,设置的启动条件,可以包括:无条件启动,或当视频图像中的人脸面积占据整帧图像面积的一定比例时启动。
实现本发明的屏幕保护装置及方法,一方面的重点在于视频拆分与合成技术,另一方面就在于人脸认证技术。现有技术已经提供有很多人脸识别认证的方法,本发明实施例提供一种基于Gabor特征和支持向量机的人脸认证方式,同样适用于本发明。也可以说,本发明是这种人脸认证方法的实际运用。
如图2所示,为根据本发明实施例所述的人脸认证流程图,首先通过人脸样本图像,为每个需要认证的用户训练获得一个一对多的支持向量机人脸模型(步骤201);采集摄像头输入的视频图像,搜索并检测图像中的正面人脸,并对其进行持续追踪与验证,确保追踪的人脸是正面人脸(步骤202);自动标定正面人脸中的器官特征点,并据此对检测到的人脸进行预处理(步骤203);然后计算经过预处理后的人脸图像的Gabor特征,从高维Gabor特征中挑选出分类能力最强的部分Gabor特征组成低维特征向量(步骤204);将挑选后的低维特征向量输入到所述人脸模型中,进行人脸识别,返回与各人脸模型的相似度数据(步骤205);结合连续数帧图像的相似度数值,输出最终的人脸认证结果(步骤206)。
图2中步骤201所述的训练过程,可以采用多种方式进行训练,如图3所示,为本发明实施例采用的样本训练流程示意图,首先针对每个需要认证的用户,采集正样本与反样本人脸图像(步骤301);对所有样本人脸进行标定,确定人脸样本中的人脸器官特征点位置(步骤302);根据标定结果,对所有样本图像进行预处理(步骤303);计算经过预处理后的样本图像的Gabor特征,从高维Gabor特征中挑选出分类能力最强的部分Gabor特征组成低维特征向量(步骤304);利用所述低维特征向量,采用一对多支持向量机对不同认证用户进行训练,为每个用户获得一个一对多的支持向量机人脸模型(步骤305)。
图2中步骤202所述的人脸追踪,也可以通过多种方法实现,例如中国专利申请200510135668.8中提供的一种视频序列中人脸的实时检测与持续追踪的方法及系统,该申请采用AdaBoost训练算法训练正面人脸的分层检测模型,并分尺度搜索输入的视频图像,确定图像中多个人脸的位置;接着系统对检测的人脸在后续几帧进行验证,验证完毕再结合基于Mean shift和颜色直方图的人脸跟踪算法实现人脸的持续跟踪;在跟踪过程中可进行人脸的验证,确定跟踪结果的准确性。该系统已在多场景中对多个人脸进行了测试,测试结果表明本文的人脸检测和跟踪算法可以快速准确检测不同表情、不同肤色、不同光照条件下的多个正面人脸,可以检测-20°到20°深度旋转、-20°到20°平面旋转的人脸,可实时跟踪任意姿态人脸,包括侧面、旋转人脸等。
图2中步骤203所述的人脸器官特征点定位,也有很多种方法可以实现,例如中国专利申请200610011673.2中提供的定位方法。根据本发明的实施例,可以通过以下步骤确定双眼位置:(1)在已获人脸位置信息的基础上,采用统计方式确定左眼搜索区域和右眼搜索区域,并确定左眼初选位置与右眼初选位置;(2)在所述左眼与右眼搜索区域内,分别采用左眼局部特征检测器与右眼局部特征检测器,对所有左眼初选位置和右眼初选位置进行判别,并为每个初选位置确定一个单眼相似度数值;(3)从所有左眼初选位置与右眼初选位置中,分别选择相似度数值最大的前N1个位置作为左眼候选位置和右眼候选位置,并将所有左眼和右眼候选位置配成双眼候选对,以每一个候选对为基准确定双眼区域;(4)采用双眼区域检测器作为全局约束,对所述每一个双眼区域进行判别,为其中每个双眼候选对确定一个双眼相似度数值;(5)选择双眼相似度数值最大的前M1个双眼候选对,对其中的所有左眼候选位置与所有右眼候选位置分别计算平均值,作为左眼特征点位置与右眼特征点位置。
并可以通过以下步骤确定嘴巴位置:(1)在已获眼睛位置信息的基础上,采用统计方式确定嘴巴位置搜索区域,并确定嘴巴初选位置;(2)在嘴巴位置搜索区域内,采用嘴巴局部特征检测器对每一个嘴巴初选位置进行判别,并为之确定一个嘴巴局部相似度数值;(3)选择嘴巴局部相似度数值最大的前N2个初选位置作为嘴巴候选位置,对于每个候选位置,以左眼特征点位置、右眼特征点位置、嘴巴候选位置为基准,确定脸部区域;(4)采用脸部区域检测器作为全局约束,对每个所述确定的脸部区域进行判别,为其中的每个嘴巴候选位置确定一个嘴巴全局相似度数值;(5)选择嘴巴全局相似度数值最大的前M2个候选位置,计算这些候选位置的平均值,作为嘴巴特征点位置。
图2中步骤203所述的预处理步骤,以及图3中步骤303所述的预处理步骤,过程都是相似的,下面主要以对样本图像的预处理为例来进一步说明。
在进行人脸识别前,必须对输入人脸图像的尺寸、位置和灰度进行预处理,使不同的人脸图像的尺寸、灰度保持一致。另外,不同图像中人脸的位置应该保持一致,这可通过眼睛、嘴巴定位的方法,使输入图像中人脸眼睛、嘴巴的位置基本固定,再对整幅图像进行仿射变换或非线性矫正。只有经过这些预处理后,同一个人的多个输入人脸在某些特征上才会具有一定的相似性,而不同的人脸也才会具有一定的差异,此时才可以采用统计模式识别算法进行模型的训练与识别。
参考图3中的步骤301,由于本发明采用支持向量机(SVM)的方式实现人脸认证(对于支持向量机的算法描述,可以参见边肇祺、张学工等人所著的《模式识别》,清华大学出版社,2000年),因此需要收集大量反样本人脸,以提高人脸认证的准确度。这些反样本最好应尽量覆盖不同表情、不同肤色、不同年龄的人脸,包含-20°到20°深度旋转的人脸,包含戴与不戴眼镜人脸。
人脸认证的正样本人脸是指待认证用户的人脸样本,这类数据需要在实际应用时由程序自动采集用户的样本,并自动对用户样本进行预处理和特征计算。
参考图3中的步骤302,对所有反样本,本发明可以通过手动标定所有反样本人脸的关键特征点,为每个正样本人脸标定了三个点:两眼中心、嘴巴中心。而对于待认证用户的正样本可以采取自动标定的方法,获取三个点的坐标,如图4所示。
接着,本发明根据这些标定点可以对各个人脸进行几何归一化,即将人脸图像的主要器官位置矫正到标准位置,减小样本间的尺度、平移和平面旋转差异,然后根据器官位置剪裁出人脸区域成为人脸样本,使人脸样本尽量少地引入背景干扰,且不同人脸样本的器官位置具有一致性。
本发明引入了一幅标准人脸图像对各个人脸样本进行几何归一化和人脸区域的裁剪。首先确定待识别人脸窗口的尺度wd×ht为44×48,即宽为44,高为48。接着获取一幅标准的正面人脸图像,标准图像中两眼的y坐标一致,人脸也完全对称,如图4中的4A所示,标定该图像的三个关键特征点。根据该图像中双眼的距离和位置确定裁剪的正方形人脸区域的位置。设两眼的距离为r,两眼连线的中心点为(xcenter,ycenter),采集矩形的宽设为2r,即两倍双眼间距,则矩形裁剪区域的坐标(xleft,ytop,xright,ybottom)为:
将裁剪的人脸区域归一化到44×48的尺寸,如图4中的4B,并获取归一化后三个标定点的坐标[xstad(i),ystad(i)],i=0,1,2,前两个为眼睛中心点,最后一个为嘴唇中心点。
任意给定原始人脸样本和标定的三个特征点[xlabel(i),ylabel(i)],i=0,1,2,如图4中的4C,比较直接的裁剪方法是计算这三个点与标准图像归一化后三点坐标间的仿射变换系数。另外,仿射变换式中不能加入人脸各个方向的拉伸变换,我们仅考虑旋转和整体缩放两个变换。接着由仿射变换系数可以计算该裁剪图像中任意一点到原始样本中对应点坐标,进而获取裁剪人脸中所有点的象素值,如图4中的4D所示。
不过基于仿射变换的算法存在着比较明显的缺陷。首先当人脸样本带表情或者输入人脸非正面时,采用这种方法获取的裁剪人脸的眼睛嘴唇中心点与标准图像的眼睛嘴唇中心点偏差会比较大,特别是带姿态样本裁剪后的嘴唇中心点还不在图像垂直中心轴上,眼睛位置也有差异,如图5所示,5A是原始图像和标定点,5B是裁剪图像。因此对于同一人不同姿态表情的人脸,其裁剪图像中人脸眼睛嘴唇位置差异较大,这一定程度会降低识别算法抗表情、姿态干扰的能力。
本发明的实施例采用了一种非线性矫正方法,即采用非线性的方法将输入人脸三个中心点完全矫正到标准人脸三点的位置。首先仅考虑眼睛的两个中心点,采用仿射变换算法在输入人脸与标准人脸的标定点之间计算仿射变换系数,此时同样只考虑旋转和整体缩放两个变换。即:
上式中有四个未知数,四个等式,只有唯一的一个解,设为(a,b,c,d),图5中的5C是仅采用这四个系数获取的裁剪结果。由这个仿射变换系数可以计算出输入样本中三个特征点在裁剪人脸中的对应点,设为[xtrans(i),ytrans(i)],i=0,1,2。前两个变换坐标即眼睛的位置与标准脸的眼睛位置完全一致,但受姿态、表情等干扰,嘴巴位置差别可能比较大。为此我们需要将嘴巴位置矫正到标准位置。
如图6所示,图中A、B点是标准图像中的中心点,D点是A、B的中央点,Cstad是标准嘴唇中央点,C是变换后的嘴唇点。非线性矫正过程分两步进行,首先在y方向进行矫正,使矫正后嘴唇点的y坐标与Cstad一致,如图6中的C′点。然后再进行x方向的矫正,我们将D与C′连接起来,DC′连线将人脸分为左右半边,考虑水平方向的某条直线,设其y坐标为y1,其与DC′直线的交点坐标E为(x1,y1)。由于我们需要将(x1,y1)移至(xD,y1),其中xD为D的x坐标,因此需要对(xD,y1)左右两边的点分别进行线性变换,将E移至中轴线DCstad上。考虑某点(x,y1),对左边的点x<x1,其矫正后点的坐标为(x·xD/x1,y1),对右边的点x≥x1,其矫正后点的坐标为[2xD-xD·(2xD-x)/(2xD一x1),y1]。可以看出,如果C′在Cstad的右侧,则需要对左例的人脸进行压缩,对右侧人脸进行拉伸,这样可以将DC′直线上所有点都矫正到人脸垂直中轴线DCstad上。
在获取非线性矫正系数后,接着结合原始图像获取矫正后的人脸,设裁剪后的人脸图像为I,该图像尺寸为44×48,其中某点坐标为(x,y),根据非线性矫正系数获取其矫正前的坐标(x′,y′),再由仿射变换系数获取原始图像中该点的坐标(xori,yori):
为消除噪声的影响,裁剪后的图像中(x,y)的象素值设为对应点(xori,yori)邻域范围内所有点象素值的均值,如图5中的5D所示。
此外,受外界光照、成像设备等因素干扰,人脸图像亮度或对比度会出现异常,出现强阴影或反光等情况,另外不同人种的肤色间也存在这差异,因此需要对几何归一化和矫正后的人脸样本进行灰度均衡化处理,改善其灰度分布,增强模式间的一致性。不过,人脸识别中的光照问题一直是比较困难但也是非常重要的问题。多年来已经有了非常多的光照处理算法,但性能都比较一般,抗各种环境光干扰的能力都比较差。由于基于统计方法的人脸识别算法需要采集人脸的正样本并进行训练,但人脸正样本的光照一般比较单一,即使对加入不同光照的正样本,训练数据也只能覆盖少数几种光照分布。而实际场景中光照是非常复杂的,而同样的人脸但光照差别较大时灰度也会存在这明显的差异,计算出的图像特征也会存在这差别。另外,如果输入人脸的光照不均匀,部分区域光照强,部分区域光照弱一些,此时即使对图像进行全图的归一化、直方图均衡等,都很难得到光照比较均匀的人脸数据,这就会大大降低人脸识别的精度。
本发明实施例采用的光照处理算法可以分两步进行,首先对图像进行整体的灰度归一化,接着结合标准图像进行局部的灰度归一化。
整体归一化比较简单,给定一幅标准人脸图像,如图4中的4B,计算标准人脸灰度的均值Ps和方差σs,接着计算输入样本灰度的均值P和方差σ,其任一象素值I(x,y)归一化后的象素值为:
I′(x,y)=[I(x,y)-P]·σs/σ+Ps
设标准图像某点(x,y)的象素值为S(x,y),输入人脸灰度归一化后该点值为I′(x,y)。由于这两幅图像中眼睛、嘴巴的位置已经完全对应,因此样本中各个器官的位置与标准人脸的器官位置差别也不会太大。也就是说两幅图像各个局部的灰度应该近似一致,如果灰度不一致,则可以认为是输入人脸的光照不均匀,需要进行灰度的矫正,由此可以用标准人脸的灰度去矫正输入人脸的灰度。
基于此考虑,本发明实施例对各个象素点分别进行处理,考虑其中某个点(x,y),抽取其邻域范围内所有象素点,邻域长宽均为W,我们统计输入样本中(x,y)邻域内W×W个点灰度的均值,设为AI(x,y),再统计标准样本中(x,y)邻域内W×W个点灰度的均值,设为AS(x,y)。AI(x,y)反映的当前邻域内亮度的大小,AS(x,y)反映的是标准人脸局部光照的强度,如果两者差异较大,则表示输入人脸当前点附近光照不均匀,需要对该点的灰度进行矫正,又AS(x,y)与AI(x,y)的比值可以近似反映光照强度的比值,因此可以直接将该点的灰度值乘以这个比值,作为矫正结果,即(x,y)点处理后新的灰度值Ir(x,y)为:
Ir(x,y)=I′(x,y)·AS(x,y)/AI(x,y)
W的选择比较关键,W不能太大,否则灰度矫正没有效果,W也不能太小,否则矫正后的人脸图像与标准人脸比较接近,本文将W设为15,获取最佳结果。如图7所示,为光照处理前和光照处理后的结果对比示意图,其中,7A为整体灰度归一化后的人脸图像;7B为根据本发明的实施例进行灰度矫正后的人脸图像。
图2中步骤204以及图3中步骤304所述的特征抽取步骤,在人脸识别中是非常关键的环节。常用的特征有灰度特征、边缘特征、小波特征、Gabor特征等。其中Gabor为人脸图像提供多尺度、多方向的精细描述,表现出优秀的时频聚集性,具备很强的刻画细节与局部结构的能力。它具有带通滤波的性质,既能部分地抵抗慢变光照的影响,也能滤去一些高频噪声。同时,二维Gabor滤波器的冲激响应函数与哺乳动物的视皮层中简单型细胞对图像信号的响应非常相似,在理论上具备坚实的基础。因此,本发明的实施例在实现人脸识别时选择Gabor特征。
二维Gabor滤波器的冲激响应表示为:
其中σ=2π,我们考虑了5个频率ν=0,...,4,8个方向μ=0,...,7,则有:
在人脸图像的每个点,可以都计算5个频率,8个方向,共40维Gabor特征,计算方式是将输入图像与各个频率各个方向的冲激响应进行卷积,即:
Gj(x)=∫Ir(x′)ψj(x-x′)dx′
为了提高Gabor特征的计算效率,可以采用FFT算法对这个卷积过程进行加速,先对Ir(x′)和ψj(x′)分别进行FFT变换,将变换后的结果相乘再进行反FFT变换,就可以得到图像中所有点对于某个频率某个方向的Gabor特征。总的Gabor特征数为5×8×44×48=84480,这个数据量是非常大的,直接采用分类算法对如此高维的特征进行训练和识别是非常困难的,因此还需要进行特征的挑选,大幅度降低特征的维数。
每幅人脸Gabor特征的维数高达84480,而总的训练样本数有一万多,而在分类器训练时采用的是1对多的SVM算法,因此可以采用基于AdaBoost的特征挑选算法,结合1对多的分类方式和正反样本数据从这些特征中挑选出分类能力最强的数千维特征如2000维特征出来,将挑选出的特征组成新的低维Gabor特征向量,特征选择完毕后再采用一对多的支持向量机(SVM)算法对不同用户进行训练。这样训练算法的计算量和存储的人脸模型的数据量都大大降低。在认证过程中,算法只需要计算出人脸的Gabor特征,结合已有的特征挑选结果挑选出低维特征,再对低维特征向量进行识别。
下面简单介绍一下本发明实施例所采用的基于AdaBoost的特征抽取方法,如图8所示:
步骤801:给定两类样本,样本数为L,正样本数为Lp,反样本数为Ln。
步骤802:初始化,设置权重,正样本为1/2Lp,反样本为1/2Ln。
首先,为正反图像样本集设定权值,在一个具体的实施例中,可以将反图像样本集所占的权重设置为1/2,将所有正图像样本集所占的权重设置为1/2。当然,在其它的实施例中,也完全可以将所有反图像样本集所占的权重设置为2/5,将所有反图像样本集所占的权重设置为3/5。也就是说,可以根据需要为正反图像样本集设定权重。之后,要为每个正反图像样本设定权重,在一个具体的实施例中,可以设定每个正样本的权重为正样本集权重的1/Lp,设定每个反样本的权重为反样本集总权重的1/Ln。当然,也可以将重要的正反图像样本设定较高的权重。
步骤803:设定迭代轮次t=1,2,...,T。
步骤804:考虑所有从未入选的特征,利用单个特征训练弱分类器,根据训练样本集的权值得到最优的阈值参数,使得所有样本的加权错误率最小,这样可以为每个弱分类器及其对应的特征获取一个错误率。
采用第j个弱分类器hj(x)根据设定的阈值与每个图像样本的第j个特征Gj(x)去判断各个样本图像是正样本还是反样本,由此可以统计出该弱分类器的加权错误率。
每个弱分类器都只处理对应的一个特征,其可表示为:
其中,low_θj是弱分类器hj(x)的低阈值,high_θj是弱分类器hj(x)的高阈值,如果当前图像样本的第j个特征Gj(x)的数值大于低阈值且低于高阈值时,所述弱分类器hj(x)输出为1,其表示当前图像样本被判断为正样本;反之,所述弱分类器hj(x)输出为0,其表示当前图像样本被判断为反样本。其中,弱分类器hj(x)的低阈值和高阈值是根据图像样本的权重设定。
关于弱分类器对图像样本的分类,具体来讲就是,首先,第j个弱分类器hj(x)根据第1个图像样本第j个特征Gj(x)判断第1个图像样本是正样本还是反样本,接下来,根据第2个图像样本第j个特征Gj(x)判断第2个图像样本是正样本还是反样本,......,直到,第j个弱分类器hj(x)根据第L个图像样本第j个特征Gj(x)判断第L个图像样本是正样本还是反样本。
步骤805:统计出每个弱分类器hj(x)的错误率,选定错误率最小的预定数目个弱分类器并将其对应的特征作为当前轮的特征挑选结果。
每个弱分类器hj(x)都要对L个图像样本是正样本还是反样本进行判断,其中必定有判断错的样本,换句话说,弱分类器hj(x)可能将正样本认定为反样本,也可能将正样本认定为反样本。将该弱分类器统计错误的图像样本的权重求得,就可以得到这个弱分类器hj(x)的加权错误率。之后,将错误率最小的预定数目个弱分类器对应的特征作为当前轮的特征挑选结果。在一个实施例中,所述预定数目是1,也可以是,2或3等等,操作者可以根据实际情况设定这个数目。
步骤806:减小选定的弱分类器判断正确的图像样本的权重,增加选定的弱分类器判断错误的图像样本的权重,并对更新后的图像样本的权重进行归一化,使所有样本的权重之和等于1,返回103,进入下一轮迭代,直至完成设定轮次,挑选出预定数目的特征。
上面的挑选方法针对的是两类问题。对于多类问题,可以结合模式分类算法的实现架构设计挑选方法。如果模式分类算法采用的是一对多的架构,我们将特征挑选过程分解为多个两类问题,每个两类问题中其中一类是某类样本,另一类则对应其他样本。如果模式识别问题采用的是一对一的架构,即将多类模式识别问题分解为多个两类一对一问题,每个两类问题中的一类为任一类输入样本,第二类为另一类输入样本。这样在特征挑选时需要考虑多个类似图8的AdaBoost模块流程,我们将各个AdaBoost模块流程同步实现,即将所有AdaBoost模块的第t轮弱分类器返回的错误率加起来,将总的错误率最小的特征返回,作为该轮的特征挑选结果。各轮特征挑选完毕后再根据当前的各个AdaBoost模块的错误率更新权重,挑选下一组特征。
图2中步骤201以及图3中步骤305所述支持向量机(SVM)是统计学习理论发展出的一种模式识别方法。该算法是从线性可分情况下的最优分类面提出的。考虑图9中所示的两类线性可分情况,设样本集(xi,yi),i=1,...,n,x∈Rd,y∈{+1,-1},其中yi是模式xi的类别标号,H:w·x+b=0为分类界面,H1、H2分别为平行于H且与H距离为1/‖w‖的两平面,它们之间的距离叫做分类间隔(margin)。支持向量机的基本思想就是希望找到一个最优线性分类面,使分类间隔尽量大,即‖w‖尽量小,并且在训练集上分类错误尽量少。最优分类面的求解问题实际上一个不等式约束下的二次函数极值问题,其最优解为:
其中αi为权重。对多数样本αi为零,少数不为零的αi对应的就是支持向量,即位于H1和H2两平面上的样本。最优分类函数则为
sgn()为符号函数。f(x)为1则表示识别为第一类样本,即y=1,否则认为识别为第二类样本。将上式中特征向量的点击运算改为内积,且内积满足Mercer条件,就可以将线性SVM扩展为广义的非线性SVM,即:
采用不同的内积函数将导致不同的支持向量机算法,如多项式内积、S形函数、径向核函数(RBF)等,与线性SVM相比,非线性SVM将最优分类面扩展为非线性的,可以实现很多线性不可分情形的分类,因此分类准确率也得到提高。我们在实现人脸识别时,采用了基于RBF的SVM算法,即:
SVM在用于多类人脸的识别时,有一对一和一对多两种实现形式。一对一的SVM是在算法为任两类样本训练SVM分类器,这样如果有N类样本,则需要训练N×(N-1)/2个分类器。识别时将样本依次输入到各个SVM分类器中,每次判决都将淘汰一类样本。当然如果某个分类器对应的两个样本均已淘汰,则跳过该分类器,所有判决完成后剩下的那个类别就是识别结果。一对一分类器的主要问题是训练时只考虑了各类训练样本,大量的反样本数据都浪费掉了,且这种分类器无法实现反样本的拒识,因此无法应用于人脸认证算法。
一对多的SVM算法只需要为每个类别分别训练一个分类器,每次训练时正样本就是该类别的训练数据,而反样本则包含了其他各类数据及所有的反样本数据。由于这个方法考虑了众多的反样本数据,训练完后得到的最优分界面可以比较准确地将当前类别样本与其他类别样本分离开来,因此在实现多个人脸的自动认证时,一对多的SVM算法有非常好的应用价值。
一对多SVM的认证过程也比较简单,将输入样本挑选后的特征输入到N个SVM分类器中,如果所有分类器会拒识输入特征,则认为输入人脸与训练库中所有类别都不相似,算法输出拒识的结果;反之,如果输入特征仅通过了一个分类器,而被其他所有分类器拒识,则该分类器对应的类别就是人脸识别的结果;另一种特殊情况就是输入特征通过了不止一个SVM分类器,算法认为其与多个类别相似,从我们实验结果看,这种情形非常少见,因为我们在分类器训练时各类样本都互为其他类别的反样本,但当不同类别的人脸比较相似时,这种情况也会出现。此时我们采取一种简化方法解决这个问题,由于各个一对多SVM算法都会为每个样本输出一个判决数值:
这个数值在一定程度上也反映了输入样本与对应类别的接近程度,及与对应反样本的差距大小。该数值越大,则表示输入样本与当前类别越相似,与其他类别差异越大。因此我们根据这个判决数值的大小处理这种特殊情况,即将未输出拒识结果的SVM分类器返回的:
进行排序,将最大数对应的类别作为人脸识别的结果。这尽管是一个近似的结果,但从实际结果看,这个方法的效果还是非常不错的。
下面结合一对多SVM,对图2中步骤205、206所述的相似度的计算进行说明。
基于一对多SVM的人脸认证算法会为每个输入人脸输出一个判决数据Jn(x),n=0,1,...,N-1,反映了当前人脸与对应类别的相似程度。我们将各个类别脸形数帧的判决数据组合起来,得到一个反映多帧识别信息的新的判决数Ln(x),n=0,1,...,N-1,我们将这个数作为各个类别的识别相似度。设在前面k-1帧我们求得一个相似度为Ln k-1(x),n=0,1,...,N-1,第k帧的SVM返回数为Jn k(x),n=0,1,...,N-1,则k帧的相似度计算式为:
即人脸的相似度是累加的,不过累加数需要限制最大和最小值。这样当连续数帧某个类别的Jn(x)都大于零时,则总的相似度Ln(x)将逐渐增加;反之则逐渐减少。如果在第k帧所有类别的Lk n(x)都小于零,则拒识该人脸;如果有一个或者多个Lk n(x)大于零,则将数值最大Lk n(x)对应的类别作为人脸认证的结果。如图10A所示,为一帧输入人脸,图10B是输出结果,图中各人的Lk n(x)用柱状图显示,中间黑线是相似度判决阈值,本发明将这个阈值直接设为零。
综上所述,本发明充分利用了多视频合成和人脸识别技术,也就是把捕捉视频设备捕捉到的视频和背景视频进行多方位的合成,形成了最终的屏幕保护程序。在这个过程中,增加了人脸识别技术,可以利用已经采集的人脸数据,对屏幕保护程序提供人脸验证保护功能。