geraÇÃoautomatizadadeimagensem pixelart …

98
UNIVERSIDADE FEEVALE MATHEUS ADAMS CAMARGO GERAÇÃO AUTOMATIZADA DE IMAGENS EM PIXEL ART UTILIZANDO REDES NEURAIS Novo Hamburgo 2019

Upload: others

Post on 15-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

UNIVERSIDADE FEEVALE

MATHEUS ADAMS CAMARGO

GERAÇÃO AUTOMATIZADA DE IMAGENS EM PIXEL ARTUTILIZANDO REDES NEURAIS

Novo Hamburgo2019

Page 2: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

MATHEUS ADAMS CAMARGO

GERAÇÃO AUTOMATIZADA DE IMAGENS EM PIXEL ARTUTILIZANDO REDES NEURAIS

Trabalho de Conclusão de Curso apresentadocomo requisito parcial à obtenção do graude Bacharel em Ciência da Computação pelaUniversidade Feevale

Orientador: João Batista Mossmann

Novo Hamburgo2019

Page 3: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

MATHEUS ADAMS CAMARGO

GERAÇÃO AUTOMATIZADA DE IMAGENS EM PIXEL ARTUTILIZANDO REDES NEURAIS

Trabalho de Conclusão de Curso apresentadocomo requisito parcial à obtenção do graude Bacharel em Ciência da Computação pelaUniversidade Feevale

APROVADO EM: __ / __ / ____

JOÃO BATISTA MOSSMANNOrientador – Feevale

MARTA ROSECLER BEZExaminador interno – Feevale

PAULO RICARDO MUNIZ BARROSExaminador interno – Feevale

Novo Hamburgo2019

Page 4: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

AGRADECIMENTOS

Gostaria de registrar minha gratidão àque-les que contribuíram de alguma forma paraa realização desse trabalho de conclusão, emespecial:Primeiramente ao Criador, sem fé em mimmesmo nada disso seria possível;Ao meu orientador, João Batista Mossmann,que com sua experiência e organização pres-tou todo apoio na condução deste projeto;A minha família, que esteve ao meu ladodurante todo o processo, ao Lucas especial-mente pelas ideias e dicas valiosas;A todos que despertaram e mantiveram emmim a paixão pela ciência, pela computaçãoe pela arte;Muito obrigado a todos!

Page 5: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

RESUMO

Neste projeto é abordada a relação da engenharia de software com a indústria dejogos, especificamente no contexto do desenvolvimento de imagens para jogos 2Dque utilizam como estilo o pixel art. Embora existam várias ferramentas que auxi-liam na construção de imagens bidimensionais, ainda há uma demanda grande dacapacidade criativa do artista no que diz respeito ao primeiro estágio de concepçãode uma figura. Um exemplo dessa dificuldade inicial ocorre ao desenhar novas posespara personagens existentes. Nesse sentido, nota-se que redes neurais têm sido usa-das para resolver vários problemas envolvendo geração de imagens, sendo possívelestudar e desenvolver uma forma de simplificar o desenvolvimento de novas posiçõespara personagens utilizando este recurso computacional. A partir desse propósito,este trabalho tem como objetivo principal investigar, propor e implementar um pro-cesso de geração de imagens bidimensionais por meio de uma rede neural, aplicadono desenvolvimento de jogos com personagens em pixel art. O método para atingiressa proposta inicia com um estudo teórico das tecnologias disponíveis e das for-mas de integrá-las. A partir dessa investigação, é definido um processo gerador deimagens em pixel art utilizando redes neurais. Para validar essa proposta, o pro-cesso foi construído na prática e foram estabelecidas duas técnicas de comparaçãode imagens para verificar o grau de semelhança das imagens geradas em relação aoresultado ideal esperado. O processo se mostrou capaz de gerar imagens semelhantesao esperado, com características de pixel art. Os resultados são promissores comoversão inicial de imagem sob a qual o artista pode efetuar o desenvolvimento, e oprocesso definido poderá ser reproduzido em outros estudos a partir das diretivasque foram apresentadas.

Palavras-chave: Estimativa de pose humana. Geração de imagens. Pixel art. Redesneurais. Tradução imagem-para-imagem.

Page 6: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

ABSTRACT

In this project the relationship between software engineering and the gaming indus-try is discussed, specifically in the context of images for 2D games that choose pixelart as aesthetics. Although there are several tools that help in the construction oftwo-dimensional images, there is still a great demand for the creative capacity of theartist, in particular regarding the initial stage of conception of a figure. An exam-ple of this initial difficulty occurs when drawing new poses for existing characters.In this sense, it is well-known that neural networks have been used to solve severalproblems involving image generation, therefore being possible to study and developa way to simplify the development of new positions for characters using this com-putational resource. Thus, this work aims to investigate, propose and implement atwo-dimensional image generation process through a neural network, applied in thedevelopment of games with pixel art characters. The method to achieve this pro-posal begins with a theoretical study of available technologies and ways of integratingthem. Through this investigation, a pixel art image generator process is defined us-ing neural networks. To validate this proposal, the process was built in practice andtwo image comparison techniques were established to verify the similarity betweengenerated images and the expected ideal result. The process proved itself to be ableto generate images close to the expected ones, with pixel art characteristics. Theresults are promising as an initial version of the image under which the artist canmake adjusts, and the defined process can be reproduced in other studies from thedirectives that were presented.

Keywords: Human pose estimation. Image generation. Image-to-image translation.Neural networks. Pixel art.

Page 7: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

LISTA DE ILUSTRAÇÕES

Figura 1 – Exemplo de mudança da pose de um personagem . . . . . . . . . . . . 14

Figura 2 – Exemplo de imagem em pixel art com a respectiva paleta de coresdestacada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Figura 3 – Exemplo de pixel art com a paleta de cores alterada . . . . . . . . . . . 20

Figura 4 – Exemplo de comparação de imagens utilizando SMC adaptado . . . . . 24Figura 5 – Exemplo de comparação da paleta utilizando SMC adaptado . . . . . . 25

Figura 6 – Representação tradicional de um dos tipos de neurônio . . . . . . . . . 28Figura 7 – Representação de um perceptron . . . . . . . . . . . . . . . . . . . . . . 29Figura 8 – Exemplo de uma rede neural artificial (RNA) simples . . . . . . . . . . 30Figura 9 – Função Sigmoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Figura 10 –Função Tanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Figura 11 –Função ReLU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Figura 12 –RNA para reconhecimento de dígitos . . . . . . . . . . . . . . . . . . . 33Figura 13 –Exemplo de um processo possível em uma CNN . . . . . . . . . . . . . 36Figura 14 –Cálculo de uma convolução . . . . . . . . . . . . . . . . . . . . . . . . 37Figura 15 –Exemplo de uma operação de pooling . . . . . . . . . . . . . . . . . . . 38Figura 16 –Exemplo de operações de classificação e regressão . . . . . . . . . . . . 40Figura 17 –Processo de deconvolução para geração de dados . . . . . . . . . . . . . 41Figura 18 –Processo típico de uma implementação de GAN . . . . . . . . . . . . . 42

Figura 19 –Comparação de dois modelos de estimativa de pose . . . . . . . . . . . 45

Figura 20 –Modelos de mapa de pose COCO e BODY_25 . . . . . . . . . . . . . . 51Figura 21 –Aplicação do filtro hq3x . . . . . . . . . . . . . . . . . . . . . . . . . . 52Figura 22 –Rede codificadora-decodificadora e a U-Net aplicada no Pix2Pix . . . . 54Figura 23 –Exemplos de tradução imagem-para-imagem utilizando Pix2Pix . . . . 54

Figura 24 –Processo de mudança da pose de um personagem . . . . . . . . . . . . 55

Figura 25 –Processo de extração da pose com mudança de escala e ajustes manuais 64Figura 26 –Tabela de dados para modelo personalizado de mapeamento da pose . 66Figura 27 –Comparativo da ampliação direta sem suavização e com aplicação do

filtro hq4x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Figura 28 –Algoritmo para escolha dos sprites de teste . . . . . . . . . . . . . . . . 69Figura 29 –Exemplo de uma imagem de entrada utilizada para geração da RNA . 69

Page 8: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

Figura 30 –Exemplo de entrada e saídas geradas pela RNA treinada a partir dosprite sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Figura 31 –Paleta do personagem proposto neste projeto. A cor cinza serve apenascomo plano de fundo para destacar as demais cores. . . . . . . . . . . . 73

Figura 32 –Exemplos de novos sprites normalizados como pixel art . . . . . . . . . 74Figura 33 –Exemplo de um sprite mapeado conforme o modelo do segundo expe-

rimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Figura 34 –Exemplos de sprites do segundo experimento normalizados como pixel

art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Figura 35 –Resultados do experimento 1 pela modalidade de avaliação . . . . . . . 79Figura 36 –Resultados do experimento 2 pela modalidade de avaliação . . . . . . . 80Figura 37 –Comparativo dos resultados da avaliação de imagem binária . . . . . . 81Figura 38 –Comparativo dos resultados da avaliação de imagem pela paleta . . . . 82

Page 9: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

LISTA DE TABELAS

Tabela 1 – Comparação dos escores por modalidade de avaliação . . . . . . . . . . 78Tabela 2 – Comparação dos escores em relação a 200 épocas de treino . . . . . . . 80Tabela 3 – Comparação completa do experimento 1 por quantidade de épocas de

treino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Tabela 4 – Comparação completa do experimento 2 por quantidade de épocas de

treino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Tabela 5 – Comparação dos escores por dificuldade . . . . . . . . . . . . . . . . . 85

Page 10: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

LISTA DE ABREVIATURAS E SIGLAS

RGB Red-Green-Blue

SMC Simple Matching Coefficient

RNA Rede Neural Artificial

cGAN Conditional Generative Adversarial Networks

CNN Convolutional Neural Network

GAN Generative Adversarial Network

CPM Convolutional Pose Machine

GEE Generalized Equations Estimating

Page 11: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

LISTA DE EQUAÇÕES

3.0 Simple Matching Coefficient (SMC) . . . . . . . . . . . . . . . . . . . . . . 223.1 Versão adaptada de SMC para aplicação neste projeto . . . . . . . . . . . . 233.2 Cálculo de luminosidade percebida de cor RGB . . . . . . . . . . . . . . . 233.4 Cálculo SMC para diferença considerando a paleta de cores . . . . . . . . . 25

Page 12: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

SUMÁRIO

1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Aplicação de imagens no contexto digital . . . . . . . . . . . . . . . . . 162.1 Processo de desenvolvimento em game design . . . . . . . . . . . . . . . . 162.2 Aspectos artísticos de imagens digitais . . . . . . . . . . . . . . . . . . . . 18

3 Técnicas de avaliação de imagens . . . . . . . . . . . . . . . . . . . . . . 223.1 Avaliação quantitativa com imagem binarizada . . . . . . . . . . . . . . . . 223.2 Avaliação quantitativa da paleta de cores . . . . . . . . . . . . . . . . . . . 243.3 Avaliação qualitativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Redes Neurais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.1 Estrutura de informações em uma rede neural artificial . . . . . . . . . . . 294.2 Modelo de aprendizado de um rede neural artificial . . . . . . . . . . . . . 324.3 Arquiteturas de Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . 35

4.3.1 Redes Neurais Convolucionais . . . . . . . . . . . . . . . . . . . . . 354.3.2 Redes Neurais Adversárias Geradoras . . . . . . . . . . . . . . . . . 40

5 Processos computacionais aplicados a imagens . . . . . . . . . . . . . . 435.1 Detecção de pose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.2 Mudança de escala para pixel art . . . . . . . . . . . . . . . . . . . . . . . 455.3 Tradução imagem-para-imagem utilizando redes neurais . . . . . . . . . . . 47

6 Implementações práticas para processamento de imagens . . . . . . . 506.1 Técnica aplicada na detecção de pose . . . . . . . . . . . . . . . . . . . . . 506.2 Técnica aplicada na mudança de escala para pixel art . . . . . . . . . . . . 516.3 Técnica aplicada na tradução imagem-para-imagem . . . . . . . . . . . . . 53

7 Definição do processo de geração automatizada de imagens . . . . . . 557.1 Entrada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.2 Mapeamento de pose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.3 Entrada da rede neural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587.4 Geração da rede neural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587.5 Aplicação da rede neural . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.6 Normalização para pixel art . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8 Desenvolvimento prático da proposta . . . . . . . . . . . . . . . . . . . 618.1 Experimento 1 - Geração completa de um sprite . . . . . . . . . . . . . . . 61

Page 13: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

8.1.1 Entrada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618.1.2 Mapeamento de pose . . . . . . . . . . . . . . . . . . . . . . . . . . 628.1.3 Entrada da rede neural . . . . . . . . . . . . . . . . . . . . . . . . . 668.1.4 Geração da rede neural . . . . . . . . . . . . . . . . . . . . . . . . . 708.1.5 Aplicação da rede neural . . . . . . . . . . . . . . . . . . . . . . . . 718.1.6 Normalização para pixel art . . . . . . . . . . . . . . . . . . . . . . 72

8.2 Experimento 2 - Coloração de um sprite . . . . . . . . . . . . . . . . . . . 748.2.1 Adequação da entrada da rede neural . . . . . . . . . . . . . . . . . 748.2.2 Aplicação da rede neural e normalização . . . . . . . . . . . . . . . 75

9 Resultados e avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769.1 Metodologia de avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769.2 Resultados pela modalidade de avaliação . . . . . . . . . . . . . . . . . . . 779.3 Resultados pela quantidade de iterações de treino . . . . . . . . . . . . . . 809.4 Resultados pela dificuldade de representação . . . . . . . . . . . . . . . . . 84

10 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Apêndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

A Sprite sheet completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

B Resultados - Experimento 1 . . . . . . . . . . . . . . . . . . . . . . . . . 96

C Resultados - Experimento 2 . . . . . . . . . . . . . . . . . . . . . . . . . 97

Page 14: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

13

1 INTRODUÇÃO

A engenharia de software é uma área abrangente da computação que define pro-cessos e ferramentas envolvidos na criação de um software que ofereça soluções para pro-blemas do cotidiano que podem ser interpretados por sistemas digitais. Dentro dessa área,o processo de desenvolvimento de software é caracterizado por criar um produto imate-rial, sendo mais semelhante a um serviço. Essa alta abstração e a existência de diversaslinguagens de programação e padrões de projeto contribuem para que o desenvolvimentode software seja aplicado em diversas áreas, como por exemplo medicina, gerenciamentode empresas ou desenvolvimento de jogos digitais. (PRESSMAN; MAXIM, 2016)

Especificamente na indústria de jogos, é comum as equipes de desenvolvimentoserem compostas por profissionais de diferentes áreas. A integração destas equipes costumaser uma tarefa desafiadora devido às características próprias de trabalho de cada setor(FREITAS et al., 2017). Enquanto que os responsáveis pelo desenvolvimento de softwarese preocupam com as tarefas de programação e automatização de processos, os artistasque cuidam do design e da parte gráfica dos jogos ainda passam por muitos processoscriativos executados de forma manual ao desenvolver conteúdo.

Embora neste campo da arte gráfica digital existam várias ferramentas que auxi-liem na construção de imagens bidimensionais, como softwares ou técnicas de desenho,existe uma demanda grande da capacidade criativa do artista, que deve considerar ques-tões como iluminação, movimento e composição. No livro Creating the Art of the Game(OMERNICK, 2004), o autor destaca que essa capacidade de imaginar e criar é o quediferencia um artista de outros profissionais. Segundo ele, um bom artista é aquele queconsegue agregar de forma convincente a fantasia com os elementos pertinentes da reali-dade ao desenvolver seu estilo (OMERNICK, 2004).

Como visto, o artista pode adotar vários estilos visuais ao desenvolver seu traba-lho, utilizando por exemplo desenhos em 2D, desenhos vetoriais, pixel art ou modelos em3D. Neste projeto, será abordado em específico o pixel art, que é caracterizado por utilizarbaixas resoluções para representar formas complexas e ter uma paleta de cores reduzida,exigindo a capacidade de síntese de informação (KUO; YANG; CHU, 2016). Além disso,este trabalho terá como contexto as animações em pixel art, onde é necessário gerar váriosquadros do mesmo personagem em diferentes posições. Para o desenvolvimento de per-sonagens animados, os conceitos citados anteriormente sobre a construção de ilustraçõestambém se aplicam: o personagem possui uma anatomia, proporções e iluminação quedevem ser respeitados para gerar realismo.

Neste contexto das animações em 2D, o artista frequentemente precisa criar novas

Page 15: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

14

posições corporais para os personagens. Diferente do que ocorre em projetos feitos em3D, esta é uma tarefa complexa, pois não é possível simplesmente manipular um modelotridimensional e obter a imagem desejada. Para fazer isso em imagens bidimensionais,normalmente o artista fará um esboço inicial à mão livre da nova posição desejada, gerandoapenas um esqueleto da posição. Depois, tendo o referencial do personagem em mente,adiciona as proporções corretas em cada parte do corpo e vai aprimorando os detalhesaté que fique suficientemente coerente com as demais imagens do personagem. Como foivisto, esse processo de desenho é trabalhoso em todas as etapas, porém, no estágio inicialhá mais incerteza das formas a desenhar e com isso a chance de o artista se equivocaré maior. Pensando nisso, este projeto se propõe a estudar e desenvolver uma forma desimplificar o desenvolvimento de novas posições para personagens em pixel art, utilizandoredes neurais. Tomando como exemplo a Figura 1, o personagem na imagem (1) estáereto. Para criar a posição vista na imagem (2), em que o personagem está abaixado einclinado para trás, seria necessário desenhá-la manualmente desde o início. Com esteprojeto, deseja-se ser capaz de gerar automaticamente uma versão inicial da imagem (2)com base em um treinamento prévio que assimile as características da imagem (1). Dessaforma, o artista poderá trabalhar já partindo de um estágio mais avançado da produçãoda imagem.

Figura 1: Exemplo de mudança da pose de um personagem

(1) (2)

Fonte: elaborado pelo autor, com base na arte “Hero spritesheets (Ars Notoria)” (OpenGameArt.org)

Tal como citado, uma das abordagens possíveis para geração automatizada de ima-gens é o uso de redes neurais, como pode ser visto no artigo Image-to-Image Translationwith Conditional Adversarial Networks (ISOLA et al., 2017). Neste projeto, os autoresaplicaram redes neurais para definir um processo de transformação de imagens: a partirde um treinamento prévio que vincula uma série de entradas e saídas conhecidas, a redeaprende a gerar saídas para novas entradas. Essa lógica já foi usada para várias aplicações,como por exemplo gerar fachadas de prédios ou modelos de bolsas ou sapatos realistas apartir de um desenho simples. Outro uso de redes neurais para geração de imagens advém

Page 16: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

15

da empresa NVIDIA, que criou uma rede neural capaz de combinar de forma parametri-zável a face de duas pessoas quaisquer, gerando fotos realistas (KARRAS; LAINE; AILA,2018).

Além dos exemplos citados, outra pesquisa que se relaciona com o objetivo desteprojeto é a transformação de pose em vídeos demonstrada no artigo Everybody DanceNow (CHAN et al., 2018). Neste caso, a rede neural foi treinada para ler dois vídeos: oprimeiro, com um dançarino executando seus passos; e o segundo, com um sujeito qualquerse movimentando livremente. A rede neural desenvolvida neste projeto consegue produzirum terceiro vídeo, onde se vê os passos do dançarino, porém executados pelo sujeito dosegundo vídeo. Ou seja, a rede aprende a transferir somente os movimentos de um vídeopara o outro, semelhante ao que se pretende fazer neste trabalho.

Tendo em vista essas aplicações de redes neurais para geração de imagens, observa-se que o segmento do pixel art escolhido como tema deste trabalho exige atenção especialem relação às imagens geradas: a resolução da imagem é reduzida e a paleta de coresdeve ser igual a da imagem original para manter a coerência. Atendendo a estes crité-rios, pretende-se simplificar o processo criativo do artista, disponibilizando uma formade gerar rapidamente novas poses de personagens. Reduzindo esse esforço inicial paraconceber a forma geral do personagem, é possível trabalhar diretamente nos detalhes eaperfeiçoamento do desenho. O artista poderá também fazer testes de posições, visuali-zando rapidamente um resultado parcial, que permitirá melhorar a pose antes de investirtempo no desenho final. Com isso, tem-se como objetivo principal deste projeto desenvol-ver um processo de geração de imagens, utilizando rede neural, que esteja alinhado comas necessidades específicas do contexto da criação de personagens em pixel art.

Nos próximos capítulos, serão retomados e abordados em mais detalhes os conceitosque se relacionam com este estudo. Para apresentar esta proposta, este trabalho estáorganizado da seguinte forma: nos capítulos 2 até 4 são abordados os conceitos aplicadosneste projeto, detalhando características de imagens em pixel art e das redes neurais.A seguir, nos capítulos 5 e 6 são discutidas implementações práticas destes conceitos,para que no capítulo 7 seja definida a proposta principal do trabalho. Os capítulos 8 e 9abordam a implementação prática e análise de resultados. Por fim, o capítulo 10 apresentaa conclusão.

Page 17: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

16

2 APLICAÇÃO DE IMAGENS NO CONTEXTO DIGITAL

Neste capítulo serão apresentados conceitos que se relacionam com a área do de-senvolvimento de jogos. Na seção 2.1 este projeto será contextualizado, abordado de formamais detalhada este processo de desenvolvimento e a problemática envolvida em compara-ção com outras áreas da computação. Enquanto isso, na seção 2.2 são vistos detalhes sobreo desenvolvimento da parte visual dos jogos, relacionando com os conceitos apresentadosanteriormente e destacando os processos que se pretende simplificar com este projeto.

2.1 PROCESSO DE DESENVOLVIMENTO EM GAME DESIGN

A engenharia de software busca resolver problemas do cotidiano usando meioscomputacionais (PRESSMAN; MAXIM, 2016). No contexto do desenvolvimento de jogosdigitais, assim como em outras áreas de negócio que se fundamentam na computação, aquestão final a ser resolvida é de que forma obter um retorno financeiro através dessesmeios digitais. A abordagem escolhida para resolver este problema utilizando jogos nor-malmente envolve gerar algum tipo de satisfação no usuário, de forma que ele se sintamotivado a comprar o jogo ou investir seu tempo jogando. Se o usuário estiver suficiente-mente motivado, vai optar por investir seu dinheiro com um jogo específico e abrir mãode outros jogos da concorrência.

Essa fidelização do usuário pode ser gerada de diversas formas, como por exemplotrabalhando as sensações que o jogador experimenta durante a partida ou utilizando sis-temas de recompensa que gerem satisfação quando o jogador completa objetivos (CRAW-FORD, 2012). Outra técnica que torna o jogo mais atrativo e que está sempre presenteem algum grau diz respeito ao visual do jogo, que deve ser coerente com o tipo de público-alvo para gerar a identificação do jogador com o game. Para trabalhar essas questões eorganizar o processo de criação de um jogo, a equipe de desenvolvimento deve aplicarconceitos de game design. (SCHELL, 2008)

Qualquer processo de design é caracterizado pela tomada de decisões, ou seja,levantando diversas opções e escolhendo aquela que leva mais próximo ao objetivo doproduto desenvolvido e melhor se encaixa nas restrições estabelecidas. Conforme vistoanteriormente, neste contexto do desenvolvimento de jogos o objetivo é criar uma expe-riência valiosa ao jogador, portanto o game design define métodos para avaliar o quantodesse valor um determinado aspecto do jogo será capaz de entregar. (SCHELL, 2008)

Segundo Cook (2019), a equipe de desenvolvimento era tradicionalmente reduzidae fazia as escolhas de design baseadas nas experiências próprias de cada um, ou seja,com base no conhecimento empírico dos elementos que geram satisfação. Além disso, o

Page 18: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

17

processo se caracterizava por ter etapas bem demarcadas, passando pelo processo de de-senvolvimento, depois executando os testes e então a liberação do jogo. Ao atingir essaetapa de testes, dificilmente haveria grandes mudanças nas características visuais ou dejogabilidade. Por fim, só ao liberar o jogo é que se descobria se ele seria um sucesso oufracasso. Essa abordagem se assemelha muito a um modelo em cascata, e funcionava bempara criar jogos semelhantes aos já existentes, que contivessem pequenas mudanças nasmecânicas ou visual, mas que teriam chances de sucesso parecidas. Apesar de adequadapara o cenário de equipes de desenvolvimento menores, essa sistemática acabava desfa-vorecendo a inovação, não promovia uma melhora contínua do jogo e gerava garantia desucesso baseada em critérios próprios de cada desenvolvedor. (COOK, 2019)

Com a evolução tecnológica, surgiram novas ferramentas e modelos de desenvol-vimento para a construção de jogos, além de estudos que identificaram com mais clarezaquais elementos geram satisfação no jogador. As equipes se tornaram cada vez maiores emultidisciplinares para conseguir trabalhar com a complexidade crescente do desenvolvi-mento. Há profissionais responsáveis por desenvolver somente os personagens, os efeitosvisuais, a interface, técnicos para pensar na jogabilidade, sonoplastas, programadores eanimadores. Cada um destes grupos realiza a construção de um produto específico, masque tem o mesmo objetivo de cativar o jogador de alguma forma. Para dar conta dessarealidade, o processo de desenvolvimento também se modernizou e atualmente contémmuitas características de metodologias ágeis. Ao invés de etapas delimitadas, o processocomo um todo se baseia em ciclos de testes prévios e ajustes, garantindo que eventuaisfalhas de concepção sejam eliminadas antes de comprometer a qualidade do jogo entregue.Pensando por exemplo no processo da interface de usuário, a equipe vai definir quais sãoas informações mais importantes e como exibi-las e organizá-las de modo geral. Depois,são criados elementos cada vez mais específicos da interface, identificando a cada rodadade desenvolvimento se foi mantido o padrão entre todas as telas do jogo.

Com relação aos elementos que cativam o jogador, o conhecimento empírico foisubstituído pelo entendimento dos mecanismos de recompensa do cérebro humano. Alémdisso passou-se a utilizar métricas que sejam capazes de quantificar o envolvimento deum jogador, como por exemplo o total de minutos jogando ou quantidade de vezes quedeterminada funcionalidade foi utilizada durante os testes. A partir da análise de impactodas mudanças sobre métricas como essas, a equipe consegue prever de forma mais se-gura quais abordagens vão ajudar a melhorar o resultado e quais elementos podem estarquebrando o balanço do jogo. (FREITAS et al., 2017)

Como foi visto, o processo se tornou mais iterativo, focando em técnicas que per-mitem agilizar a descoberta de conhecimento, fazendo testes prévios e adequando o de-senvolvimento antes que o custo da mudança se torne alto. Dessa forma, a complexidadeatual do desenvolvimento é quebrada em etapas menores que podem ser aprimoradas in-

Page 19: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

18

dividualmente. Este projeto busca portanto aprimorar o uso destas técnicas inseridas noprocesso de desenvolvimento da parte artística do jogo, que é abordado na próxima seção.

2.2 ASPECTOS ARTÍSTICOS DE IMAGENS DIGITAIS

Como foi visto anteriormente, o jogo é constituído por artefatos que cativam ojogador de alguma forma. Um dos primeiros contatos que há com o jogo e que também éo aspecto mais evidente do design durante o gameplay é sem dúvidas o aspecto visual. Éatravés da imagem que são transmitidos conceitos importantes do jogo, como por exemploo público-alvo, gênero e efetivamente o que está ocorrendo durante a partida. SegundoSchell (2008), há quatro elementos básicos que constituem um jogo: estética, mecânica,história e tecnologia. Cada um destes agrega diferentes valores ao jogo e se relaciona comos demais, podendo ser interpretado tanto como início de raciocínio ou como detalhe a serconsiderado ao desenvolver algum elemento. Por exemplo, ao desenvolver as mecânicas, énecessário considerar de que forma elas se relacionam com o visual ou com a história dojogo. Como nota-se, uma aparência bem planejada e adequada ao público-alvo é um dospilares para construir um jogo de sucesso.(SCHELL, 2008)

Na seção anterior, verificou-se que o processo de desenvolvimento é baseado emfazer escolhas que levem cada vez mais perto dos objetivos que o jogo pretende atingir, eisso normalmente é feito através de várias iterações para levantar possibilidades e testar asmais efetivas. No campo da arte visual, a mesma estratégia se aplica: os artistas levantamvárias possibilidades de desenho para cada aspecto do jogo e vão selecionando as ideiasmais promissoras para serem aprimoradas.(FREITAS et al., 2017). Os critérios aplicadosgeralmente estão relacionados com a necessidade de comunicar ao jogador rapidamenteatravés do visual a história por trás de cada elemento do jogo. Pensando por exemplo noprocesso de criação de um personagem, a equipe vai levantar quais são as suas caracte-rísticas mais importantes, e a partir dessa lista identificar de quais formas elas podemser representas. Podem ser elencadas diversas possibilidades, mas a equipe vai escolherapenas uma antes de seguir para o desenvolvimento em detalhes, que estará sujeito àmesma sistemática. Nesse sentido, uma das escolhas do artista diz respeito ao estilo dedesenho, e neste projeto será abordado o estilo do pixel art.

Embora qualquer arte gráfica digital seja intrinsecamente composta por pixels,nem todas podem ser consideradas pixel art. Segundo Silber (2015), o pixel art ocorrequando cada pixel visível da imagem foi colocado intencionalmente pelo artista naquelaposição específica. Além disso, normalmente há uma limitação clara da paleta de coresutilizada, pois isso também ajuda a tornar cada pixel mais evidente, em contraste comoutros tipos de arte digital que não possuem uma paleta limitada e apresentam umatransição de cores mais suave. Na Figura 2 o personagem é composto por poucas cores epossui baixa resolução, ilustrando as características típicas desse tipo de arte.

Page 20: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

19

Figura 2: Exemplo de imagem em pixel art com a respectiva paleta de cores destacada

Fonte: produção do autor, com base na arte “Hero spritesheets (Ars Notoria)” (OpenGameArt.org)

Nas primeiras décadas em que se começou a desenvolver jogos digitais a memóriadisponível era muito limitada e por isso era importante reduzir tanto a quantidade deinformações armazenadas quanto o tamanho dos arquivos de imagem gravados. O pixelart se tornou praticamente um consenso neste período pois se mostrou efetivo ao atendersimultaneamente essas duas necessidades. Por ser naturalmente desenhado em resoluçõesmenores, já há uma diminuição no tamanho dos arquivos. Além disso, muitos jogos aplicamo uso de paletas de cores. Uma paleta de cores, que também pode ser vista na Figura 3,nada mais é do que um conjunto limitado de cores disponíveis para uso na imagem. Elapermite uma abordagem diferente para efetuar a coloração, que faz diminuir o tamanhodos arquivos e é detalhada a seguir. (SILBER, 2015)

Em uma imagem que não usa paleta, cada pixel tem sua cor descrita por trêsparâmetros: um para a intensidade do canal de cor vermelha, um para cor verde e oúltimo para cor azul. Ao sobrepor estes três canais, surge a cor desejada. Este sistemadenominado RGB, do inglês Red-Green-Blue, pode ser representado digitalmente por trêsbytes: um para cada um dos canais. Cada byte pode representar até 256 valores diferen-tes, dessa forma cada pixel pode conter milhões de cores distintas devido às combinaçõespossíveis dos três canais. Enquanto isso, imagens que usam paleta de cores tem comoobjetivo reduzir o tamanho final dos arquivos e como premissa o uso de poucas cores.Para fazer isso, utilizam um arquivo adicional que descreve essa paleta limitada de cores.Neste arquivo ficam elencadas as cores disponíveis, que podem ser descritas em um for-mato qualquer, como por exemplo o RGB. Além disso, para cada cor há um índice únicoassociado. No arquivo da imagem, ao invés de utilizar três bytes de informação para cadapixel, é apenas indicado qual o índice da paleta que deve ser buscado para colorir aquelepixel. Desta forma, pode ser utilizado apenas um byte de informação para cada pixel eainda assim ter 256 cores distintas para serem referenciadas na paleta de cores. Isso gerauma diminuição notável no tamanho das imagens, mesmo considerado a existência dessapaleta em separado, pois a mesma paleta pode ser utilizada entre várias imagens distintas.

Page 21: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

20

O uso de paletas gera outra vantagem, que é a possibilidade de recolorir umaimagem inteira sem ter que passar por cada pixel efetuando a substituição: basta alterara cor na paleta associada e isso refletirá em todas as imagens que utilizam essa paleta.Este exemplo está representado na Figura 3, onde foi alterado para verde as cores dacalça do personagem. A imagem deste personagem foi obtida através de um repositórioonline de uso livre (OpenGameArt.org), e será utilizada neste trabalho quando necessárioexemplificar imagens em pixel art.

Figura 3: Exemplo de pixel art com a paleta de cores alterada

Fonte: adaptado de “Hero spritesheets (Ars Notoria)” (OpenGameArt.org)

Contrário ao que se poderia esperar, o estilo de pixel art ainda é bastante utili-zado na atualidade, mesmo que as limitações técnicas que originalmente motivaram seuuso tenham sido resolvidas e aberto espaço para outras abordagens, como por exemplo amodelagem 3D. Verificou-se que o pixel art provém uma estética diferenciada e estabeleceuma sensação de nostalgia nos jogadores mais velhos, sendo ambos fatores que aumentama chance de sucesso comercial de um jogo, como foi visto na seção 2.1. Além disso, emcomparação com outras técnicas de desenvolvimento que envolvem criação de modelosem 3D ou vetorização para criar componentes do jogo, o pixel art não exige softwaresespecializados para edição. Isso possibilita não só uma simplificação do processo, pelofato de trabalhar com arquivos de complexidade menor, como também torna o desen-volvimento mais acessível ao permitir que os técnicos escolham a ferramenta com quepreferem desenvolver.(SILBER, 2015)

Os artistas que desenvolvem desenhos em pixel art também utilizam como métodoo processo de game design visto na seção 2.1. Ou seja, também fazem a arte de formaiterativa e levantando algumas possibilidades para selecionar as melhores. Por exemplo, seum artista precisa criar uma animação, ele fará um esboço inicial de cada pose necessáriae vai fazendo melhorias até que o resultado final esteja satisfatório. Conforme descrito nolivro The Illusion of Life: Disney Animation de Thomas e Johnston (1981) e ilustrado deforma prática por Becker (2017), o artista pode adotar duas sistemáticas ao desenvolveranimações:

Page 22: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

21

1. Straight Ahead: o artista desenha cada quadro da animação sequencialmente atéo final. É adequado para animações mais dinâmicas, pouco previsíveis ou que con-tenham muitos elementos da Física em ação. Como exemplo de aplicações pode serimaginada a forma como seria uma fogueira queimando, fumaça se dispersando ouainda uma roupa balançando.

2. Pose to Pose: o artista desenha somente os quadros principais do começo atéo final da animação, sem muitos detalhes. Depois de estarem coerentes entre si,começa a conectá-los com mais quadros intermediários para só então trabalhar osdetalhes de cada quadro. Essa abordagem é a mais indicada para desenvolver omovimento de personagens, pois dá maior controle sobre o andamento da animaçãodo começo até o final e o artista consegue identificar mais cedo se alguma pose nãoestá adequada.

Por fim, o último conceito a ser destacado é referente à terminologia específicadesta área de desenvolvimento de jogos. Ao construir gráficos em pixel art é comumdenominar como sprite (do inglês, espírito ou fada) cada quadro da animação de umpersonagem. Este termo surgiu devido ao fato de que essas imagens, quando utilizadasnos jogos, são renderizadas em separado do cenário ou outras imagens de fundo, comose estivessem flutuando sobre a tela. A partir disso surgiu também o termo sprite sheet,que se refere à imagem única que contém todos os sprites de um personagem organizadossequencialmente em linhas e colunas. (GUTTAG, 1993)

Com tudo isso, entende-se que o desenvolvimento das imagens no contexto do pixelart está fundamentado em um processo iterativo que faz parte da metodologia padrão dogame design. Além destes fundamentos, o artista também pode aplicar conceitos maisgerais de avaliação de imagens durante o seu processo criativo, que são discutidos nopróximo capítulo e embasam as técnicas para avaliação de resultados deste projeto.

Page 23: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

22

3 TÉCNICAS DE AVALIAÇÃO DE IMAGENS

Ao trabalhar com imagens é importante ter definida uma forma de avaliar a quali-dade do que está sendo produzido, seja para analisar o resultado final ou para identificarproblemas durante o desenvolvimento. Para este projeto que propõe a geração de imagens,isso é essencial para verificar a efetividade da proposta. Uma das formas de avaliar ima-gens é a comparação com uma referência, e essa abordagem é adequada para este estudouma vez que é possível gerar novas imagens já tendo um resultado ideal esperado. Quandomais semelhantes forem as imagens geradas e as esperadas, tanto melhor será o processode geração. Portanto, é necessário fundamentar algumas técnicas que pretende-se aplicarpara isso no desenvolvimento deste projeto. Nas próximas seções, serão apresentadas e dis-cutidas formas de fazer comparação entre as imagens, inicialmente apresentando critériosquantitativos e posteriormente alguns métodos qualitativos para extrair informações.

3.1 AVALIAÇÃO QUANTITATIVA COM IMAGEM BINARIZADA

Uma forma de avaliação quantitativa de imagens envolve o uso de conceitos daciência de dados. O Simple Matching Coefficient (SMC, coeficiente simples de correspon-dência, tradução nossa) permite verificar a similaridade de um parâmetro numérico entreum conjunto de dados e uma referência conhecida, sob a condição de que a informaçãoanalisada seja um dado binário. Criada por William M. Rand, essa técnica também éconhecida como coeficiente de Rand e produz um valor padronizado entre todas as com-parações, ou seja, é gerado sempre um resultado entre 0 e 1 mesmo que a grandeza dadiferença seja variável. A aplicação neste projeto pode ser feita verificando se cada pixelpossui ou não alguma característica (informação binária) nas imagens, para então aplicaro cálculo dimensionando essa diferença. (RAND, 1971)

A formulação original desta técnica pode ser observada na equação 3.1, onde oresultado 𝑆𝑀𝐶 é obtido a partir de quatro parâmetros: 𝐹𝑃 (falso positivo), 𝐹𝑁 (falsonegativo), 𝑉 𝑃 (verdadeiro positivo) e 𝑉 𝑁 (verdadeiro negativo). Como nota-se, estesquatro parâmetros classificam cada dado de acordo com o acerto ou erro em relação àreferência, sendo que o somatório de todos os parâmetros corresponde à quantidade deelementos analisados. Como no dividendo se encontram os acertos e no divisor o total,percebe-se que está fórmula calcula o grau de precisão, sendo 0 o valor que representa oerro total e 1 o valor que indica acerto completo entre a referência e o objeto analisado,sendo possível aplicar esta lógica para diversos contextos. (RAND, 1971)

𝑆𝑀𝐶 = 𝑉 𝑃 + 𝑉 𝑁

𝑉 𝑃 + 𝑉 𝑁 + 𝐹𝑃 + 𝐹𝑁(3.1)

Page 24: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

23

Para aplicação neste projeto, deseja-se ter um parâmetro que varie entre 0 e 1 paramedir o quão diferentes são as imagens geradas e as imagens esperadas pelo processo.Portanto, foi feita uma alteração nesta fórmula para adequar a esta proposta, além desimplificar algumas características do cálculo para aplicação neste cenário da análise deimagens. Pretende-se criar uma comparação que considere informações pixel-a-pixel nasimagens e sabe-se que as imagens comparadas terão sempre as mesmas dimensões. A partirdisso, pode ser visto no SMC adaptado da equação 3.2 que passou a ser considerado comoparâmetro as dimensões 𝑅𝑙𝑎𝑟𝑔𝑢𝑟𝑎 e 𝑅𝑎𝑙𝑡𝑢𝑟𝑎 das imagens, que corresponde à quantidade depixels existentes, ou seja, exatamente a quantidade de elementos analisados. Além disso,o dividendo 𝑉 𝑃 + 𝑉 𝑁 deve ser substituído por 𝐹𝑃 + 𝐹𝑁 para calcular a diferença aoinvés do grau de acerto. Para simplificar essa parte, percebeu-se que não é necessáriodiscriminar os casos de falso positivo e falso negativo separadamente, basta calcular adiferença entre valor do parâmetro escolhido entre as imagens comparadas, deste modoidentificando a quantidade de elementos divergentes entre as duas. Isso é expresso nestafórmula adaptada através dos parâmetros 𝑃𝑔 e 𝑃𝑟 que representam o valor do parâmetro𝑃 na imagem gerada e na imagem de referência, respectivamente. Com isso o 𝑆𝑀𝐶𝑎𝑑𝑎𝑝𝑡𝑎𝑑𝑜

mantém o comportamento de variar exatamente entre 0 e 1, porém sendo 0 o valor queindica igualdade total do parâmetro comparado e o valor 1 denotando que houve diferençano parâmetro para todos os pixels existentes na imagem. Desta forma tem-se um meio dequantificar a diferença entre imagens, sendo necessário ainda definir qual será o parâmetro𝑃 comparado entre as imagens.

𝑆𝑀𝐶𝑎𝑑𝑎𝑝𝑡𝑎𝑑𝑜 = |𝑃𝑔 − 𝑃𝑟|𝑅𝑙𝑎𝑟𝑔𝑢𝑟𝑎 × 𝑅𝑎𝑙𝑡𝑢𝑟𝑎

(3.2)

Propõe-se então comparar a imagem em modo binário, ou seja, considerando ospixels somente como pretos ou brancos. Com isso se uma imagem for totalmente escura e aoutra completamente clara elas são consideradas diferentes e pontuarão 1 na equação 3.2.Um método para binarizar a imagem consiste em verificar o grau de claridade de cadapixel e aplicar sobre este um limiar para decidir se deve ser transformado em preto oubranco. O nível de luminosidade percebida pelo olho humano pode ser obtido atravésde uma média ponderada de cada canal de cor RGB. A cor verde, por exemplo, é maisnotável do que a cor azul na visão humana, portanto exercendo uma influência maior naluminosidade. A fórmula que faz este processo pode ser vista na equação 3.3, e retornaum valor entre 0 (tom mais escuro) e 255 (tom mais claro). (RIDPATH; CHISHOLM,2000)

𝐵𝑟𝑖𝑙ℎ𝑜𝑟𝑔𝑏 = (𝑅𝑒𝑑 × 30) + (𝐺𝑟𝑒𝑒𝑛 × 59) + (𝐵𝑙𝑢𝑒 × 11)100 (3.3)

Aplicando esta fórmula e um limiar escolhido nas duas imagens a comparar, é

Page 25: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

24

possível gerar uma representação binária composta somente de pixels claros ou escuros,possibilitando a contagem e cálculo da diferença. Com isso, pode ser visto no exemploda Figura 4 duas imagens comparadas através desta técnica, demonstrando o resultadoem termos percentuais. Para fins de exemplo foram colocadas duas imagens nitidamentediferentes, porém em uma situação prática essa comparação é mais adequada quando sesabe que as imagens serão semelhantes, pois neste contexto permite identificar as dife-renças que uma avaliação superficial pode não perceber. Para complementar esta técnica,a próxima seção apresenta outra modalidade de comparação com enfoque nas cores daimagem.

Figura 4: Exemplo de comparação de imagens utilizando SMC adaptado

494

592

1384

1482

38 x 52 38 x 52

592-494

38 x 52

= 1976

592-494 x 100 x 100 = 4,95%

Fonte: elaborado pelo autor

3.2 AVALIAÇÃO QUANTITATIVA DA PALETA DE CORES

A partir do estudo da técnica de comparação da imagem binária, este projetopropõe outra forma de comparação que aplica os mesmos conceitos, porém destinados àcomparação da distribuição de cores da imagem. Como viu-se na seção 2.2, as imagensem pixel art normalmente possuem uma paleta de cores reduzida, com isso sendo possí-vel contabilizar individualmente informações sobre cada cor que pode existir na imagem.Então, além de fazer o comparativo dos tons claros e escuros, é planejado comparar cadatonalidade presente na paleta de cores do personagem verificando a eventual diferença nadistribuição. Para esta tarefa, é proposto criar mais uma variação do método SMC, destavez ajustando a fórmula para agrupar o resultado individual de cada cor. A equação 3.4demonstra essa proposta, onde a operação do somatório acumula o resultado individualpara em seguida obter a média simples considerando as 𝑁 cores que houver na paleta.Quanto ao cálculo do SMC, deseja-se tomar como parâmetro a quantidade de ocorrênciasde cada cor na imagem gerada e na imagem de referência. Considera-se a mesma neces-sidade de variar os resultados entre 0 e 1, porém neste contexto da separação por coresnão é possível assumir as dimensões visto que cada cor representa apenas uma parcela da

Page 26: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

25

imagem. Então, é considerado a quantidade de ocorrências que for maior entre a imagemgerada e a imagem de referência, desta forma mantendo o mesmo comportamento desejadode assumir valor 0 quando a informação for igual, progredindo até 1 quando a diferençafor total. Ou seja, se uma imagem apresentou ao menos 1 pixel com determinada cor e aoutra não obteve nenhum com aquela tonalidade, será considerada diferença total. Paracomplementar esse entendimento, a Figura 5 demonstra essa técnica aplicada utilizandosomente três cores para simplificar o exemplo. Tendo definido métodos quantitativos deavaliação de imagens, pode ser abordado na seção seguinte a técnica qualitativa.

𝑆𝑀𝐶𝑝𝑎𝑙𝑒𝑡𝑎 = 1𝑁

×𝑁∑︁

𝑖=1

|𝑚1 − 𝑚2|𝑚𝑎𝑥(𝑚1, 𝑚2)

(3.4)

Figura 5: Exemplo de comparação da paleta utilizando SMC adaptado

7 65 30

7

58 28

1

3∗

7 − 7

max 7,7+

65 − 58

max 65,58+

30 − 28

max 30,28∗ 100 =

1

3∗

0

7+

7

65+

2

30∗ 100 =

1

3∗ 0 + 0,108 + 0,66. . ∗ 100 =

0,174

3∗ 100 = 5,8%

Fonte: elaborado pelo autor

3.3 AVALIAÇÃO QUALITATIVA

Tendo visto o método quantitativo, convém discutir também o método com viésmais qualitativo para comparação de imagens. Nesse sentido, o método científico demandaembasamento em critérios que direcionem as percepções sobre a imagem para que essaanálise não fique vinculada à impressão pessoal de quem estiver avaliando. Para este fim,o livro Desenhando com o lado direito do cérebro, de Edwards (2012), aborda diversastécnicas do desenho de observação, ou seja, aquele em que a ilustração é elaborada combase em uma referência que é consultada durante todo o processo de criação. Para poderefetuar o desenho de forma que efetivamente represente a realidade, a autora elabora umconjunto de métodos e procedimentos para visualizar de forma técnica a estrutura a seresboçada, os quais foram desenvolvidos e aprimorados a partir dos estudos da autora edas percepções que ela obteve com seus alunos enquanto professora de desenho. Todo este

Page 27: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

26

conhecimento é de interessante aplicação neste projeto para permitir uma análise maiscompleta e criteriosa dos sprites que serão estudados.

O cérebro humano, ao tentar representar a realidade através do desenho, natural-mente recorre a símbolos e simplificações que acabam comprometendo a exatidão. Issoocorre por exemplo ao desenhar um olho através de um círculo simples ou o nariz utili-zando um triângulo. A proposta principal do livro de Edwards (2012) é enxergar as coisascomo elas efetivamente são, sem utilizar essas abstrações. Para trabalhar essa habilidade,um dos exercícios propostos pela autora a seus alunos envolvia fazer uma cópia, utili-zando como referência um desenho de cabeça para baixo. Desta forma os alunos ficavamincapazes de interpretar completamente a gravura, muitas vezes sem conseguir entendero que estavam desenhando e isso os forçava a analisar os traços em sua essência, livres dequalquer pré-concepção. A autora observou uma melhora na qualidade da representaçãodos alunos, e a partir disso identificou quais são os métodos para enxergar as imagensem sua composição técnica, sem este artifício de virar a imagem de ponta cabeça. Sendoassim, podem ser destacadas cinco habilidades básicas do desenho que englobam a ca-pacidade geral de desenhar algo utilizando um referencial externo, ou seja, aspectos quepodem ser observados deste modo técnico. Estas habilidades são analisadas brevementea seguir, indicando como elas se relacionam com o desenho de observação. (EDWARDS,2012)

∙ Percepção das bordas: capacidade que trabalha a percepção dos contornos dasformas, analisando o direcionamento das linhas que compõem uma determinadaforma complexa.

∙ Percepção dos espaços: capacidade de perceber que os espaços entre determina-das formas, bem como os espaços no entorno destas formas que se busca desenhar,são também formas a serem analisadas. Chamados espaços vazios ou negativos, elesdeterminam outras formas que nascem da relação entre os limites (bordas) de umaforma com outra e das formas com o seu contexto.

∙ Relacionamento: capacidade de perceber a relação entre as partes e o todo em umadeterminada estrutura ou a relação entre uma forma e seu contexto. Esta habilidadeapreendida permite analisar o dimensionamento das formas nas direções básicasvertical e horizontal e também na direção diagonal. A percepção do relacionamentoentre as formas e seu entorno permite a definição das proporções e da ocupação deespaços em um determinado contexto.

∙ Luz e sombra: a percepção de luz e sombra permite compreender a qualidade dassuperfícies de uma determinada forma. Tais qualidades podem indicar a tipologiada forma analisada e ressaltar a impressão de profundidade. A partir da correta

Page 28: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

27

representação de luz e sombra, o desenhista pode retratar a volumetria geral daimagem, bem como as qualidades materiais de todas as superfícies.

∙ Gestalt: segundo Edwards (2012), esta habilidade não se aprende e tão poucopode ser ensinada, pois ela seria o resultado da aprendizagem e combinação dasoutras quatro habilidades básicas. Quando apreendida ela permite a percepção ecompreensão geral do todo em uma determinada situação de analise formal objeto,espaços e superfícies. Conceitualmente, é tido como estado em que o todo e aspartes se relacionam de forma tão intrínseca e coerente que se tornam uma unidadecompleta e crível.

Por meio destes conceitos nota-se que existem técnicas para comparar imagens deforma qualitativa, empregando critérios técnicos bem definidos que advém do desenho deobservação. Aplicando estes conhecimentos poderão ser feitas análises com mais rigor nacomparação entre as imagens que são estudadas neste projeto. Com tudo isso, percebe-seque todas as técnicas vistas neste capítulo e no anterior realmente auxiliam no desenvol-vimento criativo, porém este processo ainda é bastante manual para o artista, pois elecomeça cada nova imagem do zero e vai criando os detalhes com base na sua experiênciae no conhecimento da arte que pretende criar. Muito disso ocorre porque as ferramentasamplamente utilizadas para criação da arte digital são focadas em facilitar as tarefas doartista, mas não trabalham a automatização de processos, que é uma característica deáreas que têm uma relação mais forte com o desenvolvimento tecnológico, como é o casoda engenharia de software. Neste sentido, já existem diversos estudos e abordagens parao processamento digital de imagens que permitem trabalhar essas questões de automati-zação. No próximo capítulo, são abordadas essas tecnologias em mais detalhes.

