人脸识别技术

5
我在思考,人脸识别究竟是如何工作的?因为每个人的脸都不同,你不能检测出某种“通用”脸或其他什么东西。

3
当然!我见过有一个眼睛的人...甚至三个! - Mauricio
你尝试过在网上搜索文章吗?我认为你会发现有很多有用的信息,然后你可以在 Stack Overflow 上提出问题,深入了解你感兴趣的具体内容。 - Kai
是的,但有很多方法。我不知道从哪里开始。 - www.data-blogger.com
如果您描述您使用人脸识别的目的,那么您将得到针对您问题的答案。这就是 Stack Overflow 相对于搜索引擎的优势 :) - Kai
4个回答

12

张军等人(1997年)研究了三种面部识别方法,这些方法适用于计算机视觉中的三个显著的统计分析领域:

1)特征脸算法
2)弹性匹配
3)自联想与分类网络

特征脸算法使用某种降维方法(如PCA)对面部图像中的统计变化进行编码,生成的特征空间中的区别不一定对应于独立的面部特征,如眼睛、耳朵和鼻子(换句话说,特征向量的必要组成部分是不事先确定的)。

弹性匹配生成与面部的特定轮廓点相对应的节点图(即线框模型),例如眼睛、下巴、鼻尖等,识别是基于将图像图与已知数据库进行比较。由于图像图在匹配过程中可以旋转,因此该系统往往对图像的大变化更为稳健。

分类网络识别利用与弹性匹配相同的几何特征,但基本上是一种监督式机器学习技术(通常涉及支持向量机的使用)。

尽管特征脸检测在照明变化或面部对齐方面的变化较大时表现可能不如其他方法,但它具有易于实现、计算效率高以及能够以无监督方式识别面孔等优点,因此往往成为事实上的标准。许多最先进的检测技术也依赖于某种形式的降维处理来进行识别,即使特征向量提取的处理方式不同也是如此。


请使用这个包"https://github.com/ManivannanMurugavel/pyfacy"。 - Manivannan Murugavel

5

在这里,您可以找到答案:面部识别

每张脸都有许多可辨认的地标,即组成面部特征的不同峰和谷。FaceIt将这些地标定义为节点点。每个人脸大约有80个节点点。软件测量的其中一些节点包括:

* Distance between the eyes
* Width of the nose
* Depth of the eye sockets
* The shape of the cheekbones
* The length of the jaw line

这些节点被测量后,会生成一个数字代码,称为面部特征码,在数据库中代表着该人的脸部信息。

4
一个好的开始是阅读关于主成分分析(PCA,也称为特征脸)、费舍尔线性判别分析(LDA)和支持向量机(SVM)的内容。这些分类方法对于人脸分类非常有用。
OpenCV已经包含了出色的PCASVM实现。对于OpenCV在C++中的人脸识别和分类代码,一个极好的资源是这个网站
提供大多数有关人脸分类相关方法的资源和论文链接的网站是这个
一个解释详细的示例,介绍了PCA特征脸和LDA,并提供了Matlab样本代码,对我第一个人脸分类程序非常有用,在这里

1

这是一个需要大量学习的复杂主题。我建议您首先查看OpenCV - http://opencv.willowgarage.com/wiki/ - 一个带有教程等内容的计算机视觉库。部分原因在于不是关于“一般脸”的问题,而是要挑选出特征,然后运行度量 - 如这些特征之间的距离或相对方向。


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