我正在为大学项目寻找免费的面部识别库。 我不是在寻找面部检测。我正在寻找实际的认可。这意味着查找包含指定面或库的图像,以计算特定面之间的距离。
我目前正在使用OpenCV来检测面部,并使用粗略的Eigenface算法进行识别。但我认为应该有一些比自编的Eigenface算法更好的性能。我不是在谈论速度和性能,我正在寻找一个比简单的Eigenface方法更好的结果库。
我看了一下Faint,但看起来这个库对我自己的应用程序来说不是很可重复使用。
我很高兴使用Python,Java,C ++,C或类似的库。最好的办法是,如果它可以在Windows机器上运行,因为我现在依赖于一些外部的Windows专用代码。
答案 0 :(得分:81)
以下是商业供应商列表,这些供应商提供在Windows上运行的面部识别的现成软件包:
Cybula - 有关Facial Recognition SDK的信息。这是一家由大学教授创立的公司,因此他们的网站看起来不专业。您可以下载没有定价信息或演示。您需要contact them了解定价信息。
NeuroTechnology - 有关Facial Recognition SDK的信息。该公司同时拥有up-front pricing information和actual 30 day trial of their SDK。
Pittsburgh Pattern Recognition - ( Google收购)有关Facial Tracking and Recognition SDK的信息。他们提供的演示可以帮助您评估他们的技术,而不是他们的SDSK。您需要contact them来获取定价信息。
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中的两个项目还包括几种用于评估算法的交叉验证方法:
相关出版物是:
答案 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 Machine或Hidden Markov Model。我找到了一个页面,其中列出了可用于面部识别的主要算法:Face Recognition Homepage。
另外,当你说“性能更好”时,你的意思是速度还是准确度?你有什么问题?数据有多大差异?它们主要是正面还是包含型材?
答案 4 :(得分:9)
如果你的项目是在电影或电视上,或任何有脚本的东西,看起来你肯定想看看Mark Everingham et al.的作品。该软件为available,the 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算法。