Page 29: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

28

4 REDES NEURAIS

Redes neurais artificiais são um resultado da aplicação de conceitos da biologiana área do aprendizado de máquina. Observando a capacidade do cérebro humano de seadaptar a problemas desenvolvendo uma maneira própria de interpretá-los, começou a sercriado um modelo de processamento de dados que trabalhasse de forma semelhante. Algu-mas características da rede neural natural foram compreendidas e encontrou-se maneirasde reproduzir artificialmente os mesmos comportamentos. A estrutura que foi desenvol-vida a partir disso se mostrou muito eficiente para classificar dados e detectar padrõesmediante um processo de aprendizado prévio, sendo atualmente aplicada para resoluçãodos mais variados problemas.

O elemento fundamental de uma rede neural artificial (RNA) é chamado neurônio.Ele possui duas características principais: a capacidade de armazenar dados e o métodode aprendizado que permite moldar essas informações ao contexto necessário. Assim comono cérebro humano, o neurônio é a unidade que se associa a várias outras para efetuarprocessamentos complexos. Como pode ser visto na Figura 6, um neurônio humano possuicomo componentes principais: os dendritos, que são as conexões de entrada; o núcleo, quefaz a tomada de decisões desta célula; e o axônio, que se estende até as conexões de saída.A função desta célula é basicamente receber um sinal elétrico, avaliá-lo e passá-lo adiantecaso entenda que deve ser acionada por ele (HAYKIN, 2007). Definida esta origem dasredes neurais artificias, pode ser abordado em mais detalhes quais elementos caracterizamsua estrutura e posteriormente seu modelo de aprendizado, os quais estão descritos nasseções a seguir.

Figura 6: Representação tradicional de um dos tipos de neurônio

Fonte: adaptado da arte criada por brgfx (Freepik.com)

Page 30: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

29

4.1 ESTRUTURA DE INFORMAÇÕES EM UMA REDE NEURAL ARTIFICIAL

As RNA se inspiraram fortemente na estrutura básica de um neurônio descritaanteriormente, tentando criar um modelo artificial com comportamento parecido. Um dosprimeiros modelos criados ficou conhecido como perceptron. Nele há uma série de entradasbinárias e uma saída binária, como pode ser visto na Figura 7, onde há três parâmetrosx1, x2 e x3. Além disso, cada uma destas entradas possui um peso associado, ou seja, con-tribui em diferente grau para compor o resultado, podendo inclusive contribuir de formanegativa. Para calcular a saída, o perceptron simplesmente faz a soma dos parâmetroscom os pesos aplicados e compara com um limiar (do inglês threshold), que é um númeroreal qualquer que serve de referência para calibrar a resposta. O neurônio artificial é acio-nado ou não dependendo da composição da entrada, semelhante ao que ocorre no cérebrohumano. (NIELSEN, 2015)

Figura 7: Representação de um perceptron

Fonte: Nielsen (2015)

Um neurônio único é capaz de avaliar linearmente vários parâmetros, entretantoos problemas que as redes neurais buscam resolver envolvem a existência de variáveisque se relacionam de forma desconhecida. Portanto, em uma RNA completa há diversosneurônios conectados e compondo juntos a saída, de forma que possam trabalhar relaçõesmais complexas entre os parâmetros. Para fazer isso, os neurônios são organizados emcamadas, onde a primeira delas corresponde à identificação dos atributos de entrada, e aúltima relaciona as saídas geradas, como pode ser visto na Figura 8. A camada central éonde efetivamente se encontram os neurônios da rede.(HAYKIN, 2007)

Entre a entrada e a saída, os neurônios são posicionados em um ou mais níveisocultos, nos quais cada neurônio recebe como entradas todas as saídas da camada ante-rior. Estas camadas são denominadas ocultas pois o usuário da RNA não precisa visualizarde forma detalhada como elas ficaram estruturadas, basta que o resultado final descrevacorretamente o comportamento dos parâmetros de entrada. Conforme são utilizados maisneurônios em uma mesma camada, mais análises distintas a rede consegue fazer sobre osmesmos parâmetros; enquanto isso, maior quantidade de etapas ocultas provém à RNA

Page 31: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

30

Figura 8: Exemplo de uma rede neural artificial (RNA) simples

Fonte: produção do autor

maior abstração, já que cada novo processamento vai trabalhar com dados que já foram in-terpretados e alterados anteriormente. Vem desta ideia de empilhamento de várias etapaso conceito de aprendizado profundo (do inglês Deep Learning). A definição da quantidadede neurônios em cada camada e a quantidade de camadas é tarefa de quem estiver proje-tando a rede neural artificial e é passível de experimentação até achar a distribuição maisadequada ao problema. (HAYKIN, 2007)

Um problema verificado no neurônio perceptron é que ele se tornava muito susce-tível às variações nos parâmetros de entrada e aos pesos aplicados a cada um. Pelo fatode a saída ser binária, eventuais ajustes nos pesos poderiam inverter o resultado da saídaem vários cenários e não somente no caso desejado, degradando a performance da redeao invés de melhorá-la. Outro problema é tratamento linear dos parâmetros, o que tornauniverso de situações que a rede pode processar limitado. Finalmente, cada neurônio desaída fica totalmente ativo ou totalmente inativo, dificultando uma análise comparativa decada saída em relação às demais. Por tudo isso, entendeu-se que havia um novo parâmetroa ser definido nos neurônios, que ficou conhecido como função de ativação (NIELSEN,2015). Essa função é o que define o comportamento do neurônio com relação ao métodopara transformar os parâmetros de entrada no parâmetro de saída, além de definir se oneurônio ficará ativo ou não para determinado conjunto de entradas. Segundo Sharma(2017), as funções de ativação mais utilizadas na atualidade são:

1. Função Sigmoid: Esta função transforma a saída em um intervalo não linear entre0 e 1, de forma que os parâmetros ainda influem significativamente na saída, mashaverão variações mais suaves. Além disso resolve a limitação do domínio linear dosproblemas.

Page 32: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

31

Figura 9: Função Sigmoid

Fonte: Sharma (2017)

2. Função Tanh: Esta função é quase idêntica à função Sigmoid, porém trabalha comdomínio negativo na saída. Assim como ocorre na função Sigmoid, possui uma curvatão suave nas extremidades que pode causar um aprendizado mais lento da RNAquanto muitos neurônios atingem estes pontos da função.

Figura 10: Função Tanh

Fonte: Sharma (2017)

3. Função ReLU: Do inglês Rectified Linear Unit, esta função faz com que valorespositivos sejam transportados diretamente para saída, enquanto que valores nega-tivos são zerados. Apresenta como vantagem o fato de não possuir curva suave nasbordas, o que ajuda a manter a taxa de aprendizado da rede. Além disso, utilizauma operação matematicamente mais simples que as demais apresentadas e por-tanto gera um desempenho melhor. A região zerada nessa função de ativação traztanto o benefício de aliviar a carga da RNA ao desativar alguns neurônios, comotambém pode ser um problema caso deixe muitas partes da rede inoperantes. Am-bas as situações são melhoradas com pequenas variações neste modelo que não usamuma reta horizontal nessa região zerada.

Page 33: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

32

Figura 11: Função ReLU

Fonte: Sharma (2017)

4.2 MODELO DE APRENDIZADO DE UM REDE NEURAL ARTIFICIAL

No começo desta seção foram destacadas duas características dos neurônios de umarede neural artificial: a capacidade de armazenar informação e a capacidade de aprendi-zado. Até agora foi abordado somente a forma como a RNA armazena as informaçõese a partir delas compõe o resultado. Para entender o processo de aprendizado, convémutilizar um dos exemplos mais clássicos de aplicação de redes neurais: o reconhecimentode dígitos escritos à mão livre.

O objetivo desta RNA hipotética é ler uma imagem na entrada da rede e na saídaindicar qual número de 0 até 9 que está representado na imagem. Essa tarefa se mostracomplexa pois há várias formas de representar o mesmo número sem perder a sua essência,já que a forma geral do dígito depende da caligrafia do indivíduo que o escreveu. Isso tornauma abordagem com algoritmos tradicionais quase impraticável, pois seria necessárioprever muitas situações variáveis. Entretanto, o reconhecimento de imagem acaba sendoadequado ao tipo de problema que uma rede neural artificial consegue trabalhar pelo fatode haver uma correspondência definida entre os dados de entrada e a resposta desejada.

Para tentar interpretar a imagem utilizando uma RNA, pode ser considerado cadapixel dessa imagem como uma entrada. Supondo que são processadas imagens com ta-manho 15x15, haveriam 225 parâmetros. Na saída da rede, são necessários 10 neurônios,cada um representando a possibilidade de a imagem de entrada corresponder ao respec-tivo número de 0 até 9. Como foi visto, dependendo da função de ativação utilizada, asaída poderá ser por exemplo um número real de 0 até 1, onde 1 seria o indicativo decerteza da RNA em um determinado dígito. Nas camadas ocultas este exemplo vai uti-lizar 2 camadas com 15 neurônios em cada uma delas. Na Figura 12 há um modelo decomo esta RNA ficaria estruturada. Nesta imagem foram omitidos alguns neurônios deentrada para simplificação e os pesos aleatórios estão exemplificados com as cores azulpara valores positivos e vermelho para os negativos.

Page 34: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

33

Figura 12: RNA para reconhecimento de dígitos

Fonte: produção do autor

Dessa forma, o processo de aprendizado ocorre mediante um treinamento prévio emque são fornecidos à rede exemplos de entradas e os respectivos resultados esperados. Nocontexto do reconhecimento de dígitos escritos à mão livre, o treinamento seriam imagensdos números e a resposta de qual dígito está representado na imagem. Inicialmente éaplicando um peso aleatório nas conexões de todos os 15 neurônios de cada uma das duascamadas da rede. Com isso, ao fazer a execução inicial cada neurônio da rede aplica seuspesos e o cálculo interno e entrega a resposta para a próxima camada oculta da redeaté que os neurônios de saída sejam carregados. Tendo como base estes pesos aleatórios,provavelmente a resposta inicial será bastante incorreta, mas é neste momento que começao aprendizado.

A RNA faz uma comparação entre a saída que foi gerada e o resultado esperadopara cada um dos exemplos fornecidos. A partir disso, caracteriza uma função que descreveo custo (do inglês loss) geral da rede, que é um termo utilizado para indicar o grau de erronas respostas que a rede oferece. Através de processos matemáticos que buscam minimizaressa função de custo, a rede vai identificar em média quais pesos precisam ser ajustadospara melhorar o desempenho geral. A técnica que identifica os ajustes é chamada descidade gradiente (do inglês gradient descent) e permite com que, após processar uma veztodos os exemplos de entradas e saídas conhecidas, a rede possa calibrar os pesos queinicialmente eram aleatórios de forma que eles se aproximem da distribuição ideal pararesolver todos os exemplos. A sequência de ajustes que percorrem a rede neural ocorre

Page 35: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

34

através de retropropagação (do inglês backpropagation), pois começa pelo resultado finale vai se repetindo em cada camada até atingir a entrada da RNA. (SANDERSON, 2017)

O processo de leitura de todos os exemplos e calibragem dos pesos da RNA cons-titui uma época de aprendizado (do inglês epoch) e a quantidade exata de épocas a seremexecutadas também é um parâmetro a ser definido por quem estiver projetando ou apli-cando a rede neural artificial. Quando mais épocas a RNA cumprir durante o processode treinamento, mais apta ela estará a resolver os problemas propostos. Entretanto, nãoé indicado executar uma quantidade alta de épocas de forma indiscriminada, pois podemsurgir alguns problemas. O primeiro deles é a queda na taxa de aprendizado da RNA,quando a função custo já está se aproximando do mínimo e não haverá muitos ganhospara o desempenho em função do tempo investido. Essa situação é denominada desa-parecimento de gradiente (do inglês vanishing gradient), pois o processo de descida degradiente deixa de apresentar avanços significativos. Outro problema é o chamado over-fitting, que é termo em inglês para o estado em que a RNA se torna muito viciada nosexemplos fornecidos e torna-se pouco adaptável para as situações reais nunca treinadasanteriormente. Ou seja, é uma situação em que a rede apenas memorizou todas as corres-pondências entre entradas e saídas ao invés de generalizar uma solução. No exemplo dereconhecimento de dígitos, haveria alta eficiência em reconhecer os dígitos que já foramvistos, porém o desempenho seria fraco ao inserir novas imagens. No que diz respeito aouso de camadas ocultas, estes dois problemas tendem a demorar mais para ocorrer paracada camada oculta que for adicionada. Isso ocorre pois novas camadas aumentam o usoda retropropagação e com isso o aprendizado é mais lento nas camadas ocultas iniciais,aumentando a quantidade de épocas de treino até que a RNA apresente estes problemas.(NIELSEN, 2015)

Ainda com relação ao processo de aprendizado, há dois tipos principais: supervisio-nado e não supervisionado. Em um modelo de aprendizado supervisionado, a RNA recebea indicação se a sua previsão sobre os dados está correta e a partir disso aprimora a suaestrutura interna, ou seja, o exemplo abordado nesta seção se enquadra nesta categoria.Enquanto isso, um aprendizado não supervisionado não fornece essa indicação do acerto,ao invés disso a rede tenta localizar relações entre os parâmetros de entrada conformesão apresentados novos exemplos. Dessa forma a própria rede neural vai criar rótulos nosdados conforme for identificando similaridades entre os diferentes dados recebidos. Essetipo de aprendizado é interessante de ser aplicado quando há muitos parâmetros de en-trada e não é possível identificar quais são os mais relevantes para categorizar os registros(BARROS, 2016).

Com tudo isso, nota-se como uma rede neural pode fazer o reconhecimento deinformações em uma imagem. Apesar de ser um processo já bastante eficiente, existemmodelos de redes neurais que se adaptam melhor a processamentos com imagens ou ou-

Page 36: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

35

tras estruturas de dados que possam ser representadas na forma de uma matriz. Tendoentendido como uma rede neural tradicional está estruturada, na próxima seção será vistocomo essa estrutura pode ser aprimorada para trabalhar com imagens.

4.3 ARQUITETURAS DE REDES NEURAIS ARTIFICIAIS

Anteriormente foi destacada a estrutura de uma RNA básica além do seu com-portamento no que diz respeito ao processo de aprendizado. Foi visto como é possível,inclusive, resolver problemas que envolvem reconhecimento de imagens. Esse tipo de aná-lise gráfica é complexa para um algoritmo tradicional pelo fato de envolver muitos cená-rios distintos a serem previstos, enquanto que uma RNA consegue ser mais dinâmica ese adaptar ao contexto. Apesar deste ganho, pode ser observado que a solução propostautilizando uma RNA simples também pode se exigir muitos recursos computacionais.Considerando o exemplo abordado, a imagem de apenas 15x15 pixels de dimensão acabagerando uma entrada de 225 parâmetros na RNA. Considerando as duas camadas ocultascom 15 neurônios em cada e sabendo que cada uma delas se conecta totalmente com acamada seguinte, calcula-se que a rede possui 3750 conexões até atingir a saída. Estenúmero aumenta proporcionalmente quanto maior for a estrutura interna da RNA ou otamanho da entrada. Mesmo utilizando funções de ativação como o ReLU que são mate-maticamente mais simples, ainda torna-se oneroso calibrar tantas conexões a cada épocade aprendizado. Em uma situação prática nem sempre é possível trabalhar com imagenstão pequenas, e portanto surgiram modelos mais avançados de RNA que são aplicados emprocessamentos de imagens. Nesta seção serão abordados dois tipos específicos que serãoaplicados no decorrer deste projeto.

4.3.1 Redes Neurais Convolucionais

Para permitir o uso de redes neurais artificias nas situações em que os dados estãodistribuídos em forma de tabelas, com linhas e colunas definidas, começou-se a estudarconceitos matemáticos que trabalham com matrizes. Devido a essa fundamentação, asolução proposta pelas redes neurais convolucionais acabou sendo adequada também paraqualquer dado que possa ser representado neste formato. Um exemplo disso são os estudosde sinais sonoros, onde que cada faixa de frequências pode ser representada em um eixoda tabela e a variação conforme o tempo no outro eixo.(SAHA, 2018)

Uma rede neural convolucional é chamada em inglês convolutional neural network,e muitas vezes é referida apenas como CNN. Normalmente é implementada como umaRNA híbrida, logo, mesclando características próprias com modelos tradicionais. Comopode ser visto na Figura 13, há três grandes etapas de processamento: entrada de dados(input), aprendizado de características (feature learning) e classificação (classification).Para ilustrar este exemplo, será considerado uma aplicação típica de CNNs que é o reco-

Page 37: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

36

nhecimento de imagens. Este tipo de CNN recebe como entrada uma imagem e atribuia ela um de seus rótulos de saída conhecidos, buscando descrever o que está represen-tado na imagem. Ou seja, neste caso em que há um veículo representado, espera-se que aCNN consiga indicar que se trata de um carro. Apesar de ser um exemplo específico parafacilitar o entendimento, ele ilustra as etapas que todas as CNN possuem.

Figura 13: Exemplo de um processo possível em uma CNN

Fonte: Adaptado de Saha (2018)

Como se vê, o processo de entrada dos dados indicado no bloco (1) da Figura 13começa com a matriz que será analisada, que neste exemplo é a figura de um carro. Su-pondo que é uma imagem colorida, haverá três canais de cores RGB, conforme discutidona seção 2.2. Isso implica que a matriz de entrada da CNN possui uma terceira dimen-são que é a profundidade, que descreve os diferentes canais de cores. Essa informaçãoindividualizada dos canais de cores poderá ser usada ou não, dependendo de como ficarestruturada a rede neural ao final do processo de aprendizagem.

A próxima etapa, indicada no bloco (2), é o aprendizado de características (doinglês feature learning), onde se encontram os neurônios da CNN. Eles concentram trêsmecanismos que distinguem uma CNN de outros tipos de RNA, que são: a convolução,o ReLU e o pooling. (PATTERSON; GIBSON, 2017) Apesar de estarem representadoscom uma organização específica, é importante ressaltar que em uma construção prática épossível alterar as ordem em que eles ocorrem ou até mesmo repetir um mesmo processomais de uma vez.

1. Convolução: Este é o processo matemático que dá nome a CNN. É uma operaçãoamplamente utilizada no processamento de imagens que é capaz de extrair padrõesespecíficos que ocorram em qualquer ponto dentro da figura. Isso é feito definindouma máscara, muitas vezes também chamada de kernel ou filtro, que é uma matrizde tamanho menor que contém o padrão específico a ser localizado. A convoluçãofaz um cálculo sobre toda a imagem e gera uma nova figura que destaca os pontos

Page 38: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

37

onde este padrão estiver presente. O cálculo, que pode ser visto na Figura 14, é feitosobrepondo este kernel em um ponto específico da imagem de entrada, multiplicandocada par de pixels que ficaram empilhados e somando todos os valores. O resultadoé atribuído à posição que corresponder ao pixel central da máscara.

Figura 14: Cálculo de uma convolução

Fonte: Saha (2018)

Para gerar a nova imagem, a convolução repete este processo em cada ponto daimagem em que for possível aplicar a matriz, ou seja, varre pixel-a-pixel a largurae altura da imagem. No caso de haver os canais de cores RGB, este processo podeser feito simultaneamente nos três canais, e nesta situação o kernel é uma matriztridimensional. A operação de convolução também possui a característica de reduziro tamanho da imagem dependendo do tamanho do filtro utilizado. Na operação quefoi vista na Figura 14, utilizando um kernel de 3x3 pixels, não será possível atingirde forma completa 1 pixel da borda da imagem pois a máscara ficaria sobrepostaparcialmente para fora da imagem. Existem técnicas de cálculo para prever essasituação, mas normalmente se opta por perder os pixels da borda da imagem pordois fatores: estes pixels já foram considerados por aplicações da máscara nos pixelsadjacentes, além de que a redução no tamanho da imagem é benéfica para a CNN,como será visto no tópico pooling.

2. ReLU: Este conceito já foi visto anteriormente como um dos tipos de função deativação que pode ser implementado em um neurônio. Foi apresentado como sendouma operação que mantém os números positivos e altera os demais para zero. Nocontexto de uma CNN que trabalha com imagens, essa operação serve para elimi-nar quaisquer valores negativos nos pixels após a operação de convolução, já quenormalmente não se representa cores com escala negativa. Adicionalmente, os pixelsque ficam com valor zerado tendem a serem calculados mais rapidamente do queaqueles que possuem algum valor específico. Desta forma o ReLU deixa a imagemresultante mais fácil de interpretar nas etapas seguintes, evidenciando os pontosque geraram alguma informação (valores positivos) enquanto que normaliza todosos demais como zerados.

Page 39: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

38

3. Pooling: Este é um processo que melhora dois aspectos da CNN com um mesmoprocedimento. O pooling varre toda a imagem passando uma máscara, de formasemelhante à convolução, porém ao invés de aplicar um filtro o objetivo é reduziro tamanho da imagem. Para isso, a máscara seleciona determinada quantidade depixels e escolhe somente um valor para representá-los na imagem de saída. Nor-malmente esse processo se encontra implementado de duas formas, que podem servistas na Figura 15: ou é selecionando o pixel com maior valor, ou então é feitauma média dos valores de todos os pixels sob a máscara. Essa operação é vantajosapara a CNN porque reduz a quantidade de dados que precisam ser processados nasetapas seguintes, o que melhora o desempenho, além de que ajuda a reduzir o over-fitting, que foi explicado na seção 4.2. Ou seja, ao desconsiderar alguns segmentosda imagem acaba sendo aumentada a capacidade da CNN de lidar com situaçõesque sejam semelhantes, sem que o treinamento seja proveitoso somente para casoespecífico de cada imagem. (LEE et al., 2009)

Figura 15: Exemplo de uma operação de pooling

Fonte: Saha (2018)

Como foi visto nesta segunda etapa, representada pelo bloco (2) na Figura 13, aCNN utiliza estes três processos para gradativamente reduzir o tamanho da imagem eaplicar filtros que buscam padrões específicos. Há muitos filtros distintos que uma CNNpode aprender, como por exemplo detectores de bordas ou de padrões de cores. Assimcomo ocorre em uma RNA simples, o objetivo de combinar estes processos de convolução,ReLU e pooling é aumentar a abstração da rede neural. Ou seja, fazer com que a cada novaoperação a rede crie filtros que reconheçam características mais complexas da imagem.Retornando ao exemplo do reconhecimento de imagens citado no começo desta seção, umaCNN poderia detectar bordas nas primeiras camadas da rede, para então combinar osresultados dessas operações e reconhecer padrões de círculos ou curvas que definem certosobjetos. Ao final desta etapa, há então um conjunto de pixels abstratos que descrevem

Page 40: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

39

de forma mais sucinta e mais significativa as características da imagem e que servem deentrada para a etapa final da CNN. (PATTERSON; GIBSON, 2017)

Por fim, na última etapa que foi representada pelo bloco (3) na Figura 13, estáo processo de classificação. Tendo a imagem já representada pelo resultado de váriosfiltros que abstraem de suas características, esta parte da rede neural convolucional énormalmente implementada como uma RNA simples que tem como objetivo enquadrar osdados recebidos em uma das opções de saída disponíveis, assim como foi visto na seção 4.2.O que acaba diferenciando esta RNA é o contexto em que ela está inserida, pois elanecessita de algum processo para adequar o formato de saída dos filtros aplicados na etapaanterior com o formato esperado pelos neurônios de entrada da rede. Este processo estárepresentado pela legenda flatten no bloco (3) da Figura 13 e representa o “achatamento”das matrizes de saída para que sirvam de entrada para a RNA, muito semelhante ao quefoi comentado na seção 4.2 sobre transformar cada pixel da imagem em um parâmetrode entrada, a diferença é que neste caso os pixels contém muito mais informação doque somente a cor, pois são o resultado dos processos cada vez mais abstratos das etapasanteriores. Além disso, neste caso específico de uma CNN para reconhecimento de imagens,também há um processo muito comum de ser aplicado que é o chamado softmax. Esse éum procedimento que calcula os valores de distribuição probabilísticos entre classes quesejam mutuamente excludentes, ou seja, exatamente o tipo de saída que uma RNA declassificação costuma gerar.

Finalmente, o processo de aprendizado de uma CNN é análogo a uma RNA. En-tretanto, ao invés de calibrar pesos que conectam os diferentes neurônios, esta rede neuralvai utilizar a retropropagação para carregar as máscaras de convolução de forma a des-crever cada vez melhor as imagens de treinamento. Desta forma os filtros específicos quea rede vai utilizar não precisam ser definidos pelo projetista, pois serão criados duranteo processo de treinamento. Há outro diferencial importante chamado dropout, que é umprocesso que desativa os neurônios que tenham fraca conexão em uma rede neural arti-ficial. No contexto de uma CNN esse procedimento é amplamente aplicado para evitarque sejam criados filtros pouco relevantes ou que sejam previstas conexões entre filtrosque não são significativos quando combinados. Ou seja, enquanto que uma RNA geral-mente possui todos os neurônios conectados entre cada camada, uma CNN implementa omecanismo de dropout para reduzir a quantidade de conexões da rede.

Com tudo isso, nota-se que as CNN possuem aplicação para análise de imagense muitos mecanismos que visam aprimorar seu desempenho neste contexto em que aquantidade de dados de entrada tende a ser grande. Assim como as RNA, possui grandecapacidade de classificar informações sobre os dados de entrada. Na próxima seção, serávisto mais um modelo de rede neural artificial que é muito utilizado com imagens, masque possui um viés de geração de dados ao invés de reconhecimento.

