Ⅰ 基于pca和svm的人脸识别用了什么算法
分块处理,对每一分块图像进行局部二值模式统计,选取其中出现频率较高的模式,将所有图像分块的LBP直方图衔接起来作为图像最终的纹理特征,然后应用主成分分析法(PCA)对所提取的纹理特征进行降维处理,最后使用支持向量机分类器来对图像进
Ⅱ 用PCA算法进行人脸识别识别率相对较低的原因
我不是大神,但是可能猜测是使用算法的图片库是不同的。10%的差距还是可以接受的。
Ⅲ matlab中PCA的人脸识别,最后得出的识别率是什么意思啊!
识别率指的是通过人脸识别技术识别正确数占识别总数的百分比。
人脸识别算法分类
基于人脸特征点的识别算法(Feature-based recognition algorithms)。
基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)。
基于模板的识别算法(Template-based recognition algorithms)。
利用神经网络进行识别的算法(Recognition algorithms using neural network)。
神经网络识别
基于光照估计模型理论
提出了基于Gamma灰度矫正的光照预处理方法,并且在光照估计模型的基础上,进行相应的光照补偿和光照平衡策略。
优化的形变统计校正理论
基于统计形变的校正理论,优化人脸姿态;
强化迭代理论
强化迭代理论是对DLFA人脸检测算法的有效扩展;
独创的实时特征识别理论
该理论侧重于人脸实时数据的中间值处理,从而可以在识别速率和识别效能之间,达到最佳的匹配效果
Ⅳ 人脸识别算法的分类
人脸识别法主要集中在二维图像方面,二维人脸识别主要利用分布在人脸上从低到高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变形模型的参数。
Ⅳ 如何结合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 %输出识别率
函数调用是定义函数,然后用函数名进行调用就可以了
Ⅵ 关于用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).
Ⅶ sklearn里的PCA+SVM人脸识别算法,到底是PCA什么
Ⅷ 人脸识别PCA算法,子空间和投影到子空间怎么理解
PCA人脸识别是把所有图像看做是一个样本,每张图像看成一行向量,有N张图像就有N行,所以这个样本就可以看成是一个N行的矩阵。先求出这个矩阵的协方差矩阵,再求出这个协方差矩阵的特征值,选择特征值中前m个最大的特征值,这前m个最大的特征值,每个都对应一个特征向量(特征向量也叫做特征脸),这m个特征向量组成一个m行的特征矩阵,这个特征矩阵就是“子空间”,也叫做特征脸空间。所谓投影到子空间,就是把样本中的一张图像看成一行向量,这个向量乘以特征矩阵得到一个m维的向量,就是投影的结果,也是这张图像的特征值。