我使用了剑桥AT& T Laboratories的数据库面孔(正式为ORL数据库)。该数据库由400个图像组成,每人10张图像,即每40个人有10张图像。
我将每个人的5张图像分开进行训练,并将每个人剩下的5张图像分开进行测试。
所以我有2个文件夹:
1)训练(5张图像/人= 200张图像)
2)测试(5张图像/人= 200张图像)
培训文件夹中的照片与测试文件夹中的照片不同。
我获得的百分比识别率仅为80%。
但如果我在识别之前预处理图像,我得到:
与imajust预处理:82%
锐化预处理:83%
锐化和成像的预处理:84%
(如果预处理完成,它将应用于机器人训练和测试图像)
对于所使用的特征脸的数量,矩阵L的所有特征值都被排序,而那些小于指定阈值的特征值被消除。
L_eig_vec = [];
for i = 1 : size(V,2)
if( D(i,i)>1 )
L_eig_vec = [L_eig_vec V(:,i)];
end
end
我使用matlab实现人脸识别系统。识别率低是否正常?
答案 0 :(得分:1)
准确度取决于您在PCA投影空间中获得数据后使用的分类器。在最初的Turk / Pentland特征面纸
http://www.face-rec.org/algorithms/PCA/jcn.pdf
他们只使用kNN / Euclidean距离,但现代实现可能使用SVM,例如使用rbf内核作为“面部空间”中的分类器,使用网格搜索优化C和gamma参数。 LibSVM会为你做这件事,并且有一个Matlab包装器。
此外,您应首先注册面部,即扭曲图像,使其具有面部标志,例如所有数据集中的眼睛,鼻子,mouyth在一个统一的位置?如果图像未预先注册,则会导致性能下降。我期望在90年代使用具有SVM和预注册的Eigenfaces的5人数据集。这个数字是基于过去学生项目的先前实施/表现的直觉。但有一点需要注意的是,你的训练样本数量非常少 - 高维空间中的5个点并不足以训练分类器。