2011-02-12 75 views
21

程序会经历什么流程?面部识别程序如何工作?

+3

你的问题是脱离主题 - 它可能适合于cstheory.stackexchange.com – 2011-02-12 14:39:36

+16

@Daniel A. White:根据FAQ,有关软件算法和编程问题的问题是关于SO的话题。人脸识别是一个使用软件算法解决的编程问题。我不明白这是如何脱离主题的。 – Niki 2011-02-12 16:16:25

回答

36

非常粗略地,所述处理阶段将是:

  1. 检测面部位置
  2. 规格化的面部
  3. 收集特征为每个检测到的面部
  4. 订阅特征的机器学习算法

步骤1通常是使用传统Viola&Jones face detection algorithm完成。它非常快速和可靠。

在步骤1中发现的面可具有不同的亮度,对比度和不同的尺寸。为了简化处理,它们都被调整为相同的大小和曝光差被补偿在步骤(例如,使用直方图均衡)2.

有许多方法步骤3早期面部检测试图找到特定位置(中心眼睛,鼻子的末端,嘴唇的末端等),并使用几何距离和角度作为识别特征。从我读过的内容来看,这些方法非常快,但并不可靠。

更近期的方法“特征脸”是基于这样一个事实,即人脸图片可以近似为基础图像的线性组合(通过PCA从大量训练图像中找到)。这种近似中的线性因素可以用作特征。这种方法也可以单独应用于脸部的部位(眼睛,鼻子,嘴巴)。如果所有图像之间的姿势相同,则效果最好。如果一些面孔向左看,其他面向上看,它不会工作。主动外观模型试图通过训练完整的3D模型而不是平坦的2D图片来抵消该效应。

步骤4相对比较简单:对于每个人脸以及在训练期间获取的人脸图像,您都有一组数字,并且您想要找到与当前测试人脸“最相似”的人脸。这就是机器学习算法的功能。我认为最常用的算法是支持向量机(SVM)。其他选择例如人工神经网络或k近邻。如果特征很好,ML算法的选择不会有太大影响。

文学主题: