⑴ 关于用PCA做人脸识别
PCA is a vector space transform often used to rece multidimensional data sets to lower dimensions for analysis.
your question 1 is somehow wrong.
I do not know how much you have already know about pattern classification. Generally, we represent an object with a vector, the more attributes it has, the dimensions the vector has. For example, a 25 years old male [25, 0] a 35 years old female [35,1]
However, an object always has a lot of attributes, which makes the dimension of the vectors very high. This fact leads to huge computation and worse result (in most cases). We can understand it like this, of course to represent you alone, you need a lot of attributes, say, 100. But to distinguish you from me, only 10 will be enough. The rest of the 100 numbers then becomes "noise" in our classifier.
This is why we need to do "feature selection", "dimension rection" etc.
PCA reces dimension by retaining those characteristics of the data set that contribute most to its variance. You may want to read some paper about SVD to understand it better.
For K-L transform, actually I never heard that before. But I guess it might be another name of SVD.
If you have any question, feel free to contact me (by send messages).
⑵ 如何结合pca算法和最近邻法进行人脸识别
%一个修改后的PCA进行人脸识别的Matlab代码
% calc xmean,sigma and its eigen decomposition
allsamples=[];%所有训练图像
for i=1:40
for j=1:5
a=imread(strcat('D:\rawdata\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
% imshow(a);
b=a(1:112*92); % b是行矢量 1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右
b=double(b);
allsamples=[allsamples; b]; % allsamples 是一个M * N 矩阵,allsamples 中每一行数据代表一张图片,其中M=200
end
end
samplemean=mean(allsamples); % 平均图片,1 × N
for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean是一个M × N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”
end;
sigma=xmean*xmean'; % M * M 阶矩阵
[v d]=eig(sigma);
d1=diag(d);
[d2 index]=sort(d1); %以升序排序
cols=size(v,2);% 特征向量矩阵的列数
for i=1:cols
vsort(:,i) = v(:,index(cols-i+1) ); % vsort 是一个M*col(注:col一般等于M)阶矩阵,保存的是按降序排列的特征向量,每一列构成一个特征向量
dsort(i) = d1( index(cols-i+1) ); % dsort 保存的是按降序排列的特征值,是一维行向量
end %完成降序排列
%以下选择90%的能量
dsum = sum(dsort);
dsum_extract = 0;
p = 0;
while( dsum_extract/dsum < 0.9)
p = p + 1;
dsum_extract = sum(dsort(1:p));
end
i=1;
% (训练阶段)计算特征脸形成的坐标系
while (i0)
base(:,i) = dsort(i)^(-1/2) * xmean' * vsort(:,i); % base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化,详见《基于PCA的人脸识别算法研究》p31
i = i + 1;
end
% add by wolfsky 就是下面两行代码,将训练样本对坐标系上进行投影,得到一个 M*p 阶矩阵allcoor
allcoor = allsamples * base;
accu = 0;
%
for i=1:40
for j=6:10 %读入40 x 5 副测试图像
a=imread(strcat('D:\rawdata\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
b=a(1:10304);
b=double(b);
tcoor= b * base; %计算坐标,是1×p阶矩阵
for k=1:200
mdist(k)=norm(tcoor-allcoor(k,:));
end;
%三阶近邻
[dist,index2]=sort(mdist);
class1=floor( index2(1)/5 )+1;
class2=floor(index2(2)/5)+1;
class3=floor(index2(3)/5)+1;
if class1~=class2 && class2~=class3
class=class1;
elseif class1==class2
class=class1;
elseif class2==class3
class=class2;
end;
if class==i
accu=accu+1;
end;
end;
end;
accuracy=accu/200 %输出识别率
函数调用是定义函数,然后用函数名进行调用就可以了
⑶ 人脸识别的识别算法
人脸识别的基本方法
人脸识别的方法很多,以下介绍一些主要的人脸识别方法。
(1)几何特征的人脸识别方法
几何特征可以是眼、鼻、嘴等的形状和它们之间的几何关系(如相互之间的距离)。这些算法识别速度快,需要的内存小,但识别率较低。
(2)基于特征脸(PCA)的人脸识别方法
特征脸方法是基于KL变换的人脸识别方法,KL变换是图像压缩的一种最优正交变换。高维的图像空间经过KL变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以张成低维线性空间。如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法的基本思想。这些方法需要较多的训练样本,而且完全是基于图像灰度的统计特性的。目前有一些改进型的特征脸方法。
(3)神经网络的人脸识别方法
神经网络的输入可以是降低分辨率的人脸图像、局部区域的自相关函数、局部纹理的二阶矩等。这类方法同样需要较多的样本进行训练,而在许多应用中,样本数量是很有限的。
(4)弹性图匹配的人脸识别方法
弹性图匹配法在二维的空间中定义了一种对于通常的人脸变形具有一定的不变性的距离,并采用属性拓扑图来代表人脸,拓扑图的任一顶点均包含一特征向量,用来记录人脸在该顶点位置附近的信息。该方法结合了灰度特性和几何因素,在比对时可以允许图像存在弹性形变,在克服表情变化对识别的影响方面收到了较好的效果,同时对于单个人也不再需要多个样本进行训练。
(5)线段Hausdorff 距离(LHD) 的人脸识别方法
心理学的研究表明,人类在识别轮廓图(比如漫画)的速度和准确度上丝毫不比识别灰度图差。LHD是基于从人脸灰度图像中提取出来的线段图的,它定义的是两个线段集之间的距离,与众不同的是,LHD并不建立不同线段集之间线段的一一对应关系,因此它更能适应线段图之间的微小变化。实验结果表明,LHD在不同光照条件下和不同姿态情况下都有非常出色的表现,但是它在大表情的情况下识别效果不好。
(6)支持向量机(SVM) 的人脸识别方法
近年来,支持向量机是统计模式识别领域的一个新的热点,它试图使得学习机在经验风险和泛化能力上达到一种妥协,从而提高学习机的性能。支持向量机主要解决的是一个2分类问题,它的基本思想是试图把一个低维的线性不可分的问题转化成一个高维的线性可分的问题。通常的实验结果表明SVM有较好的识别率,但是它需要大量的训练样本(每类300个),这在实际应用中往往是不现实的。而且支持向量机训练时间长,方法实现复杂,该函数的取法没有统一的理论。
人脸识别的方法很多,当前的一个研究方向是多方法的融合,以提高识别率。
在人脸识别中,第一类的变化是应该放大而作为区分个体的标准的,而第二类的变化应该消除,因为它们可以代表同一个个体。通常称第一类变化为类间变化,而称第二类变化为类内变化。对于人脸,类内变化往往大于类间变化,从而使在受类内变化干扰的情况下利用类间变化区分个体变得异常困难。正是基于上述原因,一直到21 世纪初,国外才开始出现人脸识别的商用,但由于人脸识别算法非常复杂,只能采用庞大的服务器,基于强大的计算机平台。
如果可以的话,可以Te一下colorreco,更好的技术解答。
⑷ 基于神经网络的人脸识别有哪些算法
上次的人脸识别仿真,我们用的是PCA和SVM方法进行人脸识别,该方法仍属于机器学习领域,未涉及神经网络的知识。这次使用的方法是基于PCA和BP神经网络对人脸识别。
其中,PCA的功能和上次一致,是用来对20张图片进行降维处理,最终产生8个主成分作为BP神经网络的输入;神经网络的输出层采用4个神经元,用来区分两个不同的人脸;本例的BP神经网络采用8-10-4的三层结构,输入层神经元数量选取8个,隐含层神经元数量选取10个,输出层神经元数量选取4个。
⑸ 人脸识别算法的分类
人脸识别法主要集中在二维图像方面,二维人脸识别主要利用分布在人脸上从低到高80个节点或标点,通过测量眼睛、颧骨、下巴等之间的间距来进行身份认证。人脸识别算法主要有:
1.基于模板匹配的方法:模板分为二维模板和三维模板,核心思想:利用人的脸部特征规律建立一个立体可调的模型框架,在定位出人的脸部位置后用模型框架定位和调整人的脸部特征部位,解决人脸识别过程中的观察角度、遮挡和表情变化等因素影响。
2.基于奇异值特征方法:人脸图像矩阵的奇异值特征反映了图像的本质属性,可以利用它来进行分类识别。
3.子空间分析法:因其具有描述性强、计算代价小、易实现及可分性好等特点,被广泛地应用于人脸特征提取,成为了当前人脸识别的主流方法之一。
4.局部保持投影(Locality Preserving Projections,LPP)是一种新的子空间分析方法,它是非线性方法Laplacian Eigen map的线性近似,既解决了PCA等传统线性方法难以保持原始数据非线性流形的缺点,又解决了非线性方法难以获得新样本点低维投影的缺点。
5.主成分分析(PCA)
PCA模式识别领域一种重要的方法,已被广泛地应用于人脸识别算法中,基于PCA人脸识别系统在应用中面临着一个重要障碍:增量学习问题。增量PCA算法由新增样本重构最为重要 PCS,但该方法随着样本的增加, 需要不断舍弃一些不重要PC,以维持子空间维数不变, 因而该方法精度稍差。
6.其他方法:弹性匹配方法、特征脸法(基于KL变换)、人工神经网络法、支持向量机法、基于积分图像特征法(adaboost学习)、基于概率模型法。 二维人脸识别方法的最大不足是在面临姿态、光照条件不同、表情变化以及脸部化妆等方面较为脆弱,识别的准确度受到很大限制,而这些都是人脸在自然状态下会随时表现出来的。三维人脸识别可以极大的提高识别精度,真正的三维人脸识别是利用深度图像进行研究,自90年代初期开始,已经有了一定的进展。三维人脸识别方法有:
1.基于图像特征的方法:采取了从3D结构中分离出姿态的算法。首先匹配人脸整体的尺寸轮廓和三维空间方向;然后,在保持姿态固定的情况下,去作脸部不同特征点(这些特征点是人工的鉴别出来)的局部匹配。
2.基于模型可变参数的方法:使用将通用人脸模型的3D变形和基于距离映射的矩阵迭代最小相结合,去恢复头部姿态和3D人脸。随着模型形变的关联关系的改变不断更新姿态参数,重复此过程直到最小化尺度达到要求。基于模型可变参数的方法与基于图像特征的方法的最大区别在于:后者在人脸姿态每变化一次后,需要重新搜索特征点的坐标,而前者只需调整3D变形模型的参数。
⑹ matlab中PCA的人脸识别,最后得出的识别率是什么意思啊!
识别率指的是通过人脸识别技术识别正确数占识别总数的百分比。
人脸识别算法分类
基于人脸特征点的识别算法(Feature-based recognition algorithms)。
基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)。
基于模板的识别算法(Template-based recognition algorithms)。
利用神经网络进行识别的算法(Recognition algorithms using neural network)。
神经网络识别
基于光照估计模型理论
提出了基于Gamma灰度矫正的光照预处理方法,并且在光照估计模型的基础上,进行相应的光照补偿和光照平衡策略。
优化的形变统计校正理论
基于统计形变的校正理论,优化人脸姿态;
强化迭代理论
强化迭代理论是对DLFA人脸检测算法的有效扩展;
独创的实时特征识别理论
该理论侧重于人脸实时数据的中间值处理,从而可以在识别速率和识别效能之间,达到最佳的匹配效果
⑺ 人脸识别需要用到哪些算法
目前最普遍的是主成分分析法(PCA),但是由于人脸是非线性的,PCA这种线性方法往往会丢失人脸上的许多非线性成分,因而后面又出现了流形学习的算法,具体有这些:PCA、ICA、ISOMAP、KPCA、LPCA等等