Page 41: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

40

4.3.2 Redes Neurais Adversárias Geradoras

Muitas RNA podem ser definidas como redes de classificação ou de regressão. Redesde classificação têm como objetivo principal interpretar um conjunto de dados e atribuirum rótulo aos mesmos, gerando uma saída discretizada. Enquanto isso, redes de regressãotrabalham com dados contínuos na saída. Em ambos os casos, o objetivo principal destasRNA é mapear uma função que descreva corretamente a transformação dos parâmetrosde entrada nas saídas especificadas, como pode ser visto na Figura 16 onde o conjunto dedados é discriminado por uma rede de classificação ou então descrito por uma aproximaçãode uma rede de regressão. Com a aplicação de redes neurais artificias nos mais variadoscontextos, estas técnicas de aprendizado de máquina encontraram aplicação também pararesolver situações em que é necessário criar dados de forma automatizada ao invés deapenas analisá-los. Ou seja, redes neurais que são capazes de utilizar este conhecimentoadquirido sobre os dados de entrada para gerar novas informações que sejam semelhantes(BARROS, 2016).

Figura 16: Exemplo de operações de classificação e regressão

Fonte: Barros (2016)

Redes neurais adversárias geradoras são comumente referidas por sua sigla eminglês GAN (generative adversarial networks) e provêm uma solução para este tipo deproblema de geração de dados. Foram apresentadas inicialmente por Goodfellow et al.(2014) e dentre outros tipos de redes neurais artificiais capazes de gerar dados, esta sedestaca por utilizar tanto características de aprendizado supervisionado quanto não su-pervisionado, que foi visto na seção 4.2. Assim como ocorre em qualquer rede neuralgeradora, o funcionamento básico de uma GAN é descobrir direta ou indiretamente asdistribuições probabilísticas de cada parâmetro de entrada que serviu de treinamento. Apartir disso, é possível selecionar um valor aleatório para cada um dos parâmetros deentrada de forma que o resultado final ainda seja reconhecido como válido. Alguns mode-los fazem essa seleção buscando diretamente valores dos exemplos conhecidos através dotreinamento, enquanto que outras implementações podem gerar uma função de regressãopara cada um dos parâmetros. Neste último caso, é selecionado algum ponto randômicoda função descoberta e adiciona-se um ruído aleatório para gerar as novas entradas. Comisso, o processo de aprendizado das redes artificiais geradoras se realiza identificando me-

Page 42: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

41

lhor a cada época de treinamento quais são as características semelhantes no universo dedados de entrada e quais podem ser variadas sem comprometer a consistência dos registrosgerados em relação aos que são reais.(GOODFELLOW; BENGIO; COURVILLE, 2016)

Assim como as RNA foram aplicadas para extração de características de imagens,as GAN também são amplamente aplicadas para geração de novas figuras. Ou seja, estetipo de rede geradora consegue aprender quais são os traços gerais de todas as imagensde treino e quais são as diferenças irrelevantes, sendo capaz de gerar novas saídas quesão visualmente semelhantes ao conjunto de dados de entradas mas que contenham ca-racterísticas únicas. Por exemplo, uma GAN treinada com centenas de fotos de salas deestar poderia gerar novas figuras que se encaixam neste padrão mas que não são iguaisa nenhuma imagem vista anteriormente. O processo capaz de criar tais imagens é essen-cialmente o oposto ao que foi visto na subseção 4.3.1, onde as CNN usam convoluçõespara extrair características das imagens. Ao invés disso, as GAN utilizam operações dedeconvolução para gerar matrizes de dados cada vez mais significativas até chegar a umasaída que é semelhante ao universo de treinamento, como pode ser visto na Figura 17.Enquanto que uma CNN elimina parte das informações durante as convoluções, umaGAN cria matrizes com novos dados a partir dos filtros, garantindo que o resultado ficoucoerente com o conteúdo filtrado.(RADFORD; METZ; CHINTALA, 2015)

Figura 17: Processo de deconvolução para geração de dados

Fonte: Radford, Metz e Chintala (2015)

A partir dessa contextualização sobre os fundamentos de uma rede neural adversá-ria geradora, pode ser definida sua estrutura de funcionamento. O processo é caracterizadopor ter duas redes neurais artificiais funcionando simultaneamente, mas que se comportamcomo uma rede única para atender ao objetivo de aprender sobre os dados e gerar novasentradas. Enquanto que as duas redes vão entre si utilizar um aprendizado supervisionadoque é descrito a seguir, o processo como um todo é classificado como não supervisionadopelo fato de que a GAN precisa receber somente os próprios dados de entrada para efetuaro aprendizado, sem necessidade de indicar rótulos ou relações entre os dados previamente.(SILVA, 2018)

Dentro de uma rede adversária geradora (GAN), como pode ser visto na Figura 18,

Page 43: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

42

a primeira sub-rede é nomeada gerador e utiliza as operações de deconvolução descritasanteriormente para, a partir de um ruído aleatório, gerar uma imagem potencialmentepertencente ao conjunto de imagens de treino. Portanto, esta primeira rede tem comoobjetivo gerar imagens cada vez mais coerentes com o conjunto de entrada. A segundasub-rede é denominada discriminador e é uma CNN que tem como objetivo classificaras imagens como reais ou geradas artificialmente. Além destas duas redes, há um seletorque aleatoriamente fornece como entrada ao discriminador uma imagem do conjunto detreino ou uma imagem gerada pela rede deconvolucional do gerador. Como a função dodiscriminador é classificar as imagens corretamente, essa rede neural vai trabalhar seuaprendizado para se tornar cada vez mais eficiente em diferenciar imagens reais e falsas.Enquanto isso, o objetivo da rede geradora é enganar o discriminador de forma que eleinterprete como real uma imagem que na verdade foi gerada, e portanto esta rede vai setornar cada vez mais apta a reproduzir as características imagens do conjunto de treino.Ao final do processo, o que poderá ser utilizado efetivamente é a rede neural geradora,para produzir novas imagens. Pelo fato de conter duas sub-redes com propósitos opostosé que este processo foi denominado de rede adversária. (GOODFELLOW et al., 2014)

Figura 18: Processo típico de uma implementação de GAN

Fonte: Silva (2018)

Como nota-se, as redes neurais adversárias geradoras possuem uso para aplicaçõescom imagens, tendo sido utilizas nos últimos anos em diversos projetos de estudo e ser-vindo de base para construção de redes neurais artificiais ainda mais complexas que sefundamentam nos seus conceitos. No próximo capítulo, serão vistas algumas técnicas deprocessamento computacional de imagens, dentre elas aplicações práticas dos conceitosde RNA vistos até agora.

Page 44: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

43

5 PROCESSOS COMPUTACIONAIS APLICADOS A IMAGENS

Neste capítulo, serão abordadas áreas de interesse deste projeto com relação aaplicações práticas de técnicas computacionais no processamento de imagens. Serão vistosprocessos capazes de reconhecer a pose humana a partir de imagens 2D, alterar a escalade imagens melhorando a resolução e técnicas para transformação de imagens utilizandoredes neurais artificiais.

5.1 DETECÇÃO DE POSE

A estimativa de pose humana (do inglês human pose estimation) é um problemaque envolve extrair informações sobre a posição de cada parte do corpo a partir de umaimagem bidimensional. Esta área possui diversas aplicações práticas, como, por exemplo,captura de movimentos para videogames ou animações, análise de postura e interpretaçãoautomatizada de linguagem de sinais. No meio científico, este tópico têm sido estudadomais extensivamente após os primeiros experimentos que utilizaram CNN e obtiveramresultados mais viáveis de serem aplicados em cenários reais de uso. Como foi visto ante-riormente, o reconhecimento de imagens é uma tarefa complexa que é simplificada com ouso deste tipo de redes neurais artificiais. (RAJ, 2019)

Diferente do exemplo de reconhecimento de dígitos escritos à mão livre que foiexplorado na seção 4.2, a análise de fotografias com pessoas abre ainda mais espaçopara variações nos padrões a serem reconhecidos pela CNN. Neste contexto, a iluminaçãoinflui na imagem que será analisada, bem como o tipo de roupa que o indivíduo estiverutilizando, pois pode acrescentar volume ou alterar o formato do corpo. Outro fator queaumenta a dificuldade para obter a pose é oclusão de partes do corpo. Ou seja, o fatode podem aparecer somente alguns membros do corpo em função da posição da pessoaem relação à câmera, por haver partes da roupa ou de outras pessoas em frente. A partirdesta problemática, foram criadas diversas soluções para detecção de pose com diferentestáticas de análise. Nesta seção será abordado as técnicas mais consolidadas nesta área,destacando como funciona um processo típico. (BABU, 2019)

A lógica de detecção mais adotada trabalha o problema de forma holística, ou seja,busca interpretar a pose como um todo e não cada parte individualmente. Desta forma,consegue deduzir com mais coerência a posição e frequentemente definir também as partesocultas do corpo a partir das demais que estão visíveis (TOSHEV; SZEGEDY, 2014). Paraextrair a pose, o processamento começa com várias CNN que são previamente treinadascom fotos de pessoas e a respectiva indicação de onde está cada ponto de interesse. Estasredes buscam inicialmente regiões mais abrangentes do corpo e com isso segmentam a

Page 45: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

44

imagem em vários blocos, como por exemplo cabeça, torso, braços e pernas. Após issoessas regiões vão recebendo filtros cada vez mais específicos para refinar a segmentação.Nas primeiras modelagens essa etapa já definia numericamente os pontos específicos aserem entregues como resposta, porém determinar isso na imagem se mostrou bastantecomplexo mesmo para uma CNN.

A partir disso, os próximos estudos promoveram uma melhoria no formato desaída da rede. Ao invés de tentar regredir as informações da imagem diretamente atéuma coordenada numérica específica, passou-se a gerar mapas de calor que indicam aprobabilidade de o ponto específico da pose estar em determinado pixel. Desta forma, opixel mais intenso dentro de cada mapa de calor vai indicar a coordenada mais provável eainda será possível extrair um ponto numérico a partir disso, mas o processo para chegarnessa conclusão é simplificado pelo fato de aproveitar os recursos de cálculo de matrizesde uma CNN (TOMPSON et al., 2015). Outra melhoria foi a criação do conceito de CPM(Convolutional Pose Machine), que significa máquina de pose convolucional, traduçãonossa. Este é um componente adicionado para supervisionar e gerenciar as convoluçõesdurante a extração de características. Contém mecanismos para direcionar o aprendizadoconsiderando questões práticas, como por exemplo, o fato de que o ombro não pode estarmuito distante do cotovelo. Esse tipo de lógica permite descartar falsos positivos e aceleraro processo de mapeamento. A implementação específica da CPM é variável, mas seu papelé sempre este de acelerar e otimizar a geração dos mapas de calor (WEI et al., 2016).

Inicialmente a detecção de pose não era aplicável em muitos cenários reais, porexigir que houvesse apenas uma pessoa de cada vez na imagem. Isso era preciso porquedo contrário ocorria frequentemente oclusão de partes ou sobreposição de membros de umsujeito com outro, dificultando a detecção e gerando previsões distantes da realidade. Aspróximas implementações resolveram esta limitação utilizando duas principais abordagensque ficaram conhecidas como top-down e bottom-up (NEWELL; YANG; DENG, 2016):

1. Top-down: É adicionando um componente na entrada da CNN que primeiramenteclassifica os diferentes indivíduos através de técnicas de segmentação de objetos parasó então aplicar a lógica principal que processa cada um deles. Ou seja, faz primeirouma análise global da imagem para deduzir dentro de cada bloco os dados da pose.

2. Bottom-up: É adicionado um componente na saída da CNN que agrupa os dife-rentes mapas de calor gerados para compor a pose se cada indivíduo presente. Ouseja, faz primeiro a análise refinada dos pontos de interesse e somente após agrupaeles para formar a pose e definir a qual corpo cada ponto pertence.

Com relação aos pontos que são mapeados por estas coordenadas em 2D, há algumconsenso em mapear algumas regiões como ombros, cotovelos e joelhos. Entretanto, adistribuição exata dos pontos de interesse da pose é bastante variável, pois depende do

Page 46: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

45

modelo de treinamento utilizado e da implementação específica. Como pode ser visto noexemplo da Figura 19, há modelos como o COCO que destacam características adicionaiscomo olhos e nariz, enquanto que outros optam por extrair somente o topo da cabeça.

Figura 19: Comparação de dois modelos de estimativa de pose

Fonte: (GUPTA, 2018)

5.2 MUDANÇA DE ESCALA PARA PIXEL ART

Como foi visto na seção 2.2 o estilo de pixel art fornece um visual único capazde cativar o jogador e provocar sentimento de nostalgia. Entretanto, é possível encontraraplicações que trabalham o pixel art não como aparência final mas como meio para criaroutra estética mais elaborada. Essa necessidade se encaixa no estudo de algoritmos paraaumentar a resolução de imagens. Nesta seção serão visto alguns fatores motivadores paraisso e exemplos de processos que podem ser utilizados.

O uso de pixel art somente como base da arte inicial pode ocorrer em algunscenários distintos. Um deles ocorre quando um jogo que foi criado para determinada pla-taforma é executado em outro console com arquitetura diferente, por exemplo ao utilizarum computador atual para executar algum artefato que foi desenvolvido nas décadas ini-ciais dos jogos digitais. Nestas situações, é utilizado um emulador para prover ao sistemaatual as funções que o jogo necessita para rodar e que não estão disponíveis de formanativa. Além do aspecto estrutural, muitos emuladores disponibilizam recursos que nãoexistiam no console original, como, por exemplo, tradução do texto ou salvar o estado dojogo a qualquer momento para retomar depois. Além disso podem trabalhar também ascaracterísticas visuais, transformando a imagem vista pelo jogador. No caso de jogos maisantigos ou para dispositivos móveis, que são projetados para telas menores, a execuçãoem outra plataforma pode tornar os pixels evidentes demais e comprometer a satisfaçãogerada pelo game, como por exemplo se um jogo feito para uma tela de 16x16 pixels fosseexecutada em uma tela Full HD, que tem 1920x1080 pixels. Desta forma o emulador pode

Page 47: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

46

aplicar técnicas para adaptar também a resolução para a plataforma de destino e resolvereste problema. (CONLEY et al., 2003)

Outra possibilidade de mudança de escala ocorre quando é necessário analisarou processar imagens que foram obtidas com baixa resolução. Por exemplo, fotografiasde satélite capturadas a altas distâncias, podem receber, além da ampliação óptica, umprocessamento digital para facilitar a análise pelos cientistas. No contexto da indústria dejogos, aumentar a escala do pixel art ocorre como preparação ao utilizá-lo em algoritmosde processamento digital de imagens, e este é o contexto onde este projeto está inserido.Neste caso, a dificuldade ocorre porque cada pixel existente foi posicionado manualmentepelo artista e portanto há muita informação agregada. Assim, mudanças feitas por umalgoritmo podem exercer um impacto mais significativo do que em imagens que tenhamresolução maior, evidenciando quaisquer erros que houve. Para trabalhar esse problemauma das soluções é aumentar a resolução do pixel art, para então efetuar os processamentose após reduzir o tamanho novamente. Com isso os defeitos pontuais que forem inseridospodem ser eliminados ao reduzir o tamanho da imagem e manter somente os aspectosmais evidentes. (JURIO et al., 2011)

Dito isso, existem diversos estudos que verificam formas de transformar a resolu-ção de imagens, desde processamentos tradicionais direcionados a resoluções maiores quenão têm muita preocupação em preservar detalhes, até lógicas específicas para pixel artque controlam tanto a resolução quanto a paleta de cores. O primeiros algoritmos destegênero fazem a varredura da imagem de forma semelhante a uma convolução (vista nasubseção 4.3.1) e geram a saída amplificada. Entre as implementações mais conhecidasque utilizam este modelo estão os filtros 2xSaI (FA, 1999), Scale2x (MAZZOLENI, 2001)e a família HQX (STEPIN, 2001).

Enquanto isso, há outros filtros utilizam técnicas mais sofisticadas que não ope-ram diretamente sobre os pixels da imagem. Um exemplo disso é o projeto Feature-AwarePixel Art Animation (KUO; YANG; CHU, 2016) em que os autores aplicaram técnicasde vetorização buscando extrair as linhas principais da imagem. Além disso utilizarammalhas para mapear as diferentes regiões coloridas e com isso não precisam trabalhar dire-tamente na imagem mas sim nessa representação da mesma. A partir disso desenvolveramoperações de rotação e deformação do pixel art sem distorcer os traços originais.

Outra implementação deste conceito de transformação de escala foi proposta noprojeto Depixelizing Pixel Art (KOPF; LISCHINSKI, 2011), que utilizou uma abordagembastante original. O algoritmo criado começa gerando uma malha virtual que conecta cadapixel com os 8 adjacentes. Analisando as cores da imagem, identifica-se os pares de pixelonde há maior contraste e são eliminadas as suas conexões. Com isso já é possível extrairalguns padrões como linhas de contorno principais e regiões que tem cores semelhantes.Com mais alguns procedimentos que limpam ainda mais a malha virtual e eliminam am-

Page 48: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

47

biguidades dessa representação, é criado praticamente um desenho vetorizado que poderáser escalado para qualquer resolução. Além disso é feito um procedimento para contro-lar as cores da imagem que ficaram nas regiões semelhantes citadas anteriormente. Paramelhorar a resolução nestas áreas o algoritmo proposto faz uma transição suave de cores.

Como foi possível observar, existem aplicações práticas que se beneficiam da mu-dança de escala de uma imagem em pixel art e diferentes técnicas para cumprir essatarefa. Enquanto que as implementações mais modernas que se encontram no estado daarte desta área ainda estão sendo aprimoradas e são disponibilizadas de forma mais res-trita, outras opções mais consolidadas são de uso livre e já foram aplicadas em diversostipos de emuladores de jogos.

5.3 TRADUÇÃO IMAGEM-PARA-IMAGEM UTILIZANDO REDES NEURAIS

A transformação ou tradução de imagens (do inglês image-to-image translation)é o nome dado à aplicação prática dos conceitos de redes neurais artificiais geradorasvistas na subseção 4.3.2, onde foi destacado em específico a arquitetura de uma GAN.Foi visto que este tipo de RNA faz uma descoberta sobre a distribuição estatística dosparâmetros de entrada, permitindo que esta rede gere novas saídas que repetem estepadrão e se assemelham às entradas originais. Como viu-se as GAN podem ser usadaspara gerar qualquer tipo de dado na saída, seja uma série de números, texto, áudio ouimagens. Enquanto isso, as técnicas de tradução de imagens são específicas para lidar comimagens, tendo como objetivo principal descobrir uma função que mapeie uma imagemde entrada para uma imagem de saída diferente.

É interessante observar que esse objetivo é uma junção dos conceitos que funda-mentam as CNN (subseção 4.3.1) e as GAN (subseção 4.3.2), visto que a primeira delasconsegue extrair dados a partir de imagens, enquanto que a segunda consegue gerar ima-gens a partir de um treinamento prévio e dados aleatórios de entrada. Ou seja, os dadosque a primeira delas consegue extrair podem ser usados como entrada para geração denovas imagens, ao invés de informações aleatórias. As aplicações de tradução de imagenssão variadas, servindo para fazer transferência de estilo, melhoria de fotos e segmentaçãoautomatizadas (AMBERER, 2019).

As aplicações que fazem essa transformação de imagens utilizam um processo com-posto intrinsecamente pelos componentes que foram vistos anteriormente no Capítulo 4que trata de redes neurais, porém é válido destacar a lógica e as aplicações possíveis quediferenciam essa área de estudo. As implementações que fazem essa conversão gráfica po-dem ser classificadas em dois tipos de aprendizado: pareado e não-pareado. No primeirodestes modelos é necessário que a imagem de entrada e a de saída sejam explicitamentevinculadas em pares para que a rede neural possa fazer suas validações internas e geraro aprendizado. Enquanto isso, o aprendizado não-pareado precisa apenas da separação

Page 49: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

48

entre qual é o conjunto de imagens de entrada e quais são as imagens de saída desejadas.(TRIPATHY; KANNALA; RAHTU, 2018)

Uma implementação que aplicou o conceito de aprendizado não-pareado foi de-monstrada no artigo Unpaired Image-to-Image Translation using Cycle-Consistent Ad-versarial Networks (ZHU et al., 2017), onde os autores explicam a lógica por trás destemodelo. No aprendizado não-pareado não existe vinculação direta entre as imagens de en-trada, e pode parecer impossível extrair qualquer informação desta forma. Porém torna-sepossível visualizar esse processo pensando num problema de tradução linguístico expli-cado a seguir. Português e inglês são duas línguas com características próprias que asdiferenciam. Uma frase em português pode ser traduzida para o inglês seguindo uma sériede regras e padrões gramáticos, gerando uma nova frase válida em inglês. Espera-se queesta frase possa ser traduzida de volta para o português e que o resultado disso seja exa-tamente igual à frase em português original. Desta forma as operações de tradução nãoalteram o sentido da frase mesmo que sejam aplicadas uma após a outra.

Desta forma, os autores modelaram o aprendizado não-pareado trabalhando osconjuntos de entrada e saída da rede como se fossem duas linguagens distintas. Assimcria-se duas funções: uma que converte a imagem de entrada para saída, e outra queconverte uma saída para entrada. Assim como explicado no exemplo de tradução de frases,é colocada uma restrição de que essas duas funções devem se anular quando aplicadas emsequência. Ou seja, traduzir a imagem de um conjunto para o outro e depois retorná-laao conjunto original não pode alterar sua aparência. Além disso, a função deve gerar umaimagem válida no contexto do grupo de destino. Desta forma, a rede aprende a calibraressas funções de mapeamento de imagem para atender às restrições propostas e recebeuo nome de ciclo-consistente pelo fato de permitir tradução da imagem nos dois sentidos.(ZHU et al., 2017)

Outra aplicação de transformação de imagens está no artigo Few-shot Unsuper-vised Image-to-Image Translation (LIU et al., 2019), em que é explicado outro métodode aprendizado utilizado para tradução de imagens. Neste projeto foram desenvolvidosmodelos que transformam um animal qualquer aplicando a ele características de outracriatura. Por exemplo, é possível apresentar uma imagem de um cachorro Border Collieem determinada posição e na saída obter praticamente a mesma imagem porém com umcachorro da raça São Bernardo. Foram propostos três componentes para conseguir fazerisso: um codificador de conteúdo, um codificador de classes e um decodificador que recebedados de ambos e gera uma saída. O codificador de conteúdo extrai informações sobre aaparência geral da imagem, como posição e expressão do animal, enquanto que o codi-ficador de classes extrai as características que são próprias de cada espécie como cor etipo de pelagem. O decodificador de saída recebe essas informações e gera uma imagem,sendo incentivado pela lógica de aprendizado a reconstruir exatamente a mesma imagem

Page 50: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

49

de entrada quando ela for usada tanto na extração de conteúdo quanto na extração declasses. A forma de aplicação após o treinamento consiste em substituir a entrada docodificador de classes por imagens do animal de destino, de forma que o decodificador faza mistura das novas classes com o conteúdo da imagem de entrada.

Outro exemplo que avançou nessa abordagem foi criado pela NVIDIA (KARRAS;LAINE; AILA, 2018). Neste projeto o objetivo era misturar faces humanas de formasemelhante ao processo que foi comentado acima, ou seja, aplicando a aparência de umapessoa ao rosto de outra. Porém neste caso a rede proposta conseguia tratar de formaindependente e parametrizável as diferentes características a serem aplicadas na imagemde saída. Dessa forma, permite definir por exemplo quanto da posição, estilo de rostoe cores da imagem de referência serão afetados pela transformação, bem como utilizardiferentes imagens como referência para cada uma dessas transformações. Isso abre apossibilidade para maiores controles no processo de transformação de imagens.

Com tudo isso, nota-se que a tradução imagem-para-imagem possui aplicaçõespráticas variadas e fundamentação em conceitos de inteligência artificial, bem como ló-gicas de processamento próprias que diferenciam esta área de outras do aprendizado demáquina. A seguir serão vistas implementações específicas dos conceitos abordados nestecapítulo que imagina-se serem possíveis de aplicar neste projeto.

Page 51: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

50

6 IMPLEMENTAÇÕES PRÁTICAS PARA PROCESSAMENTO DEIMAGENS

Neste capítulo será visto em mais detalhes os trabalhos que se relacionam com esteprojeto, os quais aplicam os conceitos explicados até agora. Enquanto que até então houveenfoque na teoria geral, aqui serão abordadas as ferramentas específicas OpenPose, osfiltros HQX e o tradutor imagem-para-imagem Pix2Pix, que pretende-se utilizar duranteo desenvolvimento prático deste projeto.

6.1 TÉCNICA APLICADA NA DETECÇÃO DE POSE

Anteriormente foi visto, na seção 5.1, que existem diversas técnicas consolidadaspara detecção de pose e há modelos variados de mapeamento do corpo humano disponíveis.Nesta seção será vista uma aplicação prática destes conceitos, que ficou conhecida comoOpenPose, apresentando suas características específicas e ao final justificando a escolhapara ser usada neste projeto.

O OpenPose é um sistema de detecção de pose desenvolvido por Cao et al. (2018)que adota a sistemática bottom-up, ou seja, parte do conjunto de todos os pontos de-tectados para efetuar a montagem das poses individuais. A escolha dessa abordagem foiexplicada pelo fato de que há alguns problemas com a opção top-down. Por ser necessárioinicialmente segmentar a imagem entre os diferentes indivíduos, esta etapa torna-se críticado processo, pois a qualidade geral da pose dependerá do quão bem for feito este recorteda imagem. Além disso, há um tempo gasto nessa segmentação e, por fim, ela não resolvetotalmente o problema de haver oclusões ou sobreposição de membros. Cao et al. (2018)

