人脸识别步骤及技术,人脸特征是什么,人脸识别步骤及技术,人脸特征有哪些

  人脸识别步骤及技术,人脸特征是什么,人脸识别步骤及技术,人脸特征有哪些

  人脸特征技术是最近发展起来的一种方法,涉及人脸识别和一般刚体识别等人脸处理。首先,将一组人脸图像转换成一组称为“特征脸”的特征向量。这些是第一组训练图像的基本组成部分。识别过程是将新图像投影到特征人脸空间,根据投影点在子空间的位置和投影线的长度进行判断识别。图像转换到另一个空间后,同等级的图像聚集在一起,不同类型的图像力量聚集的远。在原始像素空间中,简单的线和面很难切割不同类型图像的分布,转换到另一个空间可以很好的分离。Eigenfaces选择PCA(主成分分析)作为空间变换方法,使用PCA获得人脸分布的主成分。具体来说,对训练集中所有人脸图像的协方差矩阵进行模态分解,得到相应的特征向量。这些特征向量就是“特征面”。每个特征向量或特征人脸相当于捕捉或描述了人的人脸之间的变化或特征。这意味着每个人的脸都可以表示为这些特征脸的线性组合。这里直接展示了基于特征脸的人脸识别的实现过程。原始图像被投影到这个特征空间中。具体地,此时,原始图像x被保存为n维向量,即:

  训练集是(其中p是采样图像的数量)并形成矩阵X[n][p]。其中行代表像素,列代表每个面部图像。从训练样本集中的人脸图像中减去平均人脸图像,计算离散差,并集中训练图像。

  将居中的图像设置为np大小的矩阵x:

  将中心图像组成的矩阵X乘以其转置矩阵,得到协方差矩阵:

  求协方差矩阵的k个非零特征量和对应的特征向量。通常,由于训练图像的数量p远小于一个图像的像素值n,所以协方差矩阵具有对应于非零特征量的p个特征向量。因此,如果特征向量按照kp的顺序排列。特征量从大到小,最大特征量对应的特征向量反映训练图像之间的最大差异,对应的特征量越小,反应图像之间的差异越小。非零特征值对应的所有特征向量构成特征空间,称为“特征脸”空间。计算特征值和特征向量。其中u是对应于特征值的特征向量集。排列特征向量:按照非零特征值从大到小的顺序排列对应的特征向量。的特征向量矩阵是特征向量空间u,u的每一列都是特征向量。结果,每个面部图像被投影在收听时间的空间的一部分上。因此,每个人脸图像对应子空间中的一个点,子空间中的每个点对应一个图像。下图显示了相应的图像。这些图像与人脸相似,因此被称为“特征脸”。在通过投影特征脸训练图像得到的特征脸空间中,存在这样一个由“特征脸”组成的降维特征子空间。通过以下公式将集中的人脸图像投影到特征人脸空间,可以获得一系列坐标系数据。

  在这篇论文中,“野外标记的人脸”,Akal FW:3358 vis-www.cs.umass.edu/lfw/lfw-funneled.tgz(233 MB)的数据集。

  结合特征脸和SVM进行人脸识别。

  Python源代码:

  from _ _ future _ import print _ functionfromtimeimporttimeimportlogginimportmatplotlib . pyplotaspltfromskneel . mod earn idsearchvfromskneel . datasets import fetch _ lfw _ peoplefromskneel . metrics ics sk learn . metrics importfusion _ matrix mation klearn . svmimportsvcprint(_ _ doc _ _))))))))displayprogresslogsonstdoutlogging . basic config(level)format=" % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #。 ifnotalreadyondiskandloaditasnumpyarrayslfw _ people=fetch _ lfw _ people(min _ faces _ per _ person=70,resize)

  机器学习我们直接使用2个数据(因为该模型忽略了相对像素#位置信息)X=lfw _人。datan _ features=X . shape[1]#要预测的标签是人员的id y=lfw _ people。target _ names=lfw _ people目标名称序号类别=目标名称。形状[0]打印(总数据集大小: n _ samples:% d % n _ samples)print( n _ features:% d % n _ features)print( n _ classes:% d % n random _ state=42)# # # # # # # # # # # # # # # # # # #在人脸数据集(作为未标记#数据集处理)上计算一个PCA(特征脸):无监督特征提取/维数约简n_components=150print(从%d个人脸中提取前%d个特征脸% (n_components,X _ train。shape[0])t0=time()PCA=PCA(n _ components=1 fit(X _ train)print(在% 0.3 fs“%(time()-t0)内完成)eigenfaces=pca.components_ .整形((n_components,h,w))打印(将输入数据投影到特征脸正交基上)t0=时间()X _ Train _ PCA=PCA。变换(X _ Train)X _ test _ PCA=PCA。transform(X _ test)print(在%0.3fs内完成%(time()-t0))# # # # # # # # # # # # # # # # # # # # #训练一个支撑向量机分类模型打印(.y _ train)print(在% 0.3 fs %(time()-t0)内完成)print(通过网格搜索找到的最佳估计量:)print(clf。best _ estimator _)# # # # # # # # # # # # # # # # # #测试集上模型质量的定量评估打印(在测试集上预测人名)t0=time()y _ pred=clf。predict(X _ test _ PCA reshape((h,w)),cmap=PLT。厘米。灰色)PLT。标题(标题[I],大小=12)PLT。x刻度(())PLT。y刻度(())#绘图对测试setdef标题(y_pred,y_test,target_names,I)的一部分的预测结果:预解码名称=目标名称[y _ pred[I]].rsplit( ,1)[-1]true _ name=target _ names[y _ test[I]].rsplit(,1)[-1]return predicted:% s \ n true:% s %(pred _ name,true _ name)prediction _ titles=[title(y _ pred,y_test,target_names,I)for I in range(y _ pred。shape[0])]plot _ gallery(X _ test,prediction _ titles,h,w)# plot最有意义的特征面eigen face _ titles=[ eigen face % d % I for I in range(特征面。形状[0])

  结果:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: