特征脸(Eigenfaces)

我们给的图像表达的问题在于它的高维度性。一个二维的pxq的灰度图像扩展到一个m=pq维的向量空间,所以对一个100X100像素的图像来说,已经有一个10000维的图像空间了。这对于任何计算来说都是太多了,但是所有的维度对我们来说都是有用的吗?只有在数据上有一些变化时,我们才能做出决定。所以我们要寻找的是占最多信息的部分。Karl Pearson于1901年独立地提出主元素分析(Principal Component Analysis),Harold Hotelling将一个可能的相关变量集合降到一个更小的不相关变量的集合。高维的数据集经常描述为相关变量,因此只有一些有意义的维度占据了信息的绝大大部分。PCA方法寻找数据中方差最大的方向,称为主元素。
算法描述:
假设 X={x1,x2,...,xn} 是一个随机变量, xiRd
以下每个人脸图像对应一个 X 中的一列。
特征脸(Eigenfaces)_第1张图片

  1. 计算均值
    μ=1ni=1nx2i

    以下图像为上述25张图像的平均值,也就是平均脸。
    这里写图片描述
  2. 计算协方差矩阵 S

    S=1ni=1n(xiμ)(xiμ)T

  3. 计算 S 的特征值 λi 和特征向量 νi

    Sνi=λiνi,i=1,2,...,n

  4. 根据他们的特征值将特征向量递减排序。 k 个主成分即为对应着 k 个最大的特征值的特征向量。

然后,向量 x k 个主成分通过以下式子给出:

y=WT(xμ)
,其中 W=(ν1,ν2,...,νk) . 从PCA基进行重建由下式给出:
x=Wy+μ

我们来推导一下这个关系,对 y=WT(xμ) 两侧同乘以 WT)1 即为 (WT)1y=xμ ,将 μ 移到右侧,即得
x=(WT)1y+μ

因为 W S 的特征向量组成的矩阵,因为特征向量是正交的,所以矩阵 W 是正交矩阵。因为正交矩阵的转置等于正交矩阵的逆,即 WT=W1 ,得 (WT)1=W 。(注:此处的证明不确定是正确的)
特征脸方法通过以下步骤进行人脸识别:
1. 将所有的训练图像数据映射到PCA子空间。
2. 将查询图像数据映射到PCA子空间。
3. 在映射的训练图像和查询图像之间找到最近的一个。
至此仍然有一个问题没有解决。假设我给出了400副图像,每副图像的大小为100X100像素。主元素分析要求解协方差矩阵 S=XXT ,其中在我们的例子中 size(X)=10000×400 。你需要处理 10000×10000 的矩阵,大约为 0.8GB 。很显然这是不可行的,所以我们用了一些小伎俩。从线性代数中我们知道一个 M×N 的矩阵,其中 M>N ,只有 N1 个非零特征值。所以可以对 S=XTX 替代 S=XTX 进行特征值分解:
XTXνi=λiνi

对上式左乘一个矩阵X得到 S=XTX 的初始特征向量:
XXT(Xνi)=λi(Xνi)

生成的特征向量是正交的,为了得到正交特征向量他们需要被归一化到单位长度。

你可能感兴趣的:(特征脸(Eigenfaces))