人脸识别与特征脸(简单介绍)
什么是特征脸
特征脸(Eigenface)是指用于机器视觉领域中的人脸识别问题的一组特征向量,该方法被认为是第一种有效的人脸识别方法。
PCA的具体实现思想见
【笔记】主成分分析法PCA的原理及计算
(在notebook中)
我们需要加载相应的方法fetch_lfw_people,其为一个人脸识别数据库,加载以后,就可以直接调用了,头一次使用要下载,具体情况见另一篇博客使用sklearn中的fetch_mldata的错误情况以及可能可行的解决方法,其中有说明
from sklearn.datasets import fetch_lfw_people
faces = fetch_lfw_people()
我们可以看到其中相应的内容
faces.keys()
结果为
其中faces.data.shape
结果为
对应的faces.images.shape
结果为(第一个为样本总数,对于每个样本都是62*47的图像)
然后我们随机出36张脸,首先对样本进行一个随机的排列,然后将随机的排列放入X中,然后取出X中前36张脸,然后看一下对应的数据
random_indexes = np.random.permutation(len(faces.data))
X = faces.data[random_indexes]
example_faces = X[:36,:]
example_faces.shape
结果为
绘制函数:
def plot_faces(faces):
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(faces[i].reshape(62,47),cmap='bone')
plt.show()
plot_faces(example_faces)
图像为
可以使用faces.target_names来查看包含的人名
结果为
具体的实现特征脸
这里使用PCA的另一种构建方式svd_solver参数,让其等于randomized,希望使用随机的方式求解PCA(对所有的数据),这样来实例化pca,然后进行fit
%%time
from sklearn.decomposition import PCA
pca = PCA(svd_solver='randomized')
pca.fit(X)
结果为
使用pca.components_.shape来看一下有多少个维度及主成分
结果为
绘制图像,注意,图像越靠前,越能反映整个样本的总特征
plot_faces(pca.components_[:36,:])
图像为(这些就被称为特征脸)
因为有很多的图片是一个人一张,而有一些是一个人有很多张,这样出来的数据有的时候是不靠谱的,那么我们就可以获得样本数比较多的人的图片来增加准确度,我们可以
faces2 = fetch_lfw_people(min_faces_per_person=60)
通过faces2.data.shape,可以发现这样就会少很多
使用len(faces2.target_names)来看一下一共多少人名
结果为
这样faces2中就只有8个人,每个人不少于60张图片,这样的数据库就比较靠谱了
【笔记】特征脸(PCA在人脸识别领域的应用)的更多相关文章
-
基于PCA的人脸识别步骤
代码下载:基于PCA(主成分分析)的人脸识别 人脸识别是一个有监督学习过程,首先利用训练集构造一个人脸模型,然后将测试集与训练集进行匹配,找到与之对应的训练集头像.最容易的方式是直接利用欧式距离计算测 ...
-
机器学习:PCA(人脸识别中的应用——特征脸)
一.思维理解 X:原始数据集: Wk:原始数据集 X 的前 K 个主成分: Xk:n 维的原始数据降维到 k 维后的数据集: 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = ...
-
OpenCV人脸识别的原理 .
OpenCV人脸识别的原理 . 在之前讲到的人脸测试后,提取出人脸来,并且保存下来,以供训练或识别是用,提取人脸的代码如下: void GetImageRect(IplImage* orgImage, ...
-
【计算机视觉】特征脸EigenFace与PCA
[计算机视觉]特征脸EigenFace与PCA 标签(空格分隔): [图像处理] 版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/. 说 ...
-
opencv基于PCA降维算法的人脸识别
opencv基于PCA降维算法的人脸识别(att_faces) 一.数据提取与处理 # 导入所需模块 import matplotlib.pyplot as plt import numpy as n ...
-
使用OpenCV进行人脸识别
不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/ 怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的Face Re ...
-
机器学习: 特征脸算法 EigenFaces
人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即 ...
-
opencv人脸识别提取手机相册内人物充当数据集,身份识别学习(草稿)
未写完 采用C++,opencv+opencv contrib 4.1.0 对手机相册内人物opencv人脸识别,身份识别学习 最近事情多,介绍就先不介绍了 photocut.c #include & ...
-
opencv学习之路(41)、人脸识别
一.人脸检测并采集个人图像 //take_photo.cpp #include<opencv2/opencv.hpp> using namespace cv; using namespac ...
随机推荐
-
js通过location.search来获取页面传来的参数
这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 ? 1 2 3 4 5 function GetQueryString(name) { var ...
-
shutdown
关机命令 $sudo shutdowm [-hrc] -h定时关机,以分钟为单位的计时,时间或now -h now立即关机 -h +2020分钟后关机 -h 12:0012点关机 -r now立即重启 ...
-
Debugger 怎么用
Debugger 是一个很有用的工具,尤其对于workflow开发人员来说.可以帮助我们check 从source 到target的数据流.我们可以看到什么数据从source中流出,在接下来的tran ...
-
改变字典内的value
import re,os limit = "8000" username = "liuhuihuang" with open("users_dict& ...
-
Git server安装和配置
yum install git yum install git-dameon toiseGit
-
在asp.net中如何自己编写highcharts图表导出到自己的服务器上来
1.准备工作:网上下载highcharts导出的关键dll. 1).Svg.dll:因为highcharts的格式其实就是一个xml,采用svg的方式画图: 2).itextsha ...
-
[Swust OJ 589]--吃西瓜(三维矩阵压缩)
题目链接:http://acm.swust.edu.cn/problem/589/ Time limit(ms): 2000 Memory limit(kb): 65535 Description ...
-
STM32硬件IIC操作
Stm32具有IIC接口,接口有以下主要特性 多主机功能:该模块既可做主设备也可做从设备 主设备功能 C地址检测 位/10位地址和广播呼叫 支持不同的通讯速度 状态标志: 发送器/接收器模式标志 字节 ...
-
读《Deep Learning Tutorial》(*大学 李宏毅 深度学习教学ppt)后杂记
原ppt下载:pan.baidu.com/s/1nv54p9R,密码:3mty 需深入实践并理解的重要概念: Deep Learning: SoftMax Fuction(输出层归一化函数,与sigm ...
-
jackson中的@JsonBackReference
# *Error / 无限递归 / json递归 / JsonBackReference 环境:springmvc+hibernate+json 在controller返 ...