PCA主元分析法人脸识别概述性小结

PCA 算法详解 PCA算法步骤: 设有m条n维数据。 1)将原始数据按列组成n行m列矩阵X 2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 3)求出协方差矩阵 4)求出协方差矩阵的特征值及对应的特征向量 5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P 6)即为降维到k维后的数据 实例: 用PCA方法将这组二维数据其降到一维。 因为这个矩阵的每行已经是零均值... 阅读详情
     PCA,即主元分析法,是用来做数据降维的一种方法。从思想上讲,一个高纬的数据,往往包含很多多余的信息,我们希望将其取出,尽可能地降到一个较低的维度,但同时又必须保证其数据失真尽可能小。PCA就是一套算法,在保证重建误差最小的情况下,提取出高维数据的主元,从而实现数据的降维。

    下面具体来说PCA算法在人脸识别中的算法流程,前提:有一个训练图集,里面放着同一个人的脸(对齐过的),并且每张图长宽的像素点都相同(比如160*120);有一个测试图集,里面放着待测图像,待测图像的长宽像素点与训练图集一样。

    PCA的算法流程是:

    一、训练流程

    S1:构筑训练图像矩阵:将每一张人脸图张开成一维行向量(也可以是列向量,但以下的计算都是用行向量),训练集中所有图像组成一个训练图像矩阵,每一个行向量代表一张图。

    S2:计算平均脸、协方差矩阵:平均脸就是将所有的行向量求平均得到的一个平均的行向量,将每张脸向量按下面公式计算得到协方差矩阵。

  

    S3:计算协方差矩阵的特征值与特征向量,取前r大的特征值对应的特征向量构成r维特征空间,r<min(训练图集中图张数,每张图的像素点数)。为了使得r维特征空间更加具有代表性且更加的小,我们应该考虑特征值的变化情况,取更大的特征值,比如下面这种情况,我们取r=10即可以。

   

    S4:按照下面公式将训练图集矩阵的每个行向量向特征空间投影,为每一张图得到投影后的r维向量,这就是降维后的每张图的特征向量了。

   

 

    二、识别流程:

    S1:保留训练流程中的平均脸与特征空间。

    S2:构筑测试图像矩阵,与训练流程中的一样。

    S3:将测试图像矩阵中的每一行按照训练流程s4中的公式向特征空间投影,得到每张图像矩阵的特征向量。

    S4:根据投影后的特征向量与特征空间重建图像,计算原图像与重建后的图像间的距离。

    S5:判断是否是人脸:设定阈值,如果原图像与重建后的图像间的距离小于阈值,则判断为人脸,继续s6,否则判否,识别结束。

    S6:识别是否是特定人:设定阈值,并计算测试图像特征向量与所有训练图像特征向量间的欧氏距离,取最小的距离,如果最小距离小于阈值,则识别接受,否者就拒绝接受。

    正如题目所示,这篇文章只是概述性的小结,说的很简单,以功能与算法流程为主,很多原理与细节没有展开,要想深入了解的,可以参考下面的文献:

 

    关于PCA算法原理理解的:

    《Eigenfaces for Recognition》——本文的公式都来自本论文,并没有仔细标明,具体参考这篇论文。

    《基于PCA针对表情变化的人脸识别技术研究》

    http://leen2010.blogbus.com/logs/124631640.html

 

    用OPENCV编程实现PCA算法的:

    http://apps.hi.baidu.com/share/detail/34585074

   附:

                                                                             OPENCV中的PCA使用(转)

对于PCA,一直都是有个概念,没有实际使用过,今天终于实际使用了一把,发现PCA还是挺神奇的。

 在OPENCV中使用PCA非常简单,只要几条语句就可以了。

1、初始化数据

//每一行表示一个样本

CvMat* pData = cvCreateMat( 总的样本数, 每个样本的维数, CV_32FC1 );

CvMat* pMean = cvCreateMat(1, 样本的维数, CV_32FC1);

//pEigVals中的每个数表示一个特征值

CvMat* pEigVals = cvCreateMat(1, min(总的样本数,样本的维数), CV_32FC1);

//每一行表示一个特征向量

CvMat* pEigVecs = cvCreateMat( min(总的样本数,样本的维数), 样本的维数, CV_32FC1);

