实验内容

实验任务

  1. 利用主成分分析(PCA)降维进行人脸识别;
  2. 利用非负矩阵分解(NMF)对人脸进行降维;

实验目的

  1. 学会使用常见的单类数据降维方法处理高维数据;
  2. 尝试利用降维后的数据进行简单的人脸识别;

算法简介

  1. 主成分分析算法
    PCA(Principal Component Analysis)是一种常用的数据分析方法。通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。
  2. 非负矩阵分解算法:
    非负矩阵分解,即NMF,主要是将一个大矩阵分解成两个小矩阵,使得这两个小矩阵相乘后能够还原到大矩阵,从而达到降维的目的。

实验设计

数据降维主要是对人脸数据进行降维,分别利用PCA和NMF算法对人脸进行降维,并利用降维后的数据进行人脸重建,分析降维前和降维后的数据之间的异同,对比降维效果。

实验环境及实验数据集

  1. 实验环境:
    本次实验主要是在Windows 10 操作系统上进行的,编程语言使用Python,版本为3.7.0,使用sublime_text作为文本编辑软件,最终完成实验。
  2. 数据集:
    本实验主要利用以下数据集。
    人脸识别数据集,包括120人不同表情和光照下的1680幅人脸图像,每人14幅。图像已经归一化,大小为50*40,图像格式为bmp。

实验过程

  1. PCA人脸数据降维
    利用PCA对人脸进行降维的步骤如下:
    1)读取图像数据
    2)每列减去均值
    3)计算协方差矩阵
    4)计算协方差矩阵的特征值和特征向量
    5)选择主成分
    6)将训练集进行降维
    7)显示平均脸
    8)显示特征脸
    9)重建人脸
    10)将测试集进行降维
    11)计算识别率
  2. NMF人脸数据降维
    利用NMF对人脸进行降维的步骤如下:
    1)读取图像数据
    2)初始化权重和特征矩阵
    3)更新权重和特征矩阵
    4)利用权重和特征矩阵重建人脸

实验结果

  1. PCA人脸数据降维
    运行Python程序PCA.py,运行结果如下:
    平均脸:
    PCA/NMF人脸降维(python)
    设置主成分个数为30个,得到以下30张特征脸:
    PCA/NMF人脸降维(python)

120个人,每人选择前两张图片作为训练集,将训练的人脸进行重建,重建之后的部分人脸如下图:
PCA/NMF人脸降维(python)
每人选择3张图片作为测试集,将测试集降维,进行人脸识别,最后得到识别率为87.22%。

  1. NMF人脸数据降维
    运行Python程序NMF.py,每人选择两张图片,进行数据降维之后,重建的部分人脸如下(K=30):
    PCA/NMF人脸降维(python)

相关文章:

  • 2022-12-23
  • 2022-01-22
  • 2021-10-31
  • 2021-07-05
  • 2021-04-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2021-06-20
  • 2021-11-30
  • 2021-06-23
  • 2021-11-30
相关资源
相似解决方案