PIBIC 2016/2017 AnimaFace 2D: Implementação ... -...

19
Universidade Estadual de Campinas Faculdade de Engenharia Elétrica e de Computação UNICAMP PIBIC 2016/2017 AnimaFace 2D: Implementação para Dispositivos Móveis Aluno: Mateus Antonio Chinelatto RA: 174303 [email protected] Graduando de Engenharia Elétrica Faculdade de Engenharia Elétrica e de Computação (FEEC) Orientadora: Profa. Dra. Paula Dornhofer Paro Costa [email protected] Departamento de Engenharia de Computação e Automação Industrial (DCA) Faculdade de Engenharia Elétrica e de Computação (FEEC) Campinas, agosto 2017

Transcript of PIBIC 2016/2017 AnimaFace 2D: Implementação ... -...

Page 1: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Universidade Estadual de CampinasFaculdade de Engenharia Elétrica e de Computação

UNICAMP

PIBIC2016/2017

AnimaFace 2D:

Implementação para Dispositivos Móveis

Aluno: Mateus Antonio ChinelattoRA: 174303

[email protected] de Engenharia Elétrica

Faculdade de Engenharia Elétrica e de Computação (FEEC)

Orientadora: Profa. Dra. Paula Dornhofer Paro [email protected]

Departamento de Engenharia de Computação e Automação Industrial (DCA)Faculdade de Engenharia Elétrica e de Computação (FEEC)

Campinas, agosto 2017

Page 2: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

1 ApresentaçãoO presente relatório visa atender os requisitos obrigatórios do Programa Institucionalde Bolsas de Iniciação Científica (PIBIC) da UNICAMP e apresenta um resumo dasprincipais atividades realizadas e resultados obtidos ao longo do segundo semestrede 2016 e primeiro semestre de 2017, no contexto do projeto de iniciação científica“AnimaFace 2D: Implementação para Dispositivos Móveis”.

De acordo com o plano de trabalho inicialmente apresentado, o período consideradoneste relatório abrange Fases de Estudo, de Análise e Projeto, de Implementação, Testese Avaliação, conforme descritas na Seção 3.

Todo código escrito no contexto deste projeto está compartilhado publicamente naplataforma Github, acessível pelo endereço eletrônico: https://github.com/machinelatto/IC-FacialAnimation-Android.git

2 IntroduçãoA tecnologia de animação facial é essencial para a implementação de personagens virtu-ais personificados capazes de reproduzir o estilo de comunicação com o qual os humanosestão habituados, baseado na comunicação verbal e não-verbal. A partir de esforçosmultidisciplinares de pesquisa e desenvolvimento nas áreas de reconhecimento de voz,processamento da linguagem natural, inteligência artificial, síntese da fala, computaçãográfica e animação, é possível implementar personagens virtuais com papéis variados,tais como instrutores, assistentes, avatares, apresentadores, atendentes e vendedores[Gratch et al. 2002]. Além disso, devido à semelhança com a comunicação entre sereshumanos, interfaces baseadas em agentes virtuais estreitam a relação com o usuáriotornando a interação mais envolvente, atraindo e prendendo a atenção.

A recente expansão mundial das tecnologias de comunicação móvel, acompanhadapela maior disponibilização e aumento de capacidade de tráfego das redes de dados,impulsionou um crescimento extraordinário do número de usuários de dispositivos comotelefones celulares, smartphones e tablets, referenciados neste documento simplesmentecomo dispositivos móveis.

Neste contexto, a pesquisa voltada para o desenvolvimento de agentes humanosvirtuais interativos em dispositivos móveis surge como uma alternativa promissora paraa implementação de interfaces e aplicações mais intuitivas, eficientes e humanizadas[Pandzic 2002].

É interessante destacar três características principais destes dispositivos:

• a interface de interação com usuário é realizada, tipicamente, por meio de tecladose displays de tamanhos reduzidos e por meio de telas sensíveis ao toque;

• os usuários destes aparelhos não são necessariamente usuários experientes de in-terfaces tradicionalmente encontradas em computadores pessoais do tipo WIMP(Windows, Icons, Menus and Pointing devices) com mecanismos de entrada/saídatipicamente definidos por teclado, mouse e monitor de alta resolução.

1

Page 3: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

• quando comparados a uma plataforma desktop de última geração, dispositivosmóveis ainda apresentam menores capacidades de armazenamento de dados emmemória e de processamento computacional.