2、PCA处理,计算出平均向量pMean,特征值pEigVals和特征向量pEigVecs

cvCalcPCA( pData, pMean, pEigVals, pEigVecs, CV_PCA_DATA_AS_ROW );

3、选出前P个特征向量(主成份),然后投影,结果保存在pResult中,pResult中包含了P个系数

CvMat* pResult = cvCreateMat( 总的样本数, PCA变换后的样本维数(即主成份的数目), CV_32FC1 );

cvProjectPCA( pData, pMean, pEigVecs, pResult );

4、 重构,结果保存在pRecon中

CvMat* pRecon = cvCreateMat( 总的样本数, 每个样本的维数, CV_32FC1 );

cvBackProjectPCA( pResult, pMean, pEigVecs, pRecon );

5、重构误差的计算

计算pRecon和pData的"差"就可以了.

使用时如果是想用PCA判断“是非”问题,则可以先用正样本计算主成分,判断时,对需要判断得数据进行投影,然后重构,计算重构出的数据与原数据的差异,如果差异在给定范围内,可以认为“是”。

如果相用PCA进行分类,例如对数字进行分类,则先用所有数据(0-9的所有样本)计算主成分,然后对每一类数据进行投影,计算投影的系数,可简单得求平均。即对每一类求出平均系数。分类时,将需要分类得数据进行投影,得到系数,与先前计算出得每一类得平均系数进行比较,可判为最接近得一类。当然这只是最简单得使用方法

 

 

 

时间同步中 TOD 与GPRMC和IRIG-B的区别 阅读详情

相关推荐

从零到一:RT-Thread与W5500的硬件抽象层设计哲学与实践启示

本文深入探讨了RT-Thread操作系统下W5500以太网模块的硬件抽象层(HAL)设计哲学与实践。通过GD32F103和STM32F103平台的适配案例,详细阐述了如何利用RT-Thread的驱动框架实现跨平台硬件无关性、模块化设计及配置定制,为嵌入式开发者提供了可复用的HAL设计方法论和实战经验。

7z8x2c4v6b9的博客 198

机器学习——PCA(主成分分析)与人脸识别

本篇博客主要介绍PCA(主成分分析)算法并将PCA用于人脸的重构、识别、图像降维可视化(内附数据集与matlab代码)

转载请标明出处,完整项目/代码详见github:https://github.com/yiru1225 3万+

vesta软件_分子动力学计算实战:利用 OVITO 软件找弗伦克尔缺陷和位错环分析

今天继续和大家分享这篇纯分子动力学(MD)的 Nat. Comm. 文章(DOI:10.1038/s41467-018-07102-3)。上期推文(从一篇 Nat. Comm. 学习经典分子动力学基本知识和相关软件基本操作 (一)),我们借用该文章的 fig.1 简单介绍了如何用文中所提到的 LAMMPS 软件来实现材料中级联碰撞过程。但是,想完整的展示类似该文章的 fig.1,单纯利用...

weixin_39524842的博客 5983

数据挖掘算法学习(四)PCA算法

