搜索
您的当前位置:首页正文

基于隐马尔科夫模型的人脸识别

来源:星星旅游
基于隐马尔科夫的人脸识别

1人脸检测及常用算法

人脸检测,指的是从输入的图像(或者视频)中确定人脸的位置、大小和姿态的过程, 是进行人脸识别的基础,也是实现人脸识别功能的一个关键环节。

人脸检测是一种计算机视觉中的模式识别问题,就是将所有的人脸作为一个模式,而非人脸作为另一种模式,人脸检测的核心问题就是将人脸模式和非人脸模式区别开来。人脸检测的算法主要分为两大类,基于先验知识的和基于后验知识的学习和训练的算法。

常见人脸检测的算法有:基于特征子脸人脸检测算法:该算法将所有人脸的集合视作一个人脸子空间,通过检测样本与子空间之间的投影距离检测样本中是否存在人脸;基于模板匹配的人脸检测算法:该算法先设计一个代表标准人脸的模板,将进行检测的样本与标准模板进行比对,通过考察样本与标准模板的匹配程度,设置合理的阈值来检测样本中是否存在人脸;神经网络人脸检测算法:该算法是一种学习算法,用于学习的训练集分为属于人脸图像的训练集和非人脸图像的训练集两类,通过学习从而产生分类器进行人脸检测;基于纹理模型的算法,对于人脸图像的灰度共生矩阵进行计算可以获得倒数分差、惯量相关特征这三个特征矩阵,然后通过迭代计算求得人脸图像矩阵中的参数。使用这种方法取得的模型就被称为人脸纹理模型。若人脸姿态有旋转,通过对眼睛进行定位可以计算出人脸的旋转角度或者使用投影直方图FFT 变换等方法确定人脸旋转的方向,再进行人脸检测。

1.1Haar特征

Harr 特征是一种矩形特征,在特征提取时由四类特征组成特征模板—边缘特征、圆心环绕特征、线性特征和特定方向的特征。特征模板包括白色矩形和黑色矩形两种。白色矩形内像素和(Sum白)减去黑色矩形像素和(Sum 黑)就是模板的特征值。Haar 特征反映的是图像中相邻矩形区域的灰度变化。

Haar特征的每一个特征值feature可以表示为:

featureirectsumri

i1Nrectsumri表示矩形所包围图像的灰度值之和。其中i表示矩形的权重,Paul Viola 和

Michacl Joncs 提出积分图算法提高图像举行特征的计算速度。

对于对象中的任意一点Ax,y,其灰度值为ix,y,积分图iix,y经过对图片的一次遍历,就可以得到图像中每一个点的积分图的值。

xx,yyix,y,

假设需要计算矩形 D 的特征,其顶点为点 1、2、3、4。这样,矩形 D 的

特征为featuredii4ii2ii3ii1。

1.2AdaBoost

AdaBoost(the Adaptive Boosting Algorithm)算法是一种用于分类器训练的算法该分类器算法,是一种基于统计模型的迭代算法。核心思想在于将一系列弱分类(Basic Classifier)器通过一定的方式进行叠加(Boost)后形成一个分类能力很强的强分类器(Strong Classifier)。

首先,获得用于训练的样本库,样本库需包含正负样本。就人脸识别而言,即需获得人脸图片与非人脸图片,选择人脸图片时需考虑样本的多样性,选择非人脸图片时需要考虑样本是否具有代表性。在选取了合适的样本集合后对其进行循环处理,每次循环处理后可以得到一个假设。接下来对这个假设进行验证,得到使用该假设进行分类的错误率。在开始下一轮循环之前依据该错误率调整每个样本所占的权重。在实际训练过程中,第一次使所有样本的权重相同进行训练,从而得到一个弱分类器。然后使用这个得到的弱分类器进行人脸图片与非人脸图片的分类,得到分类结果。依据结果降低可正确分类的样本的权重,提高被错误分类的样本所占的权重再进行训练,从而得到一个新的分类器,之后重复上述步骤进行循环训练。这样,经过 T 次循环训练之后,就得到了T 个弱分类器,将这 T 个弱分类器经过加权叠加,就得到了强分类器,理论上将,无穷多个大于50%的弱分类器的联合,其分辨正确率可以达到100%。

