人脸识别库

时间:2009-06-05 00:08:28

标签: image-processing computer-vision face-recognition

我正在为大学项目寻找免费的面部识别库。 我不是在寻找面部检测。我正在寻找实际的认可。这意味着查找包含指定面或库的图像,以计算特定面之间的距离。

我目前正在使用OpenCV来检测面部,并使用粗略的Eigenface算法进行识别。但我认为应该有一些比自编的Eigenface算法更好的性能。我不是在谈论速度和性能,我正在寻找一个比简单的Eigenface方法更好的结果库。

我看了一下Faint,但看起来这个库对我自己的应用程序来说不是很可重复使用。

我很高兴使用Python,Java,C ++,C或类似的库。最好的办法是,如果它可以在Windows机器上运行,因为我现在依赖于一些外部的Windows专用代码。

11 个答案:

答案 0 :(得分:81)

以下是商业供应商列表,这些供应商提供在Windows上运行的面部识别的现成软件包:

  1. Cybula - 有关Facial Recognition SDK的信息。这是一家由大学教授创立的公司,因此他们的网站看起来不专业。您可以下载没有定价信息或演示。您需要contact them了解定价信息。

  2. NeuroTechnology - 有关Facial Recognition SDK的信息。该公司同时拥有up-front pricing informationactual 30 day trial of their SDK

  3. Pittsburgh Pattern Recognition - ( Google收购)有关Facial Tracking and Recognition SDK的信息。他们提供的演示可以帮助您评估他们的技术,而不是他们的SDSK。您需要contact them来获取定价信息。

  4. Sensible Vision - 有关SDK的信息。他们的网站允许您轻松获得报价,您还可以订购评估套件,以帮助您评估他们的技术。

答案 1 :(得分:54)

更新

OpenCV 2.4.2现在附带了全新的cv::FaceRecognizer。请参阅以下详细文档:

原帖

我发布了libfacerec,一个用于OpenCV C ++ API(BSD许可证)的现代人脸识别库。 libfacerec没有其他依赖关系,并实现了Eigenfaces方法,Fisherfaces方法和局部二进制模式直方图。该部分库将包含在OpenCV 2.4中。

libfacerec的最新版本可在以下网址获得:

该库是为OpenCV 2.3.1编写的,考虑到即将推出的OpenCV 2.4,因此我不支持早于2.3.1的OpenCV版本。这个项目是一个带有详细记录的API的CMake项目,还有一个关于性别分类的教程。您可以在以下位置查看文档的HTML版本:

如果您想了解这些算法的工作原理,您可能需要阅读我的人脸识别指南(包括Python和GNU Octave / MATLAB示例):

my github repository中还有Python和GNU Octave / MATLAB算法的实现。 facerec中的两个项目还包括几种用于评估算法的交叉验证方法:

相关出版物是:

  • Turk,M。和Pentland,A。用于识别的特征脸。。 Journal of Cognitive Neuroscience 3(1991),71-86。
  • Belhumeur,P。N.,Hespanha,J。和Kriegman,D。 Eigenfaces vs. Fisherfaces:使用类特定线性投影进行识别。。 IEEE Transactions on Pattern Analysis and Machine Intelligence 19,7(1997),711-720。
  • Ahonen,T.,Hadid,A。和Pietikainen,M。使用局部二进制模式进行人脸识别。。计算机视觉 - ECCV 2004(2004),469-481。

答案 2 :(得分:19)

pam-face-authentication用于面部身份验证的PAM模块:但需要一些工作才能获得您想要的内容。一项快速测试表明,识别率不如NeuroTechnology的VeriLook。

Malic是另一种开源人脸识别软件,它使用Gabor Wavelet描述符。但是对源代码的最后更新是3年。

来自网站: “ Malic是一款采用gabor小波的开源人脸识别软件。它是基于Malib和CSU人脸识别评估系统(csuFaceIdEval)的实时人脸识别系统。使用Malib库进行实时图像处理,并使用csuFaceIdEval进行人脸识别

此外,这可能是有意义的:

gaborboosting: 利用Gabor小波和AdaBoost算法应用于人脸识别的科学程序

Feature Extraction Library - FELib是指"Face Annotation by Transductive Kernel Fisher Discriminant,"

答案 3 :(得分:13)

如果你想计算面部之间的距离,我认为你已经做过的Eigenface是要走的路。您可以尝试不同的方法,例如Support Vector MachineHidden Markov Model。我找到了一个页面,其中列出了可用于面部识别的主要算法:Face Recognition Homepage

另外,当你说“性能更好”时,你的意思是速度还是准确度?你有什么问题?数据有多大差异?它们主要是正面还是包含型材?

答案 4 :(得分:9)

如果你的项目是在电影或电视上,或任何有脚本的东西,看起来你肯定想看看Mark Everingham et al.的作品。该软件为availablethe results on a Buffy episode也是如此。

答案 5 :(得分:7)

您应该查看http://libccv.org/

这是相当新的,但它提供了一个免费的开源高级API用于人脸检测。

(......而且,我敢说,这太棒了)

编辑:值得注意的是,这是少数不依赖于opencv的lib之一,只是为了踢,这里是文档页面上面部检测代码的副本,让你知道什么是什么涉及:

#include <ccv.h>
int main(int argc, char** argv)
{
    ccv_dense_matrix_t* image = 0;
    ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
    ccv_bbf_classifier_cascade_t* cascade = ccv_load_bbf_classifier_cascade(argv[2]);         ccv_bbf_params_t params = { .interval = 8, .min_neighbors = 2, .accurate = 1, .flags = 0, .size = ccv_size(24, 24) };
    ccv_array_t* faces = ccv_bbf_detect_objects(image, &cascade, 1, params);
    int i;
    for (i = 0; i < faces->rnum; i++)
    {
        ccv_comp_t* face = (ccv_comp_t*)ccv_array_get(faces, i);
        printf("%d %d %d %d\n", face->rect.x, face->rect.y, face->rect.width, face->rect.y);
    }
    ccv_array_free(faces);
    ccv_bbf_classifier_cascade_free(cascade);
    ccv_matrix_free(image);
    return 0;
} 

答案 6 :(得分:5)

我知道它已经有一段时间了,但对于其他感兴趣的人来说,还有Faint项目,它将许多这些功能(检测,识别等)捆绑到一个不错的软件包中。

答案 7 :(得分:4)

我们正在使用OpenCV。它还有很多非面部识别的东西,但是,请放心,它确实会进行面部识别。

答案 8 :(得分:1)

您可以尝试打开MVG库,它也可以用于多个接口。

答案 9 :(得分:0)

下一步将是FisherFaces。试一试,看看它们是否适合你。 Here是一个很好的比较。

答案 10 :(得分:0)

不是您真正想要的,但它可能对您有用。 MATLAB中的Face Detection/Computer Vision算法。

相关问题