¿Cuál sería la hoja de ruta para reconocer la cara de una persona (únicamente, como método de autenticación) usando Redes Neuronales?

Dado que está construyendo un clasificador de rostros con el fin de autenticar imágenes de rostros (como parte de un sistema biométrico, supongo), la tarea que le interesa es la coincidencia de rostros (o la verificación de rostros), que es esencialmente el problema de averiguar si dos caras dadas pertenecen a la misma identidad o no. El resumen general de los pasos que se siguen para la tarea de verificación es el siguiente:

  1. Aprenda una representación (vector de características) para imágenes faciales. Idealmente, esto debería ser una representación discriminativa que sea capaz de distinguir entre caras que pertenecen a diferentes identidades. Aquí es donde entra en juego las redes neuronales / ML.
  2. Use una métrica de distancia (la norma L2 es la más común) sobre las representaciones aprendidas en (1) para comparar imágenes de caras. Esto servirá como una medida cuantitativa de la similitud entre dos caras dadas.
  3. Seleccione un umbral apropiado que separe caras similares y diferentes. Si la distancia L2 entre dos caras es menor que el umbral, las clasificamos como similares (identidad wrt). De lo contrario, son diferentes. La elección del umbral es principalmente una heurística que se decide sobre la base de sus datos.

Entonces, si presenta su sistema de autenticación biométrica con una imagen de la cara, procederá a generar la representación de la imagen de entrada. Luego, compárelo con las representaciones (precalculadas) de todas las caras en su base de datos y devuelva un conjunto clasificado de caras (e identidades asociadas) que coinciden (de acuerdo con el umbral predeterminado).

Ahora, para aprender representaciones, hay dos caminos que puede tomar. Puede decidir entrenar una red neuronal desde cero o puede usar algunas redes pre-entrenadas (solo el pase hacia adelante). Sugeriría hacer lo último. Puedes ver el modelo VGG-Face [1] del grupo de Andrew Zisserman en Oxford. Los modelos pre-entrenados para MatConvNet, Torch y Caffe están disponibles para descargar [2]. La red ha sido entrenada en ~ 2.6M imágenes de 2.6k identidades de celebridades. El flujo de trabajo general consiste en eliminar la capa Softmax y la última capa FC que genera los puntajes de probabilidad (no normalizados). Te quedará con otra capa FC. Puede usar la salida de 4096 dimensiones de esa capa como incrustación (vector de características) para cualquier cara de entrada dada.

[1] Reconocimiento facial profundo, Parkhi et al., BMVC 2015

[2] Descriptor de rostro VGG

Si es su primer proyecto de ML, recomendaría hacer algo más fácil.

Incluso si hace todo bien, esta red tardará mucho tiempo en entrenarse.

Y es probable que haga muchas cosas mal al principio, y esperar unos días cada vez para probar algo sería una pérdida de tiempo.

Pruebe algo como MNIST primero. Entonces CIFAR. Entonces tal vez ImageNet. Pase a su proyecto una vez que pueda reproducir resultados cercanos a los más modernos en esos conjuntos de datos.