1.3分类器

最初的弱分类器可能只是一个最基本的Haar-like特征,计算输入图像的Haar-like特征值,和最初的弱分类器的特征值比较,以此来判断输入图像是不是人脸。比较输入图片的特征值和弱分类器中特征,一定需要一个阈值,当输入图片的特征值大于该阈值时才判定其为人脸。训练最优弱分类器的过程实际上就是在寻找合适的分类器阈值,使该分类器对所有样本的判读误差最低。

具体操作过程:

1、对于每个特征 f,计算所有训练样本的特征值,并将其排序。

2、扫描一遍排好序的特征值,对排好序的表中的每个元素,计算下面四个值: 全部人脸样本的权重的和t1; 全部非人脸样本的权重的和t0;

在此元素之前的人脸样本的权重的和s1; 在此元素之前的非人脸样本的权重的和s0

3、求出每个元素的分类误差rmin((s1(t0s0)),(s0(t1s1))),在表中寻找r值最小的元素,则该元素作为最优阈值。有了该阈值,就生成一个最优弱分类器。

强分类器的诞生需要T轮的迭代,具体操作如下: 1、归一化权重:

qt,iwt,inj1wt,i

2、对每一个特征f,训练一个弱分类器h,计算此f特征的加权错误率ef:

efiqihxi,f,p,yi

3、选取具有最小错误率 ef的弱分类器h 4、调整权重

wi1,jwi,jt1ei,其中ei0表示x被正确分类,ei1表示被错误分类,t5、级联成强分类器

111thx2tlog,其中 Cx0t1t1telse tt 1t将多个训练出来的强分类器按照一定的规则串联起来,形成最终正确率很高的级联分类器。对于人脸需要进行多尺度检测,通常是不断初始化搜索窗口size为训练时的图片大小,不断扩大搜索窗口,进行搜索。

级联分类器在进行串联时的原则是“先重后轻”,即将重要特征构成的结构比较简单的分类器放在前面,而后一级的分类器都比前一级使用更为复杂的矩形特征,由于靠前的分类器用于判断的特征相对简单,例如

只有一两个矩形框,这种分类器并不能满足人脸检测的需求,但是能够迅速筛选掉大量不是人脸的子窗口。这样,虽然后续分类器的矩形特征在增多,但是由于需要进行后续检测的子窗口的数量大为减少,整体计算量在减少,极大地提升了人脸检测的速度,并且保证了最后的得到的人脸检测结果伪正(false positive)的可能性非常低。

2人脸识别算法

人脸识别是对对某张特定人脸图片进行身份确认,关键在于在人脸共性特征中寻找不同人物的个性特征并以有效的算法(计算机可以理解并加以运算)进行描述和区分。常用的识别算法有:

1、基于几何特征的识别算法—1966 年,Bledsoe就提出了基于几何特征的人脸识别算法,选取的几何特征是人脸面部特征点之间的距离和比例。

2、基于 PCA 的识别算法—输入的人脸图像描述为“特征脸”的线性组合,不同的人脸特性用构成该种线性组合的系数来进行描述,其关键技术是PCA

3、基于隐马尔可夫模型的识别算法—以二维离散余弦变换特征提取获得观察向量,构建起人脸的 EHMM 模型。之后,利用 EM(Expectation Maximization)算法(B-W算法)进行训练,训练后得到每个人对应的 EHMM 模型。这样在识别阶段就可以计算得到人脸图片观察向量属于每个人物 EHMM 模型的概率,用于该概率进行比较,选择概率大者为匹配结果,从而完成识别工作。

其他的还有基于神经网络的识别算法、基于支持向量机识别算法、三维人脸识别算法等等。

