paint-brush
Aumento de datos faciales - Parte 1: Transformación xeométricapor@ainur
282 lecturas

Aumento de datos faciales - Parte 1: Transformación xeométrica

por Ainur Gainetdinov3m2024/10/27
Read on Terminal Reader

Demasiado longo; Ler

O rendemento das redes neuronais profundas deu un gran paso adiante nas últimas dúas décadas. Cada ano concíbense novas arquitecturas que superan os resultados de última xeración. Non obstante, só mellorar as arquitecturas non funcionará sen un conxunto de datos de calidade. O conxunto de datos ten un gran impacto no rendemento final. Recoller e etiquetar conxuntos de datos diversos e precisos pode ser laborioso e caro, e os conxuntos de datos existentes normalmente non abarcan toda a variedade de distribución de datos reais, polo que se utilizan técnicas de aumento de datos.
featured image - Aumento de datos faciales - Parte 1: Transformación xeométrica
Ainur Gainetdinov HackerNoon profile picture

O rendemento das redes neuronais profundas deu un gran paso adiante nas últimas dúas décadas. Cada ano concíbense novas arquitecturas que superan os resultados de última xeración. Non obstante, só mellorar as arquitecturas non funcionará sen un conxunto de datos de calidade. O conxunto de datos ten un gran impacto no rendemento final. Recoller e etiquetar conxuntos de datos diversos e precisos pode ser laborioso e caro, e os conxuntos de datos existentes xeralmente non abarcan toda a variedade de distribución de datos reais, polo que utilízanse técnicas de aumento de datos.


Neste artigo, mostrarei como se pode enriquecer o seu conxunto de datos de rostros humanos mediante a transformación da xeometría 3D para mellorar o rendemento do seu modelo. A implementación de código fonte aberto ofrécese a continuación[1].


O aumento de datos é unha técnica que aumenta a cantidade de datos aplicando diferentes modificacións ás mostras. O aumento xenérico da imaxe pódese dividir en dúas categorías: transformacións xeométricas e transformacións de cores. As transformacións xeométricas consisten en escalar, recortar, voltear, rotar, traslación, etc. Mentres que as transformacións de cores consisten en alteracións da cor, adición de ruído, escala de grises, axuste de brillo/contraste, etc.


Pensemos en como podemos aumentar unha imaxe se sabemos que hai un rostro humano. Como distinguimos unha persoa doutra? Hai características faciais que constitúen a identidade, como a cor da pel, a forma da cara, o corte de pelo, as engurras, a cor dos ollos, etc. Unha das máis distinguibles é a forma da cara.


Entón, se cambiamos a forma da imaxe da cara de entrada, será unha persoa lixeiramente diferente para un modelo adestrable. Entón, imos utilizar esta propiedade para aumentar o noso conxunto de datos.


Alteraremos a xeometría dunha cara mediante o modelo 3D Morphable (3DMM), concretamente o modelo FLAME[2]. 3DMM é unha malla tridimensional que ten parámetros para manipular a súa forma, pose e expresión. 3DMM está construído a partir de mallas tridimensionais que foron rexistradas por persoas reais.


Así, pode representar a distribución de formas de cara reais. Baixo o capó, consta da forma media e un conxunto de compoñentes principais que especifican as direccións de cambio para a forma e a expresión. Alfa e beta son parámetros do modelo.


Antes de cambiar a forma da cara, necesitamos atopar os parámetros de 3DMM que se correspondan coa nosa foto de entrada. Existen varios métodos para facelo, como a optimización de puntos de referencia, a optimización fotométrica ou os modelos de regresión para predecir parámetros nun só paso. Usei a optimización de puntos de referencia 2D xa que ten unha implementación sinxela e dá resultados precisos nun tempo razoable.


Detectáronse puntos de referencia faciais na imaxe de entrada co modelo de detección facial Dlib. Utilizouse o algoritmo de optimización de Adam coa perda de MSE para que os puntos de referencia encaixan 3DMM na imaxe da cara. Levou unhas 150 iteracións para converxer.


Agora, estamos preparados para modificar a xeometría da cara. En primeiro lugar, xa temos unha malla tridimensional aliñada coa imaxe da nosa cara. Cambiar os parámetros de forma de 3DMM leva a un desprazamento dos vértices da malla no espazo da imaxe. Sabendo que cambia, podemos utilizalo para mover os píxeles da imaxe.


Para obter un mapa denso de desprazamentos, usei a biblioteca OpenGL, onde rendericei unha malla 3DMM con desprazamentos en direccións x e y en lugar da cor do vértice. Queda unha cousa por considerar, como manexar os píxeles que estaban fóra da área da malla facial.


Para este propósito, usei a extrapolación, que conecta suavemente a cara modificada cun fondo estático. Sempre que dispoñamos de mapas de desprazamento densos para as direccións x e y, podemos aplicalos a calquera tipo de etiqueta, como puntos de referencia faciais, máscaras de segmentación ou imaxes pareadas. Podes ver exemplos de aumento facial con transformación xeométrica na seguinte figura. Se queres coñecer máis detalles, convídote ao código fonte[1].



Agora podes probalo nos teus conxuntos de datos. Esta técnica de aumento axudarache a mellorar un modelo facéndoo estable ás variacións de entrada. Neste artigo, aprendemos sobre a transformación xeométrica 3D, pero ademais, hai modificacións de textura que son máis melloras dos conxuntos de datos de caras, que no seguinte artigo.


Referencias

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

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