Atualmente é possível identificar duas correntes principais de desenvolvimento deanimação facial. A linha divisória destas duas vertentes está diretamente relacionadaàs características da face virtual. Sendo estas a animação baseada em modelo (model-based ou 3D), como ilustrado na Figura 1, e a animação baseada em imagem (image-based ou 2D), como ilustrado na Figura 2. Na animação baseada em modelo, a facevirtual é descrita por um modelo geométrico via de regra, tridimensional. O trabalhopioneiro de Parke é referenciado como o marco inicial desta corrente [Parke 1972]. Aanimação facial baseada em imagem utiliza imagens fotográficas de poses-chave, asquais são combinadas através de técnicas de metamorfose (morphing) para geração daanimação.

Figura 1: Exemplo de modelo geométrico tridimensional utilizado em animações base-adas em modelo.

Figura 2: Exemplo de animação baseada em imagem onde poses-chave são combinadaspor meio de técnicas de processamento de imagem para gerar os movimentos da face.

O presente trabalho visa estudar e aprofundar os conhecimentos associados à imple-mentação de sistemas de animações faciais em dispositivos móveis. Para isso, propõemigrar para a plataforma móvel o sistema de animação facial baseado em imagensAnimaFace 2D desenvolvido no Departamento de Engenharia de Computação e Au-tomação Industrial da Faculdade de Engenharia Elétrica e de Computação da Univer-sidade Estadual de Campinas adotando a metodologia de síntese baseada em imagensproposta em [Costa 2009], que se mostra apropriada para dispositivos móveis [Costae De Martino 2010].

Esta metodologia mostrou-se capaz de gerar animações de faciais em harmonia esincronia com a fala a ser animada a partir de uma base de apenas 34 imagens fotográ-ficas de diferentes posturas labiais (visemas) que se relacionam com os possíveis fone-mas presentes na língua portuguesa, utilizando algoritmos de metamorfose (morphing)

2

Page 4: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

baseados na deformação (warping) das imagens. Sendo assim o projeto consiste naadaptação dos algoritmos já implementados para uma plataforma móvel.

Os objetivos principais do projeto são:

• implementação de sistema de síntese de animação facial baseada em imagens emplataforma que reproduza as características de hardware tipicamente encontradasem dispositivos móveis;

• caracterização da performance computacional da metodologia de síntese empre-gada em ambiente de recursos de memória e processamento limitados;

• avaliação de videorrealismo das animações obtidas a partir de teste de inteligibi-lidade da fala.

3 Metodologia e Plano de TrabalhoA plano de trabalho proposto, abrangendo a metodologia de desenvolvimento, foi di-vidida nas seguintes etapas:

• Fase de Estudos: leitura de bibliografia selecionada abrangendo animação fa-cial, processamento digital de imagens, documentação da biblioteca software devisão computacional OpenCV, documentação disponível sobre a plataforma paradispositivos móveis Android, familiarização com sistemas de conversão de textoem fala. O objetivo desta fase de estudos foi a familiarização com conceitos bási-cos da animação facial, com a metodologia de síntese a ser implementada e comos aspectos das plataformas de desenvolvimento pertinentes ao projeto.

• Fase de Análise e Projeto: análise da metodologia e aplicativo de síntese jáexistentes com o objetivo de compreender os diferentes componentes que com-põem os passos da estratégia de síntese escolhida, identificando os principaispontos em que a implementação em plataforma móvel é particular e deve seradaptada. Projeto de novos componentes, se necessário.

• Fase de Implementação: codificação na plataforma de desenvolvimento An-droid do sistema de síntese.

• Fase de Testes: caracterização da performance computacional do sistema im-plementado.

• Fase de Avaliação: avaliação de videorrealismo das animações obtidas a partirde teste de inteligibilidade da fala como realizado em [Costa 2009].

Os primeiros meses do projeto foram dedicados à familiarização com a biblioteca devisão computacional OpenCV e com conceitos básicos relacionados ao processamentodigital de imagens [Muhammad 2015,Gonzalez e Woods 2002]. Para isso, foram rea-lizados vários exercícios em Python visando realizar operações simples sobre imagenstais como operações de escala (aumento e redução de tamanho), rotação, transforma-ções lineares e cross-dissolve (combinação linear no tempo de duas imagens diferentes).

3

Page 5: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Neste momento, a linguagem Python foi escolhida por ser um ambiente de desenvol-vimento amistoso, de rápida prototipagem, que permitiu focar na aprendizagem dosconceitos de processamento de imagens.

Numa segunda etapa da Fase de Estudos, focou-se na aprendizagem das operaçõesbásicas de desenvolvimento para a plataforma Android, escolhida devido ao grandenúmero de dispositivos que utilizam este sistema operacional. Esta etapa foi essencialpara a escolha das bibliotecas a serem utilizadas no projeto e para as decisões tomadasdurante a Fase de Análise de Projeto.

Finalmente, na Fase de Estudos também foi necessário o entendimento de concei-tos básicos relacionados à sincronização da fala à animação facial e os princípios detranscrição fonética temporizada da fala. Para isso, foi necessário o estudo dos vi-semas dependentes de contexto fonético para o Português do Brasil, que são a basefundamental para a metodologia de animação facial adotada neste trabalho. Esse es-tudo baseou-se primordialmente na leitura do trabalho de Costa (2009) e na análise detrechos de áudio utilizando a ferramenta computacional de anotação fonética, Praat1.

Para o desenvolvimento do software, foi utilizado o ambiente de desenvolvimentointegrado (IDE) Eclipse, acompanhado dos plugins existentes para desenvolvimentopara o sistema operacional Android. Esta escolha foi feita devido à existência de maisreferências da utilização do OpenCV com Eclipse do que com Android Studio.

Para o processamento de imagens utilizou-se a biblioteca de código aberto OpenCV(Open Source Computer Vision Library) que apesar de desenvolvida em C e C++,também é suportada em ambiente Android. As informações sobre a base de imagensforam lidas a partir de um arquivo CSV (do inglês, Comma Separated Values) por meiodas funções presentes na biblioteca de código aberto OpenCSV e, para a transformaçãode sequências de imagens em vídeo (formato MP4), optou-se pela utilização das funçõesda biblioteca JCodec.

Adotou-se como plataforma hardware de teste e desenvolvimento um Samsung Ga-laxy S6, modelo SM-G920I, com as seguintes especificações:

• Android 6.0.1 Marshmallow;

• Octa-Core com 2 processadores: 2.1Ghz Quad-Core ARM Cortex-A57 1.5GhzQuad-Core ARM Cortex-A53;

• Memória RAM: 3GB LPDDR4;

• 32GB de memória interna, sendo 24GB acessíveis pelou suário;

• Tela Super AMOLED de 5.1"polegadas, 1440 x 2560 pixels e densidade 576 PPI(pixels por polegada) com 16 milhões de cores.

Também foi realizada a análise da metodologia e aplicativo de síntese já existentescom o objetivo de compreender os diferentes componentes que compõem os passos daestratégia de síntese escolhida.

Isso envolveu a interpretação do código existente escrito em C++ e Python e aidentificação dos componentes que deveriam ser adaptados e otimizados em termos do

1http://www.fon.hum.uva.nl/praat/

4

Page 6: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

uso de recursos computacionais e de memória, mais limitados na plataforma móvel.Para isso, foram realizados testes, no computador, rodando as funções já existentese analisando cada um dos passos de sua execução, bem como suas entradas, saídas eestruturas de dados utilizadas.

Como produto da fase de análise, concluiu-se que os pontos chave da aplicaçãose relacionavam com o projeto de funções que realizam as operações de deformação(warping) e metamorfose (morphing), de leitura de informações sobre a base de imagensa ser utilizada e sobre a fala a ser animada e de sincronização de áudio e vídeo.

A implementação do warping foi então modificada para utilizar a triangulação deDelaunay e realizar a deformação triângulo por triângulo em vez de utilizar funções debase radial.

A estrutura definida para a realização da metamorfose entre as imagens sofreupoucas alterações. A princípio, os pontos-âncora da primeira imagem seguiam umatrajetória descrita por uma curva de Hermite até sua posição final (dada pelos pontoschave da segunda imagem) [Silva 1994], essa trajetória foi alterada pra seguir umafunção linear.

Essas alterações se devem a uma maior facilidade de implementação (já que váriasfunções comumente existentes para a plataforma Desktop, ainda não possuem imple-mentação equivalente para a plataforma Android) e a melhor adequação às caracterís-ticas dos dispositivos móveis (memória e capacidade de processamento reduzidas).

As seguintes seções descrevem, com maior profundidade, os pontos chave para odesenvolvimento da aplicação.

3.1 A Triangulação de Delaunay

Uma triangulação é a divisão de uma superfície ou polígono plano em um conjunto detriângulos, geralmente com a restrição de que cada um dos lados seja compartilhadopor dois triângulos adjacentes.

A triangulação de Delaunay é um caso especial de triangulação que possui a propri-edade de que cada circuncírculo de um triângulo é um círculo vazio, ou seja qualquercírculo que passe pelos três vértices de um triângulo não contém nenhum vértice deoutro triângulo [Okabe, Boots e Sugihara 1992]. Essa triangulação maximiza o menorângulo, assim evitando triângulos com ângulos internos muito pequenos.

Essa propriedade é desejável no âmbito deste projeto pois ângulos pequenos fa-vorecem deformações maiores quando realizado o warping e podem gerar resultadosindesejados.