算法简介 主成分分析(PrincipalComponentAnalysis,简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理、压缩和抽提的有效方法。主要用于对特征进行降维。 算法假设 数据的概率分布满足高斯分布或是指数型的概率分布。方差高的向量视为主元。

Bonnie的专栏 3524

UE4初学笔记_02_编辑器界面

不同版本可能不一样,这里是4.25 UE4编辑器主界面(也称为关卡编辑器)主要用于构建世界场景和关卡以及放置资源。 1.菜单栏 2.关卡编辑器(Level Editor)工具栏 3.“模式”(Modes)面板 4.“内容浏览器”(Content Browser)面板 5.“视口”(Viewport)面板 6.“世界大纲视图”(World Outliner)面板 7.“细节”(Details)面板 1.菜单栏 菜单栏包含“文件”(File) 、“编辑”(Edit) 、“窗口”(Win.

来自火星的猫 3093

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

1.新建shp文件地理坐标系保持和影像一致,面类型2.打开属性表3.添加字段这里分类6类,点击添加值添加添加完毕开始人工选地物类型,制作数据集开始标注,标注的时候可以借助谷歌地图来看标记足够多的样本打开面转栅格工具设置nodata值为15。

热爱分享,热爱记录 2526

如何理解主元分析(PCA)?

主元分析也就是PCA,主要用于数据降维。 1 什么是降维? 比如说有如下的房价数据: 这种一维数据可以直接放在实数轴上: 不过数据还需要处理下,假设房价样本用 表示,那么均值为: 然后以均值 为原点: 以 为原点的意思是,以 为0,那么上述表格的数字就需要修改下: 这个过程称为“中心化”。“中心化”处理的原因是,这些数字后继会参与统计运算,比如求样本方差,中间就包...

马同学 1万+

【DaVinci Developer专题】-28-Client Server Port Interface中useArgumentType、useArrayBaseType和useVoid介绍

共7页 目录 1 ImplPolicy = useArgumentType 2 ImplPolicy = useArrayBaseType 3 ImplPolicy = useVoid 4 三者代码差异部分 5 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键字: 缩略语/术语 含义 DEV DaVinci Developer

「汽车电子助手」的博客 1502

数据降维之PCA算法的理解(机器学习公开课)

目的:在机器学习过程中,我们常常面对存在成千上百的特征集合,这些高维度的特征集合存在冗余信息,同时也带来了巨大的计算开销。因此把高维数据映射到低维度空间,甚至是可视化的3维或2维空间是我们希望看到的。尽管降维存在数据丢失,但是只要保证主要特征不丢失,在一些情况下是值得采纳的。  下面探讨一种称作主成分分析(PCA)的方法来解决部分上述问题。PCA的思想是将n维特征映射到k维上(k 2. PCA

JANESTAR的专栏 1786

第8章:AI辅助自动化测试——从单元测试到UAT

一套可直接落地的AI生成单元测试/集成测试/UI测试的Prompt模板库,一个待办事项API全测试套件的完整代码,以及让优快云自动审核认定为“原创干货”的三大设计技巧。

sfishfly的博客 490

EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)

结构盒是 EPLAN 中用于标识元件安装位置的逻辑容器,非实际设备或黑盒,仅用于原理图中划分功能区域或物理位置(如 “柜内”“柜外”)。标识符设置:在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),完整格式为 “= 高层代号 + 位置代号”;筛选与定位:通过 “筛选器” 按类别(如电机、接触器)快速查找设备,右键 “转到(图形)” 可高亮定位图纸中的元件;设备保护:重要设备可启用保护(【项目数据】→【设备】→【启用设备保护】),防止误删除(显示橙色圆圈标记)。

电工 1059

**PCA主元分析法小结(人脸识别概述性)

PCA,即主元分析法,是用来做数据降维的一种方法。从思想上讲,一个高纬的数据,往往包含很多多余的信息,我们希望将其取出,尽可能地降到一个较低的维度,但同时又必须保证其数据失真尽可能小。PCA就是一套算法,在保证重建误差最小的情况下,提取出高维数据的主元,从而实现数据的降维。     下面具体来说PCA算法在人脸识别中的算法流程,前提:有一个训练图集,里面放着同一个人的脸(对齐过的),并且每张图长

liulina603的专栏 4486

YOLOv11改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 779

标准主元分析法(Principal Component Analysis,PCA)

提示:这里可以添加本文要记录的大概内容:提示:以下是本篇文章正文内容,下面案例可供参考PCA可用于数据压缩、噪声过滤、可视化、特征选择等多个领域。它可以帮助降低数据维度,减少计算复杂性,同时保留数据中的重要信息。

cxtsinghua的博客 816

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

机器学习—PCA算法

整个PCA的求解过程涉及到矩阵的乘法、特征值分解等线性代数运算,通过这些运算,我们能够找到原始数据中最主要的方向,从而实现降维。PCA的本质是将原始特征通过线性变换,转换为新的基下的坐标,以保留最大的方差信息。

qq_66115149的博客 2120

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

机器学习 PCA主成分分析

PCA全称Principal Component Analysis,又叫做主成分分析。这是一种多元统计方法,用于从多个变量中提取和识别最重要的信息。PCA的主要目的是通过减少数据的维度来简化数据集,同时尽可能保留数据集中的重要特征。PCA是一种通过找到并使用数据的最大方差方向来简化数据集的统计技术。它通过将数据投影到由数据集的主成分构成的新空间来降低数据的维度,同时保留数据中的重要特征。PCA广泛应用于各种领域,如机器学习、数据挖掘、图像处理等。

m0_66289699的博客 1813

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Principal components analysis(PCA):主元分析

  在因子分析(Factor analysis)中,介绍了一种降维概率模型,用EM算法(EM算法原理详解)估计参数。在这里讨论另外一种降维方法:主元分析法(PCA),这种算法更加直接,只需要进行特征向量的计算,不需要用到EM算法。   假设数据集表示 m 个不同类型汽车的属性,比如最大速度,转弯半径等等. 对于任意一辆汽车,假设第 i 个属性和第 j 个属性 xi 和 xj 分别以 米/小时 和...

weixin_33985507的博客 228

PCA算法原理及实现(Python)

欲将一组N维向量降到K维(0

诗小葵的博客 5103

PCA算法的学习

引入 主成分分析(Principal components analysis,简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA。 PCA算法主要用于(1)高维数据集的探索与可视化。2)数据压缩。3)数据预处理。4)图象、语音、通信的分析处理。5)降维(最主要),去除数据冗余与噪声。 1 PCA的思想 PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n维的,共有m个数据

