paint-brush
Aumento de datos faciales: parte 1: transformación geométricapor@ainur
266 lecturas

Aumento de datos faciales: parte 1: transformación geométrica

por Ainur Gainetdinov3m2024/10/27
Read on Terminal Reader

Demasiado Largo; Para Leer

El rendimiento de las redes neuronales profundas ha dado un gran paso adelante en las últimas dos décadas. Cada año se diseñan nuevas arquitecturas que superan los resultados más avanzados. Sin embargo, no basta con mejorar las arquitecturas sin un conjunto de datos de calidad. El conjunto de datos tiene un gran impacto en el rendimiento final. Recopilar y etiquetar conjuntos de datos diversos y precisos puede ser una tarea laboriosa y costosa, y los conjuntos de datos existentes normalmente no cubren toda la variedad de distribución de datos reales, por lo que se utilizan técnicas de ampliación de datos.
featured image - Aumento de datos faciales: parte 1: transformación geométrica
Ainur Gainetdinov HackerNoon profile picture

El rendimiento de las redes neuronales profundas ha dado un gran paso adelante en las últimas dos décadas. Cada año se diseñan nuevas arquitecturas que superan los resultados de última generación. Sin embargo, no basta con mejorar las arquitecturas sin un conjunto de datos de calidad. El conjunto de datos tiene un gran impacto en el rendimiento final. Recopilar y etiquetar conjuntos de datos diversos y precisos puede ser una tarea laboriosa y costosa, y los conjuntos de datos existentes normalmente no cubren toda la variedad de distribución de datos reales, por lo que se utilizan técnicas de ampliación de datos.


En este artículo, mostraré cómo se puede enriquecer su conjunto de datos de rostros humanos mediante la transformación de geometría 3D para mejorar el rendimiento de su modelo. A continuación, se proporciona la implementación en código fuente abierto [1].


El aumento de datos es una técnica que aumenta la cantidad de datos mediante la aplicación de diferentes modificaciones a las muestras. El aumento de imágenes genérico se puede dividir en dos categorías: transformaciones geométricas y transformaciones de color. Las transformaciones geométricas consisten en escalar, recortar, voltear, rotar, trasladar, etc., mientras que las transformaciones de color consisten en alterar el color, agregar ruido, escalar en escala de grises, ajustar el brillo y el contraste, etc.


Pensemos en cómo podemos aumentar una imagen si sabemos que hay un rostro humano. ¿Cómo distinguimos a una persona de otra? Hay rasgos faciales que constituyen la identidad, como el color de la piel, la forma del rostro, el corte de pelo, las arrugas, el color de los ojos, etc. Uno de los más distinguibles es la forma del rostro.


Por lo tanto, si cambiamos la forma de la imagen de la cara de entrada, será una persona ligeramente diferente para un modelo entrenable. Por lo tanto, usemos esta propiedad para ampliar nuestro conjunto de datos.


Modificaremos la geometría de un rostro utilizando el modelo 3D Morphable (3DMM), específicamente el modelo FLAME[2]. 3DMM es una malla tridimensional que tiene parámetros para manipular su forma, pose y expresión. 3DMM se construye a partir de mallas tridimensionales que han sido registradas por personas reales.


De esta forma, puede representar la distribución de formas faciales reales. En esencia, consta de la forma media y un conjunto de componentes principales que especifican las direcciones de cambio de la forma y la expresión. Alfa y beta son parámetros del modelo.


Antes de cambiar la forma de la cara, necesitamos encontrar los parámetros de 3DMM que corresponden a nuestra foto de entrada. Hay varios métodos para hacerlo, como la optimización de puntos de referencia, la optimización fotométrica o los modelos de regresión para predecir los parámetros en un solo paso. Utilicé la optimización de puntos de referencia 2D porque tiene una implementación sencilla y brinda resultados precisos en un tiempo razonable.


Los puntos de referencia faciales se detectaron en la imagen de entrada con el modelo de detección de rostros Dlib. Se utilizó el algoritmo de optimización Adam con pérdida de MSE para los puntos de referencia para adaptar el 3DMM a la imagen del rostro. Se necesitaron alrededor de 150 iteraciones para converger.


Ahora estamos listos para modificar la geometría del rostro. En primer lugar, ya tenemos una malla tridimensional alineada con la imagen de nuestro rostro. Al cambiar los parámetros de forma de 3DMM, se produce un desplazamiento de los vértices de la malla en el espacio de la imagen. Conociendo este desplazamiento, podemos usarlo para mover los píxeles de la imagen.


Para obtener un mapa denso de desplazamientos, utilicé la biblioteca OpenGL, donde rendericé una malla 3DMM con desplazamientos en las direcciones x e y en lugar del color de los vértices. Queda una cosa por considerar: cómo manejar los píxeles que estaban fuera del área de la malla de la cara.


Para este propósito, utilicé la extrapolación, que conecta suavemente el rostro modificado con un fondo estático. Siempre que tengamos mapas de desplazamiento densos para las direcciones x e y, podemos aplicarlos a cualquier tipo de etiqueta, como puntos de referencia faciales, máscaras de segmentación o imágenes emparejadas. Puede ver ejemplos de aumento de rostro con transformación geométrica en la figura siguiente. Si desea conocer más detalles, lo invito a consultar el código fuente [1].



Ahora, puedes probarlo en tus conjuntos de datos. Esta técnica de aumento te ayudará a mejorar un modelo haciéndolo estable a las variaciones de entrada. En este artículo, aprendimos sobre la transformación geométrica 3D, pero además de eso, existen modificaciones de textura que son mejoras adicionales de los conjuntos de datos de rostros, que se describen en el siguiente artículo.


Referencias

[1] Código de GitHub. https://github.com/ainur699/face_data_augmentation

[2] Modelo LLAMA. https://flame.is.tue.mpg.de/index.html