Quando ela foi analisada na versão Desktop percebeu-se que em todas as imagens,cada qual com seus pontos-âncora, a triangulação obtida era a mesma. Desta forma,esta foi realizada em um computador e copiada diretamente na função. Isso otimizou oprocesso e diminuiu a complexidade da aplicação, já que não foi necessário implementarum algoritmo mais complexo e nem realizar a triangulação a cada chamada da função,fatores que poderiam aumentar o consumo de memória e prejudicar o desempenho dosistema.

5

Page 7: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

3.2 O Processo de Warping

Warping é o processo de distorção de uma imagem para outra, por exemplo de umrosto sério para um sorriso, ou no caso deste trabalho, de um quadro da animação parao quadro seguinte como ilustrado na Figura 3.

Figura 3: Ilustração de uma operação de warping. A imagem mais à esquerda re-presenta a postura labial de um fonema (visema) que deverá ser transicionado para apostura labial representada pela imagem do meio. A imagem mais à direita apresentao resultado da operação de warping. Esta é apenas uma das etapas do processo demorphing, que proporciona a “ilusão” visual que a boca está se abrindo.

Existem diversos algoritmos desenvolvidos para a realização da operação de war-ping, cada um deles possui sua complexidade, vantagens e desvantagens. Entre elespodemos citar warping por malha de triângulos, por malha de splines em dois passos,por campo, por malha de splines controlada por campo além de funções de base radiale minimização de energia [Silva 1994].

Na versão do AnimaFace 2D desenvolvida para desktop, é utilizado o método porfunções de base radial. Esse método utiliza um conjunto de pontos-âncora (tambémchamados de pontos-chave, keypoints ou pontos de referência) correspondentes entreas imagens de modo que os pontos-âncora da imagem original são obrigatoriamentemapeados para os da imagem destino. A interpolação que define a posição de um pixelgenérico na imagem destino é então feita adotando uma função constituída por umacombinação linear de funções radiais, que possuem como principal característica seremfunções da distância do pixel genérico a um ponto-âncora [Costa 2009].

Já na versão desenvolvida neste trabalho, o algoritmo de warping escolhido utilizauma malha de triângulos que possuem como vértices os mesmos pontos-âncora citadosanteriormente e pontos nas bordas (vide Figura 4). A deformação é feita triângulo portriângulo e o resultado final é a soma de cada um dos triângulos deformados.

6

Page 8: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Figura 4: Pontos-âncora utilizados

Conforme ilustrado na Figura 5, o algoritmo utilizado primeiramente realiza a tri-angulação de Delaunay com os pontos-âncora e pontos nas bordas (totalizando trezepontos). Feita a triangulação nas duas imagens, original e destino, são selecionadosdois triângulos correspondentes e a partir dos vértices destes triângulos é definida umamatriz de transformação linear que relaciona os conjuntos de pontos.

Figura 5: Triangulação de Delaunay utilizando os pontos-chave marcados na imageme pontos adicionados às bordas

Essa transformação é então aplicada na imagem original. Sobre a imagem distor-cida pela transformação é aplicada uma máscara binária onde os pixels do triânguloescolhido tem valor 1 e todos os outros tem valor 0 (Figura 6), desta forma resta apenaso triângulo colorido e todo o resto fica preto, esta imagem é por fim somada à imagemfinal.

7

Page 9: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Figura 6: Imagem resultante após a aplicação da transformação e da máscara em umtriângulo

Esse processo é repetido para todos os triângulos, como na montagem de um quebra-cabeças, até que após a soma da última peça, o warping está completo (Figura 7).

Figura 7: Sequência ilustrando a composição da imagem final durante o processo dewarping

3.3 O Processo de Morphing

Morphing é o processo de metamorfose entre imagens, no qual uma imagem gradual-mente se deforma e se transforma em outra.

Neste trabalho, a metamorfose é atingida aplicando sucessivas operações de war-ping em que uma imagem de origem é distorcida gradualmente, através de quadrosintermediários, em direção a uma imagem de destino e a imagem destino é distorcidada mesma maneira em direção a imagem de origem.

8

Page 10: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

A principal adaptação feita nesta parte do processo, em relação a versão já existente,está na obtenção dos quadros intermediários. O cálculo destes quadros é guiado pelatrajetória dos pontos-âncora, ou seja, de sua posição em função do tempo tomandocomo posição inicial os pontos da imagem de origem e final os pontos da imagemdestino.

Na versão Desktop, a trajetória é modelada por uma curva de interpolação não-linear, mais especificamente uma a curva de interpolação paramétrica de Hermite.Neste trabalho a trajetória foi modelada de maneira linear diminuindo assim a comple-xidade do algoritmo utilizado e obtendo uma maior simplicidade adequando-se melhora dispositivos móveis. Os resultados de cada operação de warping são então combinadospor meio de uma operação chamada de cross-dissolve.

