• Two-dimensional-PCA-a-new-approach-to-appearance-based-face-representation-and-recognition 读后感

    概览

    本文介绍了传统的 ICA 方法和 PCA 方法更好的 2DPCA 方法。2DPCA 是 2维的 PCA 识别。PCA 是 principal component analysis 缩写。 中文解释为特征分析

    数据集

    本文的数据集的人脸分析是存在于
    ORL, AR, Yale face 这3种人脸数据库。

    PCA

    主要是基于面部特征分类,重组,从而识别人类面部。
    比较方法是基于协方差矩阵。
    但是PCA有个缺点,他很难抓住特征点,除非特征点直接写在数据集中。
    所以作者想了一种新的方法 elastic bunch
    graph matching 一种基于特征值的算法

    ICA

    是 independent component
    analysis 的缩写,面部分割在拼接,这样做是不会影响正确率的在协方差的方面

    比较

    PCA 和 ICA 余弦方面ICA 比较的优秀,而如果使用了欧氏距离,2者相似

    时间复杂度方面 ICA > K PCA > PCA

    2DPCA

    作者现在 发现PCA 很难把高维的图片抽象成一个协方差矩阵 因为 他的训练集的相关和图片大小

    为了解决这种问题,作者引入了 SVD 奇异值分解

    ps:不懂的人,去恶补线代.看不懂,别学了,退学!(zzy名言)

    现在 2DPCA 可以直接抽象出面部特征,因为2DPCA 直接基于2维数组,而不是一维的向量。2维不需要直接转换成1维的

    算法

    终于开始研究算法,前面都是废话。好了开始上算法,老铁抓稳了~

    我们现在直接基于 A 是给定的图像矩阵 n*m维度的
    $$
    Y = AX
    $$
    其中X为 m维的一个列向量,我们把A 基于X方向的投影抽象成一个矩阵Y,Y就是抽象出来的特征的投影向量。我们的目标是来评估一个协方差矩阵,最后根据协方差来划定阈值,判断图片是否为对应的图片。

    那么我们的目标就是找到这个X方向的投影向量,通俗来说就是列变换向量。

    这里引入了
    $$
    J(X) = tr(S_x)
    $$
    \(S_x\) 是指协方差矩阵。
    那么什么是协方差矩阵呢?小伙伴又不明白了!

    协防差矩阵

    这里引入了 wikipedia 上的协方差定义

    泪崩,不由得惊叹考研害死人啊,惯性思维
    印象中
    $$
    COV(X,Y)=E(XY)-E(X)*E(Y)
    $$
    是不是很坑?

    而协方差举证 就是 每一个
    $$
    COV(X_i,X_j)
    $$
    就是类似于

    为什么有个=号呢,请原谅我懒不高兴自己写

    好了,那个这个协方差矩阵就好办了
    $$
    \Sigma = E[(X-E[X])*(X-E[X])^{T}]
    $$
    附上特性

    求解\(S_x\)

    $$
    S_x = E[(Y-E[Y])(Y-E[Y])^T]=E[[AX-E(AX)][AX-E(AX)]^T]=E[((A-EA)X)([A-EA]X)^T]
    $$
    我们来求迹
    $$
    tr(S_X)=X^T[E(A-EA)^T(A-EA)]X
    $$
    其中 X为列向量, 一个列向量的迹是
    \(X^TX\)
    线代基础
    协方差的特性是他是个列向量和行向量的乘积矩阵那么做就行了

    现在我们令
    $$
    G_t=E[(A-EA)^T(A-EA)]
    $$
    其中E就是期望了,就是A的均值,我们以求和的方式重新定义G
    $$
    G_t=\dfrac {1}{M}\sum ^{M}_{j=1}(A_j-\overline {A})^T(A_j-\overline {A})
    $$

    \(\overline {A}\) 代表着M个图片的均值

    好了重写下 J(X)
    $$
    J(X) = X^TG_tX
    $$
    X是标准列向量,J(X)称为广义扩散准则
    一个J(X) 是不够的 所以需要一组的 Xi 然后去优化他的,Xi 和 Xj 是对应正交的

    \(G_t\) 对应前d个特征向量值

    提取特征

    $$
    [Y_1,Y_2,Y_3,…]^T = A[X_1,X_2,X_3,..]^T
    $$

    这样总的矩阵Y 就是一个 2维度的,他的特征就是一个一维的向量,而PCA的特征只是一个点

    基于欧式距离的协方差矩阵判断

    $$
    B_i = [Y^{(i)}_1,Y^{(i)}_2,…]
    $$

    $$
    B_j = [Y^{(j)}_1,Y^{(j)}_2,…]
    $$

    $$
    d(B_i,B_j)=\sum^d_{k=1}

    $$

    如果
    $$
    d(B,B_l)=mind(B,B_j)
    $$
    \(B_l\)是给定的一个正确的图片,如果B和\(B_j\)的欧式距离和最优的欧式距离相等,就认为B是正确的

    基于2DPCA 的图像识别

    把\(G_t\) 的最大的前d个特征值对饮的特征项向量 记为 X(1-k) 记为U 然后对应的 Y(1-k) 记为 V

    $$
    V=[Y_1,Y_2,Y_3,…]
    U = [X_1,X_2,X_3,..]
    $$

    $$
    V = AU
    $$

    X(1-k) 是正交的

    所以 可以把 A 重组出来的

    $$
    \begin{aligned}\sim \\ D\end{aligned} = VU^T = \sum^d_{k=1} Y_k X^T_k
    $$

    其中如果 d = n 就能还原 A 图像,不丢失任何信息,而如果 d < n 那么就能得到 和 A 近似的矩阵

    实验数据集

    基于 ORL 数据库的 的图像比较.

    实验证明,最大的几个特征值,能够使还原的图像接近于原图,所以我们可以用 前k个特征向量去替换A

    对比

    正确率

    时间

    和其他算法的对比

    总结

    2DPCA 的优点主要抽象了个特征维度的矩阵,使用了特征向量正交的特性,使计算的复杂性变的很低,对于 矩阵的n次方。 n 如果很大会接近一个 特定的矩阵 是和他最大的特征向量相似。

    其实这个算法就是基于了这个特性,把特征值抽象出来,因为是可逆线性变换所以可以无损还原原图,如果矩阵非满秩,把最大的特征值抽象出来,是可以最大程度接近原图,这样的 一维的计算复杂度 就可以大大的降低

    为什么正确率优化了呢,因为使用了全局的贪心算法,使得 抽象出来的n个特征值,基于欧式距离的值最短

    上一篇:
    leetcode-5 Longest Palindromic Substring
    下一篇:
    leet-code-3 Longest Substring Without Repeating Characters
    本文目录
    本文目录