Biblioteca de reconocimiento facial [cerrado]

169

Estoy buscando una biblioteca de reconocimiento facial gratuita para un proyecto universitario. No estoy buscando detección de rostros . Estoy buscando un reconocimiento real. Eso significa encontrar imágenes que contengan caras específicas o bibliotecas que calculen distancias entre caras específicas.

Actualmente estoy usando OpenCV para detectar las caras y un algoritmo de Eigenface aproximado para el reconocimiento. Pero pensé que debería haber algo ahí fuera con mejor rendimiento que un algoritmo de Eigenface auto escrito. No estoy hablando de la velocidad como rendimiento, estoy buscando una biblioteca con mejores resultados que un enfoque simple de Eigenface.

Eché un vistazo a Faint , pero parece que la biblioteca no es muy reutilizable para mis propias aplicaciones.

Estoy contento con una biblioteca en Python, Java, C ++, C o algo así. Lo mejor sería si se puede ejecutar en una máquina con Windows porque estoy confiando en algún código externo solo de Windows en este momento.

Janusz
fuente
1
¿Necesita ser libre por razones políticas o prácticas? Si se trata de un proyecto de investigación puro, es posible que pueda obtener una licencia académica gratuita de uno de los proveedores comerciales.
Christoffer
2
Tengo unos resultados relativamente buenos, con sólo acercarse a los Eigenfaces pero parece que una API de detección de rostros bueno que es libre de uso es algo que falta en el momento
Janusz
44
Aunque es perfectamente aceptable en 2009, esta pregunta ya no se considera sobre el tema: las preguntas que nos piden que recomiende o encontremos una herramienta, biblioteca o recurso favorito fuera del sitio están fuera de tema para Stack Overflow. Consulte ¿Cuáles deberían ser los motivos predefinidos fuera del tema para el desbordamiento de pila?
JDB todavía recuerda a Mónica el

Respuestas:

85

Aquí hay una lista de proveedores comerciales que ofrecen paquetes estándar para reconocimiento facial que se ejecutan en Windows:

  1. Cybula - Información sobre su SDK de reconocimiento facial . Esta es una empresa fundada por un profesor universitario y, como tal, su sitio web parece poco profesional. No hay información de precios o demostración que pueda descargar. Deberá contactarlos para obtener información sobre precios.

  2. NeuroTechnology : información sobre su SDK de reconocimiento facial . Esta compañía tiene información de precios por adelantado , así como una prueba real de 30 días de su SDK .

  3. Reconocimiento de patrones de Pittsburgh : ( adquirido por Google ) Información sobre su SDK de reconocimiento y seguimiento facial . Las demostraciones que proporcionan le ayudan a evaluar su tecnología pero no su SDSK. Deberá contactarlos para obtener información sobre precios.

  4. Visión sensible : información en su SDK . Su sitio le permite obtener fácilmente una cotización de precios y también puede solicitar un kit de evaluación que lo ayudará a evaluar su tecnología.

Praveen Angyan
fuente
55
Gracias por los enlaces, pero en este momento necesito encontrar una biblioteca gratuita
Janusz
1
Puede que no sea para reconocimiento facial per se , pero numenta.com puede ser de su interés.
RCIX
77
puedes agregar la API REST gratuita de face.com a esa lista
Omry Yadan
@ Omry, deberías agregar como respuesta, o editar esto para agregar face.com
Scott
face-rec.org/vendors y en general face-rec.org
2vision2
54

Actualizar

OpenCV 2.4.2 ahora viene con el nuevo cv :: FaceRecognizer . Consulte la documentación muy detallada en:

Publicación original

He lanzado libfacerec , una biblioteca moderna de reconocimiento facial para la API OpenCV C ++ (licencia BSD). libfacerec no tiene dependencias adicionales e implementa el método Eigenfaces, el método Fisherfaces y los histogramas de patrones binarios locales. Partes de la biblioteca se incluirán en OpenCV 2.4.

La última revisión de libfacerec está disponible en:

La biblioteca fue escrita para OpenCV 2.3.1 con el próximo OpenCV 2.4 en mente, por lo que no soporto las versiones de OpenCV anteriores a 2.3.1. Este proyecto viene como un proyecto CMake con una API bien documentada, también hay un tutorial sobre clasificación de género. Puede ver una versión HTML de la documentación en:

