📜  毫升 |使用特征脸的人脸识别(PCA 算法)

📅  最后修改于: 2022-05-13 01:58:08.681000             🧑  作者: Mango

毫升 |使用特征脸的人脸识别(PCA 算法)

1991 年, Turk 和 Pentland提出了一种人脸识别方法,该方法使用降维和线性代数概念来识别人脸。这种方法在计算上成本较低且易于实现,因此用于当时的各种应用,例如手写识别、唇读、医学图像分析等。
PCA(Principal Component Analysis)是Pearson在1901年提出的一种降维技术。它使用特征值和特征向量来降维并将训练样本/数据投影到小特征空间上。让我们更详细地看一下算法(从人脸识别的角度)。

训练算法:

  • 让我们考虑一组m个维度为N*N 的图像(训练图像)。

    lfw_people_training_images

    带有真实标签的训练图像(LFW 人的数据集)

  • 我们首先将这些图像转换为大小为N 2 的向量,使得:
    图像到矢量

     x_{1},x_{2},x_{3}...x_{m}
  • 现在我们计算所有这些人脸向量的平均值并从每个向量中减去它

     \psi =\dfrac{1}{m}\sum_{i=1}^{m}x_i \\  a_{i} = x_{i}-\psi

    平均脸

    平均脸

  • 现在我们取所有的人脸向量,得到一个大小为N 2 * M 的矩阵。

     A = \begin{bmatrix} a_{1} &a_{2}  &a_{3}  &....  & a_{m} \end{bmatrix}



  • 现在,我们通过将A乘以 A T 来找到协方差矩阵。 A 具有维度N 2 * M ,因此A T具有维度M * N 2 。当我们相乘时,这给了我们N 2 * N 2 的矩阵,这给了我们N 2 个大小的 N 2 个特征向量,这在计算上不是很有效。所以我们通过乘以 A TA来计算我们的协方差矩阵。这给了我们M * M矩阵,它有M 个(假设 M << N 2个大小为M 的特征向量。

     Cov = A^{T}A

  • 在这一步中,我们使用以下公式计算上述协方差矩阵的特征值和特征向量。
     A^{T}A\nu_{i} = \lambda_{i}\nu_{i} \\ \\ AA^{T}A\nu_{i} = \lambda_{i}A\nu_{i} \\ \\ C{}'u_{i} = \lambda_{i}u_{i}


    在哪里,
     C{}' = AA^{T} u_{i} = A\nu_{i}

    从上面的说法可以得出结论C_{}'C具有相同的特征值,它们的特征向量通过等式相关u_{i} = A\nu_{i} .因此,协方差矩阵的M个特征值(和特征向量)给出的M个最大本征值(值和特征向量) C_{}'

  • 现在我们计算这个缩减协方差矩阵的特征向量和特征值,并将它们映射到C_{}'通过使用公式u_{i} = A\nu_{i} .
  • 现在我们选择 K 个特征向量C_{}'对应于 K 个最大特征值(其中 K < M)。这些特征向量的大小为N 2
  • 在这一步中,我们使用了我们在上一步中得到的特征向量。我们取归一化的训练人脸(人脸-平均人脸)  x_{i}并以最好的 K 个特征向量的线性组合表示每个人脸向量(如下图所示)。

      x_{i} -\psi = \sum_{j=1}^{K} w_{j}u_{j}

    这些 u_{j}被称为EigenFaces
    特征脸

    特征脸

  • 在这一步中,我们取特征脸的系数,并以这些系数的向量的形式表示训练人脸。

     x_{i} = \begin{bmatrix} w_{1}^i\\  w_{2}^i\\  w_{3}^i\\  .\\ . \\ w_{k}^i  \end{bmatrix}

    特征面的线性组合

    特征面的线性组合

测试/检测算法:

使用真实标签测试图像

使用真实标签测试图像

  • 给定一个未知的人脸y ,我们需要先对人脸进行预处理,使其在图像中居中,并与训练人脸具有相同的尺寸
  • 现在,我们从平均人脸中减去人脸 \psi .

     \phi = y - \psi

    测试图像 - 平均图像

    测试图像 - 平均图像

  • 现在,我们将归一化向量投影到特征空间以获得特征面的线性组合。

     \phi = \sum_{i=1}^{k}w_{i}u_{i}
  • 从上面的投影,我们生成系数的向量,使得

     \Omega= \begin{bmatrix} w_{1}\\  w_{2}\\  w_{3}\\  .\\ .\\ w_{k}  \end{bmatrix}
  • 我们将上一步生成的向量从训练图像中减去,得到训练向量和测试向量之间的最小距离


     e_r = min_{l}\left \|  \Omega - \Omega_{l}\right \|
  • 如果这e_r低于容差水平T r ,然后从训练图像中识别出 l 人脸,否则该人脸与训练集中的任何人脸都不匹配。

    test_images_result

    测试图像与预测

好处:

  • 易于实现且计算成本较低。
  • 无需了解(例如面部特征)所需的图像(ID 除外)。

限制:

  • 训练/测试需要适当的居中面。
  • 该算法对图像中的光照、阴影和面部比例敏感。
  • 该算法需要面部的前视图才能正常工作。

参考 :

  • Turk 和 Pentland 1991 年关于人脸识别的论文