• Nenhum resultado encontrado

Rastreamento Facial Utilizando a Técnica 3DDFA

3.5 TÉCNICAS DE RECONHECIMENTO DE FACES

4.1.3 Rastreamento Facial Utilizando a Técnica 3DDFA

A segunda abordagem foi baseada no método 3DDFA (ZHU et al., 2019), um arcabouço

para alinhamento de modelos faciais 3D densos em imagens por meio de uma rede convo- lucional combinada a métodos de regressão em cascata. A rede, cuja arquitetura pode ser vista na Figura 30, tem como principal objetivo predizer 68 pontos de referência faciais em cenários drasticamente alterados, onde existem faces com ângulos oblíquos de rotação da cabeça (maiores que 90º) e perfis em que certos pontos são invisíveis.

Os métodos baseados em regressão estimam os parâmetros do modelo pela regressão direta das características da imagem. Para tal propósito, o 3DDFA utiliza o método de regressão em cascata apresentado em (DOLLÁR; WELINDER; PERONA, 2010), resumido

pela seguinte fórmula:

onde o parâmetro da forma p𝑘na 𝑘-ésima iteração é atualizado pela condução de regressão

Reg𝑘 na característica da forma indexada Fea, o qual depende de ambas a imagem I e o

parâmetro atual p𝑘. A regressão Reg𝑘 provê uma importante propriedade “feedback”, a

qual sinaliza se sua característica de entrada Fea(I, p𝑘) pode ser atualizada pela saída,

uma vez que, a cada iteração, p é atualizado (ZHU et al., 2019).

Figura 30 – Visão global da arquitetura da CNN usada pelo 3DDFA.

Fonte: (ZHU et al., 2019).

Para combinar a regressão em cascata e CNNs para realizar o alinhamento denso, uma CNN Net𝑘 é aplicada como regressor na Equação 4.3, como pode ser visto na Equação

4.4. O parâmetro p = [𝑓, R, t2𝑑, a𝑖𝑑, a𝑒𝑥𝑝]𝑇 contém todos os atributos da forma 3D, sendo

𝑓 o fator de escala, R a matriz de rotação, t2𝑑 o vetor de translação, a𝑖𝑑 o parâmetro da

forma e a𝑒𝑥𝑝 o parâmetro da expressão:

p𝑘+1 = p𝑘+ Net𝑘(Fea(I, p𝑘)). (4.4) Para realizar a projeção ortográfica do objeto 3D no plano da imagem, o método usa como base a Equação 4.6, onde Pr é a matriz de projeção ortográfica e S representa o 3DMM proposto por Blanz et al. (BLANZ; VETTER, 2003), o qual descreve a face 3D

usando PCA (ROMDHANI et al., 1999):

S= S + A𝑖𝑑𝑎𝑖𝑑+ A𝑒𝑥𝑝𝑎𝑒𝑥𝑝, (4.5)

V(p) = f * Pr * R * S + t2𝑑. (4.6)

O Fea representa a combinação de duas características: o PAF, baseado na visualização do modelo, e o PNCC, baseado na visualização da imagem. O PAF é a etapa final de refinamento da Convolução Adaptativa de Pose (Pose Adaptive Convolution - PAC), a qual consiste na convolução invariante à pose de características semânticas da face. No fim, também são considerados os vértices cuja normal apontam para valores negativos de 𝑧, ou seja, as regiões de oclusão, gerando o PAF (Figura 31).

Figura 31 – Pose Adaptive Convolution (PAC): a) As âncoras de características 64 × 64 no modelo facial 3D. b) As âncoras de características V(p)𝑎𝑛𝑐ℎ𝑜𝑟 projetadas

(o azul e vermelhos indicam âncoras visíveis e invisíveis, respectivamente). c) O mapa de características concatenado pelos fragmentos recortados em V(p)𝑎𝑛𝑐ℎ𝑜𝑟. d) Pose Adaptive Feature (PAF).

Fonte: (ZHU et al., 2019).

O PNCC (Figura 32) é computado pela combinação de dois processos: normalização e ajuste do modelo. A normalização da média do modelo 3D da face para valores de 0 a 1 nos três eixos (𝑥, 𝑦, 𝑧), chamada NCC (Normalized Coordinate Code), é calculada pela seguinte equação:

NCC𝑑=

S𝑑− 𝑚𝑖𝑛(S𝑑)

𝑚𝑎𝑥(S𝑑) − 𝑚𝑖𝑛(S𝑑)

