机器学习第四课
人脸识别项目(使用特征脸方法)
安装 opencv
pip install opencv-contrib-python --upgrade
算法实现思路:
- 数据预处理:将每一张人脸拉成一个列向量,所有人连成一个矩阵,每列是一张列
- 求平均脸:对每一行都求平均值,得到一个列向量,我们称之为“平均脸”,是所有人脸的平均
- 样本中心化:每一个脸都减去平均脸
- 对样本中心化的样本,求协方差矩阵的特征向量。每一个特征向量都是一张脸,称之为“特征脸”,原始的人脸可以表示为为特征脸的线性组合(可以理解为:将每张脸看作是一个向量,将每一个特征向量视为基向量)
- 将特征脸按照特征值大小排列,取出特征值较大的特征脸,构成投影矩阵,这个投影矩阵可以把人脸投影到一个子空间上,我们称之为脸空间
- 将某个人的所有脸都投影到脸空间,求平均值,得到脸空间中的一个点,称之为这个人的“特征”,求出每个人的特征,每一个特征代表一个人的脸(因为一个人提供10张脸)
- 对于待识别的人脸,把它投影成子空间的一个点,看这个点和空间中哪个点离得近,我们就认为这个脸是某个人的
- 如果离“最近的脸”太远,可以认为这张图像不是一张人脸