[CS131] Lecture 13 Face Recognition and LDA

根据 Stanford CS131 课程写的笔记(大部分为 note 翻译),英语水平一般,如有错误请评论指正

Lecture 13 Face Recognition and LDA

Introduction to Facial Recognition

Applications

  • 数字摄影:聚焦人脸
  • 监视器
  • 组织相册:将相同的人放在同一相册
  • 人物追踪
  • 动作和表情:构建基于心情互动的智能设备
  • 安全和战争:检测特殊人物、敌军
  • 电话会议:提供正在视频的人的信息

A Key Distinction: Detection vs. Recognition

Face Detection: 检测照片是否包含人脸和照片上人脸的位置

Face Recognition: 检测照片包含的脸

Space of Faces

如果我们考虑一张大小为m×n灰度图,这张图可以用一个在高维空间Rmn上的点表示。一张图不止包含脸,所以脸只占了相对小的子空间。我们的任务就是对脸的子空间建模。

[CS131] Lecture 13 Face Recognition and LDA

我们计算出 K 维子空间,这样数据点在子空间的投影在所有子空间中都有最大的方差。这个低维子空间捕捉了脸部关键样貌特点。

The Eigenfaces Algorithm

Key Ideas and Assumptions

  • 假设大多数脸部图像都位于低维子空间,由最大方差的前k个方向决定
  • 用 PCA 检测旋转子空间的向量或特征面
  • 将所有数据集中的脸部图像表现为特征面的线性组合,特征面被定义为 SVD 分解的主成份

What are eigenfaces?

特征面是最大方差方向的特征向量的视觉呈现。

[CS131] Lecture 13 Face Recognition and LDA

Training Algorithm

  1. 排列训练图像:x1,...,xn

  2. 计算平均脸:

    μ=1Nxi

  3. 计算协方差矩阵:

    Σ=1NXcXcT

  4. 用 PCA 计算协方差矩阵Σ的特征向量

  5. 计算每个训练图像xi的投影

    xi(xic·ϕ1,xic·ϕ2,...,xic·ϕk)(a1,a2,...,ak)

    其中ϕi是第i个特征向量。

  6. 重构的脸xiμ+a1·ϕ1+...+ak·ϕk

[CS131] Lecture 13 Face Recognition and LDA

Why can we do this?

因为特征值(特征向量的方差)随着主成份数目的增加迅速下降

[CS131] Lecture 13 Face Recognition and LDA

Reconstruction and Error

我们只需要前k个特征面用于减少维度。特征面越少损失越多,脸部越不明显。

[CS131] Lecture 13 Face Recognition and LDA

Testing Algorithm

  1. 取查询图像t

  2. 映射至特征向量:

    t((tμ)·ϕ1,(tμ)·ϕ2,...,(tμ)·ϕk)(w1,w2,..,wk)

  3. 比较投影w和所有N个训练投影。用欧几里德距离和 KNN 算法输出标签。

Advantages and Disadvantages

Advantages

  • 这个方法不需要预先知道脸部、表情信息
  • 快速、全局最优

Disadvantages

  • 要求小心控制的数据
    1. 所有脸部必须集中在框架。否则结果噪音大
    2. 图像必须大小相同
    3. 对脸的角度敏感
  • 方法不需要预先知识
    1. 脸的类别之间没有差别
    2. PCA 不考虑与脸相关的标签。因此它可能将不同的脸对应到相同的子空间,使得分类器难以区别这些脸。
  • PCA 投影在从低维重构上可能是最优的,但在在辨别方面不是最优的。

Beyond Facial Recognition: Expressions and Emotions

这项技术也可以用于检测表达和情绪,且算法不改变。

高兴↓

[CS131] Lecture 13 Face Recognition and LDA

厌恶↓

[CS131] Lecture 13 Face Recognition and LDA

Linear Discriminant Analysis (LDA)

PCA vs. LDA

PCA 与 LDA 都能减少样本的维度。但是,PCA 偏重于重建物体,LDA 偏重于分类。LDA 会将不同的类相互远离。

  • PCA 保持最大方差
  • LDA 找到能够在类之间最大化散射和在类中最小化散射的投影。

[CS131] Lecture 13 Face Recognition and LDA

如图,PCA 保持了最大方差,并将所有类的点都映射在正斜率方向上,因此难以判别类别。但是,LDA 将点映射到负斜率,导致点被映射到接近同类点,与非同类点相反的位置。

General Idea

[CS131] Lecture 13 Face Recognition and LDA

LDA 用两个值运行:类间散度、类内散度。类间散度指不同类之间的距离,类内散度指类内点之间的距离。LDA 最大化类间散度,最小化类内散度。

[CS131] Lecture 13 Face Recognition and LDA

Mathematical Formulation of LDA with 2 Variables

我们想要找到一个投影wxRn空间中映射出 0 和 1 的点到一个新的空间zRm,例如z=wTx。其中,m<n,且投影必须最大化以下公式:

J(w)=SB when projected onto wSW when projected onto w

公式中,SB代表类间散度,SW代表类内散度。接下来定义一个代表类内点的平均的变量μi
μi=EX|Y[X|Y=i]

定义变量Σi代表类的协方差矩阵:
Σi=EX|Y[(Xμi)(Xμi)T|Y=i]

用以上变量,可以定义SBSW
SB=(μ1μ0)2=(μ1μ0)(μ1μ0)TSW=(Σ1+Σ0)

将变量放回原式J(w)可得:
J(w)=wT(μ1μ0)(μ1μ0)TwwT(Σ1+Σ0)w

我们要最大化J(w),即最大化分子,保持分母为常数:
maxwT(Σ1+Σ0)w=KwT(μ1μ0)(μ1μ0)Tw

用拉格朗日乘数法,我们定义拉格朗日算子为:
L=wTSBwλ(wTSWwK)=wT(SBλSW)w+K

我们必须最大化Lλw的值。我们可以通过用其关于w的梯度和找到关键点的位置:
wL=2(SBλSW)w=0

用这个公式,我们可以得到关键点位置:
SBw=λSWw

这是一个广义的特征向量问题。在SW1=(Σ1+Σ0)1存在的情况下,我们得到:
SW1SBw=λw

代入SB得:
SW1(μ1μ0)=λαw

w的大小并不重要,所以我们可以得到映射w
w=SW1(μ1μ0)=(Σ1Σ0)1(μ1μ0)

LDA with N Variables and C Classes

Preliminaries

Variables:

  • N 个样本:{x1,...,xN}

  • C 个类:{Y1,Y2,...,YC}。每一类都有 N 个样本。

  • 每个类的平均:类i的平均为

    μi=1NixkYixk

  • 所有数据的平均:

    μ=1Nk=1Nxk

Scatter Matrices:

  • i散度:Si=xkYi(xkμi)(xkμi)T
  • 类内散度:Sw=i=1cSi
  • 类间散度:Sb=i=1cNi(μiμ)(μiμ)T

Mathematical Formulation

我们需要一个将所有点从xRm映射到zRn的投影:

z=wTx,xRm,zRn

[CS131] Lecture 13 Face Recognition and LDA

Results: Eigenface(PCA) vs. Fisherface(LDA)

[CS131] Lecture 13 Face Recognition and LDA