O cross-dissolve é uma operação na qual a primeira imagem se “dissolve” na segunda,isso é feito somando as duas imagens com pesos diferentes dependendo do tempo, sendoque o peso da primeira é maior nos instantes iniciais e o da segunda é maior nos últimossegundos de animação.

Figura 8: Processo de morphing entre visemas com os quadros intermediários sinteti-zados (Fonte: Extraído de [Costa 2009].)

3.4 A Síntese da Animação

Para sintetizar a animação primeiramente são lidas informações sobre a base de ima-gens utilizada, essas informações estão, por simplicidade, contidas em um arquivo csv(comma-separated values) que identifica o arquivo, o fonema com o qual a imagem(visema) se relaciona, os pontos-âncora e outros labels.

9

Page 11: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Figura 9: Base de imagens utilizada para síntese da animação com os fonemas relaci-onados a cada visema.

Processadas estas informações, é necessário identificar a fala a ser animada. Elaé identificada a partir da sua transcrição fonética, esta consiste na determinação dasequência dos fones e da duração de cada um. A sequência de fones da animação é entãomapeada para uma sequência de visemas extraídos da base de 34 visemas dependentesde contexto fonético para o Português do Brasil (Figura 9). Neste trabalho o softwareutilizado para obtenção da transcrição fonética temporizada foi o Praat (Figura 10),que salva as informações de sequência de fones e suas durações em um arquivo textodo tipo TextGrid.

10

Page 12: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Figura 10: Exemplo de transcrição fonética da frase “Ela fala papa” utilizando o Praat,representando na linha 1 os fonemas, na linha 2 os visemas e na linha 3 a frase dita.A partir dela são extraídos as durações de cada fone e os visemas correspondentes.

A partir dele os instantes onde se inicia e onde termina a emissão de cada fonemasão então identificados e, com esses valores é calculado o instante correspondente acada visema.

De posse dos instantes relacionados a cada pose-chave e da transcrição fonética, sãorealizadas sucessivas operações de morphing entre elas, sendo que a duração e númerode quadros intermediários da metamorfose dependem da duração do som (fonema).

Por fim, a animação final é composta pela concatenação das animações de meta-morfose entre cada visema.

3.5 Testes a serem realizados

A avaliação do sistema de animação pode ser realizada de diversas maneiras, cadauma com suas vantagens e desvantagens, devendo ser escolhido o método que melhorreflita o objetivo da animação. Existem métodos que avaliam desde a contribuição daanimação na usabilidade de serviços até o videorrealismo, passando por parâmetroscomo sincronismo, naturalidade, precisão e suavidade da fala animada, além de testesde Turing e testes que avaliam a inteligibilidade da fala.

Neste trabalho, além de uma análise da performance computacional - envolvendotestes relacionados ao uso de memória, execução das funções e tempos de execução- será utilizado o teste de inteligibilidade da fala. Esta decisão deve-se ao modelo doteste, que avalia a contribuição visual da imagem à inteligibilidade da fala sob diferentescondições e fornece informações importantes sobre a qualidade de reprodução. Alémdisso, os resultados provenientes da realização deste podem ser comparados com osobtidos na avaliação da versão Desktop do sistema que também utilizou este tipo deteste.

O teste utiliza um conjunto de palavras sem significado, chamadas de logatomas,apresentadas, de três maneiras diferentes, somente áudio, áudio e vídeo, e por fima animação gerada pelo sistema a ser testado. Para maneira o áudio associado foi

11

Page 13: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

contaminado com ruído, produzindo três níveis de relação sinal-ruído (SNR - Signalto Noise Ratio) distintos: -12 dB, -18 dB e -24 dB. Os participantes, devem então serapresentados aos logatomas de forma aleatória e indicar indicar o logatoma apresentadoem uma lista de opções.

O resultado do teste é, então, dado por uma análise da quantidade de respostascertas para cada situação apresentada. Os resultados permitem avaliar a contribuiçãoda animação facial para inteligibilidade da fala em relação a situação em que toda ainformação é transmitida apenas através de áudio e ao caso ideal que seria o vídeo deuma pessoa real.

O protocolo a ser utilizado será o mesmo adotado em [Costa 2009], adaptado paradispositivos móveis, permitindo assim a comparação entre os resultados e a realização deuma análise sobre a influência do tamanho da tela na inteligibilidade da fala animada.

4 ResultadosA seguir, apresenta-se uma breve descrição das funções implementadas e resultadosreferentes a performance de cada uma e do sistema como um todo.

4.1 read_csv()

