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))
运行结果如下所示:

												

PCA算法提取人脸识别特征脸(降噪)的更多相关文章

  1. opencv基于PCA降维算法的人脸识别

    opencv基于PCA降维算法的人脸识别(att_faces) 一.数据提取与处理 # 导入所需模块 import matplotlib.pyplot as plt import numpy as n ...

  2. Android 虹软人脸识别SDK-人脸对比

    准备 : 登录官方网站,获取SDK,进行个人验证后新建项目,获取APP_ID,和SDK_KEY: https://ai.arcsoft.com.cn/ucenter/resource/build/in ...

  3. Eigenface与PCA人脸识别算法实验

    简单的特征脸识别实验 实现特征脸的过程其实就是主成分分析(Principal Component Analysis,PCA)的一个过程.关于PCA的原理问题,它是一种数学降维的方法.是为了简化问题.在 ...

  4. 机器学习: 特征脸算法 EigenFaces

    人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即 ...

  5. 【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)

    前言: PCA是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的.本文通过使用PCA来提取人脸中的特征脸这个例子,来熟悉下在oepncv中怎样使用PCA这个类. ...

  6. 总结几个简单好用的Python人脸识别算法

    原文连接:https://mp.weixin.qq.com/s/3BgDld9hILPLCIlyysZs6Q 哈喽,大家好. 今天给大家总结几个简单.好用的人脸识别算法. 人脸识别是计算机视觉中比较常 ...

  7. 基于机器学习人脸识别face recognition具体的算法和原理

    引自:http://blog.csdn.net/eclipsesy/article/details/78388468?utm_source=debugrun&utm_medium=referr ...

  8. OpenCV人脸识别的原理 .

    OpenCV人脸识别的原理 . 在之前讲到的人脸测试后,提取出人脸来,并且保存下来,以供训练或识别是用,提取人脸的代码如下: void GetImageRect(IplImage* orgImage, ...

  9. Yale数据库上的人脸识别

    一.问题分析 1. 问题描述 在Yale数据集上完成以下工作:在给定的人脸库中,通过算法完成人脸识别,算法需要做到能判断出测试的人脸是否属于给定的数据集.如果属于,需要判断出测试的人脸属于数据集中的哪 ...

随机推荐

  1. 安装Ubuntu后的一些配置

    Ubuntu安装的一些配置 搜狗拼音的安装 卸载ibus和它的配置, 卸载顶部面板的键盘指示 sudo apt remove ibus sudo apt purge ibus sudo apt rem ...

  2. bootstrap标记说明

    <span class="caret"> 这就是 一个倒三角

  3. 【读书笔记】图解HTTP完整流程

    1.1 使用 HTTP 协议访问 Web: 根据 Web 浏览器地址栏中指定的URL,从服务端获取资源等信息,在页面上展示. Web 使用一种 HTTP (超文本传输协议)作为规范,完成从客户端到服务 ...

  4. iOS 混合开发之 Cordova 实践

    在15年时,之前公司使用 Cordova 做混合开发使用,后来公司没有用到了,现在重新记录下. Cordova (官网:http://cordova.apache.org/)简介: Apache Co ...

  5. Jquery 动态交换两个div位置并添加Css动画效果

    前端网页开发中我们经常会遇到需要动态置换两个DIV元素的位置,常见的思路大多是不考虑原始位置,直接采用append或者appendTo方式将两元素进行添加,该法未考虑原始位置,仅会添加为元素的最后一子 ...

  6. OBS输出设置

    参数建议来自虎牙 https://help.huya.com/284 3.输出: 1)编码器中x264相当于虎牙直播中的CPU H.264编码,NVENC H.264相当于虎牙直播中的NVIDIA H ...

  7. 「AHOI2014/JSOI2014」支线剧情

    「AHOI2014/JSOI2014」支线剧情 传送门 上下界网络流. 以 \(1\) 号节点为源点 \(s\) ,新建一个汇点 \(t\),如果 \(u\) 能到 \(v\),那么连边 \(u \t ...

  8. Docker 之registry私有仓库搭建

    Docker 之registry私有仓库搭建 官方提供的私有仓库docker registry用法 https://yeasy.gitbooks.io/docker_practice/reposito ...

  9. 计算机基础- 序列化(Serialization)和持久化(Persistence)的区别

    参考 https://en.wikipedia.org/wiki/Serialization https://en.wikipedia.org/wiki/Persistence_(computer_s ...

  10. Spring Boot笔记一

    Spring Boot 入门 Spring Boot 简介 > 简化Spring应用开发的一个框架:> 整个Spring技术栈的一个大整合:> J2EE开发的一站式解决方案: 微服务 ...