A partir dessa escolha do modelo bottom-up, foi criada uma versão própria de umaCPM, que conforme foi visto na seção 5.1 é o componente que otimiza o processo demapeamento dos pontos. Esta implementação introduziu o conceito dos chamados pairaffinity fields (campos de afinidade de pares, tradução nossa). Essa técnica avalia o fluxode cores da imagem para verificar quais partes estão mais relacionadas e com isso melhoraa previsão da posição e conexão de cada parte do corpo com os membros adjacentes. Issoacaba sendo importante para no final conectar corretamente os membros de um mesmoindivíduo sem misturar o corpo de uma pessoa com o de outra. (CAO et al., 2016)

Assim como ocorre com outros modelos, os padrões de pose gerados pelo OpenPosedependem da base de dados que for usada para geração dos mesmos. Ou seja, o conjuntode pontos de saída pode ser escolhido e há três opções que são utilizadas: MPII, COCOe BODY_25. Com relação às diferenças entre estes modelos, o MPII mapeia somenteum ponto para o topo da cabeça e possui um ponto central para a articulação da coluna,enquanto que o modelo COCO não possui este ponto mas mapeia as orelhas, olhos e nariz.

Page 52: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

51

A terceira opção ainda não recebeu um nome definitivo mas foi denominada BODY_25.Trata-se de uma extensão do modelo COCO feita para mapear também os pés e o centrodo quadril. Desta forma, contém 7 pontos adicionais aos 18 do modelo original. Umacomparação entre o modelo COCO e essa extensão pode ser vista na Figura 20. (CAO etal., 2018)

Figura 20: Modelos de mapa de pose COCO e BODY_25

Fonte: (CAO et al., 2018)

Por fim, como o nome da ferramenta indica, o OpenPose é um sistema de detecçãode pose que teve o código fonte liberado publicamente através do GitHub, que é umrepositório online para projetos de desenvolvimento de software. Além disso, é compatívelcom o sistema operacional Windows e pode ser executado mesmo em máquinas sem placagráfica, apesar de que com menor desempenho. Por tudo isso e pelo fato de ter suporte aum modelo de saída que mapeia tanto pontos do rosto quanto dos pés, escolheu-se estaferramenta para ser utilizada no decorrer deste projeto, entendendo que estes diferenciaisserão importantes no desenvolvimento prático.

6.2 TÉCNICA APLICADA NA MUDANÇA DE ESCALA PARA PIXEL ART

De acordo com o que foi apresentado na seção 5.2, a mudança de escala de imagenspossui várias aplicações práticas, dentre elas a possibilidade de facilitar o tratamentodo pixel art em algoritmos de processamento de imagens. Nesta seção será visto umaferramenta que faz esta tarefa e que se chama HQX. Inicialmente é apresentado seufuncionamento e vantagens para então elencar os motivos que fundamentam sua aplicaçãoneste projeto.

A família de filtros ampliadores HQX foi desenvolvida por Stepin (2001) e ofereceopções para aumentar a imagem em 2, 3 ou 4 vezes. Cada filtro recebeu um nome próprio,como, por exemplo, o hq2x para a ampliação de 2x. O processo proposto foi desenhado

Page 53: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

52

especificamente para uso com pixel art mas não tem preocupação em manter a paleta decores original. É por natureza simples, pois se baseia diretamente nos pixels da imagemfazendo uma varredura sobre os mesmos, sem abstrações mais complexas.

Para cada pixel que for lido, são verificados os demais adjacentes a ele, semelhantea uma convolução com kernel 3x3. Utilizado um algoritmo de comparação de cores e umthreshold (limiar de referência) é definido se cada um destes 8 pixels tem a mesma cor queo central. Como cada um pode ser igual ou diferente, existem 256 combinações possíveis.Todas estas situações estão previstas em uma tabela interna que descreve como expandiro pixel central em uma nova matriz de 2x2, 3x3 ou 4x4 que melhor represente o contextodo pixel original. Após isso é aplicada uma técnica de anti-aliasing. (STEPIN, 2001)

O anti-aliasing é um procedimento que visa suavizar a transição de cores emuma imagem. No caso do pixel art ou outras imagens digitais, serve para eliminar oserrilhamento. Utilizando um exemplo prático, ao observar um círculo puramente pretoem um fundo branco em um monitor, seria possível perceber os pixels que vão formando acurvatura, tornando-a ligeiramente quadriculada. Porém, com um anti-aliasing aplicado,estes pixels mais próximos da borda das cores são borrados de forma a dar a impressãode curvatura suave. Nos filtros HQX, esse processo é feito após aumentar a escala daimagem pois se fosse aplicado diretamente no pixel art causaria um desfoque grande,comprometendo o entendimento da figura. O resultado de uma aplicação completa dofiltro pode ser visto na Figura 21, onde a imagem da esquerda está ampliada com o padrãonearest neighbor que mantém as cores originais e torna os pixels evidentes, enquanto quena imagem da direita o filtro HQX foi utilizado na ampliação.

Figura 21: Aplicação do filtro hq3x

Fonte: (STEPIN, 2001)

A vantagem deste filtro é que ele não exige componentes externos para funcio-nar, como por exemplo bibliotecas de processamento gráfico. Mesmo sendo original de2001, essa técnica foi reescrita em diversas linguagens diferentes e para diferentes siste-mas operacionais, o que evidencia sua eficácia no problema que busca resolver. É possível,inclusive, automatizar chamadas por linha de comando para aplicação deste filtro. Alémdisso, é um filtro de uso livre já aplicado em diversos emuladores de jogos. Por estes mo-tivos, foi escolhido como ferramenta para ser utilizada no desenvolvimento prático desteprojeto.

Page 54: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

53

6.3 TÉCNICA APLICADA NA TRADUÇÃO IMAGEM-PARA-IMAGEM

De acordo com o que foi visto na seção 5.3, o processo de tradução imagem-para-imagem utiliza redes neurais geradoras (GAN) e convolucionais (CNN) para extrairinformações e representá-las em um novo formato. Nesta seção será visto uma implemen-tação prática desta técnica conhecida como Pix2Pix, abordando a história da sua criaçãoe ao final os motivos que embasam a aplicação neste projeto.

No artigo Image-to-Image Translation with Conditional Adversarial Networks pro-posto por Isola et al. (2017) foi observado que os problemas de tradução imagem-para-imagem eram resolvidos com algoritmos e implementações específicos para cada situação,porém a questão no final era sempre mapear um conjunto de pixels de entrada para umconjunto de pixels de saída. A partir disso se propuseram a desenvolver um frameworkque fosse viável de aplicar em todas as situações.

Como dito, a abordagem escolhida foi a utilização de CNN e GAN e explicou-se omotivo dessa escolha. Redes CNN já eram aplicadas para tarefas de geração de imagens,mas apesar de o processo de aprendizado ser automático, ainda era necessário algumesforço manual para definir a função de custo (seção 4.2) que pontua a qualidade dosresultados da rede. Uma boa função de custo seria aquela que faz a CNN para reduzir adiferença entre os pixels da imagem de referência esperada e a imagem que foi gerada pelarede, porém isso acaba gerando imagens borradas já que a rede tenta equilibrar todas assaídas plausíveis em uma única imagem. (ISOLA et al., 2017)

A aplicação de GAN (subseção 4.3.2) neste contexto permite que a função decusto seja definida dinamicamente conforme a rede vai aprendendo a diferenciar as ima-gens geradas das imagens verdadeiras. Isso porque a rede vai identificando quais são ascaracterísticas importantes para o problema de tradução imagem-para-imagem específico.Por exemplo, em um problema de coloração de imagens, a distribuição das bordas deveser mantidas e as cores precisam ser alteradas, mas isso pode ser irrelevante para outrostipos de problemas. Os autores deste projeto aplicaram um tipo específico de GAN cha-mado Conditional Generative Adversarial Networks (cGAN), em que a saída a ser geradaé condicionada a um dado de entrada ao invés de ser construída a partir de um ruído ale-atório. Neste caso, o dado de entrada é um mapa das características extraídas da imagemde entrada que devem servir de base para a geração da saída. (ISOLA et al., 2017)

Neste projeto também foi feita uma melhoria no gerador de imagens, pra que nãodependa somente destes dados abstratos para construir a saída. Devido à combinação deuma CNN que faz convoluções cada vez menores, e a GAN que vai deconvolucionandodados para gerar informações, o diagrama de uma rede tradutora de imagens geralmentese assemelha a uma ampulheta deitada. Essa construção é chamada rede codificadora-decodificadora (do inglês encoder-decoder) e pode ser vista na Figura 22.

Page 55: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

54

A melhoria apresentada neste projeto foi aplicar uma especialização deste tipo derede, chamada U-Net. Nela, cada camada interna de entrada se conecta com a respectivacamada de saída, permitindo que algumas informações sejam repassadas diretamente. Issoresolve o problema do gargalo de processamento central, onde seria necessário trafegartodas as informações. Com essa conexões diretas entras as camadas, o aprendizado se-para as informações que podem trafegar diretamente daquelas que realmente precisam deprocessamento. Por exemplo, no caso do problema de coloração de imagens em preto-e-branco, os dados das bordas e luminosidade de cor passam diretamente para a imagem desaída enquanto que a rede interna precisa se preocupar apenas com segmentar as regiõese gerar novas cores realistas para cada uma delas. (ISOLA et al., 2017)

Figura 22: Rede codificadora-decodificadora e a U-Net aplicada no Pix2Pix

Fonte: (ISOLA et al., 2017)

Com toda essa estrutura, o funcionamento foi posto à prova com alguns proble-mas de transformação de imagens que podem ser vistos na Figura 23, que destaca asdiversas possibilidades atendidas pelo mesmo framework. O modelo desenvolvido por esteprojeto foi denominado Pix2Pix e disponibilizado publicamente no GitHub. Desta forma,várias pessoas puderam ter acesso a este estudo e fazer experimentos próprios. Por estacaracterística de aprendizado que abstrai detalhes técnicos de projeto da rede neural epelo fato de ser acessível ao público geral, selecionou-se o Pix2Pix para ser aplicado nodesenvolvimento deste trabalho.

Figura 23: Exemplos de tradução imagem-para-imagem utilizando Pix2Pix

Fonte: (ISOLA et al., 2017)

Page 56: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

55

7 DEFINIÇÃO DO PROCESSO DE GERAÇÃO AUTOMATIZADA DEIMAGENS

Com tudo que foi abordado até agora, esta pesquisa definiu um processo que possi-bilita o desenvolvimento dos objetivos aplicando os conceitos e as ferramentas apresenta-dos anteriormente. A lógica proposta é ilustrada na Figura 24, onde se destaca também osajustes necessários para integração entre as diferentes ferramentas utilizadas. Inicialmenteserá explicado o processo através de uma visão geral, para então conceituar detalhada-mente cada etapa nas próximas seções. Visto isso, os capítulos seguintes abordarão aforma prática como foi implementado cada um destes estágios.

O processo inicia com a entrada de um sprite sheet (definido na seção 2.2) que pos-sui todas as figuras do personagem que deseja-se utilizar no treinamento da rede neural, oqual pode ser visto na Figura 24 no bloco (1). Na etapa (2), será extraída a pose para cadaum dos sprites (utilizando a técnica apresentada na seção 6.1), sendo efetuados ajustesmanuais para refinar essa saída. A etapa (3) finaliza a preparação para o treinamento darede neural, gerando novas imagens individuais que vinculam cada pose com o respectivosprite de origem. Ainda nesta etapa, será aplicado o filtro para mudança de escala vistona seção 6.2 para prover à rede neural uma entrada de dados mais suavizada.

Figura 24: Processo de mudança da pose de um personagem

(1) Entrada - sprite sheet (2) Mapeamento de pose(OpenPose + ajuste manual)

(3) Formatação de entrada para rede neural

(7) Saída - novo sprite

(6) Ajuste de escala e paleta de cores

(4) Geração da rede neural (Pix2Pix)

(5) Geração de nova pose

Rede Neural(CNN + GAN)

Fonte: elaborado pelo autor, sprites adaptados de “Hero spritesheets (Ars Notoria)” (OpenGameArt.org)

Page 57: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

56

Na etapa (4), essas imagens serão utilizadas como entrada do Pix2Pix (conformedefinido na seção 6.3) para construir a rede neural tradutora imagem-para-imagem, ondese concentram também os fundamentos apresentados no Capítulo 4. Após concluir otreinamento, na etapa (5) poderá ser enviada uma nova pose que nunca foi processadapela rede durante o treinamento e a rede neural deverá gerar como saída uma nova imagemcoerente com o conjunto de treinamento, mas que não será ainda um pixel art finalizado.A próxima etapa, representada no bloco (6), fará a conversão da escala e a aplicaçãoda paleta original de forma que a imagem de saída da rede neural fique com as mesmasproporções e as mesmas cores do conjunto de treinamento. Após tudo isso, na etapa (7)será obtida uma imagem em pixel art em que o artista poderá fazer retoques e finalizar odesenho. Com este resumo, as próximas seções deste capítulo detalham conceitualmenteas diferentes etapas do processo proposto, seus requisitos e os cuidados necessários. Odesenvolvimento prático destes conceitos será apresentado posteriormente no Capítulo 8.

7.1 ENTRADA DE DADOS

Tendo sido abordada a visão geral do processo, podem ser definidos os requisitosespecíficos da etapa de entrada de dados. É ela que dá início ao processo de criação denovas imagens e servirá de base para todas as etapas seguintes, portanto é importantepara definir o escopo das imagens que este projeto pretende trabalhar.

Primeiramente, o processo aqui proposto é limitado a imagens construídas em pixelart que representem um mesmo personagem com características constantes no decorrerdas animações. Ou seja, cuja constituição física, roupas, cores e design geral sejam coe-rentes entre todas as imagens. Além disso, como viu-se na seção 6.1, será utilizada umaferramenta de detecção de pose que é baseada em seres humanos, portanto o processoé mais adequado para personagens que tenham características humanoides. A próximaseção apresentará como pode ser flexibilizada essa restrição ao aplicar a técnica nestecontexto.

Por fim, é necessário reunir imagens suficientes para ilustrar as características prin-cipais do personagem, a fim de que possam ser assimiladas pela rede neural. Um spritesheet completo fornece uma determinada quantidade de imagens, das quais pode ser sele-cionado um conjunto ou todas para servirem de base para geração de novos sprites. Nãoé possível definir uma quantidade exata de imagens necessárias, porém é possível aumen-tar a quantidade de repetições de treino até que o resultado da RNA seja satisfatório.Assim como foi visto na seção 4.2, a quantidade exata de épocas de treino também évariável conforme a aplicação. Dito isso, a próxima seção destaca como segmentar essasinformações, preparando-as para a construção da rede neural.

Page 58: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

57

7.2 MAPEAMENTO DE POSE

Esta etapa visa extrair informações do sprite sheet completo para transformarcada imagem complexa do personagem em uma abstração, ou seja, uma simplificação quepoderá ser trabalhada posteriormente para criar novas posições. É necessário definir ummodelo simples que represente o personagem e que possa ser gerado depois como entradapara rede neural. Assim como explicado na seção anterior, também é importante que omodelo de mapeamento escolhido seja coerente entre todas as imagens. Ou seja, quantomais criterioso for o padrão lógico de relacionamento entre imagem e modelo, tanto melhorserá a qualidade das informações de entrada da rede neural. Em termos práticos, se foidefinido que o olho esquerdo do personagem é representado por um ponto roxo, esse pontonão pode ser utilizado para outra finalidade e deve estar sempre posicionado exatamentesobre o olho esquerdo do personagem.

Nesse sentido, como este projeto envolve a aplicação de algoritmos de detecção depose que já possuem um mapa de pontos saída definido (conforme visto na seção 6.1),convém utilizar este mesmo modelo para mapear as imagens, ou seja, relacionando cadaparte do corpo com a representação da pose em forma de esqueleto. Entretanto, nadaimpede o uso de modelos corporais diferentes, sendo que neste caso podem ser buscadasoutras técnicas de detecção de pose ou mesmo feito o mapeamento de forma totalmentemanual. Como o objetivo deste trabalho está relacionado com algoritmos de detecção depose para humanos, não serão abordadas formas de mapeamento para outros tipos deimagens com estrutura completamente distinta, como animais ou objetos.

Dito isso, percebe-se que o uso de uma rede neural tradutora imagem-para-imagemtorna bastante flexível o método de mapeamento das imagens. Qualquer que seja o modeloproposto, basta que ele seja claro e seguido entre todas as imagens para que a rede neuralpossa interpretar o padrão estabelecido. É possível simplificar não somente informaçõessobre a pose do personagem, como também dimensões (variando por exemplo a grossurada linha) ou iluminação (alterando a intensidade das cores), ou ainda outros padrões maiscomplexos que tragam mais dados ao modelo.

É importante entender que quanto mais complexo for o modelo, mais treinamentoserá necessário até que a rede neural consiga generalizar uma solução. Conforme foi vistona seção 4.2, uma complexidade maior de aspectos a assimilar se relaciona com maiscamadas ocultas na rede neural e com isso atrasa-se o estado de overfitting e do desapa-recimento de gradiente. Neste projeto não será abordado de forma mais profunda essaspossibilidades de modelos mais abstratos, porém será visto na seção 8.2 um exemplo deaplicação que faz com que a rede neural assimile mais dados sobre as cores do que sobrea pose do personagem. (NIELSEN, 2015)

Page 59: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

58

7.3 ENTRADA DA REDE NEURAL

Feita a definição do modelo e mapeamento das imagens a serem utilizadas comotreino, o passo a ser abordado nessa seção é a preparação para o treinamento da redeneural. O objetivo desta etapa é fazer a conexão entre o mapeamento feito anteriormentee o formato específico de entrada esperado pela ferramenta de construção de rede neuralque for aplicada.

Para fazer isso, é necessário primeiramente ter definido qual será essa ferramenta eestudar suas especificações. Uma vez compreendido seu funcionamento, devem ser elenca-dos os requisitos a serem seguidos para entrada de dados e se há caraterísticas que possamser aproveitadas para otimizar o processo de treinamento e que não tenham sido inseridasno modelo de mapeamento.

No caso deste projeto, foi escolhido trabalhar com a rede neural tradutora imagem-para-imagem Pix2Pix, portanto é sobre ela que se faz essa análise. A lógica da abordagemutilizando essa ferramenta é treinar a rede neural a partir de exemplos de pares de imagensem um arquivo único contendo uma imagem de entrada e uma imagem de destino em cadametade. Mediante exemplos e treinamento suficientes, é gerada uma rede neural capazde gerar imagens para novas entradas seguindo o mesmo padrão aprendido. Ou seja, énecessário criar uma série de arquivos de imagem neste formato.

Outra característica desse processo é referente à resolução da imagem de entrada.Devido à arquitetura interna que constrói a rede neural, são utilizadas imagens comdimensão de exatamente 256x256 pixels. Tamanhos diferentes disso são ampliados oureduzidos através de mecanismos internos que visam adequar ao processamento convolu-cional que foi conceituado na subseção 4.3.1. Dessa forma, se for passada uma imagemmaior, haverá truncamento das informações; enquanto que uma resolução menor ocasionaum sub-aproveitamento do treinamento pois várias regiões da imagem expandida terãoinformações idênticas. Essa segunda situação é o caso do uso de pixel art, em que a am-pliação tradicional apresenta transições mais abruptas das cores e formas, conforme vistona seção 5.2. Tento elencado essas duas particularidades sobre o formato e a resolução deentrada, destaca-se que uma forma de trabalhar estes aspectos será vista no desenvolvi-mento prático do Capítulo 8. A partir da análise e preparação proposta nessa seção, podeser iniciado o processo de treinamento que é detalhado a seguir.

7.4 GERAÇÃO DA REDE NEURAL

Na etapa de geração da rede neural se concentram os conceitos estudados anteri-ormente no Capítulo 4 referentes a redes neurais convolucionais (CNN) e redes neuraisadversárias geradoras (GAN). Aqui a ferramenta escolhida para geração da rede neural éexecutada utilizando como entrada as imagens montadas pela etapa anterior. Com isso,

Page 60: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

59

nesta etapa também são executados dois subprocessos para possibilitar o treinamento deforma mais efetiva. O primeiro deles é a configuração do ambiente e o segundo o estudode parâmetros e configurações disponíveis que possam ser aproveitados.

A configuração do ambiente é necessária para permitir a geração da rede neural.Devem ser verificados os requisitos de sistema, dependências com recursos de terceirose demais condições para executar a ferramenta escolhida. No caso do Pix2Pix que seráaplicado neste projeto, o ambiente padrão conforme documentação é o Linux ou OSX,porém o site Machine Learning for Artists já estudou uma forma de disponibilizar aplataforma em sistema operacional Windows e instrui quanto às dependências e o processode instalação (KOGAN; TSENG; REFSGAARD, 2016). Desta forma, percebe-se queseguindo estas instruções será possível rodar o Pix2Pix neste ambiente para efetuar otreinamento.

Por fim, o estudo de parâmetros visa aproveitar as características específicas daferramenta escolhida. No contexto deste projeto, a ferramenta Pix2Pix disponibiliza doisrecursos interessantes de se aplicar durante o treinamento: a escolha da quantidade deépocas de treino e a possibilidade de salvar pontos de controle (do inglês checkpoints).A escolha da quantidade de épocas de treino já foi comentada anteriormente como im-portante para calibrar a qualidade dos resultados, sendo pauta para experimentação paraidentificar a quantidade mais adequada. Enquanto isso, o recurso do ponto de controlefacilita esses testes porque permite salvar o resultado do treinamento e retomá-lo posteri-ormente para executar mais épocas se necessário. Tendo entendido o funcionamento dessaferramenta, a rede neural é construída a partir da entrada montada anteriormente, paraque na próxima seção seja visto como aplicá-la.

7.5 APLICAÇÃO DA REDE NEURAL

Após construir a rede neural a partir do treinamento, essa etapa visa aplicá-lapara geração de novas imagens. Para tal, é necessário retornar ao modelo de mapeamentode pose construído na seção 7.2 e criar novas posições a serem geradas. Em um contextoprático não haverá referência exata para seguir, sendo possível criar poses livrementeconforme a necessidade de novas imagens. Entretanto, como neste projeto pretende-sevalidar os resultados, as novas poses são escolhidas com base em imagens conhecidas dopersonagem, as quais não fizeram parte do treinamento e portanto não influenciaram aconstrução da rede neural.

Nas etapas anteriores, identificou-se como necessário estudar as características deentrada e de geração da rede neural utilizada. Da mesma forma, neste momento tam-bém é importante verificar os parâmetros exatos de saída da rede neural, identificandoas restrições que podem haver e a necessidade de ajustes na saída, que serão implemen-tados na próxima etapa. No cenário deste projeto que aplica a rede neural tradutora

Page 61: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

60

imagem-para-imagem Pix2Pix, não são observadas configurações adicionais de saída quepossam ser aplicadas, porém, nota-se a mesma situação que ocorre na entrada de dados:a saída é gerada com exatos 256x256 pixels de resolução independente do tamanho daimagem de entrada, desta forma sendo preciso adequar a resolução para reestabelecer asdimensões originais. Além disso, as cores da imagem também precisam ser tratadas parapermanecerem coerentes com o sprite-sheet do personagem. Tendo identificadas essas duasnecessidades, pode ser efetuada a próxima etapa de normalização da imagem.

7.6 NORMALIZAÇÃO PARA PIXEL ART

A última etapa do processo visa implementar ajustes na imagem para normalizarsituações que não tenham sido tratadas pela geração da rede neural. O requisito inicialdesse momento é ter identificado quais são essas características a serem alteradas naimagem e o resultado esperado é a saída final do processo, com imagem pronta para sertrabalhada pelo artista.

Como foi visto anteriormente, com o uso do Pix2Pix é necessário ajustar a resoluçãoda imagem e as suas cores. Com relação a resolução, basta fazer o processo inverso deampliação que foi indicado para entrada da rede neural na seção 7.3, enquanto que as corespodem ser normalizadas obtendo a paleta de cores do personagem e aplicando-a sobre aimagem gerada pela rede neural. Além disso, outros tratamentos que visem melhorar acoerência da imagem podem ser efetuados, como, por exemplo, trabalhar os contornosdo personagem para garantir que tenham exatamente 1 pixel de largura, aplicar filtrospara reduzir ruído da imagem gerada ou até mesmo reconstruir completamente a imagema partir da saída da rede neural utilizando técnicas mais complexas. Porém, definiçõesmais específicas desses tratamentos dependem fortemente do contexto em que está sendoaplicado este processo. Como este projeto se propõe a abordar uma situação mais genérica,serão desenvolvidos os processos que podem aplicados em qualquer caso, que são o ajustede escala e a correção da paleta de cores. Um exemplo de implementação prática dissoestá detalhado na subseção 8.1.6.

Com tudo que foi apresentado neste capítulo pode compreendido a teoria do pro-cesso em sua visão geral e os detalhes das etapas individualmente. O próximo capítuloaborda uma implementação prática desses conceitos.

Page 62: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

61

8 DESENVOLVIMENTO PRÁTICO DA PROPOSTA

