人脸识别库[关闭]


169

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

我目前正在使用OpenCV来检测人脸,并使用粗略的Eigenface算法进行识别。但是我认为应该有比自写的Eigenface算法更好的性能。我并不是说速度就是性能,而是在寻找一种比简单的Eigenface方法效果更好的库。

我看了一下Faint,但看来该库对于我自己的应用程序不是很可重用。

我对Python,Java,C ++,C之类的库感到满意。最好的办法是,它是否可以在Windows机器上运行,因为目前我依赖于某些仅用于Windows的外部代码。


1
是否出于政治或实际原因需要免费?如果这是一个纯粹的研究项目,您也许可以从其中一家商业供应商处获得免费的学术许可证。
Christoffer

2
仅使用eigenfaces方法,我获得了相对较好的结果,但是现在似乎缺少一种可以免费使用的良好人脸检测api
Janusz,2009年



4
尽管在2009年完全可以接受,但该问题不再被认为是主题性问题:那些要求我们推荐或找到工具,库或喜欢的场外资源的问题对于Stack Overflow而言是主题性的。请参阅堆栈溢出的预定义主题外原因是什么?
JDB仍记得Monica

Answers:


85

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

  1. 腓骨 - 面部识别SDK的信息。这是一家由大学教授创立的公司,因此他们的网站看起来不专业。没有可下载的价格信息或演示。您需要与他们联系以获取价格信息。

  2. NeuroTechnology-有关其面部识别SDK的信息。该公司既有前期定价信息,又有其SDK实际30天试用期

  3. 匹兹堡模式识别 -(由Google收购)有关其面部跟踪和识别SDK的信息。他们提供的演示可以帮助您评估他们的技术,但不能评估他们的SDSK。您需要与他们联系以获取价格信息。

  4. 明智的愿景 -有关其SDK的信息。他们的站点使您可以轻松获取报价,还可以订购评估套件,以帮助您评估其技术。


5
感谢您提供的链接,但此刻我需要找到一个免费的图书馆
Janusz,2009年

1
本身可能并不是用于面部识别,但是numenta.com可能会引起您的兴趣。
RCIX

7
你可以face.com免费REST API添加到列表
Omry雅丹

@Omry,您应该添加作为答案,或对其进行编辑以添加face.com
Scott


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示例):

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

相关出版物为:

  • 特克(M.)和彭特兰(A. Eigenfaces)表示认可。。Journal of Cognitive Neuroscience 3(1991),71-86。
  • Belhumeur,PN,Hespanha,J.和Kriegman,D. Eigenfaces vs. Fisherfaces:使用类特定的线性投影进行识别。。IEEE Transactions on Pattern Analysis and Machine Intelligence 19,7(1997),711–720。
  • T. Ahonen,A。Hadid和M. Pietikainen,使用本地二进制模式进行人脸识别。。计算机视觉-ECCV 2004(2004),469–481。


19

pam-face-authentication用于面部认证的PAM模块:但是要获得所需的内容,需要做一些工作。快速测试表明,识别率不如NeuroTechnology的VeriLook那样。

Malic是另一种开源的面部识别软件,它使用Gabor Wavelet描述符。但是源的最新更新是3年。

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

此外,这可能很有趣:

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

特征提取库-FELib“通过转导核Fisher判别式进行的面部注释”


13

我想您已经在做的Eigenface是要计算面孔之间距离的方法。您可以尝试其他方法,例如支持向量机隐马尔可夫模型。我找到了一个页面,其中列出了可用于面部识别的主要算法:面部识别主页

另外,当您说“更好的性能”时,您是指速度还是准确性?你有什么问题?数据有多大变化?它们主要是正面的脸还是包含轮廓?


5
通过性能,我可以检测出准确度。Eigenfaces很好,但我要寻找的是现成的可识别人脸的包装,因为我不想重新发明轮子,也没有时间
Janusz 2009年


7

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

这是相当新的东西,但是它提供了免费的开源高级API来进行人脸检测。

(...我敢说,真是太不可思议了)

编辑:还值得注意的是,这是不依赖opencv的少数几个库之一,仅用于踢球,这是文档页面上用于人脸检测的代码副本,可让您大致了解所涉及的内容:

#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;
} 

5

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


4

我们正在使用OpenCV。它里面也有很多非面部识别的东西,但是,请放心,它确实具有面部识别功能。


2
我认为OpenCV中没有用于人脸识别的直接算法。来自OpenCV库的人脸检测工作正常
Janusz,2009年

3
你是对的。我混淆了面部识别和面部检测。
Paul J. Lucas

只是附带说明,现在有cv :: FaceRecognizer,可用于识别。
huesforalice

1

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


0

下一步将是FisherFaces。尝试一下,检查它们是否对您有用。 是一个很好的比较。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.