¿Qué flujo pasaría el programa?¿Cómo funcionan los programas de reconocimiento facial?
Respuesta
Muy a grandes rasgos, las etapas de procesamiento serían:
- Detectar cara posiciones
- Normalizar las caras
- características de recolección para cada cara detectada
- alimente a las características de un algoritmo de aprendizaje automático
El paso 1 generalmente se realiza con el clásico Viola&Jones face detection algorithm. Es bastante rápido y confiable.
Las caras que se encuentran en el paso 1 pueden tener diferente brillo, contraste y diferentes tamaños. Para simplificar el procesamiento, todos se adaptan al mismo tamaño y se compensan las diferencias de exposición (por ejemplo, usando la ecualización de histograma) en el paso 2.
Hay muchos enfoques para el paso 3. Los primeros detectores intentaron encontrar posiciones específicas (centro de los ojos, el extremo de la nariz, el final de los labios, etc.) y usa distancias geométricas y ángulos entre ellos como características para el reconocimiento. Por lo que he leído, estos enfoques fueron muy rápidos, pero no tan confiables.
Un enfoque más reciente, "Eigenfaces", se basa en el hecho de que las imágenes de las caras se pueden aproximar como una combinación lineal de imágenes base (encontradas a través de PCA de un gran conjunto de imágenes de entrenamiento). Los factores lineales en esta aproximación se pueden usar como características. Este enfoque también se puede aplicar a partes de la cara (ojos, nariz, boca) individualmente. Funciona mejor si la pose entre todas las imágenes es la misma. Si algunas caras miran hacia la izquierda, otras miran hacia arriba, no funcionarán tan bien. Los modelos de apariencia activa intentan contrarrestar ese efecto entrenando un modelo 3D completo en lugar de imágenes bidimensionales planas.
El paso 4 es relativamente sencillo: tiene un conjunto de números para cada cara y para las imágenes faciales adquiridas durante el entrenamiento, y desea encontrar la cara de entrenamiento que sea "más similar" a la cara de prueba actual. Eso es lo que hacen los algoritmos de aprendizaje automático. Creo que el algoritmo más común es la máquina de vectores de soporte (SVM). Otras opciones son, p. redes neuronales artificiales o k-vecinos más cercanos. Si las características son buenas, la elección del algoritmo ML no importará mucho.
literatura sobre el tema:
- Computer Vision - Algorithms an Applications trata la detección de rostros, reconocimiento de rostros y el aprendizaje máquina (entre muchos otros temas). Es bastante nuevo, así que cubre las últimas investigaciones. También tiene una gran bibliografía.
- Template Matching Techniques in Computer Vision trata los enfoques de coincidencia de plantillas para el reconocimiento de rostros, en profundidad.
- Y puede encontrar muchos artículos de investigación usando google scholar.
Principal Component Analysis está en la base de los sistemas de reconocimiento de patrones como facial recognition.
Yo diría más bien que análisis de componentes principales es una técnica de uso en el reconocimiento de caras. Aunque PCA es útil, no todas las soluciones de reconocimiento facial usan PCA. – Predictor
- 1. reconocimiento facial OpenCV/EmguCV
- 2. software de reconocimiento facial/fusión
- 3. Reconocimiento facial en el iPhone
- 4. Reconocimiento facial en Java/Procesamiento
- 5. Opencv 2.4.2 Explicación de código-Reconocimiento facial
- 6. Biblioteca de reconocimiento facial en Android
- 7. Estado del arte en reconocimiento facial
- 8. ¿Cómo puedo realizar un reconocimiento facial en iOS?
- 9. ¿Cómo funcionan realmente los programas/compiladores/intérpretes de clojure?
- 10. ¿Hay alguna biblioteca de reconocimiento facial C# que funcione?
- 11. Rostros de reconocimiento facial y envejecimiento en C++
- 12. Reconocimiento/reconocimiento facial PHP o software para galerías de fotos y videos
- 13. ¿Cuál es el método más moderno para hacer reconocimiento facial?
- 14. ¿Los programas de encriptación de origen .net funcionan realmente?
- 15. opencv facial sdk support
- 16. ¿Cómo obtener el valor de Confianza en el reconocimiento facial usando EMGU CV?
- 17. ¿Cómo se comunican los programas entre sí?
- 18. ¿Cómo acelerar los programas WPF?
- 19. Reconocimiento de rostros en R
- 20. ¿Cómo funcionan los greenlets?
- 21. API de detección facial para Objective-C
- 22. ¿Cómo detectan los virus los programas antivirus?
- 23. ¿Cómo interactúo con los programas de Windows
- 24. ¿Cómo funcionan los Suffix Trees?
- 25. ¿Cómo funcionan los eventos débiles?
- 26. ¿Cómo funcionan los destructores virtuales?
- 27. ¿Cómo funcionan los perfiladores .NET?
- 28. ¿Cómo funcionan los modelos Django?
- 29. ¿Cómo funcionan los Intents internamente?
- 30. ¿Cómo funcionan los servidores web?
su pregunta es fuera de tema - que podría ser adecuado en cstheory.stackexchange.com –
@ Daniel A. White: De acuerdo con el FAQ, preguntas acerca de los algoritmos de software y problemas de programación están en el tema sobre el SO. El reconocimiento de rostros es un problema de programación que se resuelve utilizando algoritmos de software. No veo cómo esto está fuera de tema. – Niki