Estoy buscando un algoritmo/biblioteca robusto de detección de rostros, preferiblemente en C (C++ también está bien; otros idiomas que puedo transferir si es necesario). He utilizado la implementación de OpenCV en el pasado, pero no creo que sea invariable con la rotación. No necesita ser en tiempo real, pero tampoco debe ser tremendamente lento (tal vez uno o dos segundos por foto está bien). Buscando alta confiabilidad, y no muchos falsos positivos. ¿Alguien sabe de alguna buena implementación?Detección de rostros robustos en C/C++?
Respuesta
Mira lo que en OpenCV Wiki sobre la detección de rostros utilizando Haar-like features.
@floppydisk: el mismo tipo publicó otra project implementando estas características similares a Haar para la detección de rostros.
El concepto no es difícil de entender y que incluso podría aplicar por sí mismo. Quizás la parte más difícil es la construcción de la cascada de impulsado clasificadores (! Pero OPENCV tiene todo eso implementado fácilmente)
Algunos otros métodos que se pueden utilizar en la detección de rostros que se pueden hacer invariante a afín transformaciones incluyen:
- Eigenfaces con SVD/PCA
- descriptores de Fourier
- Los modelos estadísticos de forma (this paper en particular)
La única cosa que he trabajado es Visionics FaceIt. Funcionó bastante bien, pero lo último que supe fue muy, muy, muy lejos de ser libre (ya sea como en la cerveza o en el habla).
Debería haber mencionado "gratis" también es bueno. FaceIt parece ser un software de reconocimiento facial .... Estoy buscando un algoritmo de código abierto. – mpen
Usted podría tratar de echar un vistazo a esta biblioteca:
http://vasc.ri.cmu.edu/NNFaceDetector/
Se nota en uno de los casos de prueba caras que se rotan. Como puede ver, se hizo como una disertación, por lo que también puede leer ese documento, si lo desea.
Hm ... solo aproximadamente el 80% de recuperación, pero bajos falsos positivos (alta precisión). No estoy seguro si eso es bueno o no? Oh, bueno, esto es lo suficientemente bueno para empezar si puedo hacer que compile. Gracias :) – mpen
- la alta precisión es más importante para mí de todos modos. El 20% restante se puede etiquetar manualmente si es necesario, pero me hubiera dado cuenta de que ahora podríamos obtener tasas por encima del 95%. Quizás estoy equivocado. – mpen
Bien, esto no le gusta compilar en Ubuntu de 64 bits. – mpen
En Over Code Project, alguien publicó un detailed description de un proyecto para reconocimiento facial, así como también un código fuente C++ para el proyecto y enlaces a las bibliotecas que utilizó. Su algoritmo se enfoca en usar las diferencias de color para encontrar parches de piel y luego probar para ver si las imágenes de 19x19 píxeles coinciden con las caras. No estoy familiarizado con todas las bibliotecas para el reconocimiento facial, pero leyendo algunos de sus códigos, muchos de los métodos y funciones tienen CV en el nombre, por lo que puede estar usando la biblioteca OpenCV pero no estoy familiarizado con ella, así que ' m no estoy 100% seguro. Sin embargo, proporciona muchas explicaciones sobre su aplicación y los archivos fuente, por lo que puede ser un buen punto de partida.
Podría estar tratando de construir su propia biblioteca de cv. Pensé que podría haber estado arrancando partes de opencv, pero nada realmente indica eso. Presume 98% de precisión, pero eso fue principalmente entrenado y probado en su propia cara, por lo que no es mucho decir. No menciona nada sobre la rotación ... Me gustaría que me diera una evaluación más detallada. Las curvas de recuperación de precisión son impresionantes. Oh, bueno, gracias por esto. Puedo intentarlo también ... podría ser muy bueno para todo lo que sé. – mpen
Tengo mejores estadísticas que el tipo que afirma el 98% de precisión. 99.99999999999% está mintiendo o ha sido entrenado. El reconocimiento facial no es tan preciso, incluso los mejores sistemas no son tan precisos. – monksy
Marcos - que dicen que OpenCV puede no ser invariantes a la rotación
Lo que le impida hacer cuatro compara, girando 90 ° después de cada comparación?
Nada evitaría eso. Esta es una respuesta válida;) – mpen
No he utilizado las funciones de Haar para la detección de rostros, pero por lo que recuerdo, podría ser más efectivo para detectar un rostro que los propios/pca.
se han topado con la cuestión acerca de los problemas de rotación con la cara. Mi pensamiento es que tal vez podrías probar la coincidencia de formas e intentar corregir el objeto. Pruebe y oriéntelo para la relación de aspecto normal de la cabeza.Nunca llegué tan lejos en mi proyecto con Eigenface, pero déjame saber cómo funciona. Eso debería ser fácil en Matlab. : P
- 1. detección de rostros girados
- 2. UIImage detección de rostros
- 3. Detección de rostros en PHP
- 4. Detección y comparación de rostros
- 5. Tecnología de detección de rostros y reconocimiento de rostros en phoneGap
- 6. Erosión de imagen para la detección de rostros en C#
- 7. Herramientas de detección de rostros recomendadas/SDK/etc.
- 8. Detección de rostros con OpenCV para imágenes no frontales
- 9. ¿Cómo elegir el archivo en cascada para la detección de rostros?
- 10. Reconocimiento de rostros en Java
- 11. Reconocimiento de rostros en R
- 12. Algoritmo de detección de rostros para una cara de 15x15 píxeles?
- 13. ¿Cómo obtener una "foto policial" de los cuadros de detección de rostros?
- 14. ¿Detección de la cara en Android?
- 15. Detalles de call/cc
- 16. Cómo construir datos robustos en clojure
- 17. patrones "call-cc" en Scala?
- 18. ¿Cómo desarrollar una aplicación de reconocimiento de rostros para iPhone?
- 19. ¿Qué es call/cc?
- 20. Detección de rostro lento en OpenCV?
- 21. PHP Mail, CC Field
- 22. Detección de cuerpo humano en Javascript
- 23. ¿Cuán robustos son los mensajes de Windows?
- 24. Detección de Objetos 3D-Opencv
- 25. detección de parpadeo para iphone sdk
- 26. /* @ cc_on y detección de IE6
- 27. Creación de monitores en tiempo real robustos para las variables
- 28. Condición de carrera en glibc/NPTL/Linux mutexes robustos?
- 29. ¿Cómo cambian DP y CC en Piet?
- 30. Continuación (call/cc) en el Esquema
@mark: "Puedes tenerlo rápido, barato o preciso; elige cualquiera de los dos", parece sinceramente que estás pidiendo la luna. – Tarrant
@Wergan: I * no * pedí rápido y barato. La detección precisa de rostros se puede realizar en menos de 50 ms. Dije que puede llevar hasta 2000. Eso no es pedir mucho. – mpen
El reconocimiento de patrones es un tema MUY difícil, especialmente si trabajas desde una vista de ángulo único como una fotografía. Será un éxito imprevisto: (razonablemente) está bien para los tiros; (imposiblemente) difícil para las tomas de multitudes a todo color. – slashmais