Definido conceitualmente o processo proposto, este capítulo aborda uma formaprática de como pode ser desenvolvido o projeto. É destacado o modo como efetivamentese implementou cada uma das etapas e a abordagem escolhida para lidar com os requi-sitos apresentados anteriormente. A forma específica como foi construída cada etapa doprocesso servirá para entender o funcionamento efetivo e os cuidados necessários, mas nãoé obrigatório que sejam utilizadas as mesmas ferramentas para atingir o objetivo. Podemser aplicadas outras linguagens de programação, diferentes redes neurais ou outras lógicasde vinculação entre as imagens de entrada e saída, sem que isso interfira no funcionamentogeral.

Propõe-se efetuar dois experimentos que passem por todos os estágios do processoe que possam ser avaliados ao final. Cada um deles utilizará o processo de geração deimagens para uma finalidade distinta, a fim de avaliar o desempenho da solução propostaem diferentes contextos e evidenciar algum grau de flexibilidade da aplicação. No que dizrespeito à forma de construção prática de cada etapa, cada implementação será apresen-tada a partir da lógica principal e do funcionamento dos componentes de programaçãoempregados. Como a solução proposta não se limita a uma linguagem de programação ouimplementação únicas, os detalhes como lógicas específicas ou o código-fonte na íntegranão serão relevantes para entendimento do processo na prática. Na seção que segue estádetalhado o primeiro destes experimentos.

8.1 EXPERIMENTO 1 - GERAÇÃO COMPLETA DE UM SPRITE

A primeira proposta prática consiste em gerar um sprite completo a partir somenteda imagem abstrata de entrada da rede neural, verificando, portanto, a capacidade degerar imagens sem grande auxílio do artista, além da definição dessa entrada conforme omodelo escolhido. Cada subseção a seguir detalha o desenvolvimento de uma das etapasabordadas durante a definição do processo (Capítulo 7).

8.1.1 Entrada de dados

Para iniciar o processo é necessário um conjunto de imagens que servirão comotreinamento para a rede neural (seção 7.1). No contexto do desenvolvimento de jogos, foivisto que esse tipo de imagem é chamado sprite sheet e é o resultado do trabalho criativodas empresas desenvolvedoras. É portanto tratado como parte do seu patrimônio, sendogeralmente protegido por direitos autorais e raramente publicado com livre acesso parauso diferente dos fins originais.

Page 63: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

62

Foi desenvolvido portanto um sprite sheet específico para uso neste projeto, o qualpode ser divulgado e estudado sem este tipo de restrições. Para esse desenvolvimentofoi contatado um aluno do segundo semestre do curso de Tecnólogo em Jogos Digitaisda Universidade Feevale, que está portanto inserido no ambiente de estudo e desenvolvi-mento de jogos. Ele frequenta o Laboratório de produção de jogos do instituto, que contacom softwares voltados a esta área de desenvolvimento e é gerenciado por monitores evoluntários que prestam auxílio a alunos em suas atividades de aulas ou projetos.

Nesse contexto, foi criado pelo aluno citado anteriormente um sprite sheet completopara ser usado como recurso deste projeto. De posse dos requisitos que foram especificadosna seção 7.1 e das técnicas que ele dispõe para o desenho, além do acesso ao ambientede desenvolvimento do laboratório de produção de jogos, foram investidas cerca de 40horas de trabalho. Foi utilizada principalmente a ferramenta Adobe Photoshop, que é umprograma de edição avançada de imagens e fotografias também aplicável no contexto dopixel art. Com isso, criou-se um sprite sheet completo sem interferência dos autores desteprojeto, que pode ser visto na íntegra no Apêndice A, que é explicado a seguir.

Com relação a estas especificações para este trabalho, foi considerado um cenáriode uso que se aproximasse do real, ou seja, com um personagem que tivesse várias ani-mações compondo uma sequência lógica e suficiente para aplicação em um jogo. Assimsendo, o personagem foi criado com animações de movimentação como corrida, pulo erecuo, além de diversas animações de ataque e uma sequência de vitória ao final. Nãohouve preocupação em atribuir um nome específico para cada sequência de animação,no entanto, cada sprite está numerado para que seja possível identificar separadamentetodas as imagens que compõe o sprite sheet. Além disso há uma identificação de cor euma borda que pode estar grifada em destaque para alguns sprites. Essa distinção seráexplicada e será relevante na subseção 8.1.3 deste experimento.

Além desse requisito de que houvesse animações distintas, foi solicitado tambémuma quantidade específica de sprites desenvolvidos. Considerando que pretendia-se utili-zar mais que uma centena de imagens como treino e reservar ainda uma quantidade paraefetuar os testes, foi solicitada a criação de 200 imagens, das quais 150 serão utilizadaspara treinamento e as 50 restantes para validação dos resultados. Com essa etapa con-cluída, o projeto passou a ter uma entrada de dados para ser processada e avaliada, comoserá visto a seguir.

8.1.2 Mapeamento de pose

O mapeamento de pose é uma etapa crítica para estabelecer o padrão de quali-dade do processo e, como foi visto anteriormente na seção 7.2, é necessário definir ummodelo que represente de forma simplificada a imagem a ser gerada. No caso deste pro-jeto que trabalha com detecção de pose já foi estabelecido o uso do modelo BODY_25

Page 64: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

63

da ferramenta OpenPose (vista na seção 6.1). Além disso, foi visto que é possível e reco-mendado incrementar o modelo com informações adicionais que forem relevantes para omapeamento.

Sabendo disso, este projeto desenvolveu um software para mapeamento da poseutilizando a linguagem de programação Java. A seguir é detalhado como ocorre essemapeamento separando em três processos que ocorrem dentro desta etapa: extração dapose, desenho da pose e configuração do modelo.

Nesta etapa em que é necessário trabalhar com imagens, escolheu-se utilizar aclasse Java BufferedImage que oferece suporte a diversas operações de manipulação grá-fica. No primeiro processo a ser abordado, que é a extração da pose, é segmentado osprite sheet completo em imagens individuais através da seleção do usuário. Para cadauma delas, é executado o algoritmo do OpenPose, que recebe uma imagem como entradae devolve uma lista de mapas de calor, nos quais o ponto mais intenso de cada mapa é aposição mais provável de uma determinada parte do corpo do modelo BODY_25. A listacompleta de pontos devolvidos com o nome original e a respectiva tradução é a seguinte:

∙ 0-Nose (nariz)

∙ 1-Neck (base pescoço)

∙ 2-RShoulder (ombro direito)

∙ 3-RElbow (cotovelo direito)

∙ 4-RWrist (pulso direito)

∙ 5-LShoulder (ombro esquerdo)

∙ 6-LElbow (cotovelo esquerdo)

∙ 7-LWrist (pulso esquerdo)

∙ 8-MidHip (meio dos quadris)

∙ 9-RHip (quadril direito)

∙ 10-RKnee (joelho direito)

∙ 11-RAnkle (tornozelo direito)

∙ 12-LHip (quadril esquerdo)

∙ 13-LKnee (joelho esquerdo)

∙ 14-LAnkle (tornozelo esquerdo)

∙ 15-REye (olho direito)

∙ 16-LEye (olho esquerdo)

∙ 17-REar (orelha direita)

∙ 18-LEar (orelha esquerda)

∙ 19-LBigToe (dedão do pé direito)

∙ 20-LSmallToe (dedinho do pé direito)

∙ 21-LHeel (calcanhar esquerdo)

∙ 22-RBigToe (dedão do pé direito)

∙ 23-RSmallToe (dedinho do pé direito)

∙ 24-RHeel (calcanhar direito)

Como a imagem em pixel art tende a ser pequena e com isso ficar sensível a errosno mapeamento desses pontos, foi criado um recurso adicional nesta etapa de extraçãoda pose que permite mudar a escala da imagem que é recebida como entrada. Ou seja,

Page 65: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

64

ao invés de analisar diretamente o pixel art, é opcionalmente aplicado o filtro visto naseção 6.2 para ampliar a resolução da imagem 2, 3 ou 4 vezes e com isso fornecer umaimagem maior para ser analisada. Aumentar a resolução da imagem pode auxiliar naextração da pose pois, conforme foi visto na seção 5.1, os sistemas de estimativa de posesão baseados em figuras humanas e desta forma o pixel art se torna mais semelhante sefor ampliado e suavizado por esta técnica.

A partir das informações de coordenadas que são retornadas pelo OpenPose,utilizou-se a classe Graphics2D para desenhar pontos e traços sobre a imagem original,sendo possível efetuar ajustes manuais para cada um dos pontos se necessário. Além disso,foi criada uma forma de não exibir os pontos e traços que não seja interessante visualizar,como por exemplo o braço esquerdo do personagem quando visto em visão lateral direita.Na Figura 25, pode ser observado esse processo: a partir da imagem original, é gerada aversão ampliada e tem-se com isso uma estimativa de pose que pode não estar completanem totalmente adequada. Após isso essa pose inicial é refinada com ajustes manuais efica adequada à imagem.

Figura 25: Processo de extração da pose com mudança de escala e ajustes manuais

Fonte: elaborado pelo autor

Como nota-se, o mapeamento apesentado até agora está limitado às informaçõesque o modelo BODY_25 consegue retornar. Para deixar o processo mais flexível e permitirmapear informações adicionais, foi criada uma forma de tornar o modelo de mapeamentoda pose totalmente configurável. Além de modelos corporais diferentes, essa configuraçãodo modelo também possibilita mapear informações adicionais como a roupa ou cabelodo personagem, que geralmente não serão considerados pelas ferramentas de detecção depose mas podem ser representadas no modelo para aumentar a qualidade das imagensgeradas para treinamento. Para resolver isso, foi criada uma tabela que descreve essemodelo através de uma lista de pontos de pose que pode ser vista na Figura 26. Cadaponto é definido pelas seguintes informações:

1. ID: identificação única do ponto de pose. É um número sequencial crescente.

Page 66: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

65

2. Nome: identificação descritiva para esclarecer a finalidade do ponto de pose.

3. Offset X e Offset Y: posição inicial deste ponto de pose na visualização padrãodo modelo, variando entre 0 e 1. Indica, com isso, em qual posição este ponto devepermanecer caso não seja mapeado automaticamente pela detecção de pose. É usadopara exibir e configurar uma pose inicial que permita visualizar o modelo de formaclara. Ou seja, conforme o usuário vai posicionando os pontos no modelo, estasduas informações são atualizadas para indicar em qual posição eles se encontramem relação ao espaço ocupado pelo modelo.

4. Cor: coloração para diferenciar visualmente este ponto de pose dos demais. Nesteprojeto em que foi usado como referência o modelo BODY_25, escolheu-se as mes-mas cores para os pontos de pose que foram aproveitados diretamente deste modelo.Para os pontos novos criados, foram buscadas novas cores nitidamente distintas dasjá aplicadas.

5. Link: código (ID) de outro ponto de pose ao qual este ponto deve se conectar. Essainformação é o que gera o esqueleto do modelo a partir dos pontos. Por exemplo,o ponto do pulso direito se conecta com o cotovelo direito para através desta linharepresentar o antebraço direito no modelo.

6. BODY_25 ID: código do ponto de pose do modelo BODY_25 ao qual este pontose relaciona. Essa informação é usada para atribuir automaticamente a pose ondefor possível.

Além disso, a ordem em que os pontos aparecem nessa tabela proposta indica aordem em que eles serão desenhados, servindo para mapear a informação de profundidadeno caso de o personagem estar com partes do corpo sobrepostas. Ou seja, se um braçodo personagem está atrás de outra parte do corpo, pode ser indicado para desenhar osrespectivos pontos do esqueleto antes dos demais, de forma que eles sejam sobrepostospor outras partes do corpo que estejam em frente.

A partir dessas informações, o modelo pode ser desenhado sobre o sprite sheet epode receber informações do mapeamento automático de pose BODY_25, sendo possível,portanto, vincular cada sprite individual ao sua respectiva abstração conforme o modelo.Na Figura 26 pode ser visto o modelo que será efetivamente utilizado neste experimento,no qual além dos pontos padrão do BODY_25 foi utilizada a configuração de modelopara acrescentar mais três informações: mão direita (ID 3), mão esquerda (ID 7) e topoda cabeça (ID 16). Como estes pontos não possuem relacionamento com o sistema dedetecção de pose, eles deverão ser sempre ajustados manualmente. Mesmo assim, foramcriados pois agregam informações importantes para que o personagem possa ser mapeadode forma integral.

Page 67: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

66

Figura 26: Tabela de dados para modelo personalizado de mapeamento da pose

Fonte: elaborado pelo autor

Finalmente, outro exemplo de aplicação deste modelo configurável já foi visto nestetrabalho anteriormente na Figura 24 presente no Capítulo 7, em que o modelo de posedo personagem de exemplo foi construído através de uma tabela de pose personalizadapara ficar mais simples, sem a informação dos olhos ou dos pés do personagem. Com tudoisso, cada uma das 200 imagens do sprite sheet completo foram mapeadas conforme omodelo apresentado anteriormente e ajustadas manualmente, sendo possível prosseguirpara a próxima etapa que é a preparação do processamento da rede neural.

8.1.3 Entrada da rede neural

Conforme visto anteriormente, o treinamento utilizado a ferramenta Pix2Pix é feitocom pares de imagens. Portanto, o mapeamento entre o modelo de pose e cada imagemque foi feito na etapa anterior é usado neste momento para criar novos arquivos para otreinamento da RNA. Isso é feito varrendo cada pose mapeada e extraindo a região daimagem que se encontra sobre ela para uma novo arquivo separado que vincula essas duasinformações.

Quanto à resolução da imagem, foi aplicado o cálculo 256/𝐿 para descobrir aproporção entre a largura (L) da imagem e os 256 pixels utilizados pelo algoritmo internodo Pix2Pix. Se esta proporção for maior que 2 vezes, é aplicada a técnica de mudança deescala vista na seção 6.2 para suavizar a imagem, para só então ampliar este resultado atéatingir os 256 pixels de largura desejados como pode ser visto na Figura 27. Desta forma,são geradas imagens com exatamente 256 pixels de largura e o processamento internodo Pix2Pix precisará ajustar somente a altura da imagem. Acredita-se que com isso será

Page 68: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

67

gerada menos distorção das informações durante o treinamento.

Figura 27: Comparativo da ampliação direta sem suavização e com aplicação do filtro hq4x

Fonte: elaborado pelo autor

Tendo definido o método para montar as imagens de treino, é necessário aindaseparar o conjunto de 200 sprites entre 150 imagens de treino e 50 para teste. Parafazer isso, é interessante que os dois conjuntos tenham uma distribuição de característicassemelhante e, desta forma, é necessário um critério para diferenciar as imagens e permitiressa classificação. Foi decidido separar os sprites de acordo com a dificuldade para desenhodos mesmos, indicando quais são fáceis, médios ou difíceis. Assim será possível criar osdois conjuntos com proporções iguais de imagens de cada tipo, provendo um contextosemelhante para o treino e para o teste. Os critérios indicados para essa análise sãoaqueles definidos nas técnicas de avaliação qualitativa de imagens da seção 3.3.

Para evitar conflitos de interesse neste momento da classificação dos sprites, sele-cionando, por exemplo, as imagens de difícil geração para treino e as fáceis para teste, foisolicitado auxílio externo, buscando encontrar um docente da Universidade Feevale quefosse familiarizado com técnicas de desenho e análise de imagens. Com isso, foi convidadopara participar desta etapa o professor Júlio Cesar Da Rosa Herbstrith, que é mestre emHistória, Teoria e Crítica da Arte pelo Programa de Pós-Graduação em Artes Visuais doInstituto de Artes da UFRGS (2012). Além disso, formou-se bacharel em Artes Visuaiscom habilitação em Desenho, pelo Instituto de Artes da UFRGS (2007). Ele integra o qua-dro docente da Universidade Feevale desde 2013, nos cursos de graduação e pós-graduação,onde atualmente coordena o curso de Design de Interiores. Ele possui seis anos e meiode experiência docente nas áreas de desenho, expressão gráfica e história, teoria e críticada arte. Finalmente, tem experiência profissional em animação, colaborando com o longametragem “As Aventuras do Avião Vermelho” de 2014.

Com tudo isso, acredita-se que ele pode contribuir neste momento de classificaçãodas imagens, empregando critérios técnicos alinhados com as necessidades deste projeto eprovendo uma avaliação imparcial. A partir do referencial que foi estudado na seção 3.3 eda experiência que possui, ele propôs o método de aplicação destes conceitos do desenhode observação. No contexto da geração de imagens por meios computacionais, o professor

Page 69: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

68

sintetizou três elementos que pautam a análise a ser feita sobre as imagens, conformesegue:

1. Proporção: Relação entre as partes e o todo da forma representada. Para ser qua-lificado como bom o desenho deve manter uma harmonia visual entre o referenciale a representação.

2. Escorço: Segundo Melo (2011), “O escorço é, portanto, a representação de umafigura volumétrica vista numa perspectiva forçada onde as partes do corpo se en-contram em sobreposição e as suas superfícies se apresentam aparentemente distor-cidas”. Sendo o escorço uma das técnicas de desenho mais complexas para a repre-sentação gráfica, mesmo para o aprendizado do ser humano, no que tange à RNAeste critério é fundamental para que a imagem gerada possa ser avaliada quanto àqualidade formal, harmonia entre as partes, relações de espaçamento e profundidadeentre as partes do desenho. No que se refere ao modelo, como figura humana, o bomdesenvolvimento do escorço auxilia na compreensão da anatomia da figura.

3. Volumetria: Esse aspecto pode ser desenvolvido com a linha, no que se refere aouso de diagonais que denotam profundidade, mas também com a aplicação de luze sombra que pode ser determinada por uma variação tonal. Quando desenvolvidade forma adequada, a representação passará ao observador a sensação de tridi-mensionalidade. Do contrário, o desenho apresentará problemas formais que podemconfundir a percepção do observador, levando-o a não relacionar a representaçãocom a referência.

O professor então aplicou suas técnicas próprias e estes critérios para classificar asimagens do sprite sheet por dificuldade de desenho. Segundo ele, o referencial de execuçãofácil é aquele que permite maior clareza entre as partes e o todo e se encontra em situaçãode repouso aparente. Além disso, onde os eixos de orientação do corpo e suas partes estãodefinidos de forma clara e apresentam a totalidade da extensão do corpo. O referencialde dificuldade média é aquele que possui clareza entre as partes e o todo, porém estáem situação de movimento e pode gerar eixos de direcionamento com representação maiscomplexa. Estar em posição frontal ou de três-quartos também pode deixar o referencialmais complexo com dificuldade média. Por fim, a referência de difícil execução não possuiclareza total entre as partes e o todo é complexificada por um movimento aparente e poruma situação de escorço.

O resultado dessa classificação pode ser visto no Apêndice A, onde se encontramidentificados 66 sprites fáceis pela cor verde, 82 médios na cor amarela e 52 difíceis nacor vermelha. Tendo essa separação é possível identificar as imagens que serão usadaspara o teste. As 50 imagens que deseja-se selecionar para essa tarefa correspondem a

Page 70: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

69

1/4 do total de imagens, portanto pode ser aplicada esta proporção em cada um destesconjuntos. Conclui-se disso que deve haver no mínimo 16 imagens fáceis, 20 médias e 13difíceis no conjunto de treino, e mais 1 qualquer para totalizar a quantidade de 50 quefoi proposta. Para selecionar quais são as imagens de treino dentro de cada conjunto, foiescrito um algoritmo, utilizando a linguagem de programação Java, que gera uma lista de200 números sequenciais e então reordena essa lista aleatoriamente, o qual pode ser vistona Figura 28.

Figura 28: Algoritmo para escolha dos sprites de teste

1 ArrayList<Integer > l i s t a = new ArrayList <>() ;2 f o r ( i n t i = 1 ; i <=200; i++){3 l i s t a . add ( i ) ;4 }5 C o l l e c t i o n s . s h u f f l e ( l i s t a , new Random(100) ) ;6 System . out . p r i n t l n ( "\ nLis ta reorgan i zada : \n " + l i s t a ) ;

Fonte: elaborado pelo autor

Essa lista reordenada foi lida a partir do começo, buscando a imagem indicadapelo número que ficou em cada posição. Selecionou-se imagens até preencher a quanti-dade mínima de cada categoria - permitindo até 1 a mais para totalizar as 50 imagens.Deste modo, foi obtido o conjunto de sprites para teste e o restante ficou reservado parao treinamento. Essa lista de imagens selecionadas para teste também se encontra discri-minada no Apêndice A, estando destacada pelas imagens hachuradas com a borda maiorem negrito. As imagens cujo número identificador não possui essa borda destacada são oconjunto de treino. Com tudo isso, foram construídas as imagens de entrada conforme oexemplo da Figura 29, onde a imagem-alvo se encontra na metade esquerda, enquanto quea representação utilizando o modelo simplificado está à direita. Assim sendo, é possívelutilizar as 150 imagens de treino como entrada para geração da rede neural, que é vistaa seguir.

Figura 29: Exemplo de uma imagem de entrada utilizada para geração da RNA

Fonte: elaborado pelo autor

Page 71: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

70

8.1.4 Geração da rede neural

Tendo gerado as imagens de entrada, pode ser efetivamente construída a rede neu-ral, no caso deste projeto utilizando como ferramenta o Pix2Pix. Conforme abordadoanteriormente na seção 7.4, é necessário primeiramente configurar o ambiente, instalandoas dependências para execução do treinamento no sistema operacional Windows. O pri-meiro requisito a ser instalado é a plataforma de computação paralela CUDA, que édesenvolvida pela empresa NVIDIA e permite a execução de algoritmos utilizando o po-der de processamento da placa gráfica do computador, a chamada GPU. É recomendávelinstalar também a extensão cuDNN (do inglês CUDA Deep Neural Network), que habi-lita recursos e otimizações específicos para operações com RNA, os quais serão úteis paraagilizar o processo de treinamento. Com isso, o sistema operacional fica preparado paraas operações gráficas e de RNA utilizadas no processo.

Pode então ser instalado o ambiente de programação que permite a execução doalgoritmo do Pix2Pix, que é escrito em Python e, portanto, exige o interpretador dessalinguagem de programação. Após instalá-lo, fica disponível no prompt de comandos dosistema operacional o comando pip (package installer for Python). O pip é um gerenci-ador de pacotes que busca e instala bibliotecas de código-fonte desta linguagem, e seráutilizado para instalar a última dependência. Esse último recurso externo é o Tensorflow,uma biblioteca de operações de aprendizado de máquina que faz uso dos recursos compu-tacionais da plataforma CUDA e é executado em Python. Por fim, o que vai efetivamenteinvocar e gerenciar todo processo de treinamento é o algoritmo do Pix2Pix, que pode serobtido através do repositório online GitHub conforme explicado na publicação originaldesta ferramenta (ISOLA et al., 2017).

Concluída essa configuração do ambiente, resta a aplicação dos parâmetros dispo-níveis para treinamento que também foram estudados anteriormente na seção 7.4. Como oPix2Pix é executado através de linha de comando, os parâmetros são informados atravésde palavras específicas após a chamada principal. O formato geral deste comando estádescrito abaixo:

py -3.6 pix2pix.py --mode [train|test] --input_dir AAAA --output_dirBBBB --which_direction [BtoA|AtoB] --max_epochs 200 --checkpoint CCCC

Onde se destaca:

1. py -3.6 pix2pix.py: É a chamada principal do algoritmo, indicando em qual ver-são da linguagem Python ele será executado.

2. --mode: Este parâmetro indica o modo de execução. A palavra train indica usopara construir a RNA, gerando como saída um modelo de rede neural artificial.

Page 72: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

71

Enquanto isso, a palavra test faz a aplicação de uma RNA que tenha sido geradaanteriormente, gerando como saída imagens correspondentes às entradas fornecidas.

3. --input_dir: Indica o diretório AAAA do qual devem ser lidos os pares de imagenspara treino, ou para aplicação da RNA no modo de teste.

4. --output_dir: Indica o diretório BBBB no qual deve ser salvo o resultado do treinoou o resultado da geração de imagens a partir da RNA.

5. --which_direction: Específico da função de treino, indica se o objetivo do treinoé aprender a converter a imagem da direita para esquerda (AtoB), ou da esquerdapara direita (BtoA).

6. --max_epochs: Outro parâmetro específico do modo de treino que indica a quanti-dade de épocas a serem executadas.

7. --checkpoint: Este parâmetro opcional do modo treino indica um diretório CCCCque contenha uma RNA gerada anteriormente para servir como ponto de partidapara. Isso permite fazer o treino gradativamente, além de possibilitar conferir re-sultados parciais. No modo de teste este parâmetro é obrigatório para indicar ondeestá a RNA a ser aplicada na geração de imagens.

Com tudo isso, foi feito o processo de treinamento utilizando esta linha de comandoe gerando resultados parciais a cada 200 épocas de treino, até atingir a quantidade de1000 épocas. Com o treino efetuado, pode ser aplicada a RNA resultante para criação denovas imagens.

8.1.5 Aplicação da rede neural

A penúltima etapa retoma o modelo de mapeamento da pose, desta vez paraconstruir novas imagens. Como já haviam sido mapeadas as 200 imagens anteriormente,foram selecionadas as 50 imagens que não participaram do treinamento para serem geradasa partir da RNA neste momento. Não foram identificados parâmetros novos na ferramentaPix2Pix que sejam específicos para aplicação nessa etapa: basta utilizar o parâmetro--mode indicando modo test para aplicar a rede neural gerada anteriormente.

Desta forma, utilizou-se o resultado de cada treinamento efetuado anteriormente,gerando um conjunto de 50 imagens de teste para as redes neurais com 200, 400, 800,600 e 1000 épocas de treino. Na Figura 30 encontram-se alguns exemplos das imagensfornecidas como entrada para a RNA criada e as respectivas saídas geradas, sem nenhumajuste efetuado ainda. Ou seja, tanto a imagem-alvo quanto a saída gerada ainda não sãoclassificadas como pixel art. A seguir será visto como é o processo de normalização dessassaídas.

