您的位置:首页 > 其它

特征脸(Eigenfaces)

2016-03-13 19:01 162 查看
我们给的图像表达的问题在于它的高维度性。一个二维的pxq的灰度图像扩展到一个m=pq维的向量空间,所以对一个100X100像素的图像来说,已经有一个10000维的图像空间了。这对于任何计算来说都是太多了,但是所有的维度对我们来说都是有用的吗?只有在数据上有一些变化时,我们才能做出决定。所以我们要寻找的是占最多信息的部分。Karl Pearson于1901年独立地提出主元素分析(Principal Component Analysis),Harold Hotelling将一个可能的相关变量集合降到一个更小的不相关变量的集合。高维的数据集经常描述为相关变量,因此只有一些有意义的维度占据了信息的绝大大部分。PCA方法寻找数据中方差最大的方向,称为主元素。

算法描述:

假设X={x1,x2,...,xn}X=\{x_1,x_2,...,x_n\}是一个随机变量,xi∈Rdx_i \in R^d

以下每个人脸图像对应一个XX中的一列。



计算均值μ=1n∑i=1nx2i\mu=\frac{1}{n}\sum_{i=1}^n x_i^2

以下图像为上述25张图像的平均值,也就是平均脸。



计算协方差矩阵SSS=1n∑i=1n(xi−μ)(xi−μ)TS=\frac{1}{n}\sum_{i=1}^n(x_i-\mu)(x_i-\mu)^T

计算SS的特征值λi\lambda_i和特征向量νi\nu_i Sνi=λiνi,i=1,2,...,nS\nu_i=\lambda_i\nu_i, i=1,2,...,n

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

然后,向量xx的kk个主成分通过以下式子给出:y=WT(x−μ)y=W^T(x-\mu),其中W=(ν1,ν2,...,νk)W=(\nu_1,\nu_2,...,\nu_k). 从PCA基进行重建由下式给出:x=Wy+μx=Wy+\mu

我们来推导一下这个关系,对y=WT(x−μ)y=W^T(x-\mu)两侧同乘以(WT)−1(W^T)^{-1}即为(WT)−1y=x−μ(W^T)^{-1}y=x-\mu,将μ\mu移到右侧,即得x=(WT)−1y+μx=(W^T)^{-1}y+\mu

因为WW是SS的特征向量组成的矩阵,因为特征向量是正交的,所以矩阵WW是正交矩阵。因为正交矩阵的转置等于正交矩阵的逆,即WT=W−1W^T=W^{-1},得(WT)−1=W(W^T)^{-1}=W。(注:此处的证明不确定是正确的)

特征脸方法通过以下步骤进行人脸识别:

1. 将所有的训练图像数据映射到PCA子空间。

2. 将查询图像数据映射到PCA子空间。

3. 在映射的训练图像和查询图像之间找到最近的一个。

至此仍然有一个问题没有解决。假设我给出了400副图像,每副图像的大小为100X100像素。主元素分析要求解协方差矩阵S=XXTS=XX^T,其中在我们的例子中size(X)=10000×400size(X)=10000\times400。你需要处理10000×1000010000\times10000的矩阵,大约为0.8GB0.8GB。很显然这是不可行的,所以我们用了一些小伎俩。从线性代数中我们知道一个M×NM\times N的矩阵,其中M>NM>N,只有N−1N-1个非零特征值。所以可以对S=XTXS=X^TX替代S=XTXS=X^TX进行特征值分解:XTXνi=λiνiX^TX\nu_i=\lambda_i\nu_i

对上式左乘一个矩阵X得到S=XTXS=X^TX的初始特征向量:XXT(Xνi)=λi(Xνi)XX^T(X\nu_i)=\lambda_i(X\nu_i)

生成的特征向量是正交的,为了得到正交特征向量他们需要被归一化到单位长度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: