人脸识别实验报告.docx
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这些特征向量都是10304*1的大小,跟我们一开始处理后的照片向量的大小一样。这些就是特征脸。特征脸可以线性组合成所有库里的脸。
6用特征脸对库里的脸进行标示,也就是将库里的每张脸图数据转化成各个特征脸所占的比重。
即
ωk=νkTϕi,i=1,2,3…200,k=1,2,3…n,n是最后选出的方差数量
ΩiT={ω1,ω2,ω3,ω4…ωn}
5归一化处理。数据归一化处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量
纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
我使用的是Z-score法。经过处理得数据符合标准正态分布,即均值为0,标准差为1,转化函数为
设Z是预处理图像的矩阵,每一列对应一个减去均值图像之后的图像。则,协方差矩阵为S=TTT,并且对S的特征值分解为
Sνi=TTTνi=λiνi
然而,TTT是一个非常大的矩阵。因此,如果转而使用如下的特征值分解。
TTTui=λiui
此时,我们发现如果在等式两边乘以T,可得到
TTTTui=λiTui
这就意味着,如果ui是TTT的一个特征向量,则νi=Tui是S的一个特征向量。我们的库里有200张112*92像素的图像,则TTT是一个200*200的矩阵,这就比原先的10304*10304的协方差矩阵要容易处理许多。
是协方差矩阵ZZT的特征向量,而对应的特征值就是各个向量所占的比重。但是Z是个10304*200的矩阵,那么ZZT就是个10304*10304的矩阵。使用matlab直接求其特征值与特征向量不太实际。
所以我们考虑一个简单的运算方法:
协方差矩阵的秩受到训练图像的限制:如果有N个训练样本,则最多有N− 1个对应非零特征值的特征向量,其他的特征向量对应的特征值都是0。如果训练样本的数目比图像的维数低,则可以通过如下方法简化主成份的计算。
按照u是单位向量来最大化上式,就是求1mi=1mx(i)x(i)T的特征向量。而此式是数据集的协方差矩阵。
在实际应用中,我们不止面临二维的数据。因此不能使用几何的形式呈现,但原理也是一样。就是找到一组相互正交的单位向量uk,然后根据贡献率考虑选择其中的部分作为考量的维数,这也就实现了数据的降维。
三、实验步骤
为了将u选出来,我们先对数据进行预处理。先求出所有数据的平均值,然后用数据与平均值的偏差代替数据本身。然后对数据归一化以后,再代替数据本身。
而我们求最大的投影和,其实就是求各个数据点在U上的投影距离的方差最大。而XTu就是投影的距离。故我们要求Baidu Nhomakorabea式的最大值:
1mi=1m(x(i)Tu)2=uT(1mi=1mx(i)x(i)T)u
现在我们有两项数据,是二维的。那么如何将这两项变量转变为一个来描述飞行员呢?由图中的点的分布可知,如果我们找到一个方向的U,所有的数据点在U的方向上的投影之和最大,那么该U就能表示数据的大致走向。而在垂直于U的方向,各个数据点在该方向的投影相对于在U上的投影如果足够小,那么我们可以忽略掉各数据在该方向的投影,这样我们就把二维的数据转化成了在U方向上的一维数据。
即
Z={Γ1,Γ2,Γ3,Γ4…Γ200}
2将这200个向量的每个元素相加起来求出平均值。再用Z里的每一个向量减去这个平均
值得到每个的偏差。
平均值Γ=1200k=1200Γk,每个向量的偏差ϕk=Γk-Γ
即最后
Z={ϕ1,ϕ2,ϕ3,ϕ4…ϕ200}
3接下来我们就要针对这些预处理后的数据进行降维。我们要求的N个相互正交的向量就
需要注意的是,上面的特征向量νi没有进行归一化,如果需要,应该在后面在进行处理。
4降维处理。上面的步骤已经求到了所有的特征向量与特征值。而特征值就是各数据点在该特
征向量上的方差。跟据PCA,我们要选出占主要比重的特征向量即可,而判定标准就是特征值。
先把方差(特征值)降序排列,并把对应的特征向量也排列好。依次选择方差,使选出的方差和占所有方差和大约95%左右。然后选择对应的特征向量。其余的特征向量与特征值可以抛弃不用了。这就完成了降维。(③中一共有200个不为零的方差(特征值))
1、将库里的400张照片分成两组。一组作为训练,一组作为库。每个人的前五张照片作为训练,后五张作为库。训练的照片按照顺序的数字重命名。库的照片名字不变。
2、库照片处理。
1将每一张库的照片转化成N维的向量。(库里的照片是112*92,故将转化成的矩阵按列
或行展开,就是个10304维的向量)我们稍后要对如此多维的向量用PCA进行降维。然后把这些向量存入一个矩阵里。而我是将这200个向量以列的形式存在了矩阵里。
人脸识别——特征脸方法
贾东亚12346046
一、实验目的
1、学会使用PCA主成分分析法。
2、初步了解人脸识别的特征法。
3、更熟练地掌握matlab的使用。
二、原理介绍
1、PCA(主成分分析法介绍)
引用一个网上的例子。假设有一份对遥控直升机操作员的调查,用x1(i)表示飞行员i的
飞行技能,x2(i)表示飞行员i喜欢飞行的程度。通常遥控直升飞机是很难操作的,只有那些非常坚持而且真正喜欢驾驶的人才能熟练操作。所以这两个属性x1(i)和x2(i)相关性是非常强的。我们可以假设两者的关系是按正比关系变化的。如下图里的任意找的向量u1所示,数据散布在u1两侧,有少许噪声。
x*=x-μσ
其中μ为所有数据的均值,σ为所有样本数据的标准差。
在③里求得的特征值就是方差。所以我们要用1λk乘上每一个对应的特征向量。
本来这个归一化处理应该放在第一步的数据预处理那里。但由于那里的计算还没有涉及到协方差矩阵,而我们需要的方差在后面才出现,故把归一化处理放在这里。
即③中,
νi=1λiTui
7人脸识别。先对训练的脸图进行预处理。预处理即①②中所说的求偏差。求到训练图的
偏差向量后,如⑥那样用特征脸对训练图进行标示。
即求得
Ω*T={ω1,ω2,ω3,ω4…ωn}
然后求Ω*T与ΩiT的欧式距离,此距离表明两图的接近度。即
ε=Ω*T-ΩiT2
6用特征脸对库里的脸进行标示,也就是将库里的每张脸图数据转化成各个特征脸所占的比重。
即
ωk=νkTϕi,i=1,2,3…200,k=1,2,3…n,n是最后选出的方差数量
ΩiT={ω1,ω2,ω3,ω4…ωn}
5归一化处理。数据归一化处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量
纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
我使用的是Z-score法。经过处理得数据符合标准正态分布,即均值为0,标准差为1,转化函数为
设Z是预处理图像的矩阵,每一列对应一个减去均值图像之后的图像。则,协方差矩阵为S=TTT,并且对S的特征值分解为
Sνi=TTTνi=λiνi
然而,TTT是一个非常大的矩阵。因此,如果转而使用如下的特征值分解。
TTTui=λiui
此时,我们发现如果在等式两边乘以T,可得到
TTTTui=λiTui
这就意味着,如果ui是TTT的一个特征向量,则νi=Tui是S的一个特征向量。我们的库里有200张112*92像素的图像,则TTT是一个200*200的矩阵,这就比原先的10304*10304的协方差矩阵要容易处理许多。
是协方差矩阵ZZT的特征向量,而对应的特征值就是各个向量所占的比重。但是Z是个10304*200的矩阵,那么ZZT就是个10304*10304的矩阵。使用matlab直接求其特征值与特征向量不太实际。
所以我们考虑一个简单的运算方法:
协方差矩阵的秩受到训练图像的限制:如果有N个训练样本,则最多有N− 1个对应非零特征值的特征向量,其他的特征向量对应的特征值都是0。如果训练样本的数目比图像的维数低,则可以通过如下方法简化主成份的计算。
按照u是单位向量来最大化上式,就是求1mi=1mx(i)x(i)T的特征向量。而此式是数据集的协方差矩阵。
在实际应用中,我们不止面临二维的数据。因此不能使用几何的形式呈现,但原理也是一样。就是找到一组相互正交的单位向量uk,然后根据贡献率考虑选择其中的部分作为考量的维数,这也就实现了数据的降维。
三、实验步骤
为了将u选出来,我们先对数据进行预处理。先求出所有数据的平均值,然后用数据与平均值的偏差代替数据本身。然后对数据归一化以后,再代替数据本身。
而我们求最大的投影和,其实就是求各个数据点在U上的投影距离的方差最大。而XTu就是投影的距离。故我们要求Baidu Nhomakorabea式的最大值:
1mi=1m(x(i)Tu)2=uT(1mi=1mx(i)x(i)T)u
现在我们有两项数据,是二维的。那么如何将这两项变量转变为一个来描述飞行员呢?由图中的点的分布可知,如果我们找到一个方向的U,所有的数据点在U的方向上的投影之和最大,那么该U就能表示数据的大致走向。而在垂直于U的方向,各个数据点在该方向的投影相对于在U上的投影如果足够小,那么我们可以忽略掉各数据在该方向的投影,这样我们就把二维的数据转化成了在U方向上的一维数据。
即
Z={Γ1,Γ2,Γ3,Γ4…Γ200}
2将这200个向量的每个元素相加起来求出平均值。再用Z里的每一个向量减去这个平均
值得到每个的偏差。
平均值Γ=1200k=1200Γk,每个向量的偏差ϕk=Γk-Γ
即最后
Z={ϕ1,ϕ2,ϕ3,ϕ4…ϕ200}
3接下来我们就要针对这些预处理后的数据进行降维。我们要求的N个相互正交的向量就
需要注意的是,上面的特征向量νi没有进行归一化,如果需要,应该在后面在进行处理。
4降维处理。上面的步骤已经求到了所有的特征向量与特征值。而特征值就是各数据点在该特
征向量上的方差。跟据PCA,我们要选出占主要比重的特征向量即可,而判定标准就是特征值。
先把方差(特征值)降序排列,并把对应的特征向量也排列好。依次选择方差,使选出的方差和占所有方差和大约95%左右。然后选择对应的特征向量。其余的特征向量与特征值可以抛弃不用了。这就完成了降维。(③中一共有200个不为零的方差(特征值))
1、将库里的400张照片分成两组。一组作为训练,一组作为库。每个人的前五张照片作为训练,后五张作为库。训练的照片按照顺序的数字重命名。库的照片名字不变。
2、库照片处理。
1将每一张库的照片转化成N维的向量。(库里的照片是112*92,故将转化成的矩阵按列
或行展开,就是个10304维的向量)我们稍后要对如此多维的向量用PCA进行降维。然后把这些向量存入一个矩阵里。而我是将这200个向量以列的形式存在了矩阵里。
人脸识别——特征脸方法
贾东亚12346046
一、实验目的
1、学会使用PCA主成分分析法。
2、初步了解人脸识别的特征法。
3、更熟练地掌握matlab的使用。
二、原理介绍
1、PCA(主成分分析法介绍)
引用一个网上的例子。假设有一份对遥控直升机操作员的调查,用x1(i)表示飞行员i的
飞行技能,x2(i)表示飞行员i喜欢飞行的程度。通常遥控直升飞机是很难操作的,只有那些非常坚持而且真正喜欢驾驶的人才能熟练操作。所以这两个属性x1(i)和x2(i)相关性是非常强的。我们可以假设两者的关系是按正比关系变化的。如下图里的任意找的向量u1所示,数据散布在u1两侧,有少许噪声。
x*=x-μσ
其中μ为所有数据的均值,σ为所有样本数据的标准差。
在③里求得的特征值就是方差。所以我们要用1λk乘上每一个对应的特征向量。
本来这个归一化处理应该放在第一步的数据预处理那里。但由于那里的计算还没有涉及到协方差矩阵,而我们需要的方差在后面才出现,故把归一化处理放在这里。
即③中,
νi=1λiTui
7人脸识别。先对训练的脸图进行预处理。预处理即①②中所说的求偏差。求到训练图的
偏差向量后,如⑥那样用特征脸对训练图进行标示。
即求得
Ω*T={ω1,ω2,ω3,ω4…ωn}
然后求Ω*T与ΩiT的欧式距离,此距离表明两图的接近度。即
ε=Ω*T-ΩiT2