Page 73: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

72

Figura 30: Exemplo de entrada e saídas geradas pela RNA treinada a partir do sprite sheet

ID/ Entrada Imagem-alvo 200 400 600 800 1000 Tipo

1/ Médio

95/ Difícil

29/ Fácil

Fonte: elaborado pelo autor

8.1.6 Normalização para pixel art

A etapa final do processo é a normalização da saída da RNA de forma que assumanovamente as características do pixel art (seção 7.6). Foram propostas duas transforma-ções na imagem de saída da RNA para cumprir este objetivo: ajuste da paleta de cores emudança da escala da imagem.

O primeiro tratamento altera as cores da imagem para ficar de acordo com a paletapresente no sprite sheet original do personagem. Nota-se que o processo de geração daRNA não limita a quantidade de cores, pois vai compondo a saída através de convoluçõesque manipulam os pixels até formar a imagem de saída. A Figura 31 demonstra as 14cores que existem no sprite sheet utilizado neste projeto, as quais devem, portanto, seras únicas existentes no sprite final. Para trabalhar este aspecto, utilizou-se novamentea programação Java, que possui na classe BufferedImage vários recursos para manipularimagens. Essa classe permite escolher o tipo de arquitetura da imagem, ou seja, de qualforma as informações das cores e formas são armazenadas em memória. Uma das tipagensdisponíveis é o TYPE_INT_RGB, que grava cada pixel da imagem no formato RGB.Essa simplicidade o torna bastante prático para manipulações gerais, sendo este o modeloaplicado até agora nas implementações deste projeto. Porém, para essa tarefa de norma-lização convém utilizar o tipo TYPE_BYTE_INDEXED, que registra cada cor distintada imagem apenas uma vez, gerando um índice de cores disponíveis, ou seja, exatamenteo mesmo conceito de uma paleta de cores usada em pixel art que foi visto na seção 2.2.Ao invés de descrever a cor de cada pixel, este modelo indica qual o índice da paleta a seraplicado. Desta forma, para normalizar as cores bastam três comandos principais:

Page 74: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

73

1. Criar um objeto da classe IndexColorModel atribuindo a ele cada cor existente napaleta do personagem.

2. Utilizar este objeto para construir um BufferedImage do tipo TYPE_BYTE_INDEXED.

3. Desenhar sobre este objeto de imagem o sprite a ser normalizado, que neste caso éa saída da RNA. Os mecanismos internos dessa construção vão buscar na paleta acor mais adequada para cada pixel que for inserido na imagem.

Figura 31: Paleta do personagem proposto neste projeto. A cor cinza serve apenas comoplano de fundo para destacar as demais cores.

Fonte: elaborado pelo autor

Com a normalização das cores resolvida, resta adequar as dimensões da imagem,que neste momento ainda se encontra com os 256 pixels de largura e altura que são geradospela saída da RNA. O tamanho desejado do sprite a ser gerado é o tamanho em que foidesenhado o respectivo modelo de pose que serviu de entrada. Dessa forma, o ajuste a seraplicado pode ser obtido efetuando o cálculo inverso ao que foi visto na subseção 8.1.3.Calcula-se portanto 𝐿/256 e 𝐴/256 para descobrir a relação entre a largura L e a alturaA desejados para o sprite e os 256 pixels de saída da RNA.

A programação efetuada para mudar a resolução da imagem também aplica aclasse Java BufferedImage. Obtém-se neste objeto a instância da classe Graphics2D, quepermite configurar o método de desenho de tudo que for inserido na imagem. É possívelentão manipular a escala do desenho através do método scale(double x, double y), bastandoinformar neste método a relação de altura e largura calculados anteriormente. Assim, aodesenhar o resultado da RNA sobre este novo objeto, será aplicada essa escala e a imagemgerada terá exatamente o mesmo tamanho do modelo original que serviu de base para aentrada para rede neural. Os mecanismos internos da classe Graphics2D definem qual opixel mais adequado para ser desenhado em cada ponto da imagem através do métodonearest neighbor que foi citado na seção 6.2. Com estes dois ajustes efetuados, a Figura 32demonstra alguns sprites gerados ao final do processo. Uma planilha de todos os resultadosobtidos neste experimento pode ser observada no Apêndice B.

Page 75: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

74

Figura 32: Exemplos de novos sprites normalizados como pixel art

ID/ Entrada Imagem-alvo 200 400 600 800 1000 Tipo

1/ Médio

95/ Difícil

29/ Fácil

Fonte: elaborado pelo autor

8.2 EXPERIMENTO 2 - COLORAÇÃO DE UM SPRITE

O segundo experimento proposto visa executar o processo em um contexto dife-rente, evidenciando que é possível flexibilizar para outras aplicações e demonstrando umanova lógica de mapeamento das informações. Também espera-se tornar mais claro os pon-tos que podem ser alterados e o impacto da mudança do modelo de mapeamento sobre osresultados gerados. É proposto mapear neste experimento não somente a pose mas tam-bém os contornos do personagem. Desta forma a rede neural já receberá esta informaçãoe o aprendizado se concentrará na distribuição das cores com base nestes contornos e napose. O processo executado é praticamente o mesmo, sendo necessário alterar somente aetapa de geração da entrada para treinamento da rede neural, que é detalhada a seguir.

8.2.1 Adequação da entrada da rede neural

Para atender a proposta deste modelo de mapeamento da pose, identificou-se queos contornos deste personagem estão representados sempre pelo tom mais escuro do sprite.A partir disso, foi escrito um algoritmo para registrar essa informação adicional nas ima-gens de treino. Buscou-se, através dos canais RGB da imagem, os pixels que possuíssemo valor menor que 15 em cada um dos três canais, desta forma, extraindo somente ascores com tonalidade bastante escura, muito próximas ao preto absoluto. Tendo identifi-cado essas regiões da imagem, é possível combiná-las com a pose do personagem. Comoa cor de fundo utilizada até então no desenho da pose já era a cor preta, foi necessáriosubstitui-la neste modelo pela cor branca, para que fosse possível diferenciar dos contor-nos do personagem. Sob esta imagem da pose com o fundo branco, foi feito o desenho doscontornos aplicando o mesmo algoritmo de aumento da escala, de forma que os fossem

Page 76: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

75

desenhadas linhas suaves sem pixels evidentes. A Figura 33 exemplifica como fica estemodelo de mapeamento aplicado a um sprite.

Figura 33: Exemplo de um sprite mapeado conforme o modelo do segundo experimento

Fonte: elaborado pelo autor

8.2.2 Aplicação da rede neural e normalização

A partir dessa modalidade de mapeamento das imagens, foi gerado um novo con-junto de imagens de treino para a RNA. Seguiu-se exatamente a mesma proposta vistaanteriormente no que diz respeito à separação dos grupos de imagens entre treino e teste,quantidade de épocas de treino e metodologia de normalização após aplicação da RNAgerada. Ou seja, a única diferença é o modelo de pose utilizado. Com isso, a Figura 34demonstra exemplos desta entrada, as respectivas imagens de referência que seriam es-peradas como resultado ideal, além dos sprites efetivamente obtidos ao final do processo.Uma planilha contendo todas as imagens resultantes deste segundo experimento pode serobservada no Apêndice C.

Figura 34: Exemplos de sprites do segundo experimento normalizados como pixel art

ID/ Entrada Imagem-alvo 200 400 600 800 1000 Tipo

1/ Médio

95/ Difícil

29/ Fácil

Fonte: elaborado pelo autor

Page 77: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

76

9 RESULTADOS E AVALIAÇÃO

Feito o processo completo de geração de novos sprites, este capítulo propõe verificara efetividade dessa proposta, aplicando as técnicas de avaliação de imagens do Capítulo 3e explorando outros conceitos úteis para interpretação de dados. Inicialmente será vista ametodologia de avaliação abordando conceitos de análise estatística, para então apresentaro processo de obtenção dos dados. Por fim, os resultados específicos são demonstrados ecomentados nas demais seções.

9.1 METODOLOGIA DE AVALIAÇÃO

Enquanto que na subseção 8.1.3 foi utilizado o método qualitativo para separaras imagens entre fáceis, médias e difíceis, nesta seção é retomada esta classificação e sãoaplicadas também as técnicas quantitativas para avaliação. O primeiro passo para efetuaressa investigação dos resultados é definir o método a ser seguido. É proposto então obterinformações (ou escores) que qualifiquem as imagens geradas e com isso utilizar concei-tos de análise estatística para interpretar esses dados, evidenciando as características doprocesso.

A primeira das técnicas a ser aplicada no estudo dos dados é o teste de Kruskal-Wallis, que permite identificar se determinado conjunto de amostras exerce dominânciaestocástica sobre outro conjunto. Ou seja, ele examina se os resultados apresentados noconjunto testado são probabilisticamente superiores a outros resultados (HOLLANDER;WOLFE, 1999). Este método pode ser aplicado para verificar, por exemplo, a influência dacategoria da imagem, identificando variações nos escores entre as imagens fáceis, médiase difíceis.

Além disso, é possível a análise intragrupo e intergrupo de outras formas. Nessesentido, pode ser considerando como agrupamento dos resultados a quantidade de épocasde treino (que variou entre 200 e 1000 repetições) e o tipo de avaliação efetuada (imagembinarizada e paleta de cores). Assim, o método Generalized Equations Estimating (GEE)permite contabilizar a correlação existente entre medidas repetidas dos mesmos indiví-duos, ou seja, quando já há uma noção de progressão dos dados (LIANG; ZEGER, 1986).O método GEE também é conhecido como Modelos Marginais e pode ser consideradouma extensão de Modelos Lineares Generalizados (NELDER; WEDDERBURN, 1989). Ofato de examinar a correlação entre medidas da mesma unidade amostral permite aplicaresta técnica sobre as imagens geradas, pois foram todas criadas a partir de um mesmoconjunto de origem em todos os experimentos. Nesse contexto, a análise intergrupo con-siste em dimensionar a homogeneidade dos experimentos fixando as iterações (épocas de

Page 78: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

77

treino) e variando o método de avaliação, ou seja, evidenciando se os resultados foramsignificativamente melhores ou piores para a avaliação binária ou para o teste da paleta.Enquanto isso, a análise intragrupo consiste em confrontar o número de iterações emcada um dos experimentos e fixar a forma de avaliação, desta forma verificando dentro daavaliação binária e dentro da avaliação da paleta se houve variações relevantes conformemudou-se a quantidade de treino efetuado.

O resultado destes procedimentos de análise é demonstrado através do valor-p, queé uma estatística que sintetiza a probabilidade de um teste de hipótese ser verdadeiro.Neste estudo está sendo verificada a hipótese nula, que é a situação na qual a variaçãonos escores comparados não é significativa o suficiente para concluir que existe relação dedependência entre eles. Normalmente considera-se o nível de significância em 5%, destaforma um valor-p menor do que 0,05 gera evidências para rejeição da hipótese nula epermite assumir que os resultados foram de fato influídos pela variável alterada entre osagrupamentos.

Tendo estabelecidos os conceitos sobre a metodologia de análise dos dados, podeser apresentado o processo de obtenção das informações a serem estudadas. Aplicou-se atécnica de comparação binária (seção 3.1) e de avaliação da paleta (seção 3.2) para todosos cenários gerados no experimento 1 (seção 8.1) e no experimento 2 (seção 8.2). Comohouve duas formas de avaliação e variou-se entre cinco quantidades de épocas (200, 400,600, 800 e 100), há então vinte cenários de teste distintos, que podem ser consideradoscomo os agrupamentos de informações a serem estudados. Além disso, cada um destescenários executou o processo de geração para cinquenta imagens, gerando um total de milavaliações que verificam a diferença entre a imagem ideal esperada e o que foi gerado peloprocesso. Conforme apresentado ao discutir essas técnicas de avaliação no Capítulo 3, essadiferença foi sempre representada por um número que varia entre 0 e 1. Estes serão osdados a serem analisados para verificar se houve algum padrão significativo, sendo possíveldetalhar a seguir três investigações que foram feitas sob esses dados dos experimentos.

9.2 RESULTADOS PELA MODALIDADE DE AVALIAÇÃO

A primeira comparação dos resultados foi feita variando a forma de avaliaçãoe fixando a quantidade de épocas de treino, desta forma verificando se houve variaçãosignificativa dos resultados dependendo do critério de avaliação empregado. Desta forma,a Tabela 1 demonstra esse agrupamento de resultados destacando a média, desvio padrãoe o respectivo valor-p associado a cada cenário comparado. Observa-se que para ambos osexperimentos, em todas as quantidades de iterações de treino, houve variação significativado resultado, denotada pelo valor-p abaixo de 0,05. As médias dos valores foram maioresna avaliação pela paleta de cores, indicando que o desempenho na avaliação binária daimagem foi o melhor em todos os casos por identificar menos diferenças entre as imagens.

Page 79: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

78

Tabela 1: Comparação dos escores por modalidade de avaliação

Experimento Iterações Avaliação Média D.P. Valor-p

Experimento1

200 Binária 0,0340 0,0205 <0,001Paleta 0,3660 0,0543

400 Binária 0,0205 0,0192 <0,001Paleta 0,3430 0,0664

600 Binária 0,0284 0,0210 <0,001Paleta 0,3481 0,0613

800 Binária 0,0229 0,0198 <0,001Paleta 0,3448 0,0647

1000 Binária 0,0336 0,0188 <0,001Paleta 0,3392 0,0547

Experimento 2

200 Binária 0,0133 0,0146 <0,001Paleta 0,3026 0,0611

400 Binária 0,0164 0,0142 <0,001Paleta 0,2984 0,0546

600 Binária 0,0182 0,0146 <0,001Paleta 0,3044 0,0538

800 Binária 0,0153 0,0139 <0,001Paleta 0,2754 0,0549

1000 Binária 0,0131 0,0156 <0,001Paleta 0,2728 0,0708

Fonte: elaborado pelo autor

Essa diferença nos escores obtidos entre as duas modalidades de avaliação ficaevidente também pela distância numérica dos resultados: enquanto que a avaliação daimagem binária identificou no pior caso 3,4% de diferença, a modalidade de comparaçãoda paleta atingiu 36,6% nas mesmas condições. Porém, essa situação comprovada pelaanálise estatística já era esperada pelo fato de que a avaliação da paleta é mais criteriosa,uma vez que trata cada cor como uma comparação separada. Enquanto isso, a verificaçãopela imagem binária tem uma visão mais global da imagem e identifica somente variaçõesde forma ou de luminosidade das informações representadas.

Buscando entender os motivos que contribuíram para esta diferença na grandezados resultados, nota-se que a avaliação de paleta que foi definida na seção 3.2 é compostapela média simples do resultado obtido por cada cor distinta da paleta do personagem.Ou seja, cada cor contribui igualmente para compor esse escore, embora cada cor nãocontribua da mesma forma para formar a totalidade da imagem. Isso pode ser melhorcompreendido retomando a Figura 31 que foi utilizada anteriormente para apresentara paleta de cores do personagem utilizado nos experimentos. Neste exemplo específico,existe apenas 2 pixels da imagem inteira que são da cor verde, os quais representam osolhos do personagem. Além disso, apenas 3 pixels na cor branca, que completa os olhos epode aparecer também onde há um brilho muito intenso a ser representado. Essas duascores aparecem pouco em nos sprites e, embora sejam menos perceptíveis na imagem,participam com o mesmo peso na avaliação da paleta. Além disso, a quantidade reduzidadestas cores também facilita a ocorrência de escores mais altos, pois, conforme foi vistono Capítulo 3, o erro é normalizado independente da grandeza comparada. Por exemplo,

Page 80: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

79

se deveria haver 2 pixels na cor verde e foi gerado somente 1, contabiliza-se um erro de50% nesta cor. Uma forma de melhorar esta técnica de avaliação seria substituir a médiasimples por uma média ponderada, desta forma cada cor poderia contabilizar o escore dediferença proporcionalmente a sua participação na imagem, o que ajudaria a diminuir opeso de erros menores, enquanto aumentaria o rigor para os tons mais notáveis.

Por fim, outro fator que pode ter contribuído para elevar as médias na avaliaçãopela paleta é a quantidade de tons de pele. Havendo 6 tons da cor marrom aumenta-sea chance de a RNA gerar uma cor que será classificada de forma incorreta ao aplicara paleta na etapa de normalização (vista na subseção 8.1.6). Esse fator, no entanto, éuma dificuldade do personagem escolhido para o experimento e realmente pode ocorrerconforme são utilizadas mais tons semelhantes na paleta. Com tudo isso, entende-se que aavaliação binária também está sujeita a estes comportamentos, porém, numa escala bemmenor, obtendo resultados melhores.

Dito isso, a Figura 35 apresenta a visão de resultados do experimento 1 atravésde um diagrama de caixa. Nesta imagem pode ser observada a distribuição dos quartis,valores aberrantes (do inglês outliers) e as medianas, bem como as relações de dependênciaque legitimam o desempenho superior da análise pela imagem binária. Da mesma forma,a Figura 36 traz essas informações para o experimento 2.

Figura 35: Resultados do experimento 1 pela modalidade de avaliação

Fonte: elaborado pelo autor

Page 81: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

80

Figura 36: Resultados do experimento 2 pela modalidade de avaliação

Fonte: elaborado pelo autor

9.3 RESULTADOS PELA QUANTIDADE DE ITERAÇÕES DE TREINO

A Tabela 2 apresenta outra análise, que utiliza como agrupamento o experimentoe o método de avaliação, efetuando o comparativo de resultados entre as diferentes épocasde treino utilizadas, além de demonstrar a comparação entre os dois experimentos. Ana-lisando inicialmente a comparação geral, na coluna "E1 x E2", tanto na avaliação bináriaquanto na avaliação de paleta houve relação significativa (valor-p menor que 0,05) paratodas as épocas de treino. As menores médias são do experimento 2, indicando que esteobteve melhor desempenho de acordo com a métrica de comparação das imagens.

Tabela 2: Comparação dos escores em relação a 200 épocas de treino

Avaliação Iterações Experimento 1 (E1) Experimento 2 (E2) E1 x E2Média D.P. Valor-p Média D.P. Valor-p

Binária

200 0,0340 0,0205 - 0,0133 0,0146 - <0,001400 0,0205 0,0192 <0,001 0,0164 0,0142 0,027 0,017600 0,0284 0,0210 <0,001 0,0182 0,0146 0,001 <0,001800 0,0229 0,0198 <0,001 0,0153 0,0139 0,090 <0,0011000 0,0336 0,0188 0,812 0,0131 0,0156 0,869 <0,001

Paleta

200 0,3660 0,0543 - 0,3030 0,0611 - <0,001400 0,3430 0,0664 <0,001 0,2980 0,0546 0,450 <0,001600 0,3480 0,0613 0,002 0,3040 0,0538 0,769 <0,001800 0,3450 0,0647 0,001 0,2750 0,0549 <0,001 <0,0011000 0,3390 0,0547 <0,001 0,2730 0,0708 <0,001 <0,001

Fonte: elaborado pelo autor

Page 82: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

81

A diferença numérica entre os dois experimentos sugere uma melhoria mais ex-pressiva na avaliação pela paleta. Utilizando a quantidade de 200 épocas como exemplo,a avaliação binária reduziu as diferenças em 2,07% no segundo experimento, e o outrométodo apresentou redução de 6,3% neste caso. Este resultado pode ser devido ao fatode que o experimento 2 já trazia mais informações sobre a imagem desejada na entradada RNA. Como os contornos do personagem já estavam definidos, o processo de geraçãoconcentrou-se em preencher essas áreas, desta forma ocorrendo menos deformações emrelação à imagem esperada. Quanto à melhoria maior na avaliação pela paleta, nota-seque os contornos também auxiliaram a não preencher cores onde não deveria haver, destaforma, estando menos propenso a gerar saídas com diferenças na coloração.

Quanto a variação nas iterações de treino, pode ser observado o valor-p apresentadoentre os dois experimentos, que nesta tabela é calculado utilizando como referência aquantidade de 200 épocas de treino. Verifica-se no experimento 1 diferenças significativasna avaliação binária entre as iterações 400, 600 e 800, sendo que a quantidade de 200gerou a pior média, ou seja, houve melhoria ao aumentar o treino. Enquanto isso, noexperimento 2 a avaliação binária gerou variação relevante apenas entre as iterações 400 e600, onde o melhor resultado apareceu neste caso na quantidade de 200. O mesmo patamarna métrica de avaliação adotada foi atingido somente ao efetuar a quantidade de épocasde 800 e 1000, ou seja, houve uma queda seguida de um aumento no desempenho aoincrementar a quantidade de épocas. A Figura 37 demonstra estes resultados da avaliaçãobinária através do diagrama de caixa.

Figura 37: Comparativo dos resultados da avaliação de imagem binária

Fonte: elaborado pelo autor

Page 83: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

82

Enquanto isso, a investigação da avaliação pela paleta de cores revelou diferençassignificativas no experimento 1 para todas as quantidades de iterações em relação aotreino com 200 épocas. O pior desempenho ocorreu com a quantidade de 200 iterações.De forma semelhante, o experimento 2 também teve o pior desempenho bruto com 200iterações, porém houve variação significativa apenas para a quantidade 800 e 1000 épocas.A Figura 38 demonstra estes resultados através do diagrama de caixa.

Figura 38: Comparativo dos resultados da avaliação de imagem pela paleta

Fonte: elaborado pelo autor

A análise tomando somente a quantidade de 200 épocas como referência já permiteobservar a variação no desempenho de forma mais geral, identificando se de fato houvemelhora ao fazer mais treino. Porém, para uma análise ainda mais crítica convém com-parar as demais quantidades de épocas entre si, permitindo filtrar mais detalhadamenteas faixas onde já se viu que a variação foi significativa. Para este fim foram construídasversões completas desta comparação que são vistas a seguir. Estas matrizes podem serobservadas tanto por linha quanto por coluna, pois os dados de comparações iguais es-tão replicados. Além disso, os valores-p significativos estão destacados em negrito paramelhorar a visualização.

A partir disso, pode ser verificado com mais detalhes cada situação que ocorreu,iniciando pelo experimento 1 que está retratado na Tabela 3. Observando o cenário daavaliação binária, nota-se variação significativa em todas as comparações exceto na rela-ção 200-1000. Aliado a este fato, nota-se que a iteração 400 obteve a menor média e quefoi significativa para todas as comparações, indicando que seu desempenho foi de fato omelhor. Enquanto isso, na avaliação pela paleta deste experimento 1, observou-se ante-

Page 84: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

83

riormente que a quantidade de 200 iterações teve o pior resultado pois obteve a maiormédia e foi suficientemente diferente das demais. A análise completa das demais iteraçõesrevelou que nenhuma delas foi significativamente melhor que as demais. Ou seja, a partirde 200 iterações o desempenho medido por esta técnica de avaliação melhorou mas nãovariou de forma relevante.

Tabela 3: Comparação completa do experimento 1 por quantidade de épocas de treino

Aval. Iter. Experimento 1Média 200 400 600 800 1000

Binária

200 0,0340 - <0,001 <0,001 <0,001 0,812400 0,0205 <0,001 - <0,001 0,016 <0,001600 0,0284 <0,001 <0,001 - <0,001 <0,001800 0,0229 <0,001 0,016 <0,001 - <0,0011000 0,0336 0,812 <0,001 <0,001 <0,001 -

Paleta

200 0,3660 - <0,001 0,002 0,001 <0,001400 0,3430 <0,001 - 0,503 0,796 0,576600 0,3480 0,002 0,503 - 0,551 0,144800 0,3450 0,001 0,796 0,551 - 0,3461000 0,3390 <0,001 0,576 0,144 0,346 -

Fonte: elaborado pelo autor

Analisando agora o panorama geral do experimento 2, na Tabela 4, observa-semelhor a situação ocorrida na avaliação binária, em que o aumento de iterações causounum primeiro momento uma queda na performance nas 400 e 600 iterações, para entãorecuperar o mesmo patamar original ao rodar com 800 e 1000 iterações. Um padrãosemelhante surgiu ao comparar as demais iterações, destacando que a faixa entre 400 e600 iterações teve desempenho abaixo das demais. A quantidade de 800 repetições sófoi significativamente melhor que o resultado com 600 épocas, ao qual está associadaa maior média. Disso conclui-se que somente as quantidade de 200 e 1000 repetiçõestiveram resultado realmente melhor que todas as demais épocas. A explicação para estecomportamento que ora melhora e ora piora ao aumentar as iterações pode ter relaçãocom a descida de gradiente que foi estudada na seção 4.1 do capítulo que abordou osconceitos de redes neurais. Como visto naquele momento, a RNA possui uma taxa deaprendizado que se relaciona com a quantidade de épocas executadas. Se essa taxa émuito baixa, a RNA se aproxima muito devagar da função de custo mínima e demora atéatingir o melhor desempenho. Enquanto isso, se essa taxa de aprendizado for muito alta,pode fazer com que a função de custo ultrapasse o ponto mínimo e comece a retrocedere avançar até atingir o melhor ponto, o que gera flutuações no desempenho. (NIELSEN,2015)

Por outro lado, a investigação dos resultados pela paleta de cores demonstra cla-ramente que a faixa de 800 até 1000 repetições apresentou melhora em relação às demais

Page 85: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

84

