人脸识别程序是如何工作的?

19

这个程序会通过哪些流程?


3
您的问题与主题不符 - 它可能适合于 cstheory.stackexchange.com。 - Daniel A. White
16
根据常见问题解答,关于软件算法和编程问题的提问在SO上是可以的。人脸识别是使用软件算法来解决的编程问题。我不明白这个为什么不是在话题范围之内。 - Niki
2个回答

36

大致地说,处理阶段如下:

  1. 检测人脸位置
  2. 对人脸进行标准化
  3. 为每个检测到的人脸收集特征
  4. 将特征提供给机器学习算法

通常使用经典的Viola&Jones人脸检测算法来完成第1步。它非常快速和可靠。

在第1步发现的人脸可能具有不同的亮度、对比度和大小。为了简化处理,它们都被缩放到相同的大小,并且在第2步中补偿曝光差异(例如使用直方图均衡化)。

对于第3步,有许多方法。早期的人脸检测器试图找到特定的位置(眼睛中心、鼻子末端、嘴唇末端等),并使用这些之间的几何距离和角度作为识别特征。根据我的阅读,这些方法很快,但不太可靠。

最近的一种方法是“特征脸”,它基于这样一个事实:人脸图像可以近似表示为一组基本图像的线性组合(通过大量训练图像的PCA计算得到)。这个近似中的线性因子可以用作特征。该方法也可以分别应用于脸部的部分(眼睛、鼻子、嘴巴)。如果所有图像之间的姿态相同,它的效果最好。如果有些面向左侧,其他面向上方,则效果不会那么好。主动外观模型试图通过训练完整的3D模型而不是平面2D图片来抵消这种效果。

第4步相对简单:对于每个面孔,你都有一组数字,并且对于在训练期间获得的面部图像,你想找到与当前测试面部“最相似”的训练面部。这就是机器学习算法所做的事情。我认为最常见的算法是支持向量机(SVM)。其他选择包括人工神经网络或k最近邻算法。如果特征很好,ML算法的选择不会太重要。

相关文献:


3

2
我认为主成分分析是人脸识别中使用的一种技术。虽然PCA很有用,但并不是所有的人脸识别解决方案都使用PCA。 - Predictor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接