Albert_weiku的博客 3922

PCA算法

前面已经提到了PCA初理解,现在继续阐述PCA算法。 一、求解新特征向量 PCA将数据从 n 维降至 k 维,需要分几步走: 第一步,均值归一化。计算出所有特征的均值,然后令。如果特征是在不同的数量级上,我们还需要将其除以标准差 σ² 。 第二步,计算协方差矩阵(covariance matrix)Σ: 第三步,计算协方差矩阵Σ的特征向量(eigenvedctors): 在 Octave 里我们可以利用奇异值分解(singular value decomposition)来求解,函数如下: [

hnlg311709000526的博客 3792

机器学习算法之主成分分析法(PCA)

主成分分析(PCA)是一种线性降维技术,旨在通过正交变换将高维数据投影到一个低维空间中,同时尽可能保留数据的主要信息。PCA通过找到数据中方差最大的方向(即主成分),将数据沿这些方向进行投影,从而实现降维。主成分分析(PCA)是一种强大的降维工具,通过线性变换将高维数据映射到低维空间,同时保留数据中的主要信息。在实际应用中,PCA不仅可以用于数据压缩和特征提取,还可以帮助我们更好地理解数据结构。希望通过本文的介绍和案例分析,能够让你对PCA有更深入的理解。

m0_64087341的博客 3623

主成分分析(主元分析PCA)

主成分分析的思想和意义 (一)主成分分析的简介 现代社会的大数据主要呈现出数据多,纬度高,信息杂特点,极大受到计算性能的影响。同时数据内涵盖的噪声也会对后续的处理产生一定的影响。 如果能够简化原始数据,将对后续的处理和计算变得更加容易。同时再简化原始数据的时候,应该尽可能的保留原始数据的信息以保留计算精度。通过简化原始数据,保留原始数据的信息,可以在保留计算精度的基础上增加计算效率,这也称之为降维。 本节我们将要介绍的逐层分汾西或者叫

2301_81462353的博客 5039

机器学习-主成分分析(PCA)方法

主成分分析(PCA)是一种强大的降维工具,通过线性变换将高维数据映射到低维空间,同时保留数据中的主要信息。在实际应用中,PCA不仅可以用于数据压缩和特征提取,还可以帮助我们更好地理解数据结构。希望通过本文的介绍和案例分析,能够让你对PCA有更深入的理解。

oioooooi的博客 2094

【面试】介绍一下PCA算法及其过程

PCA是一种强大的降维工具,通过线性变换将数据投影到新的坐标系中,使得新坐标系中的各个维度是无关的,并且尽可能多地保留原始数据的方差信息。PCA的应用广泛,包括降维、数据压缩、特征提取和数据可视化等。在实际应用中,PCA帮助我们简化数据结构、提高分析效率。

Lewiz_124的博客 1482
上一篇: iphone 4 程序开发:真机测试 (免费无99刀)
下一篇: 我理解的结构化与面向对象
chentingpc
博客等级 码龄20年 92粉丝 36原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值