几种主流识别算法比较: 算法名称 基于几何特征的算法 特征脸算法(PCA) 特点 特征简单,但是不易提取到稳定的特征,识别率不高,鲁棒性不高 简单有效,是人脸识别的基准算法,但是识别率不高,对于表情和姿态的鲁棒性不强,计算时间随着样本数量增多呈指数增加,新样本扩容时需要对多有的样本进行重新训练。 识别率高、对人脸姿态、表情变化鲁棒性强,对于人脸库扩容适应性好,实现比较复杂 不需要复杂的特征提取,可使用硬件进行加速,但是神经元的数量多,运算时间长,需要较多的人脸进行训练,训练过程需要认为控制 在小样本空间识别率较好,但是识别过程中需要对核心函数参数进行调整。 特征稳定性好,具有选择、位移等不变性质,但是识别率不高。 识别率高,人脸三维模型的构造和存储开销大、需要借助专业设备进行三维建模。 隐马尔科夫模型(HMM) 神经网络(NN) 支持向量机(SVM) 奇异值分解(SVD) 三维人脸识别算法 3隐马尔可夫(HMM)数学模型

马尔可夫模型可视为随机有限状态自动机。HMM是建立的马尔科夫模型基础上,由两个随机过程构成,一个是具有状态转移的马尔科夫链,另一个是描述观察值和状态之间关系的随机过程。

HMM构成:

1、N:HMM中马尔科夫链的状态数。假设S是状态的集合,SS1,S2,...,SN,该模型在t时刻的状态为qt。

2、:初始状态矢量,i,ipq1Si 3、A:状态转移概率,Aaij,aijpqtSi|qt1Si

4、M:状态可能对应观察值的数目,可能的观察值为V1,V2....Vm,t时刻的观察值为Ot 5、B:观察值概率矩阵,Bbjk,其中bjkpOtVk|Stqi HMM的三个基本问题是:

1.给定模型(五元组),求某个观察序列O的概率。

2.给定模型和观察序列O,求可能性最大的隐藏状态序列。

3.对于给定的观察序列O,调整HMM的参数,使观察序列出现的概率最大。

3.1向前算法解决1

PO|XPO,S|XPS|X*PO|X,S,但其时间复杂度达到指数级

SS别,太慢了,用动态规划的思想解决—向前算法:

定义向前变量:tipO1O2...Ot,qtSi| 1、初始化先前变量:iibiOi

2、再将向前变量进行递归运算,其中1tT1,1jN:

N i1jtiai,jbj.k|Oi1Vk

j13、结束: pO|i

tj1N向后算法类似于向前算法(向后变量为:tipOt1Ot2...OT|qtSi)

3.2Viterbi 算法解决2

将ti定义为时刻t沿一条路径q1,q2,q3...qt,并且qtt,产生出O1,O2,...,Ot的最大概率值:

tiMAXpq1,q2,...,qti,O1,O2...Ot|

q1,q2,..,qt1最优状态序列Q进行求解过程如下: 1、对ti进行初始化: tiibiO1,

2、进行递归运算:

tjMAXt1iaijbjOt,2tN,1jN

1iNtjargMaxt1iaij,2tN,1jN

1iN3、结束

 pMaxti,qtiargMaxTi

4、最优状态序列:

qtt1qt1

3.3EM算法

EM算法是 Dempster,Laind,Rubin 于1977年提出的求参数极大似然估计的一种方法,它可以从非完整数据集中对参数进行MLE估计。 EM算法流程: 初始化分布参数

重复以下步骤直到收敛:

E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐形变量的后验概率,即隐性变量的期望,将其作为隐藏变量的现估计值:

M步骤:将似然函数最大化以获得新的参数值

3.4Baum-Welch 解决 HMM问题3

该问题是对于一个观察值序列OO1,O2....Ot,如何调整HMM模型,A,B的参数,从而使pO|最大。

采用递归的思想,从局部最大递归至全局最大。

定义辅助变量:对于给定的训练序列O,HMM模型,马尔科夫链在t时刻的状态为i,在t+1时刻的状态为j的概率:ti,jpqtS,qt1Sj|O,,其也可表示为:

ti,jpqti,qt1j,O| pO|ti,jtiai,jt1jbjOt1iati1j1NN

i,jt1jbjOt1另外一个辅助变量是后验概率,该概率表示的是HMM模型在t时刻的状态为i的概率:

tipqti|O,

tititjijtti1N

两个辅助变量的关系是:

titi,j

j1N如果对于时间轴t上的所有ti相加,我们可以得到一个总和,它可以被解释为从其他隐藏状态访问Si 的期望,或者如果我们求和时不包括时间轴上的t = T 时刻,那么它可以被解释为从隐藏状态Si 出发的状态转移期望值。相似地,如果对ti在时间轴t 上求和(从t=1 到t=T-1),那么该和可以被解释为从状态Si 到状态Sj 的状态转移期望值。

i=expected number of transition from S

tiT1t1i,j=expected number of transition from SitoSj

tt1T1

使用Baum-Wclch算法对N,M,A,B,进行参数估计,从而使得pO|这个概率最大。

计算过程如下:

1、计算向前变量,向后变量,两个辅助变量 

2、使用下面公式对HMM模型的参数进行估计,得到的新模型为

ti,1iN

ai,ji,jtt1T1t1T1it,1iN,1jN

bjktt1,OtVkT1t1i,jitT1,1jN,1kM

重复上述过程,直至pO|不再明显增大,就认为pO|收敛,这样对样本HMM训练完成。

4人脸的 EHMM 模型

人脸图像是二维的,仅用一维的 HMM 模型对人脸图像进行描述并不精确。为了提高人 脸识识别的精确度,Nefian 提出了嵌入式隐马尔可夫模型(Embedded Hiden Markov Model, EHMM)。对于嵌入式隐马尔可夫模型的研究是建立在 HMM 的基础上的。HMM 模型表示的是人脸图片从上到下的结构特点,同样,人脸具有从左到右的稳定结构。可以对人脸图片先进行上到下的划分,得到人脸一维 HMM 模型,称之为主 HMM。在已经划分出的五个状态从水平方向再进行一次划分,可以到的 5 组水平方向的 HMM 状态,这 5 组 HMM 称之为子 HMM。主 HMM 的状态通常情况下被称为超状态(Super State),子状态(State)则是水平方向的子 HMM 的状态。由于子 HMM 是限定在主 HMM 内部进行划分的,所以将这种模型称之为嵌入式隐马尔可夫模型(EHMM)。

4.1离散余弦变换

离散余弦变换时一种常用的数据压缩方法。压缩质量接近于信息压缩的最优变换—KL。对于一副图像M*N的数字图像fx,y,其2D离散余弦变换定义为:

2x1Cu,vauavfx,ycos2Mx0y0M1N12y1vcos

2N式中,C,v为变换结果,也称作DCT系数,a,av定义为:

a12MM,0,1,2,...,M1

av1,v0N 2,v1,2....,N1N离散余弦变换的特点:频域变化因子 ,v较大时,DCT系数C,v的值很小,而数值较大的C,v主要分布在 ,v较小的左上角区域,也就是有用信息的集中区域。

4.2二维Gabor小波

小波函数的实质是:带通滤波器。

Gabor滤波器可以看作是一个对方向和尺度敏感的方向性的显微镜,Gabor滤波器函数将在与其震荡垂直的边沿处产生强烈的响应,而边缘对物体的识别是至关重要的,Gabor滤波器函数还能够检测到(即响应)图像中的一些具有相应的方向频率信息的局部的显著特征,从而可以形成亮点图像的局部特征图谱,这些局部特征形成了原始输入图像的一种鲁棒、紧凑的特征表示

Gabor小波变换作为唯一能够取得空域和频域联合不确定关系下限的Gabor核函数 经常被用作小波基函数,是图像的多尺度表示和分析的有力工具,二维Gabor滤波器的函数形式可以表示为:

zkk2e2k2z222eikze22