(𝑑 = 𝑥, 𝑦, 𝑧), (4.7)

onde S é a forma média do 3DMM. Visto que o NCC contém três canais (RGB), o mesmo é considerado como a textura da face. A etapa de ajuste (alinhamento) do modelo é feito usando o parâmetro de modelo p e o Z-Buffer, com o intuito de renderizar o modelo facial 3D com a pose, expressão e textura (NCC), gerando o PNCC (Equação 4.8).

PNCC= Z-Buffer(V3𝑑(p), 𝑁𝐶𝐶),

V3𝑑(p) = R * (S + A𝑖𝑑𝑎𝑖𝑑+ A𝑒𝑥𝑝𝑎𝑒𝑥𝑝) + [t2𝑑,0]𝑇

(4.8)

Figura 32 – Componentes do 3DDFA: a) Código de Coordenadas Normalizado (NCC) e b) Código de Coordenadas Normalizado Projetado (PNCC).

Fonte: (ZHU et al., 2019).

Por fim, o parâmetro Net da (Equação 4.4) representa a estrutura da rede neural em cascata. No geral, na iteração 𝑘 (𝑘 = 0, 1, ..., 𝑁), dado um parâmetro inicial p𝑘, o PNCC

e o PAF são gerados com p𝑘 para treinar uma CNN de dois fluxos Net𝑘 para conduzir o

ajuste. As saídas dos dois fluxos são combinadas com uma camada adicional totalmente conectada para predizer a atualização do vetor de 234 características, sendo 6 parâmetros da pose, 199 do formato da face e 29 da expressão (Equação 4.9) (ZHU et al., 2019).

Δ(p)𝑘 = Net𝑘(PAF(p𝑘

, I), PNCC(p𝑘, I)) (4.9) Para validar a técnica, foram realizados testes para avaliação de qualidade na imple- mentação em Python, juntamente com PyTorch, do 3DDFA4, utilizando os modelos de

classificação previamente treinados. A Figura 33 exibe os resultados de predição de pontos de referência facial obtidos usando um desses modelos. É possível perceber que a técnica demonstra um alto nível de robustez quanto a variação de pose e oclusão por acessórios e pelos faciais.

Outros testes foram executados para gerar o ajuste entre um modelo genérico 3D e a face 2D com a finalidade de avaliar o aumento facial. A expressão facial e a transferência de textura não foram consideradas nesta etapa. Usando uma ferramenta para manipulação de 3DMM, implementada em Python5, e um modelo morfável (PAYSAN et al., 2009) foi

possível obter os resultados de alinhamento facial ilustrados na Figura 34.

Além das ferramentas citadas anteriormente, foram utilizados também o SeetaFace Detection e o Dlib para detecção de faces, e o OpenCV, para computar a homografia entre as imagens, seguida da projeção em perspectiva e a sobreposição transparente, o qual utiliza o canal alfa de imagens RGBA para realizar a combinação (blending) entre a imagem de primeiro plano — contendo a transparência no plano de fundo, no caso a projeção 2D do modelo facial 3D — e a imagem de plano de fundo, a qual no caso é a imagem de entrada contendo a face 2D.

4 https://github.com/cleardusk/3DDFA 5 https://github.com/YadiraF/face3d

Figura 33 – Predição dos 68 pontos de referência pelo 3DDFA. As malhas 3D das faces foram geradas usando MATLAB, a partir das informações providas pela saída do modelo de classificação.

Fonte: Elaborado pelo autor, 2018.

Figura 34 – Ilustração da sobreposição da malha facial 3D à face 2D usando como base o algoritmo 3DDFA.

Fonte: Elaborado pelo autor, 2019.

A avaliação do 3DDFA foi realizada usando imagens com 640 × 480 pixels utilizando uma GPU NVIDIA GeForce GTX 960M com 4 GB de memória RAM. Para predizer a pose, expressão e os 68 pontos de referência da face o algoritmo levou em média 0,00377

segundos. Já para sobrepôr o modelo 3D na face 2D, todo o pipeline de execução levou em média 0,32 segundos de tempo de processamento. Vale salientar que apenas o 3DDFA foi processado em GPU, enquanto que as outras funções foram executadas em um processador Intel Core i7-6700HQ CPU @ 2.60GHz, com memória RAM de 16 GB e SSD LITEON CV1-8B128 de 128 GB.

