Creo que la primera cosa que debe hacer es darse cuenta de que los algoritmos que ha enumerado se utilizan en diferentes etapas de reconocimiento de rostros.
En primer lugar, debe decidir sobre la representación, i. mi. las funciones a usar. Estos podrían ser píxeles sin formato, filtros Gabor, algún tipo de descriptores de forma, modelos deformables, etc.
Entonces, normalmente desea reducir la dimensionalidad de sus funciones. Aquí es donde entran en juego algoritmos como PCA, ICA o LDA, que proyectan puntos de datos en un espacio dimensional inferior tratando de preservar la mayor parte de la varianza (PCA) o para asegurar la separación óptima de puntos de diferentes categorías (LDA).
Entonces probablemente quiera entrenar un clasificador en sus características para distinguir entre las caras de diferentes personas. Hay una gran cantidad de algoritmos para elegir aquí, como el Vecino más cercano, Máquinas de Vector de Soporte, Modelos de Markov Ocultos, Redes de Bayes, etc.
Tenga en cuenta que la elección de un algoritmo para una etapa particular puede o no depender en los algoritmos para otras etapas. Por ejemplo, PCA se puede utilizar para reducir la dimensionalidad de casi cualquier tipo de características. Por otro lado, no es inmediatamente obvio cómo se puede usar un clasificador de máquina de vector de soporte para las caras representadas por una malla deformable.
Supongo que lo primero que debe hacer es definir su problema con mucha precisión. ¿Desea distinguir entre las caras de unas pocas personas, como reconocer a los miembros de su familia en las fotos? ¿Quieres reconocer a las personas de una gran base de datos? ¿Tienes muchas imágenes de entrenamiento para cada cara, o solo unas pocas? ¿Desea manejar diferentes orientaciones y condiciones de iluminación?
Las respuestas a estas preguntas determinan qué tan complicado es su problema, y sin duda afectará su elección de algoritmos.
EDITAR: Aquí hay un thesis de alguien que intentó resolver un problema similar. Es de 2002, pero en mi humilde opinión es un buen lugar para comenzar.
+1 para el tema, muy interesante. –
Wiki de la comunidad? – Betamoo