【转】人脸检测
转自:http://www.cnblogs.com/ysjxw/archive/2008/05/14/1197275.html
转自http://blog.csdn.net/ranmer/archive/2008/04/14/2292335.aspx
前一阵子的工作已经告一段落了,新的挑战即将开始,既然选择了它,就要无悔,开弓没有回头箭,努力吧!!
人脸检测的任务是在复杂的背景下检测图像中有无人脸,从而判断人是否存在,并提取出人脸面部图像信息.
欧式距离:
在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是 d = sqrt((x1-x2)^+(y1-y2)^) 三维的公式是 d=sqrt(x1-x2)^+(y1-y2)^+z1-z2)^) 推广到n维空间,欧式距离的公式是 d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
隐马尔科夫模型
隐马尔科夫模型(hidden Markov model, HMM, 被我亲切的称为黑妹妹)于20世纪70年代在语音识别领域取得巨大的成功,之后被广泛应用到自然语言处理的各个领域,成为基于统计的自然语言处理的重要方法.
先来看看基础的知识–随机过程, 或许需要复习复习大学的<概率统计>了. 随机过程是在同一样本空间Ω下的一个随机变量序列ε1,ε2,ε3,…,εn.这些变量可能出现的结果称为这个随机过程的状态.例如以掷骰子,不断掷出的骰子所形成的序列就可以看作是一个随机过程.
随机过程按照时间的连续与否可以分为连接随机过程和离散随机过程.上面举的例子就是一个离散随机过程. 离散随机过程完全可以用以下两个条件刻画:
- 初始时刻的任意状态的初始概率为
;
- 此后任意时刻的条件概率为
, 其中 t∈N
了解了离散随机过程,接着我们看一下马尔科夫链和马尔科夫性.马尔科夫链是一种特殊的离散随机过程,这种随机过程的下一时刻的状态完全由当前时刻的状态来决定,而与从前的状态无关,即”未来”只与”现在”有关,而与”过去”无关.即:
称具有以上性质的随机过程为马尔科夫过程,具有马尔科夫性.如果随机过程的马尔科夫性成时间t无关,则这个随机过程被称为齐次马尔科夫过程.下面讨论的都是齐次马尔科夫过程.
概率转移矩阵是描述马尔科夫链的重要工具.给定一个具有n个状态s1,s2,…,sn的马尔科夫链,设从状态si到sj的概率为pij,即:,则概率转移矩阵定义为
通过根据转移矩阵可以直观地看到从状态si到状态sj的概率pij,方便地计算出一个马尔科夫链的概率.也可以通过概率转移矩阵算出从状态si出发,经过n个时刻到达状态sj的概率:
再来看一下马尔科科夫模型,实际的马尔科夫模型是在马尔科夫链的基础上发展起来的.现实世界十分复杂, 实际问题往往不能直接转换成马尔科夫链来处理,观察到的事件也不能与马尔科夫链的状态一一对应,而是通过某种概率分布来与状态保持联系.这种实际事件与状态由某种概率分布来联系的马尔科夫链就是马尔科夫模型.实际上,马尔科夫模型是一个双重随机过程.其中的一重随机过程是描述基本的状态转移,而另一重随机过程是描述状态与观察值之间的对应关系.下面是马尔科夫模型的形式定义:
马尔科夫模型是一个五元组M={Ω,Σ,P,A,Θ},其中Ω={s1,s2,…,sn}是所有状态的集合;Σ={σ1,σ2,…σm}是所有观察序列的集合;是概率转移矩阵;
称为发射概率矩阵,其中
是在状态si观察到σj的概率,Θ={π1,π2,…,πn}是初始概率向量,其中πi是在状态i的初始概率.
隐马尔科夫模型(HMM)
当马尔科夫模型中的”状态”对于外界来说是不可见的时候,就转换成了隐马尔科夫模型.其实马尔科夫模型和隐马尔科夫模型的数据模型都是相同的,只是因为现实问题的情况不同,对模型的限定条件不同以及要解决的问题不同而分为两个模型.
黑妹妹模型有三个基本的问题要解决:
- 对于给定的观察序列,它出现的概率是多大.
- 对于给定的观察序列,在状态序列未知的情况下,根据现有的黑妹妹模型,它最有可能的隐含状态序列是什么.
- 给定观察序列,怎样调整现在的黑妹妹的模型参数,使得此观察序列的概率最大,即最好地”解释”了这一观察序列,也就是HMM的训练问题.
计算机人脸识别的主要方法
人脸识别方法的分类,根据研究角度的不同,可以有不同的分类方法。根据输入图像中人脸的角度,可以分为基于正面,侧面,倾斜人脸图像的人脸识别;根据图像来源的不同,可以分为静态和动态的人脸识别;根据图像的特点,可以分为灰度图像和彩色图像的人脸识别。本文的研究就是基于正面,静态的灰度图像的。根据对灰度图像的特征提取方式的不同,人脸识别方法大致可以分成三种:基于局部特征的人脸识别方法,基于整体的人脸识别方法和基于将局部和整体结合起来的人脸识别方法。
(1)结构匹配的方法
早期的人脸识别方法有检测人脸的眼睛,眉毛,鼻子和嘴巴等各种几何特征。特征点的位置,距离和角度等的各个特征和相互的联系就用作人脸识别的描述符。这种方法的主要缺点在于识别效果取决于特征定位算法的准确性。另外一种结构匹配的方法是从人脸边缘图中提取一种线性边缘图(Line edge map简称LEM)(来进行特征提取。它是基于结合模板匹配和几何特征匹配来进行的。先利用Sobel边缘算子来提取人脸二值图象,然后用人脸几何特征的提取方法来量度人脸之间的相似性。这种方法的优点在于光照不变性,存储量小和基于模板匹配的高识别率;主要缺点在于对于人脸面部的大的表情变化很敏感。
(2)隐马尔可夫模型(Hidden Markov Model,简称HMM)的方法
隐马尔可夫模型是采用概率统计的方法描述时变信号。 HMM原来是应用在语音识别领域的,并取得了相当的成功,但是由于语音信号是一维信号,而图像是二维信号,为了把HMM应用于二维的图像,就要在图像上取一个采样窗口,该窗口的宽度就是图像的宽度,高度可能只有几个像素,然后将在图像上由上至下滑动,相邻窗口之间允许重叠,这样就把人脸垂直分成了五个区域:前额,眼睛,鼻子,嘴巴,下领,然后用一个五状态的HMM模型来表达人脸。基于离散马尔可夫模型和奇异值特征的人脸检测方法.其实质是将奇异值特征转化为向量序列.再利用HMM对其进行识别,这种方法鲁棒性较好,对不同角度和不同光照条件的人脸图像都可以取得较好的识别效果。
(3)弹性图匹配(Elastic Bunch Graph Matching简称EBGM)的方法
该方法采用网格作为模板,将图像间的比较变为网格间的比较。使用一种基于动态链接结构的弹性匹配法来定位人脸,并根据人脸数据库进行匹配识别。将人脸用格状的稀疏图形描述(图1-3),图中的节点用图像位置的Gabor小波分解得到的特征向量标记,记录人脸在该顶点位置的分布信息,图的边用连接节点的距离向量标记,表示拓扑连接关系。匹配时,首先寻找与输入图像的最相似的模型图,再对图中的每个节点位置进行最佳匹配,寻找最近的己知图形。弹性匹配方法提取了人脸图像的局部特征,保留了人脸图像的空间信息,可以在一定程度上容忍人脸从三维到二维投影引起的变形。因此,对人脸变形和光照变化等具有较好的适应性,整体识别性能优于特征脸法。但是计算量大,识别速度慢。
(1)基于主成分分析(Principal Component Analysis简称PCA)的方法
PCA是一种经典的算法,它根据图像的统计特征进行正交变换,以消除原有向量各个分量之间的相关性。变换得到对应特征值依次递减的特征向量。即特征脸。利用特征脸可以重建和识别人脸。PCA方法是统计最优的,速度快,实现方便,对正面图像识别率高。但是容易受光照、人脸旋转和小形变,光照改变及位移改变等因素的影响。因此许多学者在此基础上又作了不少改进。其中一种就是基于线性鉴别分析(LDA.Linear Discrirninant Analysis) , Belhumeur等的Fisherfaces方法。它能充分利用类别的信息。Bartlett等采用独立分量分析(ICA, Independent Component Analysis)的方法识别人脸,获得了比PCA方法更好的识别效果。与PCA相比,ICA有两个优势:一是ICA获得的独立分量不需要满足正交关系,能够消除象素间的高阶统计相关性,而PCA只能消除象素间的二阶统计相关性;二是ICA获得的一组矢量比本征矢量更具空间局部描述性,具有更好的人脸描述能力。现在还出现很多其他子空间的人脸识别方法。借鉴SVM的Kernel方法,PCA, LDA等都被扩展到Kernel PCA和Kernel ICA。与线性子空间方法相比,基于Kernel的方法获得了更好的识别效果,然而计算量较大。
(2)基于人工神经网络(Artificial Neural Networks简称ANN)的方法
人工神经网络(ANN)是以对大脑的生理研究成果为基础,用机器来模拟大脑的某些机理与机制,实现某方面功能的方法,具有强大的非线性逼近能力,它既是特征提取器,又是分类器。神经网络中的神经元是人类大脑神经单元的简化,神经网络以这些具有非线性映射能力的神经元为节点,神经元之间通过加权系数连接。目前比较有代表性的方法有:混合型神经网络、卷积神经网络、基于概率决策的神经网络,主元神经网络等。与前几类方法比起来,由于对人脸识别的许多规律或规则进行显性的描述相当困难,而神经网络方法则可以通过学习的过程获得对这些规律和规则的隐性表达,因此它的适应性更强,一般也比较容易实现。但是由于人类对自身思维机理认识的不足及对人工神经元作了极度的简化,这种模拟还是极其肤浅和简单的。
(3) 支持向量机(Support Vector Machine简称SVM)的方法
SVM起源于统计学习理论,它研究如何构造学习机,实现模式分类问题。其基本思想是通过非线性变换将输入空间变换到一个高维空间,在高维空间求取最优线性分类面,以解决那些线性不可分的分类问题。而这种非线性变换是通过定义适当的内积函数(即核函数)来实现的。SVM技术中核函数及其参数的选取难度较大。由于它基于结构风险最小化原理,而不是传统计学的经验风险最小化,因而表现出很多优于己有方法的性能。由于SVM的训练需要大量的存储空问,非线性SVM 分类器需要较多的支持向量,所以速度很慢。
(4) 小波变换(Wavelet Transform)的方法
小波变换是一种时间和频率的局域变换,通过伸缩、平移等运算对图像作多尺度细化分析,可以有效地从图像中提取信息,其作用原理是使用一系列不同带宽的滤波函数,将图分为4个子图:LL, LH, HL, HH.小波变换中,将图像“主信息”映射成低频分量LL,将噪音和细节映射成高频分量HH,通过对高频分量的舍弃和对低频分量的分析实现降维和图像滤波。同时过滤掉人脸的表情因数,可以提高识别精度。小波变换的优点是能同时在时域和频域描述人脸的局部信息,并能逐步聚焦到分析对象的任何细节。同时对细微的表情不敏感,可以在一定程度上容忍光线和角度的干扰。还可以考虑人脸的局部细节,保留人脸的空间信息。国内外应用该方法取得了众多的研究成果。
现有的每一种方法都是针对某一类问题提出的,都有自己的优缺点。基于局部特征识别方法的识别结果取决于特征定位的准确性,这类的方法现在已经发展到了弹性图匹配,总体来说识别率较高。然而,其缺点在于要求图像的像素较高,一般要128*128的像素大小。因此,只有在人脸与摄像机离得很近时才可能利用这种方法。基于整体的识别方法中,每一种都有自己的特点。近年来,很多研究者尝试采取将多分类器结合的方法来提取较稳定、受人脸姿态变化和光照条件等因素影响小的识别特征,取得了良好的识别效果。虽然多分类器组合还有很多问题值得进一步深入研究,但是却预示了人脸识别技术今后的发展方向。
在实验室待了一段时间了,在实验室的报告及小组会议中,深刻的体会到了HMM算法 ,SVM等的重要性.
这几天翻译了一篇使用隐马尔科夫模型(HMM)进行语音识别的论文的部分.
这篇论文是通过google的学术搜索搜到的,通过在互联网上的查找,发现这篇论文引用率很高。(排在google的第一位),并且没发现对其的汉语翻译。或许这篇是对该文的第一篇汉语翻译。原文一共有25页,由于时间的原因,只翻译其中部分内容。并对翻译较多的部分贴上原文对照。原文内容见网址:
http://www.jstor.org/view/00401706/ap040131/04a00020/0
使用隐马尔科夫进行语音识别
作者:B.H.Juang,L.R.Rabiner
语言语音研究所,Bell实验室
Murray Hill,NJ 07974
摘要:
在近几年发表的论文和大型语言语音会议上中,隐马尔科夫定律已经成为语音识别研究的主导方法。这个方法之所以如此流行就在于其固有的统计框架:从有限语音训练集数据中训练出模型近似参数的简单易行;模型可根据特殊的词汇、声音等改变认知系统的大小、种类或模型的架构的灵活多变;实现整个认知系统的简单方便。在这篇解释性的文章中,我们将讲解应用在语音识别中的非常重要的统计方法,并讨论一系列尚未解决的原理性的和实际性的问题,因为他们很重要并对不同系统实现的性能有很大影响。
关键词:
Baum-Welch算法,Incomplete data problem ,Maximum a posteriori decoding;极大似然度
机器语音识别已经达到了可以投入到实际使用的水平了。大量的语音识别系统已经应用在众多应用领域如语音拨号、语音应答、语音查询股价、语音报价等。导致这些有用的技术能够应用于实际是因为最近技术的进步使得语音认知系统能辨别不同的说话者并达到了一定量的认知词汇。其中的一项进步就是统计方法的使用,马尔科夫模型就是其中一个很有趣的方法。
使用HMM来进行语音识别在过去的一段时间内很流行。虽然报告过的大量基于HMM的语音认知系统不易在此深入地讨论,列出其中最重要的部分和这些系统的成功之处仍然是值得的。其中包括在卡内基梅隆大学早期进行的Dragon System的工作,IBM公司在语音系统方面进行的长期的工作,在Bell实验室的工作,MIT林肯实验室的工作,Philips在使用HMM进行的整词识别的工作,DARPA资源管理任务,及其它在该相关领域的众多的工作。HMM的广泛流行可以归功于它简单的算法结构和它相对于其它语音识别方法的清晰高效性。
性能,特别是精度,是评价一个语音认知系统实际价值的关键因素。语音识别任务经常根据它的需求,如是处理特定的还是非特定说话者,处理单个词汇的输入还是连续的一个句子的输入,来进行分类。如今,该技术能够轻松达到对非特定说话者的精确识别,当识别由非特定说话者说出的连续数字字串时,错误率仅有2-3%.更进一步,但在非特定说话者以特定的语法限制说出连续1000个词时,一些使用HMM的系统证实可以达到96%的识准率。这些结果说明了自动语音识别系统在指定的应用中的有用性和可用性。
虽然隐马尔科夫模型显著地改善了当前语音识别系统的性能。完全流利的、非特定说话者的语音识别仍是一个普遍存在并等待着解决的问题。例如,没有一个系统能够识别没有限制(话题)的对话语音,也没有一个好的方法使用借助于有限语料库的统计方法去推断语言的结构。这篇解释性的文章的目的是提供HMM的原理的一个概述,讨论统计方法的作用,并指出一系列值得注意和理解的原理性和实践性问题,以便于推动语音识别这一领域的发展。
1.语音的度量和建模
语音是不稳定的信号量。当我们说话时,我们的发音器官(嘴唇、下颚、舌头,如图1所示)调节空气压力并影响气流产生一系列的声音。虽然任何一个声音的范围会是在几千赫兹的范围内,我们的关节配置(声道形状,舌头移动等)经常不能忍受每秒超过10次的动态变化。语音建模包括两个方面:(1)以10毫秒采样分析不同声音的短时间的范围属性,(2)根据关节配置的不同,以100毫秒采样去分析长时间声音的变化特征。
2.隐马尔科夫模型统计方法
在HMM 方法发展的过程中,如下问题显得特别有意思。首先,给出一个观察序列O和一个模型λ,我们怎么样有效的度量模型λ产生观察序列O的概率,即Pr (O|λ)?第二,给出观察序列O,反过来我们怎么解决估算模型λ中的参数?虽然(8)中的概率不完全依赖于q,(译者注:(8)是在论文前出现的一个公式),关于导致观察序列O的最可能的状态序列q的信息在很多的应用中都是需要的。第三个问题就是怎么有效地从观察序列O中推出最有可能的状态序列q.通常我们将这三个问题称为(1)评估问题(2)估计问题(3)解释问题。
在下面的段落中,我们将描述几个对这三个问题通用的解决方法。
2.1 评估问题
在评估问题中主要关注的是计算的效率。如果没有复杂度约束,可以直接简单的直接计算出Pr(O|λ).在公式(8)中,一共有个可能的q序列。总共的计算需要2*T*个操作。计算公式(8)同时没有指数级增长的计算量,是HMM技术实现的第一个挑战。
幸运的是,使用著名的前向-后向算法,这个昂贵的计算开销可以轻松的减轻。
2.2 估计问题
给出一个观察序列(或一个序列的集合)O.估计问题包括找到合适的模型参数使模型最可能产生给定的序列。在语音识别中,这经常被称为“训练”。我们用来获取模型参数的给定序列,被成为训练序列,即使这儿的准则是统计的。
2.3 解释问题
正如前面所说的,我们经常对找到产生观察序列O极大似然度的状态序列感兴趣。
虽然HMM的概率度量定义中没有涉及到状态序列,在很多的应用场合中仍然需要知道极大似然度的状态序列。举个例来说,如果我们使用一个词汇模型的状态来代表该词汇中的特定的声音,就有必要知道语音片段和词的声音之间的关系,因为单独的语音片段为语音识别提供了有用信息。
2.4 使用HMM进行语音识别
HMM在语音识别中的应用和其他传统的模式匹配方法差不多。成功的使用HMM算法包括一下步骤:
1.定义一个用来建模的L声音类的集合。例如音素或词汇,定义声音类V={v1,v2,..,v3};
2. 对于每一个类,积累一定量的已知的标记语音集合。
3.在训练集合的基础上,解决估计问题,为每个类Vi获取一个最好的模型λi.
4. 在认识的过程中,对每个未知观察序列O估计Pr(O|λi)(i=1,2,…,L)),并为每个类Vi确定产生O的语音.其满足:
Pr(O|λi) = Pr(O|λi)
本文将不详细地描述如何实现一个HMM识别器。感兴趣的读者可以阅读Jelinek,Bahl,Mercer(1975)及Levinson,Rabiner,Sondhi(1983)的文章。
3.使用隐马尔科夫模型进行语音识别的优点
HMM方法的优点体现在两个大的方面:(1)它的数学框架和(2)它的实现结构。在数学框架方面,我们讨论问题的连续统计方法学和它为相关问题提供的直接的解决方案。
在实现结构方面,我们讨论它在处理不同的、复杂的语音认知任务的灵活性和实现的简单性,这些都是在实际工程领域中需要考虑的关键问题。
3.1 HMM方法学的连续统计框架
3.2 HMM的训练算法
3.3 模型灵活性
4.进一步考虑隐马尔科夫定理的问题
5.总结
在这篇文章中,我们复习了HMM的统计学方法,展示了这个方法的统计学框架及由其带来的灵活性和通用性,特别是在语音识别方面,以及其实现的简单性,使其在工程实现方面显出优势。我们还指出了在一般的HMM方法中值得注意的方面,希望有人能在这些方面取得进步,这些进步将会大大提高性能。这些领域包括建模标准,特别是最小分类错误,将新的特征和之前的语言学知识的融合,对状态的建模和其在语音识别领域中的应用。根据我们现在的理解,HMM系统识别非特定说话者在一定量词汇量的语音识别率已经高达95%。随着技术的发展,不难预料到基于HMM模型的语音识别系统将能应用到我们的日常生活中去。
(版权归原作者所有,我转贴是方便自己学习)