image-processing - rostros - reconocimiento facial para buscar personas
Biblioteca de reconocimiento facial (11)
Actualizar
OpenCV 2.4.2 ahora viene con el nuevo cv::FaceRecognizer . Por favor, consulte la documentación muy detallada en:
Publicación original
libfacerec , una biblioteca moderna de reconocimiento de rostros para OpenCV C ++ API (licencia BSD). libfacerec no tiene dependencias adicionales e implementa el método Eigenfaces, el método de 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 de 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 quieres entender cómo funcionan esos algoritmos, es posible que desees leer mi Guía para el reconocimiento facial (incluye ejemplos de Python y GNU Octave / MATLAB):
También hay una implementación de los algoritmos Python y GNU Octave / MATLAB 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. . Transacciones IEEE en Pattern Analysis and Machine Intelligence 19, 7 (1997), 711-720.
- Ahonen, T., Hadid, A. y Pietikainen, M. Reconocimiento facial con patrones binarios locales. . Computer Vision - ECCV 2004 (2004), 469-481.
Estoy buscando una biblioteca de reconocimiento de rostros gratis para un proyecto universitario. No estoy buscando detección de rostros . Estoy buscando un reconocimiento real. Eso significa buscar imágenes que contengan caras especificadas o bibliotecas que calculan 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 por ahí con un mejor rendimiento que un algoritmo autoelaborado de Eigenface. No estoy hablando de velocidad como rendimiento, estoy buscando una biblioteca con mejores resultados que un simple enfoque 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.
Aquí hay una lista de proveedores comerciales que ofrecen paquetes listos para usar para el reconocimiento facial que se ejecutan en Windows:
Cybula : información sobre su SDK de reconocimiento facial . Esta es una compañía 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. Tendrá que contactarlos para obtener información sobre precios.
NeuroTechnology : información sobre su SDK de reconocimiento facial . Esta compañía tiene información de precios inicial así como una prueba real de 30 días de su SDK .
Reconocimiento de patrones de Pittsburgh - ( adquirido por Google ) Información sobre su SDK de reconocimiento y seguimiento facial . Las demostraciones que brindan lo ayudan a evaluar su tecnología, pero no su SDSK. Tendrá que contactarlos para obtener información sobre precios.
Sensible Vision : información sobre su SDK . Su sitio le permite obtener fácilmente una cotización y también puede solicitar un kit de evaluación que lo ayudará a evaluar su tecnología.
Creo que Eigenface , que ya estás haciendo, es el camino a seguir si quieres calcular la distancia entre las caras. Puede probar diferentes enfoques, como Support Vector Machine o Hidden Markov Model . Encontré una página que enumera los principales algoritmos que podrían usarse para el reconocimiento facial: Face Recognition Homepage .
Además, cuando dices "mejor rendimiento", ¿te refieres a velocidad o precisión? ¿Qué tipo de problema tiene? ¿Qué tan variados son los datos? ¿Son en su mayoría frontales o incluyen perfiles?
Deberías mirar http://libccv.org/
Es bastante nuevo, pero proporciona una API 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 librerías que NO depende de opencv, y solo para las patadas, aquí hay una copia del código para la detección de caras de la página de documentación, para darle una idea de lo que implica:
#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;
}
El siguiente paso sería FisherFaces. Pruébalo y comprueba si funcionan para ti. Here hay una buena comparación.
Estamos usando OpenCV . También tiene muchas cosas que no son reconocimientos faciales, pero puede estar seguro de que sí lo hace.
No es realmente lo que estás buscando, pero puede ser útil para ti. Algoritmos de Detección de la cara / Visión artificial en MATLAB.
Puede intentar abrir la biblioteca MVG. También se puede usar para múltiples interfaces.
Sé que ha pasado un tiempo, pero para cualquier otra persona interesada, está el proyecto Faint , que ha incluido muchas de estas características (detección, reconocimiento, etc.) en un buen paquete de software.
Si su proyecto está en una película o televisión, o cualquier cosa que tenga un guión, parece que definitivamente quiere ver el trabajo de Mark Everingham et al. . El software está available , así como los resultados en un episodio de Buffy .
pam-face-authentication un Módulo PAM para la Autenticación Facial: 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 los descriptores de 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 gabor wavelet. Es un sistema de reconocimiento facial en tiempo real basado en el sistema de evaluación de identificación facial Malib y CSU (csuFaceIdEval). Utiliza la biblioteca Malib para el procesamiento de imágenes en tiempo real y algunos de csuFaceIdEval para la cara reconocimiento " .
Además, esto podría ser de interés:
gaborboosting : un programa científico aplicado en Reconocimiento de rostros con Gabor Wavelet y AdaBoost Algorithm
Feature Extraction Library - FELib se refiere a la "Anotación de la cara por Transductive Kernel Fisher Discriminant"