quantidades e que elas foram equivalentes entre si. Existem duas explicações possíveispara estes cenário. A primeira é que o gradiente para atender esta modalidade de avali-ação estava baixo, ou seja, a RNA demorou para assimilar o treinamento e melhorar oresultado. A segunda possibilidade é a ocorrência do overfitting (seção 4.2), que normal-mente é ruim pois faz com que a RNA perca flexibilidade, porém, é possível que neste casodo pixel art tenha ajudado. Como muitas vezes o padrão de cores se repete, por exemploao representar o rosto do personagem com um conjunto específico de pixels, pode ser queum estado de overfitting auxilie a gerar na saída uma imagem mais precisa nessas regiõescom mais detalhes.

Tabela 4: Comparação completa do experimento 2 por quantidade de épocas de treino

Aval. Iter. Experimento 2Média 200 400 600 800 1000

Binária

200 0,0133 - 0,027 0,001 0,090 0,869400 0,0164 0,027 - 0,143 0,344 0,015600 0,0182 0,001 0,143 - <0,001 0,001800 0,0153 0,090 0,344 <0,001 - 0,0521000 0,0131 0,869 0,015 0,001 0,052 -

Paleta

200 0,3030 - 0,450 0,769 <0,001 <0,001400 0,2980 0,450 - 0,357 0,002 <0,001600 0,3040 0,769 0,357 - <0,001 <0,001800 0,2750 <0,001 0,002 <0,001 - 0,7211000 0,2730 <0,001 <0,001 <0,001 0,721 -

Fonte: elaborado pelo autor

9.4 RESULTADOS PELA DIFICULDADE DE REPRESENTAÇÃO

Finalmente, a última análise dos resultados pode ser feita agrupando pela categoriade dificuldade, que classificou as imagens entre fáceis, médias e difíceis de acordo como grau de aplicação das habilidades de desenho. Essa avaliação foi feita agrupando oexperimento e o método de avaliação (binária ou paleta) e variando o identificador dedificuldade, sendo representada na Tabela 5.

Houve situações como a avaliação binária do experimento 1 e a avaliação paletado experimento 2 em que as imagens fáceis obtiveram desempenho médio pior do queas difíceis, enquanto que nos outros casos ocorreu o contrário. Além disso, em todas assituações o melhor desempenho ocorreu nas imagens de dificuldade média. Porém, comopode ser observado em todos os cenários o valor-p ficou superior a 0,05. Isso significaque essa diferença numérica dos resultados não é significativa o suficiente para inferir quehouve relação entre a categoria de imagem e o desempenho do processo gerador.

Ou seja, apesar de a análise qualitativa apontar diferenças na dificuldade de re-presentação da imagem pelo artista, o processo transcorreu de forma semelhante entre

Page 86: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

85

Tabela 5: Comparação dos escores por dificuldade

Experimento Avaliação Dificuldade N(%) Média E.P. 1oQ. 2oQ. 3oQ. Valor-p

Experimento 1(Geração completade um sprite)

BináriaFácil 16 (32,00%) 0,0295 0,0031 0,0180 0,0296 0,0370

0,1888Médio 21 (42,00%) 0,0269 0,0023 0,0216 0,0260 0,0334Difícil 13 (26,00%) 0,0274 0,0091 0,0075 0,0144 0,0378

PaletaFácil 16 (32,00%) 0,3617 0,0166 0,3183 0,3460 0,4059

0,3815Médio 21 (42,00%) 0,3342 0,0087 0,3022 0,3219 0,3712Difícil 13 (26,00%) 0,3542 0,0147 0,3077 0,3412 0,3784

Experimento 2(Coloração de umsprite)

BináriaFácil 16 (32,00%) 0,0152 0,0021 0,0096 0,0154 0,0177

0,3743Médio 21 (42,00%) 0,0144 0,0018 0,0091 0,0138 0,0164Difícil 13 (26,00%) 0,0167 0,0064 0,0080 0,0095 0,0129

PaletaFácil 16 (32,00%) 0,3057 0,0143 0,2627 0,2840 0,3471

0,2071Médio 21 (42,00%) 0,2770 0,0099 0,2446 0,2660 0,2995Difícil 13 (26,00%) 0,2945 0,0143 0,2521 0,2814 0,3212

Fonte: elaborado pelo autor

todas as categorias, obtendo escores equivalentes ao final desta técnica de avaliação. Paraentender um dos motivos de não ocorrer essa relação, pode ser comparado o processo degeração da RNA com o processo criativo de um artista. O artista deve considerar diver-sos aspectos da imagem na hora de construir a sua representação, como por exemplo osconceitos de escorço e volumetria abordados na seção 3.3 e na subseção 8.1.3. Enquantoisso, a RNA geradora de imagens abstrai esta complexidade e busca identificar apenas ospadrões existentes. Ou seja, a RNA não aborda diretamente nenhum desses conceitos dedesenho, se limitando a reproduzir as situações vistas durante o treinamento.

Nesse sentido, o modelo de mapeamento de pose proposto na subseção 8.1.2 semostrou suficiente para gerar todas as imagens de forma homogênea entre as categoriasde dificuldade. Por exemplo, houve o cuidado de representar a ocorrência de escorçoatravés do controle da ordem de desenho dos elementos no modelo de pose. Com isso,os membros do corpo que ficavam atrás de outros apareciam desta forma no modelo,o que auxiliou a RNA a conseguir assimilar essa informação e poder representá-la nasimagens consideradas difíceis. Outros aspectos como a fonte de iluminação e volumetriaque não estavam representados diretamente no modelo não foram relevantes o suficientepara prejudicar o desempenho nas imagens difíceis.

Com tudo isso, conclui-se que o processo proposto obteve bom desempenho, atin-gindo métricas de diferença na faixa de 15% até 30% para os cenários verificados. Efetuaro treinamento com mais épocas ajudou a reduzir as diferenças detectadas na maior partedas situações, porém, a quantidade exata que alcança melhores resultados depende do as-pecto que está sendo avaliado. Quanto ao processo de análise, a observação dos resultadosutilizando uma metodologia bem definida permitiu entender o comportamento da RNAgeradora de imagens neste contexto do pixel art e relacionar aos conceitos estudados.Além disso, ajudou a identificar possíveis melhorias no próprio método de verificação. Fi-nalmente, os resultados são promissores para que seja gerado um esboço inicial de imagenscom boa estrutura, sob a qual o artista possa fazer o refinamento e finalização.

Page 87: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

86

10 CONSIDERAÇÕES FINAIS

Conclui-se que o método científico é indispensável para manter o rigor e a organi-zação dos trabalhos no decorrer de um projeto. Estruturar e estudar uma fundamentaçãoteórica nos primeiros capítulos se mostrou importante para construir o processo consci-ente de quais partes podem ser flexibilizadas e quais são cuidados a serem tomados. Esteembasamento teórico que contempla o panorama geral do processo também pode servirde ponto de partida para estudos mais aprofundados em cada área específica. Vários dosconceitos vistos na teoria também foram imprescindíveis na etapa final para entender osresultados obtidos e identificar as melhorias e deficiências desta proposta. Além disso,o trabalho apresentou um método de desenvolvimento claro e objetivo, trazendo comocontribuição científica a possibilidade de ser reproduzido em estudos futuros segundo asdiretivas que foram apresentadas.

Percebe-se também que a problemática que define o tema deste trabalho é bastanteatual e possui relevância. Como foi visto no início dos estudos, a técnica do pixel art setornou ícone de nostalgia e provém um visual único ao jogador, tendo respaldo teóricoque fundamenta essas características. Enquanto isso, o estudo de redes neurais encontraaplicações nos mais variados contextos, e neste projeto foi possível aliar essas técnicasda computação aos conceitos artísticos da indústria de jogos, mais especificamente aoconseguir atingir o estilo de pixel art a partir do processo gerador de uma rede neural. Osconceitos estudados inicialmente parecem não possuir relação direta, porém, no decorrerdo trabalho foram vistos exemplos de aplicações práticas que não só auxiliam a entendere fixar a teoria como ressaltam a importância da troca de conhecimento entre áreas deatuação distintas. Relacionar essas duas áreas se mostrou uma tarefa desafiadora, porém,o estudo prévio forneceu o embasamento necessário. Aliando ferramentas que auxiliam ouso de RNA com técnicas de programação vistas durante a graduação, foi possível atingiros objetivos, que são retomados a seguir.

Neste projeto pretendia-se investigar, propor e implementar um processo de gera-ção de imagens bidimensionais por meio de uma rede neural, inserido no desenvolvimentode jogos com personagens em pixel art. A etapa de investigação foi atendida nos capítulosiniciais de estudo do referencial teórico e das implementações práticas que poderiam serutilizadas. Após isso, foi delineada no Capítulo 7 a proposta principal, com a definiçãode um roteiro de aplicação do processo contendo os cuidados necessários em cada etapa.Por último, a partir do Capítulo 8, foi visto o desenvolvimento prático que possibilitou oentendimento do uso real da proposta e gerou os dados para a análise de resultados.

Quanto aos resultados, foi possível observar relações entre os diferentes cenáriosexperimentados. De modo geral, foi verificado que a maior quantidade de treino auxilia

Page 88: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

87

a aprimorar os resultados, porém o número exato depende de qual aspecto da saída émais relevante para a qualidade desejada. Em especial, destaca-se como contribuição adescoberta de que a classificação das imagens de acordo com a dificuldade de desenho nãoinfluiu de forma significativa nas métricas de saída em nenhum dos cenários estudados. Ouseja, mesmo com a avaliação técnica tendo identificado diferentes graus de complexidadeao representar as imagens, isso foi irrelevante sob a ótica do processo proposto utilizandoredes neurais, que gerou saídas de forma homogênea para todos os casos.

Com o estudo dos resultados e das limitações existentes, foi possível identificardiversas melhorias a implementar em trabalhos futuros. A aplicação, que neste projetose limitou a apenas um personagem em pixel art, pode ser estendida para outros con-textos, como, por exemplo, figuras que não sejam humanoides, como animais ou objetos,bastando que seja criado e testado um modelo de mapeamento de pose adequado a esteuso. Além disso, o algoritmo de normalização que gera efetivamente o pixel art ao final doprocesso partiu de uma tática bastante simplória de correspondência por aproximação dascores que foram geradas pela RNA. Podem ser estudados algoritmos mais complexos queextraiam características da imagem de saída e melhorem com isso o desempenho. Por fim,a avaliação utilizou comparações pixel-a-pixel da imagem, podendo ser aplicadas outrastécnicas de cálculo de similaridade entre imagens, que permitam outros tipos de análisedos resultados.

Finalmente, nota-se que o processo que ficou estabelecido em etapas isoladas eclaramente definidas permite trabalhar melhorias individualmente. Ou seja, uma vez res-peitados os objetivos, método de integração e boas práticas indicados em cada uma dessasetapas, podem ser usadas ou desenvolvidas outras táticas sem comprometer o fluxo deinformações e resultados gerais esperados. Por fim, ressalta-se que esta pesquisa possuiaplicação prática possível no contexto a que se propõe do desenvolvimento de jogos, con-tribui cientificamente com o processo gerador de imagens apresentado e abre opções paracontinuidade da investigação em frentes específicas da proposta.

Page 89: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

88

REFERÊNCIAS

AMBERER. Image-to-Image Translation. 2019. Disponível em: <https://amberer-.gitlab.io/papers in ai/img2img-translation.html>. Acesso em: 24 maio 2019. Citado napágina 47.

BABU, S. C. A 2019 guide to Human Pose Estimation with Deep Learning. 2019.Disponível em: <https://blog.nanonets.com/human-pose-estimation-2d-guide/>. Acessoem: 19 maio 2019. Citado na página 43.

BARROS, P. Aprendizagem de Maquina: Supervisionada ou Não Supervisionada?2016. Disponível em: <https://medium.com/opensanca/aprendizagem-de-maquina-supervisionada-ou-n%C3%A3o-supervisionada-7d01f78cd80a>. Acesso em: 16 maio 2019.Citado 2 vezes nas páginas 34 e 40.

BECKER, A. 12 Principles of Animation (Official Full Series). 2017. Disponível em:<https://youtu.be/uDqjIdI4bF4?t=393>. Acesso em: 26 abr. 2019. Citado na página20.

CAO, Z. et al. OpenPose: realtime multi-person 2D pose estimation using Part AffinityFields. In: arXiv preprint arXiv:1812.08008. [S.l.: s.n.], 2018. Citado 2 vezes nas páginas50 e 51.

CAO, Z. et al. Realtime multi-person 2d pose estimation using part affinity fields. CoRR,abs/1611.08050, 2016. Disponível em: <http://arxiv.org/abs/1611.08050>. Citado napágina 50.

CHAN, C. et al. Everybody dance now. CoRR, abs/1808.07371, 2018. Citado na página15.

CONLEY, J. et al. Use of a game over: emulation and the video game industry, a whitepaper. Nw. J. Tech. & Intell. Prop., HeinOnline, v. 2, p. 261, 2003. Citado na página 46.

COOK, D. Design Testing: The use of addiction metrics to force rapid evolution ofinnovative game designs. 2019. Disponível em: <http://www.lostgarden.com/2005/04-/design-testing-use-of-addiction.html>. Acesso em: 13 abr. 2019. Citado 2 vezes naspáginas 16 e 17.

CRAWFORD, G. Video Gamers. [S.l.: s.n.], 2012. Citado na página 16.

EDWARDS, B. Drawing on the Right Side of the Brain: The Definitive, 4th Edition.Penguin Publishing Group, 2012. ISBN 9781101561805. Disponível em: <https:/-/books.google.com.br/books?id=ofXvl2eDsnwC>. Citado 3 vezes nas páginas 25, 26e 27.

FA, D. L. K. 2xSaI : The advanced 2x Scale and Interpolation engine. 1999. Disponívelem: <https://web.archive.org/web/20070307160526/http://elektron.its.tudelft.nl-/˜dalikifa/>. Acesso em: 24 maio 2019. Citado na página 46.

Page 90: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

89

FREITAS, C. E. et al. Um processo Ágil multidisciplinar de desenvolvimento de jogospara estúdios independentes. XVI SBGames, Curitiba, PR, p. 1232–1235, 11 2017.Citado 3 vezes nas páginas 13, 17 e 18.

GOODFELLOW, I.; BENGIO, Y.; COURVILLE, A. Deep Learning. [S.l.]: MIT Press,2016. http://www.deeplearningbook.org. Citado na página 41.

GOODFELLOW, I. J. et al. Generative adversarial nets. In: Proceedings of the 27thInternational Conference on Neural Information Processing Systems - Volume 2.Cambridge, MA, USA: MIT Press, 2014. (NIPS’14), p. 2672–2680. Disponível em:<http://dl.acm.org/citation.cfm?id=2969033.2969125>. Citado 2 vezes nas páginas 40e 42.

GUPTA, V. Deep Learning based Human Pose Estimation using OpenCV ( C++ /Python ). 2018. Disponível em: <https://www.learnopencv.com/deep-learning-based-human-pose-estimation-using-opencv-cpp-python/>. Acesso em: 21 maio 2019. Citadona página 45.

GUTTAG, K. Transcript of Conference on Delphi TI Net. 1993. Disponível em:<https://groups.google.com/forum/!msg/comp.sys.ti/QlLThkrm8Po/GtnkyhtF4nMJ>.Acesso em: 07 jun. 2019. Citado na página 21.

HAYKIN, S. Redes Neurais: Princípios e Prática. [S.l.]: Artmed, 2007. ISBN9788577800865. Citado 3 vezes nas páginas 28, 29 e 30.

HOLLANDER, M.; WOLFE, D. Nonparametric Statistical Methods. 3. ed. New York,N.Y.: John Wiley & Sons, 1999. (Wiley Series in Probability and Statistics). Citado napágina 76.

ISOLA, P. et al. Image-to-image translation with conditional adversarial networks. 2017IEEE Conference on Computer Vision and Pattern Recognition (CVPR), p. 5967–5976,2017. Citado 4 vezes nas páginas 14, 53, 54 e 70.

JURIO, A. et al. Image magnification using interval information. IEEE Transactions onImage Processing, IEEE, v. 20, n. 11, p. 3112–3123, 2011. Citado na página 46.

KARRAS, T.; LAINE, S.; AILA, T. A style-based generator architecture for generativeadversarial networks. CoRR, abs/1812.04948, 2018. Citado 2 vezes nas páginas 15 e 49.

KOGAN, G.; TSENG, F.; REFSGAARD, A. Pix2Pix. 2016. Disponível em: <https:-//ml4a.github.io/guides/Pix2Pix/>. Acesso em: 03 set. 2019. Citado na página59.

KOPF, J.; LISCHINSKI, D. Depixelizing pixel art. ACM Transactions on Graphics(Proceedings of SIGGRAPH 2011), v. 30, n. 4, p. 99:1 – 99:8, 2011. Citado na página46.

KUO, M.-H.; YANG, Y.-L.; CHU, H.-K. Feature-aware pixel art animation. Comput.Graph. Forum, The Eurographs Association &#38; John Wiley &#38; Sons, Ltd.,Chichester, UK, v. 35, n. 7, p. 411–420, out. 2016. ISSN 0167-7055. Disponível em:<https://doi.org/10.1111/cgf.13038>. Citado 2 vezes nas páginas 13 e 46.

Page 91: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

90

LEE, H. et al. Convolutional deep belief networks for scalable unsupervised learning ofhierarchical representations. In: Proceedings of the 26th Annual International Conferenceon Machine Learning. New York, NY, USA: ACM, 2009. (ICML ’09), p. 609–616. ISBN978-1-60558-516-1. Disponível em: <http://doi.acm.org/10.1145/1553374.1553453>.Citado na página 38.

LIANG, K.-Y.; ZEGER, S. L. Longitudinal data analysis using generalized linearmodels. Biometrika, v. 73, n. 1, p. 13–22, 04 1986. ISSN 0006-3444. Disponível em:<https://doi.org/10.1093/biomet/73.1.13>. Citado na página 76.

LIU, M.-Y. et al. Few-shot unsupervised image-to-image translation. arXiv preprintarXiv:1905.01723, 2019. Citado na página 48.

MAZZOLENI, A. Scale2x. 2001. Disponível em: <https://www.scale2x.it/>. Acesso em:24 maio 2019. Citado na página 46.

MELO, C. P. de. O Corpo Humano Em Escorço. Tese (Doutorado) — Universidade deLisboa, 2011. Citado na página 68.

NELDER, J. A.; WEDDERBURN, R. W. M. Generalized linear models. Journal of theRoyal Statistical Society: Series A (General), v. 135, n. 3, p. 370–384, 1989. Disponívelem: <https://rss.onlinelibrary.wiley.com/doi/abs/10.2307/2344614>. Citado na página76.

NEWELL, A.; YANG, K.; DENG, J. Stacked hourglass networks for human poseestimation. In: Computer Vision – ECCV 2016. [S.l.: s.n.], 2016. Citado na página 44.

NIELSEN, M. Neural Networks and Deep Learning. Determination Press, 2015.Disponível em: <http://neuralnetworksanddeeplearning.com/index.html>. Citado 5vezes nas páginas 29, 30, 34, 57 e 83.

OMERNICK, M. Creating the Art of the Game. Pearson Education, 2004. (NewRiders Games). ISBN 9780132705073. Disponível em: <https://books.google.com.br-/books?id=27-4GmyMBGEC>. Citado na página 13.

PATTERSON, J.; GIBSON, A. Deep Learning: A Practitioner’s Approach. [S.l.]:O’Reilly Media, 2017. ISBN 9781491914212. Citado 2 vezes nas páginas 36 e 39.

PRESSMAN, R.; MAXIM, B. Engenharia De Software: UMA ABORDAGEMPROFISSIONAL. MCGRAW HILL - ARTMED, 2016. ISBN 9788580555332. Disponívelem: <https://books.google.com.br/books?id=smNFvgAACAAJ>. Citado 2 vezes naspáginas 13 e 16.

RADFORD, A.; METZ, L.; CHINTALA, S. Unsupervised Representation Learning withDeep Convolutional Generative Adversarial Networks. 2015. Citado na página 41.

RAJ, B. An Overview of Human Pose Estimation with Deep Learning. 2019. Disponívelem: <https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b>. Acesso em: 19 maio 2019. Citado na página43.

Page 92: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

91

RAND, W. M. Objective criteria for the evaluation of clustering methods. Journalof the American Statistical Association, Taylor & Francis, v. 66, n. 336, p. 846–850,1971. Disponível em: <https://www.tandfonline.com/doi/abs/10.1080/01621459.1971-.10482356>. Citado na página 22.

RIDPATH, C.; CHISHOLM, W. Techniques For Accessibility Evaluation And RepairTools. 2000. Disponível em: <https://www.w3.org/TR/AERT/color-contrast>. Acessoem: 29 set. 2019. Citado na página 23.

SAHA, S. A Comprehensive Guide to Convolutional Neural Networks — the ELI5way. 2018. Disponível em: <https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53>. Acesso em: 11 maio 2019.Citado 4 vezes nas páginas 35, 36, 37 e 38.

SANDERSON, G. Gradient descent, how neural networks learn | Deep learning, chapter2. 2017. Disponível em: <https://www.youtube.com/watch?v=IHZwWFHWa-w>.Acesso em: 6 maio 2019. Citado na página 34.

SCHELL, J. The Art of Game Design: A Book of Lenses. San Francisco, CA, USA:Morgan Kaufmann Publishers Inc., 2008. ISBN 0-12-369496-5. Citado 2 vezes naspáginas 16 e 18.

SHARMA, A. Understanding Activation Functions in Neural Networks). 2017.Disponível em: <https://medium.com/the-theory-of-everything/understanding-activation-functions-in-neural-networks-9491262884e0>. Acesso em: 5 maio 2019. Citado3 vezes nas páginas 30, 31 e 32.

SILBER, D. Pixel Art for Game Developers. Taylor & Francis, 2015. ISBN 9781482252309.Disponível em: <https://books.google.com.br/books?id=n0zRrQEACAAJ>. Citado 3vezes nas páginas 18, 19 e 20.

SILVA, T. An intuitive introduction to Generative Adversarial Networks (GANs).2018. Disponível em: <https://medium.freecodecamp.org/an-intuitive-introduction-to-generative-adversarial-networks-gans-7a2264a81394>. Acesso em: 16 maio 2019. Citado2 vezes nas páginas 41 e 42.

STEPIN, M. hq4x Magnification Filter. 2001. Disponível em: <https://web.archive.org-/web/20131216092117/http://www.hiend3d.com/hq4x.html>. Acesso em: 24 maio 2019.Citado 3 vezes nas páginas 46, 51 e 52.

THOMAS, F.; JOHNSTON, O. The Illusion of Life: Disney Animation. Disney Editions,1981. Disponível em: <https://books.google.com.br/books?id=k5TMoAEACAAJ>.Citado na página 20.

TOMPSON, J. et al. Efficient object localization using convolutional networks. In: TheIEEE Conference on Computer Vision and Pattern Recognition (CVPR). [S.l.: s.n.],2015. Citado na página 44.

TOSHEV, A.; SZEGEDY, C. Deeppose: Human pose estimation via deep neuralnetworks. In: The IEEE Conference on Computer Vision and Pattern Recognition(CVPR). [S.l.: s.n.], 2014. Citado na página 43.

Page 93: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

92

TRIPATHY, S.; KANNALA, J.; RAHTU, E. Learning image-to-image translation usingpaired and unpaired training samples. arXiv preprint arXiv:1805.03189, 2018. Citadona página 48.

WEI, S.-E. et al. Convolutional pose machines. In: The IEEE Conference on ComputerVision and Pattern Recognition (CVPR). [S.l.: s.n.], 2016. Citado na página 44.

ZHU, J.-Y. et al. Unpaired image-to-image translation using cycle-consistent adversarialnetworkss. In: Computer Vision (ICCV), 2017 IEEE International Conference on. [S.l.:s.n.], 2017. Citado na página 48.

Page 94: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

Apêndices

Page 95: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

94

A SPRITE SHEET COMPLETO

1 2 3 4 5 6 7 8

16 15 14 13 12 11 10 9

19 20 21 22 23 24 25 26

17 18

27 28 29 30 31

34 35 36 37 38

32 33

46

41 40

45 44 43

39

42

47 48 49 50 51

52 53 54 55 56

57 58 59 60 61 62

69 70 71 72 73 74 75 63 64 65 66 67 68

76 77 78 79 80 81 82 83 84

85 86 87 88

89 90 91 92 93 94 95 96

Page 96: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

95

196 197 198 199 200

185 186 187 188 189 190 191 192 193 194 195

171 172 173 174 175 176 177 178 179 180 181 182 183 184

161 162 163 164 165 166 167 168 169 170

151 152 153 154 155 156 157 158 159 160

140 141 142 143 144 145 146 147 148 149 150

130

131 132 133 134 135 136 137 138

127

128 129

119

120 121 122 123 124 125 126

114

115 116 117 118

110

111 112 113

97 98 99

139

100 101 102 103 104 105 106 107 108 109

Page 97: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

96

B RESULTADOS - EXPERIMENTO 1

ID Entrada Alvo 200 400 600 800 1000 ID Entrada Alvo 200 400 600 800 1000

1 90

12 93

16 95

22 97

25 104

27 108

29 111

32 112

33 114

46 117

48 118

49 120

50 123

53 126

54 128

59 137

60 139

62 142

64 153

65 170

67 171

80 172

83 182

85 192

88 193

Page 98: GERAÇÃOAUTOMATIZADADEIMAGENSEM PIXELART …

97

C RESULTADOS - EXPERIMENTO 2

ID Entrada Alvo 200 400 600 800 1000 ID Entrada Alvo 200 400 600 800 1000

1 90

12 93

16 95

22 97

25 104

27 108

29 111

32 112

33 114

46 117

48 118

49 120

50 123

53 126

54 128

59 137

60 139

62 142

64 153

65 170

67 171

80 172

83 182

85 192

88 193