computer-vision - personas - reconocimiento facial javascript
¿Cómo funcionan los programas de reconocimiento facial? (2)
¿Qué flujo atravesará el programa?
A grandes rasgos, las etapas de procesamiento serían:
- Detectar posiciones de la cara.
- Normalizar las caras
- Recoge las características para cada cara detectada
- Alimentar las características a un algoritmo de aprendizaje automático
El paso 1 generalmente se realiza utilizando el algoritmo clásico de detección de rostros Viola & Jones . Es bastante rápido y confiable.
Las caras encontradas en el paso 1 pueden tener diferentes brillos, contrastes y diferentes tamaños. Para simplificar el procesamiento, todos se escalan al mismo tamaño y las diferencias de exposición se compensan (por ejemplo, utilizando la ecualización de histogramas) en el paso 2.
Hay muchos enfoques para el paso 3. Los detectores tempranos de rostro intentaron encontrar posiciones específicas (centro de los ojos, extremo de la nariz, extremo de los labios, etc.) y usar 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 fiables.
Un enfoque más reciente, "Eigenfaces", se basa en el hecho de que las imágenes de caras se pueden aproximar como una combinación lineal de imágenes base (que se encuentra a través de PCA a partir de un gran conjunto de imágenes de entrenamiento). Los factores lineales en esta aproximación pueden usarse como características. Este enfoque también se puede aplicar a partes de la cara (ojos, nariz, boca) individualmente. Funciona mejor si existe la postura entre todas las imágenes es la misma. Si algunas caras miran hacia la izquierda, otras miran hacia arriba, no funcionará tan bien. Los modelos de apariencia activa intentan contrarrestar ese efecto al entrenar un modelo 3D completo en lugar de imágenes 2D planas.
El paso 4 es relativamente sencillo: tiene un conjunto de números para cada cara y para las imágenes de cara 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, por ejemplo, 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:
- Visión por Computador - Algoritmos y Aplicaciones trata la detección de rostros, el reconocimiento de rostros y el aprendizaje automático (entre muchas otras materias). Es bastante nuevo por lo que cubre las últimas investigaciones. También tiene una gran bibliografía.
- Las técnicas de concordancia de plantillas en la visión por ordenador tratan en profundidad los enfoques de emparejamiento de plantillas para el reconocimiento facial.
- Y puedes encontrar muchos artículos de investigación usando google scholar.
El análisis de componentes principales se encuentra en la base de los sistemas de reconocimiento de patrones, como el reconocimiento facial .