Esta função processa um arquivo csv contendo informações sobre as imagens da base deimagens utilizada, como pontos-âncora da animação (também chamados de landmarksou anchor points) e fonemas relacionados a cada imagem (visemas). Como envolveapenas o processamento de um arquivo de texto pequeno, esta função não possui altoconsumo de memória ou processamento, sendo que sua execução é muito rápida epraticamente não influencia no desempenho final do sistema.

4.2 warpDelaunay(Mat sourceimg, List<Point> sap, List<Point>tap)

Esta função realiza a operação de warping.Ela recebe como parâmetros a imagem a ser distorcida e duas listas com as coorde-

nadas dos pontos-âncora marcados tanto na imagem correspondente ao quadro-chavede origem quanto à imagem correspondente ao quadro-chave de destino da animação.

Primeiramente é realizada a triangulação de Delaunay a partir dos pontos-âncora.Então, são selecionados dois triângulos correspondentes entre a imagem de origeme a de destino. A partir destes pontos é definida uma matriz que representa umatransformação linear. Essa transformação é aplicada na imagem por meio do métodowarpAffine da biblioteca OpenCV. Sobre a imagem resultante é aplicada uma máscarabinária de forma que reste apenas o triângulo deformado colorido, que por fim é somadoà imagem final. Esse processo é repetido para todos os triângulos, até que após a somado último a imagem está pronta e será retornada pela função.

Para o teste da função utilizou-se as imagens da boca em posição de repouso ea imagem referente ao fonema <I> da base de imagens como entrada, além de uma

12

Page 14: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

lista com cinco pontos marcados na face e mais oito pontos marcados nas bordas daimagem.

Como resultado da operação foram obtidas as as imagens apresentadas nas figu-ras 11 e 12.

Figura 11: Exemplo de uma imagem de repouso (lábios cerrados), por meio da operaçãode warping, distorcida para uma imagem de visema (pronúncia de fone).

Figura 12: Exemplo de uma imagem de visema (pronúncia de fone) distorcida, pormeio da operação de warping, para uma imagem de repouso (lábios cerrados).

Na Figura 11, apresenta-se o resultado da face em repouso transformada no visema,e na Figura 12, o caminho inverso.

Fazendo uma comparação com o resultado da função já existente é impossível dis-tinguir a saída de uma da saída da outra, de forma que se pode concluir que a imple-mentação resultou em imagens de qualidade adequada para os propósitos de animação2D.

Com relação ao tempo de execução da operação de warping em dispositivos móveis,obtivemos tempos de execução entre 110 e 120 ms, compatíveis com os obtidos naplataforma Desktop. É um tempo pequeno, mas considerando o número altíssimo deoperações deste tipo realizadas durante a síntese de uma animação é possível que estafunção seja fonte de problemas relacionados a tempos de execução altos.

13

Page 15: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

4.3 getftvector(double currft, double nextkeypose_t, doubleanimationtick)

Esta função recebe como parâmetros o instante de tempo do visema atual e do visemareferente ao próximo fonema da animação, além da variável animationtick que define aperiodicidade de apresentação dos quadros da animação (frames). Por exemplo, no pa-drão de vídeo NTSC, apresenta-se 29.97 frames por segundo (fps), ou aproximadamente30 fps.

A função calcula o número de frames entre uma posição chave e a seguinte naanimação e retorna um vetor contendo o instante de cada um dos frames.

Sua execução é rápida e não consome muita memória, pois trata apenas com ope-rações básicas e arrays de tamanho reduzido, seu tempo de execução não passa de 1milissegundo não acarretando nenhuma limitação à aplicação.

4.4 getTrajectory(double currft, double[] ftvector, List<Point>sap, List<Point> tap)

Esta função recebe o instante de tempo do visema atual e o vetor retornado pela funçãogetftvector, além de duas listas contendo os pontos iniciais (sap, mnemônico para sourceanchor points) e os pontos alvo (tap, mnemônico para target anchor points). A funçãocalcula a trajetória entre os pontos da posição chave atual e a próxima, passando pelosframes definidos na getftvector.

A trajetória é definida por meio da equação de uma função linear e retorna umalista de listas de pontos, onde cada lista representa a posição dos pontos em um dadoframe da animação.

Assim como a getftvector sua execução é praticamente instantânea e não chegasequer a influenciar no tempo de síntese da animação.

4.5 morphTrajectory(Mat sourceimg, Mat targetimg, List<Point>sap, List<Point> tap, List< List <Point> > trajectory)

Esta é a função que realiza a metamorfose, ela recebe como parâmetros a pose-chaveatual e a próxima, além das listas de pontos-âncora referentes a cada uma das imagense a lista de listas de pontos retornada pela getTrajectory que representa a trajetóriados pontos.

