Yanshee课程17—让机器人看脸辨人
课程目标
本节课将使用经典的PCA 和 LDA 算法识别不同人的脸。通过本节课的学习你会了解PCA和LDA算法的相关性与区别性,了解数学聚类思想,能通过程序进行简单的矩阵变换,能通过通用算法进行人脸识别。
课程引入原因
人脸识别技术,在近几年的发展有目共睹,由于深度神经网络等技术的发展,人们将人脸的识别率提高到了可以使用的高度。而学习人脸识别技术是我们急需解决的重大事件,本节课将通过讲解PCA与LDA 模式判别的两个经典算法来讲解基本的人脸识别原理。该算法简单,便于理解,具有很强的通用性。是你学习模式识别的基础课。
基础概念及知识点介绍
att_face
Att_face, 全称为 ORL 人脸识别数据集,内含 40 个人的脸。 其中每一个人脸文件夹包含 10 张不同角度,不同时间,不同光照情况下的人脸照片。每一张照片为 112 * 92 像素。
PCA
主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
对于一幅图像来说,一个像素就是一个特征维度, 即每一个特征维度都是正交的。例如一个 320 * 240 的图片总共有特征维度 76800 维,那么这个图像就有76800 个正交维度。在这些特征维度中, 有些维度在不同图像中区别不大, 比如说有一个维度所有图像的值,差别不大。 那么这个维度对区分图像用处不大。主成分提取的核心思想是, 提取那些维度, 不同图像在那些维度协方差最大。这样, 不同图像之间在那个维度区分最大, 而且减少考察维度的计算量。 以下步骤显示了主成分提取的步骤。
PCA实现方法
设输入 矩阵为 ??={??1,??2,…,????,…,????}其中每一个????为N个样本的第i维特征向量 第一步 计算矩阵每行均值
1
??= ∑????
??
??=1??
第二步 求协方差矩阵
1
??=∑(???????)(???????)?? ??
??=1??
第三步 求协方差矩阵的特征值与特征向量
??????= ????????
第四步 将特征向量,按照特征大小, 从上到下按行排列成矩阵。要降成多少维,取前 K 行, 成为矩阵 y
??=????(?????),??=(??1,??2,…,????)
i. ii.
将训练集降维获得降维后的矩阵,均值矩阵,特征向量 将所有测试集降维获得降维后的矩阵,均值矩阵,特征向量
iii. 寻找降维后矩阵最短距离
LDA
线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。其核心思想为将高维的模式识别样本投影到最佳的识别空间,以抽取分类特征的效果。投影后,保证模式样本在新的子空间有最大的类间距离和最小类内距离。即理解为相同分类的样本数据之间无区分性,不同分类样本之间区分性尽可能大。
上面的图像显示了LDA 核心思想。其中,原始的红点与蓝点(第一象限的散点)为存在于二维空间的两类不同数据。我们如果不标识出颜色, 这些点就很难加以区分。但是,如果我们将这些点投影到一维直线上(y = -x),所有的红点集中在一起,所有的蓝点集中在一起,并且红点集与蓝点集分界明显。这样,我们很容易就区分出红点与蓝点。下面三节将带领你推导LDA。
LDA实现方法
假设我们的样本数据集
D={(??1,??1),(??2,??2),…,(????,????)},??????{??1,??2,…,????}
其中???? 为每一个样本的n 维向量, ????为对应类标签. 定义 ????,(??=0,1,…,??) 为第j 类样
本的个数, ????,(??=0,1,…,??) 为第j 类样本的集合。由于是多类问题我们投影到低维空间就不是直线而是超平面,假设我们要投影到k 维则对基向量集合
W=(??1,??2,…,????)
定义第j类样本的均值向量
????=
1
∑?? ,j=0,1,2,…,k ????
????????
定义第j 类样本的协方差矩阵
????=∑=∑(???????)(???????)??,j=0,1,…,k
??
????????
i.
计算类内散度矩阵Sw
??
????=??????=∑∑(???????)(???????)?? ??=1????????
ii.
计算类间散度矩阵Sb
??
????=∑????(???????)(???????)??
??=1
iii. iv.
计算矩阵???1??????
计算???1??????的最大的d个特征值和对应的d个特征向量,得到投影矩阵
?????1??????= ????????
W=(??1,??2,…,????)
v.
对样本集中的每一个样本特征xi,转化为新的样本(例,根据实际行列情况变换W)
????=???????? 得到新输出样本集
D′={(??1,??1),(??2,??2),…,(????,????)},??????{??1,??2,…,????}
PCA vs LDA
相同点
i. ii. iii.
数据降维 数据特征分解
两者数据都符合高斯分布
不同点
i. ii. iii. iv.
PCA 无监督学习, LDA 监督学习 LDA 最多降到 K-1维, 而PCA无限制 LDA 除了用于降维,还可以用于分类
LDA 选择最大投影降维, 而 PCA 选择图像最大协方差降维
环境准备
解压att_face(以Windows为例)
点击下面att_face压缩文件图标,并将解压后的文件放入Arm_Linux 系统中
下图显示了解压后的文件夹
Yanshee课程17—让机器人看脸辨人