zx,y.方括号中的第一项决定了 Gabor核的震荡部分,刻画图像边缘部分的特性,第二项为补偿直流分量,用以消除和函数响应对图像亮度绝对值变化的依赖,以保证不同亮度值构成的均匀亮度区域的响应接近相同。其中,参数k控制着高斯窗口的宽度、震荡部分的波长和方向,参数则决定了窗口的宽度和波长的比例关系。 上式定义的Gabor核函数可以定义出一组滤波器。在进行运算过程中,需要对核函数进行频域下采样,即将k离散化: kkveiu

v其中,u/8,体现滤波器的方向性,kvkmaxf,为滤波器的采样频率,v和为

尺度参数和方向参数,一般情况下v0,1...4,0.,1....7。

脸图像的Gabor特征由人脸图像和Gabor滤波器组卷积得到,令fi,j表示人脸图像的灰

度分布,那么fi,j和Gabor滤波器的卷积可定义为: Gx,y,,vfx,y,vz

Gabor卷积过程实际产生由实部和虚部两个分量构成的复数响应,在边缘附近,Gabor变换的实部和虚部会产生振荡,而不是一个平滑的峰值响应,而幅值的变化相对平滑而稳定,人脸识别的Gabor特征通常只是采用Gabor特征的幅值,也就是实部和虚部的模值。 提取到的Gabor特征维数巨大,需要后续的降维处理。(PCA降维)

4.3人脸特征向量的提取

使用二维离散余弦变换对人脸图片进行特征提取,对于一副图像,其2D-DCT变换为:

2x12y1vCu,vauavfx,ycoscos,

2M2Nx0y0M1N1 图像变换为能量集中在低频区域,所以选择低频系数作为观察向量。从而降低里观察向量

的维数,从而减少了进行HMM训练时和识别的计算量。

对图片进行特征提取时,并不是对整幅图片进行 2D-DCT 采样,而是对图片使用遍历 的算法进行采样,采样时,使用像素值为P(宽度)*L(长度)的采样窗口在图像上从左至 右,从上到下进行滑动,相近的采样窗口移动的步长为 X *Y,采样完毕后截取 2D-DCT 变 换的低频系数作为特征向量,这样可以得到 EHMM 模型中各个状态所代表人脸区域中的特征向量,从而对人脸图片进行更为精确的 EHMM 建模。

4.4HMM 算法的训练和识别过程

4.4.1训练过程

训练就是指将样本库中的每一个人的人脸图像确定 HMM 参数、建立 HMM 模型的过程。

(1)首先要将图像进行均匀的分割,并且提取出对应图像的观察值序列。

(2)对 HMM 的参数进行初始化,确定模型的状态数和观察序列向量的大小。 (3)使用迭代计算初始的 HMM 参数。首先将图像统一分割以对应 HMM 的每一个状态。 然后用 Viterbi 分割(在 EHMM 中使用双重 Viterbi 分割)代替上述的分割。这一过程将输出一个初始的 HMM 参数,作为进行下一次重估 HMM 参数的输入。

(4)用 Baum-Welch 算法对上面得到的 HMM 参数进行重估。依据训练图像的观察向量, 将 HMM 参数调整到一个局部最大值。这个过程得到的输出就可以训练图像的 HMM 最终模型。

4.4.2识别过程

HMM 的识别过程是先提取待识别图像的观察向量,然后用 Viterbi 算法计算该图像属于 每个人的概率,取概率最大的那个作为识别结果。具体过程为: (1)提取待识别图像的观察向量序列Oreg。

(2)用获得的观察向量计算与每一个人 HMM 模型的匹配程度,假设有 M 个人,计算

pOreg|k,1kM

在实际计算中,经常以 Viterbi 算法计算得到的最大相似概率作为上述概率的代替。 (3)选取上述概率最大的值作为识别结果,或当最大值不满足识别阈值时判断为该人脸 图片不属于该人脸库中的人物。 识别过程如下图:

P(O|R1)是待识别人脸图像特征提取得到观察向量序列P(O|R2)选取最大概率高于阈值识别结果否不存在识别任务P(O|RN)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top