A função morphTrajectory realiza sucessivas operações de warping entre a imagembase, a imagem alvo e imagens intermediárias definidas pela trajetória dos pontos.

Primeiro é realizado o warping na imagem base, utilizando os pontos contidos nalista retornada pela getTrajectory referentes ao frame que está sendo processado, depoisé realizado o warping inverso, utilizando estes mesmos pontos e a imagem alvo. O frameé então calculado realizando-se uma soma entre estas duas imagens na qual cada umapossui um peso diferente determinado por sua posição na animação. No cálculo de umframe no início da animação o peso do warping da imagem base será maior, já em umframe ao final, a imagem alvo distorcida terá peso maior.

Calculados todos os frames, existem duas opções, a primeira é apenas exibir aanimação na tela do dispositivo o que é feito utilizando-se recursos próprios do Android

14

Page 16: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

como AnimationDrawable e ImageView e a segunda é trasformar a animação num vídeoem formato MP4 (formato de arquivo de vídeo amplamente utilizado) e salvá-lo namemória interna do aparelho, o que é atingido utilizando-se a implementação contidana biblioteca JCodec.

Uma das dificuldades enfrentadas na implementação desta função foi que a perfor-mance no uso de recursos de memória pelo algoritmo de morphing está diretamenterelacionada com ao tempo de transição entre quadros-chave da animação. Quantomaior o intervalo de tempo, maior o número de frames que devem ser processados emaior a necessidade de armazenamento de frames intermediários na memória.

Quando o número de frames é muito grande ocorre um erro causado pela utiliza-ção de diversos bitmaps pela função, o que leva a uma situação de falta de memória.Para solucionar isso é necessário racionalizar a utilização de memória pela aplicação,reutilizando bitmaps e possivelmente alterando o algoritmo utilizado para se adequarmelhor a situação de memória limitada. Apesar disto, este é um caso extremo, ocor-rendo para animações muito longas ou imagens muito grandes o que não é o caso dasutilizadas neste trabalho. As animações geradas entre as imagens da base utilizada nãosão pesadas ou longas o suficiente para causar esse erro.

É importante notar, também, que existe uma grande diferença no tempo de exe-cução considerando apenas a exibição da animação na tela e sua transformação numarquivo de vídeo, sendo que o segunto caso é muito mais lento. Ainda é necessárioinvestigar como a biblioteca JCodec utiliza os recursos do sistema Android e se existepossibilidade de otimização nesta tarefa.

A fim de exemplificar tais dificuldades, foi gerada uma animação de 3 segundos a 30frames por segundo de forma que fossem processados 90 frames apenas da metamorfosede um único visema. Apenas exibindo a animação o tempo de execução foi de cerca de7.5 segundos, já salvando em MP4 o tempo é de aproximadamente 20 segundos.

É importante ressaltar que em animações de palavras ou frases a duração da tran-sição entre cada visema é muito menor que 3 segundos, e que o teste descrito acimaexemplifica problemas que podem ser acarretados apenas pela função morphTrajectory.Deste modo a animação da pronúncia de uma palavra que dura 3 segundos pode terum tempo de execução muito menor do que o citado acima, pois neste caso outrosfatores além do morphing interferem na medida, como o número de fonemas/visemase a duração da transição entre cada um.

4.6 processTextGrid()

No momento, por meio dessa função são inseridos os dados referentes a transcriçãofonética da fala a ser animada, futuramente ela será adaptada para atuar como umaTextGrid parser e poderá ler as informações diretamente do arquivo.

4.7 findIndex(String textGridViseme)

Essa função é extremamente simples e serve apenas para encontrar qual a imagem dabase de imagens carregada que representa o visema passado como parâmetro.

15

Page 17: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

4.8 Discussão e comentários

Até o momento foram apresentados dados sobre as funções desenvolvidas, suas ca-racterísticas e sua influência sobre a performance da animação. Por meio dos testesrealizados foi possível perceber que a maior influência no processo é a da função morph-Trajectory e indiretamente da função warpDelaunay.

A qualidade da animação com relação à parte visual é, portanto, afetada peloprocesso de morphing, pela técnica de warping escolhida e pelas características da falaa ser animada. Transições mais lentas entre fonemas permitem um maior númerode quadros intermediários, fazendo com que a transição seja mais suave. Já numafala rápida, a transição é mais brusca, podendo causar algum estranhamento devidomovimentos não tão naturais da face animada.

Outro ponto que pode influenciar a qualidade da animação obtida é que a técnica demorphing escolhida utiliza uma curva linear para aproximar o movimento articulatórioda fala, o que é uma grande simplificação dado que esses movimentos são complexos enão lineares.