Si desea comprender cómo funcionan esos algoritmos, puede leer mi Guía para el reconocimiento facial (incluye ejemplos de Python y GNU Octave / MATLAB):

También hay una implementación Python y GNU Octave / MATLAB de los algoritmos en mi repositorio github . Ambos proyectos en facerec también incluyen varios métodos de validación cruzada para evaluar algoritmos:

Las publicaciones relevantes son:

  • Turk, M. y Pentland, A. Eigenfaces para el reconocimiento. . Journal of Cognitive Neuroscience 3 (1991), 71–86.
  • Belhumeur, PN, Hespanha, J. y Kriegman, D. Eigenfaces vs. Fisherfaces: reconocimiento mediante proyección lineal específica de clase. . IEEE Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), 711–720.
  • Ahonen, T., Hadid, A. y Pietikainen, M. Reconocimiento facial con patrones binarios locales. . Visión por computadora - ECCV 2004 (2004), 469–481.
Bytefish
fuente
19

autenticación de cara de pam un módulo PAM para autenticación de cara: pero requeriría algo de trabajo para obtener lo que desea. Una prueba rápida mostró que la tasa de reconocimiento no es tan buena como la de VeriLook de NeuroTechnology.

Malic es otro software de reconocimiento facial de código abierto, que utiliza descriptores Gabor Wavelet. Pero la última actualización de la fuente tiene 3 años.

Desde el sitio web: " Malic es un software de reconocimiento facial de código abierto que utiliza wavelet gabor. Es un sistema de reconocimiento facial en tiempo real basado en Malib y CSU Face Identification Evaluation System (csuFaceIdEval). Utiliza la biblioteca Malib para el procesamiento de imágenes en tiempo real y algunos de csuFaceIdEval para face reconocimiento " .

Además, esto podría ser de interés:

gaborboosting : un programa científico aplicado en reconocimiento facial con algoritmo Gabor Wavelet y AdaBoost

Biblioteca de extracción de características: FELib se refiere a "Anotación facial por discriminadores transductores de Kernel Fisher"

jk.
fuente
13

Creo que Eigenface , que ya está haciendo, es el camino a seguir si desea calcular la distancia entre caras. Puede probar diferentes enfoques como Support Vector Machine o Hidden Markov Model . Encontré una página que enumera los algoritmos principales que podrían usarse para el reconocimiento facial: la página de inicio de reconocimiento facial .

Además, cuando dice "mejor rendimiento", ¿se refiere a velocidad o precisión? ¿Qué tipo de problema tiene? ¿Qué tan variados son los datos? ¿Son en su mayoría cara frontal o incluyen perfiles?

Eugene Yokota
fuente
55
Con el rendimiento meed precisión de detección. Eigenfaces es agradable, pero lo que estoy buscando es un paquete listo de la plataforma para el reconocimiento de rostros, porque no quiero reinventar la rueda y no tengo el tiempo
Janusz
7

Deberías mirar http://libccv.org/

Es bastante nuevo, pero proporciona una API gratuita de alto nivel de código abierto para la detección de rostros.

(... y, me atrevo a decir, es bastante increíble)

Editar: Vale la pena señalar también, que esta es una de las pocas bibliotecas que NO depende de opencv, y solo para patadas, aquí hay una copia del código para la detección de rostros fuera de la página de documentación, para darle una idea de lo que está involucrado:

#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;
} 
Doug
fuente
5

Sé que ha pasado un tiempo, pero para cualquier persona interesada, existe el proyecto Faint , que ha incluido muchas de estas características (detección, reconocimiento, etc.) en un paquete de software agradable.

Marcus PS
fuente
4

Estamos usando OpenCV . También tiene muchas cosas que no son de reconocimiento facial, pero, tenga la seguridad de que sí hace reconocimiento facial.

Paul J. Lucas
fuente
2
Creo que no hay un algoritmo directo en OpenCV para el reconocimiento facial. La detección de rostros de la biblioteca OpenCV funciona bien
Janusz
3
Sí tienes razón. Confundí el reconocimiento facial y la detección facial.
Paul J. Lucas
Como nota al margen, ahora hay cv :: FaceRecognizer, que se puede usar para el reconocimiento.
huesforalice
1

Puede intentar abrir la biblioteca MVG, también se puede usar para múltiples interfaces.


fuente
0

El siguiente paso sería FisherFaces. Pruébalo y comprueba si funcionan para ti. Aquí hay una buena comparación.

Łukasz Lew
fuente