基于隐马尔科夫的人脸识别
1人脸检测及常用算法
人脸检测,指的是从输入的图像(或者视频)中确定人脸的位置、大小和姿态的过程, 是进行人脸识别的基础,也是实现人脸识别功能的一个关键环节。
人脸检测是一种计算机视觉中的模式识别问题,就是将所有的人脸作为一个模式,而非人脸作为另一种模式,人脸检测的核心问题就是将人脸模式和非人脸模式区别开来。人脸检测的算法主要分为两大类,基于先验知识的和基于后验知识的学习和训练的算法。
常见人脸检测的算法有:基于特征子脸人脸检测算法:该算法将所有人脸的集合视作一个人脸子空间,通过检测样本与子空间之间的投影距离检测样本中是否存在人脸;基于模板匹配的人脸检测算法:该算法先设计一个代表标准人脸的模板,将进行检测的样本与标准模板进行比对,通过考察样本与标准模板的匹配程度,设置合理的阈值来检测样本中是否存在人脸;神经网络人脸检测算法:该算法是一种学习算法,用于学习的训练集分为属于人脸图像的训练集和非人脸图像的训练集两类,通过学习从而产生分类器进行人脸检测;基于纹理模型的算法,对于人脸图像的灰度共生矩阵进行计算可以获得倒数分差、惯量相关特征这三个特征矩阵,然后通过迭代计算求得人脸图像矩阵中的参数。使用这种方法取得的模型就被称为人脸纹理模型。若人脸姿态有旋转,通过对眼睛进行定位可以计算出人脸的旋转角度或者使用投影直方图FFT 变换等方法确定人脸旋转的方向,再进行人脸检测。
1.1Haar特征
Harr 特征是一种矩形特征,在特征提取时由四类特征组成特征模板—边缘特征、圆心环绕特征、线性特征和特定方向的特征。特征模板包括白色矩形和黑色矩形两种。白色矩形内像素和(Sum白)减去黑色矩形像素和(Sum 黑)就是模板的特征值。Haar 特征反映的是图像中相邻矩形区域的灰度变化。
Haar特征的每一个特征值feature可以表示为:
feature???i?rectsum?ri?
i?1N其中?i表示矩形的权重,Paul Viola 和rectsum?ri?表示矩形所包围图像的灰度值之和。Michacl Joncs 提出积分图算法提高图像举行特征的计算速度。
对于对象中的任意一点A?x,y?,其灰度值为i?x,y?,积分图ii?x,y??经过对图片的一次遍历,就可以得到图像中每一个点的积分图的值。
x??x,y?y??i?x?,y??,
假设需要计算矩形 D 的特征,其顶点为点 1、2、3、4。这样,矩形 D 的
特征为feature1?。 d?ii?4??ii?2??ii?3??ii?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
s1?(t0?s0)),(s0?(t1?s1))),在表中寻找r3、求出每个元素的分类误差r?min((值最小的元素,则该元素作为最优阈值。有了该阈值,就生成一个最优弱分类器。
强分类器的诞生需要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、级联成强分类器
?h?x????t2C?x??1?t0t?1t?1?t 1??t??1?else,其中?t?log 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....t时刻的观察值为Ot Vm,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??Ma?x?t?i??,qt????i?argMa?x?T?i??
4、最优状态序列:
qt???t?1qt??1
??