方差和协方差
方差(Variance)
用于衡量数据集中数值分布的统计量。它表示一组数据中每个数据与其均值之间的差异程度。当我们只有一个维度的数据时(例如人的身高),我们可以用方差来衡量数据的离散程度。
协方差(Covariance)
用于衡量两个维度之间的变化关系。例如,我们想要比较学习时间和考试分数之间的关系,我们可以使用协方差来衡量这两个变量之间的关系。协方差的公式为:
$$ cov(x1, x2)=\frac{\sum_{i=1}^n\left(x_1^i-\bar{x}_1\right)\left(x_2^i-\bar{x}_2\right)}{n-1} $$
其中,$x_1$ 是第一个维度的数据(例如学习时间),$x_2$ 是第二个维度的数据(例如考试分数),$\bar{x}_1$ 和 $\bar{x}_2$ 分别表示 $x_1$ 和 $x_2$ 的均值。
如果协方差是正的,则代表两个维度一起增加或减少,比如随着学习时间增加,科目的分数也有所增加。如果是负的,则代表两个维度一个增加伴随着另一个减少,比如玩游戏时间与科目的分数。如果是零,则代表没有关系,比如身高和科目分数。
协方差在判断高维数据相关性的时候很有用。
协方差计算
- 对于一个具有多个维度的数据集(例如,x、y 和 z),我们需要计算以下协方差:
- x 和 y 之间的协方差;
- y 和 z 之间的协方差;
- x 和 z 之间的协方差;
- 测量 x、y 和 z 之间的协方差分别可以得到各自的方差。
协方差矩阵
- 我们可以用矩阵形式表示不同维度之间的协方差。例如,对于一个具有三个维度(x,y 和 z)的数据集,协方差矩阵为:
- 对角线上的元素表示 x、y 和 z 的方差;
- 由于 $\operatorname{cov}(x, y) = \operatorname{cov}(y, x)$,矩阵是关于对角线对称的;
- N 维数据将产生 NxN 协方差矩阵。
主成分分析(PCA)简介
PCA 是一种用于简化数据集的技术。它通过选择一个新的坐标系进行线性变换,使得:
- 数据集在任何投影上的最大方差位于第一个轴(称为第一主成分);
- 第二大方差位于第二轴;
- 依此类推。
PCA 可以用于通过消除较不重要的主成分来降低维度。
什么是主成分?
- 通过计算协方差矩阵的特征值和特征向量,我们发现具有最大特征值的特征向量对应于数据集中具有最强相关性的维度。这些特征向量被称为主成分。
- PCA 的应用包括:面部识别、图像压缩、高维数据中的模式发现等。
如何知道给定的一组点是否可以用 PCA 压缩?
- 答案是观察点之间的相关性。我们可以通过计算协方差来查找点之间的相关性。用于做此事的工具称为 PCA。
PCA 简单示例
考虑空间中的如下三维点 (x, y, z):
|
|
为了在内存中存储每个点,我们需要 18 = 3 x 6 字节。但是,在这个示例中,所有点都与 P1 点按比例缩放,因此我们只需要使用 9 字节(存储一个点(3字节)+乘法常数(6字节))即可。
观察这些点,它们都位于一条直线上,这意味着它们都属于原始 3D 空间的一维子空间。我们可以使用 PCA 来找到这些点的主成分,并将其投影到这个子空间上,从而实现数据压缩。
在这种情况下,我们可以只存储一个基准点(例如 P1)和其他点相对于该基准点的缩放因子。这样,我们可以大大减少存储空间的需求。
示例中的主成分
主成分是沿着所有点共线的方向的向量。换句话说,主成分代表了这些点的分布方向,这个方向能解释数据中的最大方差。
在这个简化的例子中,我们可以通过观察得出,所有点都位于一条直线上,这意味着它们的分布方向是一致的。因此,在这种情况下,我们可以将数据压缩为沿着这个主成分方向的一维数据。
然而,在实际应用中,数据通常在多个维度上分布,且不一定完全共线。在这种情况下,我们需要找到一个主成分方向,该方向可以解释数据中的最大方差。通过将数据投影到这个主成分方向上,我们可以降低数据的维度,从而实现数据压缩。
信息丢失
通过将数据投影到低维子空间上(例如,主成分方向),我们会丢失一些信息。在进行降维时,我们试图找到一个平衡点,在保留数据的主要特征和方差的同时,减少数据的维度和存储需求。
实际上,这个压缩过程可以被看作是一种有损压缩。在某些情况下,失去的信息可能并不重要,或者对于我们关心的任务来说,影响较小。例如,在图像压缩中,一些高频细节的丢失可能对于人眼难以察觉,因此保留主要成分仍然能够保持图像的基本视觉质量。
然而,在某些应用中,可能需要更仔细地考虑如何选择主成分以兼顾信息损失和压缩效果。例如,如果数据中的某个次要成分对于某个特定任务具有重要意义,那么我们可能需要根据具体情况调整所保留的主成分数量。在使用 PCA 时,需要权衡信息损失和压缩效果。
PCA 定理
假设我们有一组数据集 $x_i$,其中每个数据点都有 n 个维度,表示为 N×1 的列向量。PCA 定理解释了我们如何用特征向量(eigenvectors)和特征值(eigenvalues)表示原始数据:
定理中的关键部分是:
$$ \mathbf{x}_{j}=\overline{\mathbf{x}}+\sum_{i=1}^{i=n} g_{j i} \mathbf{e}_{i} $$
这个公式表示,每个数据点 $x_j$ 都可以表示为均值 $ \overline{\mathbf{x}} $ 和特征向量 $ \mathbf{e}_i $ 的线性组合。这里,$g_{ji}$ 是标量,表示第 $j$ 个数据点在第 $i$ 个特征向量方向上的坐标。换句话说,这个公式将原始数据点转换为特征向量所张成的空间中的坐标。
另一个重要的概念是特征向量 $e_1, e_2, \ldots, e_n$ 张成了一个特征空间。这些特征向量是 N 维空间中的方向,它们是彼此正交的,这意味着它们之间的夹角为 90 度。
最后,我们用以下公式计算数据点在特征向量方向上的坐标 $g_{ji}$:
$$ g_{ji} = (\mathbf{x}_{j} - \overline{\mathbf{x}}) \cdot \mathbf{e}_{i} $$
这个公式计算了向量 $(\mathbf{x}_{j} - \overline{\mathbf{x}})$ 在特征向量 $\mathbf{e}_i$ 方向上的投影。
虽然 PCA 定理的公式没有在计算过程中直接用到,但它为我们提供了一个理论依据,解释了为什么我们可以通过计算特征值和特征向量来实现数据降维。在实际计算过程中,我们关注的是如何找到这些特征向量,并利用它们将数据投影到主成分子空间。
PCA 基本原理
假设我们有一组数据集 $x_i$,其中每个数据点都有 n 个维度,表示为 N×1 的列向量。首先,我们需要进行以下步骤:
1. 数据去均值化:
这个步骤的目的是将数据集的中心聚拢,便于后续计算协方差。对于每个维度 $i$,计算均值 $\bar{x}_i$,然后将原始数据减去对应的均值。设 $x_{ij}$ 为第 $j$ 个数据点的第 $i$ 个维度的值,我们有:
$$ \bar{x}_i=\frac{1}{n} \sum_{j=1}^n x_{i j} $$
然后我们用 $ \bar{x}_i $ 更新每个数据点的第 $i$ 个维度:
$$ x_{ij}^{’} = x_{ij} - \bar{x}_i $$
2. 计算协方差矩阵:
协方差矩阵可以帮助我们了解数据集中不同维度之间的关系。首先,我们已经有了去均值化后的数据矩阵 $X$,其中每一列代表一个数据点,每一行代表一个维度。
$$ X = \left[\begin{array}{cccc} x_{11}^{’} & x_{12}^{’} & \cdots & x_{1n}^{’} \\ x_{21}^{’} & x_{22}^{’} & \cdots & x_{2n}^{’} \\ \vdots & \vdots & \ddots & \vdots \\ x_{N1}^{’} & x_{N2}^{’} & \cdots & x_{Nn}^{’} \end{array}\right] $$
接下来,我们计算去均值化后的数据矩阵 $X$ 与其转置矩阵 $X^T$ 的乘积,以得到协方差矩阵 $Q$:
$$ Q = XX^T = \left[\begin{array}{cccc} x_{11}^{’} & x_{12}^{’} & \cdots & x_{1n}^{’} \\ x_{21}^{’} & x_{22}^{’} & \cdots & x_{2n}^{’} \\ \vdots & \vdots & \ddots & \vdots \\ x_{N1}^{’} & x_{N2}^{’} & \cdots & x_{Nn}^{’} \end{array}\right] \left[\begin{array}{c} x_{11}^{’} & x_{21}^{’} & \cdots & x_{N1}^{’} \\ x_{12}^{’} & x_{22}^{’} & \cdots & x_{N2}^{’} \\ \vdots & \vdots & \ddots & \vdots \\ x_{1n}^{’} & x_{2n}^{’} & \cdots & x_{Nn}^{’} \end{array}\right] $$
协方差矩阵 $Q$ 是一个 $N \times N$ 的矩阵,其中 $Q_{ij}$ 表示第 $i$ 个维度和第 $j$ 个维度之间的协方差。
$$ Q = XX^T $$
3. 计算协方差矩阵的特征值和特征向量:
首先,我们已经得到了协方差矩阵 Q。要找到它的特征值和特征向量,我们需要解这个方程:
$$ Q e_i = \lambda_i e_i $$
其中 $e_i$ 是特征向量,$\lambda_i$ 是特征值。
为了找到特征值,我们需要求解行列式为零的方程:
$$ \det(Q - \lambda I) = 0 $$
其中 I 是单位矩阵,具有与 Q 相同的维度。求解这个方程将给出特征值 $\lambda_i$。
得到特征值之后,我们可以将它们代入原方程来求解特征向量:
$$ Q e_i = \lambda_i e_i $$
对于每个特征值 $\lambda_i$,我们可以解出对应的特征向量 $e_i$。通常,在得到特征向量后,我们需要将它们归一化,即使得每个特征向量的长度为1。
总结一下,计算协方差矩阵的特征值和特征向量的步骤如下:
求解方程 $\det(Q - \lambda I) = 0$,找到特征值 $\lambda_i$。
对于每个特征值 $\lambda_i$,代入原方程 $Q e_i = \lambda_i e_i$ 求解特征向量 $e_i$。
对得到的特征向量进行归一化处理。
4. 选择前 k 个主成分(数据压缩):
将数据 x 表示为 e1, e2, … en 的形式并没有改变数据的大小。但是,如果数据点之间具有高度相关性,那么许多 x 的坐标将接近于零或等于零。这意味着它们位于低维线性子空间中。 对于特征向量 $e_i$,我们根据其特征值进行排序:
$$ \lambda_{1} \geq \lambda_{2} \geq \ldots . \lambda_{n} $$
假设如果 i > k,那么 λi ≈ 0,则:
$$ \mathbf{x}_{j} \approx \overline{\mathbf{x}}+\sum_{i=1}^{i=k} g_{j i} \mathbf{e}_{i} $$
同时,我们可以将这些特征向量堆叠成一个矩阵 $E_k$:
$$ E_k = [e_1, e_2, \cdots, e_k] $$
5. 将原始数据投影到主成分子空间:
在 PCA 的前面几个步骤中,我们已经计算出了数据的协方差矩阵,并找到了与最大特征值对应的特征向量。这些特征向量表示了数据中最重要的方向,也就是主成分。我们的目标是将原始数据投影到这些主成分所张成的子空间上,从而实现降维。
设我们已经选择了前 k 个特征向量,构成了矩阵 $E_k$。现在,我们将使用矩阵 $E_k$ 将去均值化后的原始数据矩阵 $X$ 投影到主成分子空间。投影的过程其实就是矩阵乘法的过程:
$$ Y = X E_k $$
其中,$X$ 是去均值化后的原始数据矩阵,$E_k$ 是前 k 个特征向量组成的矩阵,$Y$ 是投影到主成分子空间后的数据矩阵。
这个矩阵乘法的过程实际上就是将原始数据的每个点在新的主成分坐标系下表示。在新的坐标系下,数据点只需要 k 个维度来表示,从而实现了降维。
需要注意的是,投影后的数据矩阵 $Y$ 仍然保留了原始数据中大部分的信息。这是因为我们选择了与最大特征值对应的特征向量作为主成分,这些特征向量表示了数据中最重要的方向。降维的原因是,因为k是一个相对低维的矩阵,一个高维矩阵乘以一个低维矩阵的列将向低维矩阵对齐。
实现 PCA
这个例子包含以下步骤:
- 数据准备
- 计算协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 选择主成分(特征向量)
- 计算新数据坐标
数据准备
数据:
$x$ | $y$ |
---|---|
2.5 | 2.4 |
0.5 | 0.7 |
2.2 | 2.9 |
1.9 | 2.2 |
3.1 | 3.0 |
2.3 | 2.7 |
2 | 1.6 |
1 | 1.1 |
1.5 | 1.6 |
1.1 | 0.9 |
计算协方差矩阵
根据我们的数据集,我们可以计算协方差矩阵如下:
$$ \operatorname{cov}=\left(\begin{array}{cc} .616555556 & .615444444 \\ .615444444 & .716555556 \end{array}\right) $$
由于这个协方差矩阵的非对角元素是正数,我们可以期望 x 和 y 变量一起增加。
计算协方差矩阵的特征值和特征向量
$$ \begin{aligned} & \text { 特征值 }=\left(\begin{array}{rr} .0490833989 \\ 1.28402771 \end{array}\right) \\ & \text { 特征向量 }=\left(\begin{array}{rr} -.735178656 & -.677873399 \\ .677873399 & -735178656 \end{array}\right] \end{aligned} $$
特征值:特征值是一个标量,表示矩阵对特征向量的缩放程度。在 PCA 中,特征值表示数据在相应特征向量方向上的方差。较大的特征值对应于数据在该方向上变化较大的维度。
特征向量:特征向量是一个向量,它与原始矩阵相乘后,结果仅为特征向量本身的缩放。在 PCA 中,特征向量表示数据的主要变化方向。较大特征值对应的特征向量是数据中最重要的方向(主成分)。
在我们的例子中,较大的特征值是 1.28402771,对应的特征向量是 [-0.677873399, -0.735178656]。这意味着数据在这个方向上的变化最大,这个方向就是我们要找的第一主成分。
方差和特征值的关系
在 PCA 中,我们寻找主成分的目的是为了找到那些能最大程度地保留数据原始信息的方向。如果我们选择了一个方差较小的方向,那么在这个方向上的信息较少,可能无法很好地反映数据的整体结构。因此,我们希望在降维过程中保留那些方差较大的方向,以便在降低数据维度的同时,仍然保留数据中的主要信息。
所以,当数据在某个方向上的方差越大时,说明在这个方向上包含的信息越多,因为这个方向能更好地描述数据的整体结构和变化。
选择主成分(特征向量)
我们可以构造一个包含所有特征向量的特征向量矩阵:
$$ \left(\begin{array}{ll} -.677873399 & -.735178656 \\ -.735178656 & .677873399 \end{array}\right) $$
或者,我们可以选择只保留较大的、更重要的特征值对应的特征向量,并仅使用单列矩阵:
$$ \left(\begin{array}{l} -.677873399 \\ -.735178656 \end{array}\right) $$
计算新数据坐标
为了得到新的数据坐标,我们需要执行以下操作:
FinalData = RowZeroMeanData × RowFeatureVector
其中,RowFeatureVector 是具有最重要特征向量的矩阵。RowZeroMeanData 是均值调整后的数据,即数据中的每一列包含一个数据项,每一行包含一个单独的维度。
这实际上是将坐标轴旋转,使得具有较高方差的轴首先出现。
通过使用 PCA,我们实际上在寻找一个新的坐标系,该坐标系能更好地描述数据的主要特征。在这个新的坐标系中,我们优先选择具有较高方差的轴,因为较高的方差表示在这个方向上的数据变化较大,因此这个方向更可能提供有关数据分布的重要信息。
换句话说,我们将原始坐标系旋转到一个新的坐标系,使得新坐标系的第一轴(主成分)是数据方差最大的方向,第二轴是次大的方向,以此类推。这将帮助我们更紧凑地表示数据,因为在新坐标系的主要方向上,数据具有更强的相关性,而其他方向(较小的方差)的变化可以忽略,从而实现降维和数据压缩。
通过这个步骤,我们就可以使用 PCA 降低数据的维度,并用更紧凑的表示来描述原始数据。
回顾一下整个过程及要点
- 计算协方差矩阵,了解数据的变化关系。
- 计算协方差矩阵的特征值和特征向量。
- 选择主成分,即根据特征值的大小对特征向量进行排序,选择较大的特征值对应的特征向量。
- 使用选定的主成分对原始数据进行线性变换,得到新的数据坐标。
通过使用 PCA,可以在保留数据集中重要信息的同时降低数据的维度,从而减少存储空间和计算时间。
奇异值分解(SVD)
奇异值分解(Singular Value Decomposition,简称 SVD)是一种在矩阵分解中非常重要的技术。任何一个$m \times n$的矩阵$X$都可以表示为三个矩阵的乘积:
$$ X=U D V^{T} $$
其中:
- $U$是一个$m \times m$的矩阵,其列向量是正交的(两两垂直且模为1);
- $V$是一个$n \times n$的矩阵,其列向量也是正交的;
- $D$是一个$m \times n$的对角矩阵,其对角线上的元素称为$X$的奇异值,它们是非负实数,并满足:$s_1 \ge s_2 \ge s_3 \ge \ldots \ge 0$。
奇异值分解(SVD)具有以下性质:
- 矩阵$U$的列向量是矩阵$XX^T$的特征向量;
- 矩阵$V$的列向量是矩阵$X^TX$的特征向量;
- 矩阵$D$的对角线元素,即奇异值,是矩阵$XX^T$和矩阵$X^TX$的特征值。
在主成分分析(PCA)中,我们可以使用奇异值分解(SVD)来避免直接计算协方差矩阵$Q=XX^T$,从而提高计算效率。
奇异值分解举例
假设我们有如下5个二维数据点:
$$ \begin{bmatrix} 2.5 & 2.4 \\ 0.5 & 0.7 \\ 2.2 & 2.9 \\ 1.9 & 2.2 \\ 3.1 & 3.0 \end{bmatrix} $$
- 对数据进行中心化(减去均值):
$$ \begin{bmatrix} 0.69 & 0.49 \\ -1.31 & -1.21 \\ 0.39 & 0.99 \\ 0.09 & 0.29 \\ 1.29 & 1.09 \end{bmatrix} $$
- 对中心化后的数据矩阵$X$进行奇异值分解(SVD):
$$ X = UDV^T $$
通过计算,我们得到:(这里的算法实际上复杂度很低,涉及到底层的C/Fortran代码,可以不关心)
$$ U = \begin{bmatrix} -0.37 & 0.63 \\ 0.73 & 0.49 \\ -0.56 & -0.25 \\ -0.19 & -0.44 \\ -0.89 & -0.58 \end{bmatrix}, D = \begin{bmatrix} 2.16 & 0 \\ 0 & 0.54 \end{bmatrix}, V = \begin{bmatrix} -0.82 & -0.58 \\ -0.58 & 0.82 \end{bmatrix} $$
根据奇异值分解的结果,选择主成分。根据$D$矩阵,我们可以看到第一个奇异值2.16较大,所以我们选择对应的第一个特征向量$[-0.82, -0.58]^T$作为主成分。
将数据投影到选定的主成分上。这里我们只选择了一个主成分,所以我们将二维数据降到一维。投影的方法是用$X$乘以主成分向量,即$XV_1$:
$$ \begin{bmatrix} 0.69 & 0.49 \\ -1.31 & -1.21 \\ 0.39 & 0.99 \\ 0.09 & 0.29 \\ 1.29 & 1.09 \end{bmatrix} \begin{bmatrix} -0.82 \\ -0.58 \end{bmatrix} = \begin{bmatrix} -0.83 \\ 1.88 \\ -0.87 \\ -0.37 \\ -1.72 \end{bmatrix} $$
现在我们得到了降维后的一维数据。这个过程通过奇异值分解(SVD)实现了主成分分析(PCA),并把原始的二维数据降到了一维。
特征脸(Eigenfaces)概念
特征脸是一种用于人脸识别的技术,它将人脸看作是由一些“组件”或“基础”人脸的加权组合。这些基础人脸称为特征脸。特征脸可以被看作是人脸空间中的一组基向量,可以用它们的线性组合来表示任意一个人脸。通过调整不同特征脸的权重,我们可以表示不同的人脸。
例如,我们可以将一张人脸表示为特征脸1的0.6倍加上特征脸2的0.4倍,这种表示方法可以更简洁地描述人脸的特征。
接下来,我们将讨论特征向量(Eigenvectors)和特征值(Eigenvalues)的概念。
特征向量(Eigenvectors)和特征值(Eigenvalues)
在线性代数中,特征向量和特征值是与方阵相关的概念。对于一个方阵A,如果存在非零向量v和标量λ使得Av = λv成立,那么我们称向量v是矩阵A的一个特征向量,对应的λ是特征向量v的特征值。
特征向量在许多实际应用中有着重要作用,比如在我们本课程的主题——特征脸中。在特征脸中,我们要找到一个人脸数据的协方差矩阵的特征向量,这些特征向量就是特征脸。特征值则表示了对应特征脸在描述人脸差异方面的重要性。
从人脸训练集学习特征脸
为了从一组真实的训练人脸中学习特征脸,我们可以采用以下步骤:
准备数据:将人脸图片集中的每张图片转换为一个向量,其中每个元素表示一个像素的值。将这些向量堆叠在一个矩阵中,其中每行表示一张人脸图片。
计算均值人脸:计算训练集中每个像素的平均值,得到一个均值人脸向量。
减去均值人脸:将训练集中的每张人脸减去均值人脸,从而将人脸数据集中心化。
计算协方差矩阵:计算中心化后的人脸数据矩阵的协方差矩阵。
计算特征向量和特征值:找出协方差矩阵的特征向量和特征值。这些特征向量就是特征脸,它们表示了人脸数据中的主要变化方向。
选择主要特征脸:根据特征值的大小,选择一部分最重要的特征脸。较大的特征值表示对应的特征脸在描述人脸差异方面更加重要。
人脸识别和重建
使用学习到的特征脸,我们可以进行人脸识别和重建。下面分别介绍这两个应用:
人脸识别
将待识别的人脸投影到特征脸空间:将待识别的人脸向量减去均值人脸,然后计算它与每个特征脸的内积,得到一组权重值。这些权重值表示待识别的人脸在特征脸空间中的坐标。
计算距离:计算待识别人脸与训练集中每个人脸在特征脸空间中的欧氏距离。
选择最近邻:找到距离最近的训练集人脸,将其标签分配给待识别的人脸。
人脸重建
选择一部分主要特征脸:根据需求,可以选择不同数量的特征脸进行重建。通常情况下,选择较大特征值对应的特征脸。
计算权重:将待重建的人脸向量减去均值人脸,然后计算与选择的特征脸的内积,得到一组权重值。
重建人脸:用选择的特征脸乘以对应的权重值,然后加上均值人脸,得到重建的人脸。
通过以上方法,我们可以使用特征脸进行人脸识别和重建。需要注意的是,选择不同数量的特征脸会影响识别和重建的性能。选择较多的特征脸可以提高重建的质量,但同时也会增加计算复杂度。因此,在实际应用中需要根据具体需求权衡。
总结:特征脸是一种基于统计方法的人脸识别技术,也可用于物体识别。特征脸方法通过主成分分析(PCA)从训练集中学习一组特征脸,之后可以利用这些特征脸进行人脸识别和重建。特征脸方法既简单又有效,但也存在一定的局限性,例如对光照和姿势的变化较为敏感。
Exercise Sheet
You are asked to design and implement a secure entry devise to the School of Com-puter Science, based on facial detection and recognition of each student and staff. The system must be able to identify each individual member and allow appropriate access through secure doors. You should describe the technique that you would apply together with the problems you believe you would encounter in such a system so that you can:
(i) Gather the required information for processing. [2 marks]
(i) Gathering the required information for processing: To implement a secure entry device based on facial detection and recognition, we would first need to collect a dataset of images for each student and staff member. This dataset should include multiple images of each individual under different lighting conditions, orientations, and facial expressions. The collected images can be pre-processed by resizing, converting them to grayscale, and normalizing the pixel intensity values to improve the recognition process.
(ii) Identify each individual member. You need to outline the details of your chosen method that will allow make this possible. [10 marks]
(ii) Identifying each individual member: We would use the Eigenfaces method to recognize individuals based on their facial features. The steps of the method are as follows:
Prepare the dataset by creating a matrix where each row represents a face image as a vector. Compute the average face vector and subtract it from each face image vector in the dataset to centralize the data. Calculate the covariance matrix of the centralized face data matrix. Compute the eigenvectors and eigenvalues of the covariance matrix. The eigenvectors represent the Eigenfaces, which capture the primary variations among the face images. Project each face image in the dataset onto the Eigenface space by calculating the weights corresponding to each Eigenface. For an incoming face image, preprocess it, project it onto the Eigenface space, and calculate its weights. Compare the weights of the input face image with the weights of the face images in the dataset using a similarity metric, such as the Euclidean distance. Identify the individual by finding the face image in the dataset with the smallest distance to the input face image.
(iii) Determine and minimise the drawbacks of the suggested technique. [8 marks] [20 marks]
(iii) Determining and minimizing the drawbacks of the suggested technique: The Eigenface method, while effective, has some limitations that need to be addressed:
Sensitivity to lighting conditions: Eigenfaces can be sensitive to variations in illumination. To minimize this issue, we can preprocess the images to equalize the lighting conditions and use multiple images per individual with different lighting conditions during training. Sensitivity to facial expressions and orientations: Eigenfaces can be sensitive to variations in facial expressions and head orientations. We can include multiple images per individual with different expressions and orientations during training to improve recognition performance. Complexity: The computation of eigenvectors can be computationally expensive for large datasets. We can use complicity reduction techniques, such as SVD, to reduce the calculation complicity. Information Loss: The use of PCA causes a degree of information loss when dimensionality is reduced. We need to choose to retain the right number of feature vectors corresponding to the feature values so that the most important information is retained to the greatest extent possible.
By addressing these drawbacks, we can improve the performance and robustness of the Eigenfaces-based facial recognition system for secure entry to the School of Computer Science.