【人脸识别算法的三个流程】
- 人脸 检测 (Face Detection)
- 人脸 对齐 (Face Alignment)
- 人脸 特征表征 (Feature Representation)
【线性降维】
- 在研究早期,人们使用 子空间算法:将人脸图像当做一个 高维向量,将其投影到 低维空间 后,期望得到的 低维向量 对不同的人具有 区分度。
- Matthew 等使用 PCA 降维得到 特征脸 (Eigenface)
- Peter 等使用 LDA 降维得到 Fisherface 来实现人脸识别
- 但是,PCA 和 LDA 都是 线性降维技术,显然人脸在高维空间中的分布式 非线性 的。因此,我们可以进一步使用 非线性降维算法。如 流形 和 核方法
【非线性降维 - 流形】
- 流形 假设 向量点 在高维空间中的分布具有某些 几何形状,然后在 保持 这些几何形状的前提下,将向量 投影 到低维空间中,这种投影是通过 非线性变换 完成的。如下所示,我们将 3维空间 中的瑞士卷 (Swiss Roll) 数据集非线性降维到 2维空间,并尽可能 降低 对数据分布的影响
- 但是,这些通过 直接降维 来进行人脸识别的早期算法,只是将数据进行了 投影,普遍都存在 严重依赖 训练集和测试集场景的问题,且对 光照,人脸的 表情、姿态 敏感,泛化 能力不足,不具有太多的实用价值
【人工特征 + 分类器】
- 第二阶段的人脸识别算法普遍采用了 人工特征 + 分类器 的模式
- 分类器 比较成熟,如 逻辑回归,贝叶斯,支持向量机,神经网络等
- 因此,算法的关键是 特征工程,即如何设计出 有效区分 不同人的特征
- 于是,计算机视觉领域很多描述 图像 的特征都被先后用于人脸识别问题,包括 HOG、SIFT、Gabor、LBP等。典型的代表是简单高效的 LBP (局部二值模式) 特征。LBP 部分解决了 光照敏感 问题
- 联合贝叶斯 是对 贝叶斯人脸 的改进方法,选用 LBP 和 LE 作为基础特征,将人脸图像的差异表示为:相同人因 姿态、表情 等导致的差异和 不同人 间的差异两个因素,用潜在变量组成的 斜方差,建立两张人脸的关联。在 LFW 中取得 92.4% 准确率
- 2013年,MSRA 的 Dong Chen 等继续发力,发表了一篇关于如何使用 高维度特征在 人脸验证 中的文章,作者主要以 LBP 为例,论述了 高纬特征 和 验证性能 成 正相关,即人脸纬度越高,验证的准确度就越高。文中最好的方法在 LFW上的准确率达到了 95.17%
【深度学习 - Facebook DeepFace】
- DeepFace 是 深度卷积神经网络 在人脸识别领域的奠基之作。他们使用 3D 模型来解决 人脸对齐 问题,同时又使用了 9 层深度神经网络来做 人脸特征 表示。
- 损失函数 使用了 Softmax Loss,最后通过 特征嵌入 (Feature Embedding) 得到固定长度的 人脸特征向量
- DeepFace 在 LFW 上取得 97.35% 的准确率,已经接近人类的水平
【深度学习 - Google FaceNet】
- Google 创新的提出了使用 三元组损失函数 (Triplet Loss) 替换 Softmax Loss。在一个 超球空间 上进行优化使 类内距离 更紧凑,类间距离 更远,最后得到了一个紧凑的 128维人脸特征,其网络使用 GoogleNet 的 Inception 模型,模型 参数量较小,精度更高
- FaceNet 在 LWF 上取得了 99.63% 的准确率
感谢:极客时间
感谢:《深入理解TensorFlow》作者:彭靖田