Após a validação do 3DDFA, foi proposta uma solução para refinar o método e me- lhorar ainda mais a sua qualidade. A solução desenvolvida consiste em treinar modelos de faces específicas, usando o poder da CNN proposta por (ZHU et al., 2019), e aplicar

um reconhecimento facial na imagem de entrada para selecionar o modelo pré-treinado específico daquela face. A ideia geral é criar uma base de dados de classificadores, onde cada modelo de classificação está associado a um rosto de um usuário do mundo real, caracterizando-o como um modelo enviesado para uma classe.

Inicialmente foi criada uma base de dados para treinamento da rede, contendo 29 imagens de faces de uma única pessoa (Figura 35). Nas imagens, é possível ver uma gene- ralização de aspectos, como variações de iluminação, acessórios, pelos faciais, resolução e expressões. Todas foram redimensionadas para a resolução de imagens de entrada da CNN (120 × 120). Entretanto, a pequena quantidade de imagens e a baixa variação de pose da cabeça dificilmente fariam a rede convergir. Para sanar essa possibilidade foi aplicado um método de aumento de dados proposto por Zhu et al., chamado HPEN6 (ZHU et al., 2015).

A partir de faces frontais, o método consegue gerar uma base de imagens derivadas com perfis distintos, aplicando poses e expressões diferentes nas imagens de entrada (Figura 36).

Para extrair os dados de treinamento das imagens foi utilizada a solução de alinha- mento adaptativo de pose de 3DMMs do HPEN, capaz de computar os 40 parâmetros da forma, 10 da expressão, a matriz de rotação 3 × 3 (9 parâmetros) e o vetor de translação 3D (3 parâmetros), totalizando um vetor de 62 parâmetros. Diferente do artigo (ZHU et al., 2019), a implementação da rede convolucional do 3DDFA em Python recebe como

entrada este vetor de dimensão 62 devidamente normalizado.

Foram realizados alguns treinamentos experimentais usando como configuração de dispositivo a mesma GPU utilizada na validação do 3DDFA. As principais configurações dos treinamentos são descritos na Tabela 4. Os nove modelos gerados pela rede não con- vergiram. Para provar a ineficácia do método proposto, um modelo de classificação foi treinado usando a Configuração 9, porém com imagens aleatórias e de pessoas distintas (várias classes) da base de dados disponibilizada pelos autores do 3DDFA, aplicando o padrão de generalização da técnica. A Figura 37 mostra os resultados gerados pelo mo- delo proposto, baseado em faces específicas, e o modelo original. Como se pode observar, o método desenvolvido sequer se aproxima do método original na predição de localização de pontos referenciais da face para poses e expressões distintas. A falta de convergência

da CNN corrobora com a ineficiência da técnica proposta.

Figura 35 – Imagens de uma face específica utilizadas como base para treinamento do 3DDFA.

Fonte: Elaborado pelo autor, 2018.

Figura 36 – Aumento da base de dados de faces pelo HPEN.

Tabela 4 – Configurações dos treinamento realizados usando a CNN do 3DDFA para ge- ração de modelos baseados em treinamento de rostos específicos.

Função de custo Épocas Dimensão do batch Valor do batch Taxa de aprendizado Momentum Decaimento do peso Quantidade de imagens Configuração 1 PDC 50 64 16 0,01 0,9 5e-4 5.000 Configuração 2 PDC 50 128 32 0,01 0,9 5e-4 10.000 Configuração 3 PDC 100 128 32 0,001 0,9 5e-4 125.000 Configuração 4 VDC 50 512 32 0,0001 0,9 5e-4 10.000 Configuração 5 VDC 50 512 32 0,00001 0,9 5e-4 50.000 Configuração 6 VDC 100 512 32 0,00001 0,9 5e-4 125.000 Configuração 7 WPDC 50 128 32 0,02 0,9 5e-4 5.000 Configuração 8 WPDC 50 128 32 0,02 0,9 5e-4 50.000 Configuração 9 WPDC 50 128 32 0,02 0,9 5e-4 125.000

Figura 37 – Resultados dos modelos pré-treinados usando o 3DDFA e Configuração 9 da Tabela 4. Nos topos de (a) e (b) são ilustrados alguns resultados do alinha- mento usando a abordagem proposta baseada em faces específicas. Abaixo de cada ilustração, encontram-se as mesmas imagens com o alinhamento apli- cado usando o modelo treinado com algumas imagens da base de dados da técnica original.

(a)

(b)