根据 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×nm×n灰度图,这张图可以用一个在高维空间 RmnRmn上的点表示。一张图不止包含脸,所以脸只占了相对小的子空间。我们的任务就是对脸的子空间建模。

我们计算出 K 维子空间,这样数据点在子空间的投影在所有子空间中都有最大的方差。这个低维子空间捕捉了脸部关键样貌特点。
The Eigenfaces Algorithm
Key Ideas and Assumptions
- 假设大多数脸部图像都位于低维子空间,由最大方差的前 kk个方向决定
- 用 PCA 检测旋转子空间的向量或特征面
- 将所有数据集中的脸部图像表现为特征面的线性组合,特征面被定义为 SVD 分解的主成份
What are eigenfaces?
特征面是最大方差方向的特征向量的视觉呈现。

Training Algorithm
排列训练图像:
计算平均脸:
μ=1N∑xiμ=1N∑xi计算协方差矩阵:
Σ=1NXcXTcΣ=1NXcXcT用 PCA 计算协方差矩阵ΣΣ的特征向量
计算每个训练图像 xixi的投影
xi→(xci⋅ϕ1,xci⋅ϕ2,...,xci⋅ϕk)≡(a1,a2,...,ak)xi→(xic·ϕ1,xic·ϕ2,...,xic·ϕk)≡(a1,a2,...,ak)
其中ϕiϕi是第ii个特征向量。重构的脸

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

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

Testing Algorithm
取查询图像
映射至特征向量:
t→((t−μ)⋅ϕ1,(t−μ)⋅ϕ2,...,(t−μ)⋅ϕk)≡(w1,w2,..,wk)t→((t−μ)·ϕ1,(t−μ)·ϕ2,...,(t−μ)·ϕk)≡(w1,w2,..,wk)比较投影ww和所有个训练投影。用欧几里德距离和 KNN 算法输出标签。
Advantages and Disadvantages
Advantages
- 这个方法不需要预先知道脸部、表情信息
- 快速、全局最优
Disadvantages
- 要求小心控制的数据
- 所有脸部必须集中在框架。否则结果噪音大
- 图像必须大小相同
- 对脸的角度敏感
- 方法不需要预先知识
- 脸的类别之间没有差别
- PCA 不考虑与脸相关的标签。因此它可能将不同的脸对应到相同的子空间,使得分类器难以区别这些脸。
- PCA 投影在从低维重构上可能是最优的,但在在辨别方面不是最优的。
Beyond Facial Recognition: Expressions and Emotions
这项技术也可以用于检测表达和情绪,且算法不改变。
高兴↓

厌恶↓

Linear Discriminant Analysis (LDA)
PCA vs. LDA
PCA 与 LDA 都能减少样本的维度。但是,PCA 偏重于重建物体,LDA 偏重于分类。LDA 会将不同的类相互远离。
- PCA 保持最大方差
- LDA 找到能够在类之间最大化散射和在类中最小化散射的投影。

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

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

Mathematical Formulation of LDA with 2 Variables
我们想要找到一个投影ww在空间中映射出 0 和 1 的点到一个新的空间z∈Rmz∈Rm,例如z=wTxz=wTx。其中,m<nm<n,且投影必须最大化以下公式:
J(w)=SB when projected onto wSW when projected onto wJ(w)=SB when projected onto wSW when projected onto w
公式中,SBSB代表类间散度,SWSW代表类内散度。接下来定义一个代表类内点的平均的变量μiμi:
μi=EX|Y[X|Y=i]μi=EX|Y[X|Y=i]
定义变量ΣiΣi代表类的协方差矩阵:
Σi=EX|Y[(X−μi)(X−μi)T|Y=i]Σi=EX|Y[(X−μi)(X−μi)T|Y=i]
用以上变量,可以定义SBSB和SWSW:
SB=(μ1−μ0)2=(μ1−μ0)(μ1−μ0)TSW=(Σ1+Σ0)SB=(μ1−μ0)2=(μ1−μ0)(μ1−μ0)TSW=(Σ1+Σ0)
将变量放回原式J(w)J(w)可得:
J(w)=wT(μ1−μ0)(μ1−μ0)TwwT(Σ1+Σ0)wJ(w)=wT(μ1−μ0)(μ1−μ0)TwwT(Σ1+Σ0)w
我们要最大化J(w)J(w),即最大化分子,保持分母为常数:
maxwT(Σ1+Σ0)w=KwT(μ1−μ0)(μ1−μ0)TwmaxwT(Σ1+Σ0)w=KwT(μ1−μ0)(μ1−μ0)Tw
用拉格朗日乘数法,我们定义拉格朗日算子为:
L=wTSBw−λ(wTSWw−K)=wT(SB−λSW)w+KL=wTSBw−λ(wTSWw−K)=wT(SB−λSW)w+K
我们必须最大化LL对和ww的值。我们可以通过用其关于的梯度和找到关键点的位置:
∇wL=2(SB−λSW)w=0∇wL=2(SB−λSW)w=0
用这个公式,我们可以得到关键点位置:
SBw=λSWwSBw=λSWw
这是一个广义的特征向量问题。在S−1W=(Σ1+Σ0)−1SW−1=(Σ1+Σ0)−1存在的情况下,我们得到:
S−1WSBw=λwSW−1SBw=λw
代入SBSB得:
S−1W(μ1−μ0)=λαwSW−1(μ1−μ0)=λαw
ww的大小并不重要,所以我们可以得到映射:
w∗=S−1W(μ1−μ0)=(Σ1−Σ0)−1(μ1−μ0)w∗=SW−1(μ1−μ0)=(Σ1−Σ0)−1(μ1−μ0)LDA with N Variables and C Classes
Preliminaries
Variables:
N 个样本:{x1,...,xN}{x1,...,xN}
C 个类:{Y1,Y2,...,YC}{Y1,Y2,...,YC}。每一类都有 N 个样本。
每个类的平均:类ii的平均为
所有数据的平均:
μ=1N∑k=1Nxkμ=1N∑k=1Nxk
Scatter Matrices:
- 类ii散度:
- 类内散度:Sw=∑ci=1SiSw=∑i=1cSi
- 类间散度:Sb=∑ci=1Ni(μi−μ)(μi−μ)TSb=∑i=1cNi(μi−μ)(μi−μ)T
Mathematical Formulation
我们需要一个将所有点从x∈Rmx∈Rm映射到z∈Rnz∈Rn的投影:
z=wTx,x∈Rm,z∈Rnz=wTx,x∈Rm,z∈Rn
Results: Eigenface(PCA) vs. Fisherface(LDA)

本文介绍了面部识别技术的应用场景,区分了面部检测与识别的概念,并详细解释了特征脸算法原理及其实现过程。此外,还对比了PCA与LDA两种降维方法在面部识别中的优缺点。

12万+

被折叠的 条评论
为什么被折叠?



