正交变换.docx
- 文档编号:17425833
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:18
- 大小:631.76KB
正交变换.docx
《正交变换.docx》由会员分享,可在线阅读,更多相关《正交变换.docx(18页珍藏版)》请在冰豆网上搜索。
正交变换
正交变换
设M是对称矩阵,P是正交矩阵,N=P^tMP称为M的正交变换。
(正交矩阵的定义为:
P.P^t=I)
正交变换既是相似变换,也是相合变换。
正交变换不改变M的特征值。
正交变换最初来自于维基百科,这种矩阵元被称为简正坐标.用质量加权坐标表示的分子内部运动的动能,用质量加权坐标表示的分子内部势能,用质量加权坐标表示的分子内部势能,由力常数的数学表达式可以知道fij=fji因而矩阵为一个正交变换通过酉变换可以把矩阵变形成为对角矩阵的形式:
。
则有:
它的每一个矩阵元都是分子所有质量加权坐标的线性组合,总的矩阵元的数量恰巧等于质量加权坐标的个数,这些矩阵元就被称作简正坐标,而这些变换中分子的势能不变,所以正交变换又称为酉变换.
采用OpenCV进行人脸识别
一、实现原理
本程序的实现方法请参看《facerecognitionusinganembeddedHMM》。
二、开发工具
1、OpenCV视觉开发库
2、MFC
三、程序运行
1、 主界面
主界面包括识别区域和结果区域。
如下:
2、 参数设置(SetParams)
u 状态数的设置,默认为5个超态,从上到下分别代表前额(3),眼睛(6),鼻子(6),嘴巴(6),下巴(3)
u 观察向量2D-DCT:
包括观察向量大小(OBS),DCT大小和Delta大小
u 最大迭代次数,默认为80
u 混合高斯次数,默认为3
3、 人员管理(PerManage)
人员管理界面如下:
u 添加人员信息:
输入人员信息具有Name与NO属性,NO不可重复。
u 删除人员信息:
在人员列表中选择要删除的人员,然后进行删除,人员信息删除后,包括人员的图片也进行删除,该人员也不在识别范围内。
u 添加人员图片:
一个人可以多张图片,点击要添加的人员,可以通过此按钮添加图片。
添加前最好在..\HMM\××文件夹里(××表示该人员名称)。
u 删除人员图片:
点击要删除的图片,按“DelImage”按钮进行删除,图片删除后只是该图片不在训练的区域。
u 训练:
在添加一个人员后、添加或者删除某人的照片后,都必须进行训练,训练的目的是提高识别效率,一个人的图片越多,训练后系统就“记住”了更多该人的特征
4、 识别(Recognize)
在主界面中,单击“Browse”选择要进行识别的图片,然后单击识别,最后的结果会在右边的区域里列出来,结果只体现最相似的前三位人员。
如下图,图中添加了Vadim的一张为经过训练的图片进行识别,识别结果的第一相似是Vadim,第二和第三是Valery和Victor。
四、实验结果
本实验对Yale人脸库进行训练和识别,该库有人员15人,每人有11张不同的表情照片。
1、 测试一
取每人的前10张表情进行训练,最后一张进行识别,识别结果如下:
由此可见,该识别率为100%
2、 测试二
取每人的前5张表情进行训练,对剩下的5张进行识别,识别结果如下:
正确识别率:
1-6/(15*5)=92%
对识别错误的图像进行分析,可以发现都是s7.bmp,这些图像都是在光线较暗时的脸部表情。
为保证高识别率,应训练尽可能多的图像,特别是光线较暗的图像。
五、参考文献
《facerecognitionusinganembeddedHMM》
《ATutorialonHiddenMarkovModels》
《AHiddenMarkovModel-BasedApproachforFaceDetectionandRecognition》
《ATutotialonHiddenMarkovModelsandSelectedApplicationsinSpeechRecognition》
《隐马尔可夫模型的研究及其在图像识别中的应用》
《基于连续隐马尔可夫模型的人脸识别方法》
《基于马尔可夫模型的JPEG图像隐写分析》
六、附件
源代码,请参考上一篇文章《源代码:
采用OpenCV进行人脸识别》
可运行EXE
隐马尔可夫模型(HMM)
2009-04-2122:
50
HMM不同于Markov模型,观察值和状态值不是简单的一一对应的关系。
举个例子,现在我们要设计一个语音识别系统,那么首先需要了解人是如何识别自然语言的。
假设我们听到了一个句子,首先接受的信息,必然是每个单词(字)的发音。
由于自然语言同一个发音,可能有多种不同的意思,所以人在听到发音后,大脑马上将其与自身“语言库”中的候选含义进行比对,并根据它相邻的其他单词的发音,来筛选出最后可能的含义,进而知道说话人想表达的意思。
对于使用汉语,我们都有一个切身体会:
如果我们听到一个音,并且在毫无姿体语言提示下,是很难知道那个音的意思。
相反,如果我们听到的是词组,则我们更加容易地去判断每个字音的含义。
我们听到一个字的发音(观察值),而无法简单快速地判断它的含义(状态),而要借助相邻的发音(转换概率),来判断最有可能说话人想表达的意思。
另外,如果我们想表达相同的意思,有时也可以使用多种不同的发音来完成(一种状态,可以对应多种不同的观察值)。
HMM就是一个为解决这类似这样的问题而引入的一个模型。
HMM是一个MarkovChain,每种状态会产生若干个观察值。
当你得到观察序列之后,目的就是要推测隐藏在观察序列下的状态序列,这就是“隐”的含义。
而这个模型,很适合用于与时间有关的序列建模。
这现今,HMM应用的领域有:
语音识别,人脸识别,姿势识别,手写字体识别,以及分子生物学,生化基因工程等等。
HMM的定义:
1、何为马尔可夫模型
我们在现实生活中常会遇到一下问题:
对于某事物,其发展方向随机化,即在不同时刻事物可能处于不同状态。
而通过对事物各种状态的观测,我们可能发现这些状态的总数是有限的,并且下一状态的出现概率,只和当前状态有关。
典型的例子就是投硬币和天气变化。
这里,我们在“天气变化”里,抽象出Markov模型。
假设天气状态分为三种,分别是:
S1:
天晴S2:
下雨S3:
多云
并假设我们通过观察,得到一个观测序列O=O1O2O3OT。
这里,每个脚标代表某固定长度的时间跨度,例如可以是1小时,或者是一整天。
正所谓“天有不测之风云”,每种状态都有互相转化或者持续原来状态的可能。
换句话,我们需要一个3×3的矩阵,来描述状态到状态之间的变化概率。
假设概率如下,并称之为“转换概率”:
其中,aij表示由Si转换到Sj的概率。
有了上述的假设,还未足够,我们还需提供一个初态向量∏。
对于本问题,这是一个1×3的向量,假设为∏=[100]T,表示在t=0时刻中,天晴的概率为1。
这样,我们就可以用向量与矩阵的乘法来描述天气的变化概率:
定义状态概率向量
令
则
对于上式,当A为单位矩阵时,状态概率向量将不变,即保持在一个稳态当中。
2、马尔可夫模型的标准定义
1、状态集合S={S1,S2,…,SN}
2、转换概率矩阵
3、初态
4、观察序列
这里,我们看到Ot∈S,表明每个观察值与状态值是存在一一对应的关系,另外,(1.1)式描述的事实表明仅仅相邻的两个观察值(状态值)存在影响关系,并且下一状态仅与当前状态有关。
满足(1.1)式的状态序列,称为马尔可夫链(MarkovChain)。
HMM的三个问题
2009-04-2122:
51
给定观察序列O=O1O2O3OT,λ=(A,B,π)
1、P(O|λ)=?
2、找出最能够解释O的状态序列Q=q1q2q3…qT
3、如何去调整λ的值,令到P(O|λ)能达到最大值。
HMM第一个问题解决方法:
前后向(Forward-Backward)算法
我们现在解决问题P(O|λ)=?
。
一个比较直观的方法就是先对Q进行排列,即在状态集S中任取T个元素,并对之进行排列。
对每种排列,进行以下运算:
这样,我们就能知道对于每种排列所对应的概率,然后,将所有的排列概率相加
这种方法看似可行,但运算的时间复杂度非常可观,运算效率低。
造成这个结果是因为在这种计算方法中,进行了大量的重复计算。
因此,我们要另觅蹊径,通过其他方法来简化计算。
针对造成大量计算的原因,我们可以先计算小规模问题,使得之前计算出来的结果,能够在后续的较大规模的计算中使用。
对于问题1,一般借助一种前后向(Forward-Backward)算法进行迭代求解。
方法如下:
定义前推式:
显然,第t+1次计算可以直接使用第t次计算的结果。
并且,对于t+1时刻的第j个状态的概率,只需通过N+1次计算就能得出。
又因为j最多为N,所以在每次时刻迁移的过程,计算量为O(N2)。
因为从初态开始计算,时刻迁移次数为T,所以求算P(O|λ)时间复杂度为O(N2T)。
同理,我们可以定义后推式:
自然地,时间复杂度与前推法一致。
有了上述的两种推导法,那么我们就可以解决一个问题:
在t时刻,隐藏在观察序列下的最有可能的状态是什么。
我们定义如下一个变量来描述:
到此,为何要解决P(O|λ)的原因已经很清晰,它是得出γt(i)的一个跳板。
问题解决完毕。
HMM第二个问题解决方法:
Viterbi算法
现在,我们再来解答第二个问题,找出最能够解释O的状态序列Q=q1q2q3…qT。
问题用公式描述如下:
这里介绍一下解决这个问题的一个方法,所谓的Viterbi算法
由于要直接去解答Q*,必然涉及到Q。
之前已提到,Q的数量是一个组合数,而且一旦采用直接的方法,就会必然导致重复计算。
因此,与之前的思路一样,先解决与本问题有关的、规模较小的子问题,并利用子问题的结论,作为解决本问题的参考。
所以,Viterbi算法的核心思想,就是动态规划法。
定义如下变量:
注意,qtqt+1的转变概率由aij决定,同时也要考虑bj(Ot+1)的影响。
由于这种算法的特性,回溯的次数跟矩阵A,B的特点有直接关系,因此这里,是否可以设计这样一个算法对Viterbi算法进行优化:
先去判断A,B的特点,并据此计算出由t到t+1时刻回溯次数的数学期望E。
那么,对E较小的情况,我们回溯最多执行E次,就能在高概率的情况下得出δt+1(j);而在E较大的情况下,我们才需要完全求算每种可能。
本方法是本人假想,有待实现。
回到Viterbi算法:
上式是求算t时刻状态的公式,是一个反函数。
以下是Viterbi算法的完整描述:
问题2解决完毕。
HMM第三个问题解决方法:
EM算法
现在,解决第三个问题,同时,也是最难的一个问题,即如何去调整λ的值,令到P(O|λ)能达到最大值。
有两种方法可以实现,Baum-WelchMethod和EMAlgorithm这里,只介绍一下EM算法:
首先定义变量:
上式说明在λ条件下,o,q同时发生的概率。
以下是一个很神奇的函数,所谓的Q函数,用来估计可以令P(O,Q|λ)最大化的λ。
上述式子中的λ为待估计的参数,而λ’则为当前的HMM。
加对数符号目的只是将(3.1)中的乘法转化为加法,方便运算。
另外,由于p(O|λ’)与q无关,所以求Q函数的最大值,就转化为求以下函数的最大值:
而且,我们有以下事实作为Q’函数的约束:
于是,我们可以使用拉格朗日乘数法来求最大值:
先将Q’展开
分别求:
3.2式的求解过程,注意到:
求解完毕。
3.3式的求解过程:
于是有:
求解完毕。
3.5式求解过程:
于是有:
求解完毕。
通过上述的三个最终的式子,我们可以得到一个全新的λ,并使得
这就是Q函数最神奇的地方。
只要将新的λ代入到Q(λ,λ’)的λ’中,再此计算新的λ,反复以往,则最后能逼近最优解。
一般为了节省计算量,都会设定一个值ω,当p(O|λ)≧ω,则令计算结束。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 正交 变换
![提示](https://static.bdocx.com/images/bang_tan.gif)