博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PCA算法提取人脸识别特征脸(降噪)
阅读量:4551 次
发布时间:2019-06-08

本文共 2009 字,大约阅读时间需要 6 分钟。

PCA算法可以使得高维数据(mxn)降到低维,而在整个降维的过程中会丢失一定的信息,也会因此而实现降噪除噪的效果,另外,它通过降维可以计算出原本数据集的主成分分量Wk矩阵(kxn),如果将其作为数据样本,则可以将其作为原来数据集特征的主特征分量,如果用在人脸识别领域则可以作为人脸数据集的特征脸 具体实现降噪效果和人脸特征脸的代码如下所示: #1-1利用手写字体数据集MNIST对PCA算法进行使用和效果对比,体现PCA算法的降噪功能 from sklearn import datasets digits=datasets.load_digits() x=digits.data y=digits.target noisy_digits=x+np.random.normal(0,2,size=x.shape) ex=noisy_digits[y==0,][:10] for num in range(1,10):     x_num=noisy_digits[y==num,:][:10]     ex=np.vstack([ex,x_num]) print(ex.shape) #定义绘图10x10的图像函数,可以看出PCA算法的降噪效果 def plot_digits(data):     fig,axes=plt.subplots(10,10,figsize=(10,10),subplot_kw={"xticks":[],"yticks":[]},                          gridspec_kw=dict(hspace=0.1,wspace=0.1))     for i ,ax in enumerate(axes.flat):         ax.imshow(data[i].reshape(8,8),                  cmap="binary",interpolation="nearest",                  clim=(0,16))     plt.show() plot_digits(ex) pca=PCA(0.8) pca.fit(noisy_digits) a=pca.transform(ex) b=pca.inverse_transform(a) plot_digits(b) #1-2PCA算法在人脸识别与特征脸的应用 import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import fetch_lfw_people faces=fetch_lfw_people() print(faces.keys()) print(faces.data.shape) def plot_faces(face):     fig,axes=plt.subplots(6,6,figsize=(10,10),subplot_kw={"xticks":[],"yticks":[]},                          gridspec_kw=dict(hspace=0.1,wspace=0.1))     for i ,ax in enumerate(axes.flat):         ax.imshow(face[i].reshape(62,47),cmap="bone")     plt.show() random_indexes=np.random.permutation(len(faces.data)) x=faces.data[random_indexes] face1=x[:36,:] plot_faces(face1) from sklearn.decomposition import  PCA pca4=PCA(svd_solver="randomized")   #利用随机方式进行降维,提高计算的效率 pca4.fit(x) print(pca4.components_.shape)      #输出人脸数据集的主要成分的数据集形状组成(mxn),m代表的是降低到的维度,n是指数据的总体原维度 print(plot_faces(pca4.components_[:36,:])) face3=fetch_lfw_people(min_faces_per_person=60)        #输出训练图片最少有60个的人脸数据样本 print(face3.data.shape) print(len(face3.target_names)) 运行结果如下所示:

 

 

 

转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/11326949.html

你可能感兴趣的文章
风中的纸屑——阅读编写可维护的JavaScript
查看>>
GCD求最大公约数
查看>>
OO第二单元作业分析——并发与多线程
查看>>
package的使用
查看>>
括号生成
查看>>
优秀的前端需要做到什么?
查看>>
aws cli command line interface的安装与使用
查看>>
10)将地址换成常量
查看>>
箭头函数
查看>>
android MVC && MVP && MVVM分析和对照
查看>>
jsp知识点
查看>>
第10课 OpenGL 3D世界
查看>>
simulate_screencap
查看>>
CSS知识点汇总(持续添加...)
查看>>
怎样让HTML5调用手机摄像头拍照——实践就是一切
查看>>
BZOJ 1901 Zju 2112 Dynamic Rankings 与更改的树董事长
查看>>
SDUT 2933-人活着系列Streetlights(最小生成树Kruskal+和理查德设置来实现)
查看>>
Quartus II 11.0破发点(不同的是低版本号)
查看>>
cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()...
查看>>
Cocos2d-x
查看>>