O teste de inteligibilidade da fala, descrito na Seção 3.5, ainda está em fase deimplementação. Através dele será possível obter uma nova avaliação da qualidade dasanimações geradas pelo sistema e caracterizá-lo melhor quanto a sua inteligibilidade,videorrealismo e contribuição para o entendimento da mensagem a ser transmitida.Além disso, permitirá determinar se as aproximações feitas, como a linearidade dosmovimentos articulatórios, são boas o suficiente para não interferirem na qualidade daanimação em telas de tamanho reduzido.

Sendo assim, vale ressaltar a importância da realização deste teste para expandir oestudo sobre a animação facial em dispositivos móveis e obter uma comparação maisprecisa entre a performance e o nível de qualidade obtido na versão aqui implementadacom relação ao software existente para plataforma Desktop.

5 ConclusãoAs maiores dificuldades encontradas envolveram a adaptação do código escrito emPython e C++ para a versão em Android além da limitação de memória e a capacidadede processamento reduzido dos dispositivos móveis.

A documentação do OpenCV para Android e Java é muito escassa o que dificultoumuito a escrita das funções que utilizam a biblioteca.

Diversas vezes ocorreram erros de falta de memória nas primeiras versões das fun-ções, além de tempos de execução grandes demais para que a versão fosse viável. Outradificuldade foi a de decidir quais os tipos de variáveis e quais estruturas implementaçõescomo ArrayLists ou vetores utilizar em Java para representar os objetos existentes nasfunções já implementadas em Python.

É possível concluir que os algoritmos aqui descritos e as funções implementadassão adequadas para a geração de animações faciais realistas mesmo em condições dememória e capacidade de processamento limitados. Porém, com ressalvas quanto aotempo de execução, que pode ser alto demais quando sintetizadas animações longas,limitando sua utilização a aplicações que não tenham restrições de execução em temporeal.

16

Page 18: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

Novas versões das funções já existentes podem ser desenvolvidas se houver a neces-sidade de otimizá-las e adequá-las de maneira mais eficiente a dispositivos móveis ou aoutras aplicações. Adicionalmente, o desenvolvimento de funções semelhantes direta-mente na GPU do aparelho (processador gráfico dedicado) podem ajudar a minimizaras dificuldades encontradas.

Além disso, é importante que sejam preparados testes de inteligibilidade da fala eanálise da influência do tamanho da tela na inteligibilidade e na qualidade percebidada animação, os quais poderão ser comparados com os resultados obtidos em [Costa2009] e apontar novos caminhos para a animação facial em dispositivos móveis.

Os resultados do presente trabalho serão apresentados no Décimo Encontro dosAlunos e Docentes do Departamento de Engenharia de Computação e AutomaçãoIndustrial - X EADCA.

6 AgradecimentosAgradeço ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq)pelo apoio financeiro dado a este projeto.

ReferênciasCOSTA, P.; De Martino, J. Compact 2D facial animation based on context-dependentvisemes. In: ACM. Proceedings of the ACM/SSPNET 2nd International Symposiumon Facial Analysis and Animation. [S.l.], 2010. p. 20–20.

COSTA, P. D. P. Animação facial 2D sincronizada com a fala baseada em imagensde visemas dependentes do contexto fonético. Dissertação (Mestrado) — UniversidadeEstadual de Campinas, Junho 2009.

GONZALEZ, R.; WOODS, R. Digital image processing. Prentice Hall, p. 703–704,2002.

GRATCH, J. et al. Creating interactive virtual humans: Some assembly required.Intelligent Systems, IEEE, IEEE, v. 17, n. 4, p. 54–63, 2002. ISSN 1541-1672.

MUHAMMAD, A. OpenCV Android Programming By Example. [S.l.]: PacktPublishing Ltd, 2015.

OKABE, A.; BOOTS, B.; SUGIHARA, K. Spatial Tessellations: Concepts andApplications of Voronoi Diagrams. New York, NY, USA: John Wiley & Sons, Inc.,1992. ISBN 0-471-93430-5.

PANDZIC, I. Facial animation framework for the web and mobile platforms. In:ACM. Proceedings of the seventh international conference on 3D Web technology.[S.l.], 2002. p. 27–34. ISBN 1581134681.

PARKE, F. I. Computer generated animation of faces. In: ACM’72: Proceedings ofthe ACM annual conference. New York, NY, USA: ACM Press, 1972. p. 451–457.

17

Page 19: PIBIC 2016/2017 AnimaFace 2D: Implementação ... - Unicamppaula/pdf/2017_08_Relato...UniversidadeEstadualdeCampinas FaculdadedeEngenhariaElétricaedeComputação UNICAMP PIBIC 2016/2017

SILVA, B. C. da. Deformação e Metamorfose de Imagens Digitais. Dissertação(Mestrado), 1994.

18