Gerando imagens de texto usando o AttnGAN

Olá Habr! Apresento a você a tradução do artigo " AttnGAN: geração de texto refinado para imagem com redes adversórias generativas atencionais " de Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe Gan, Xiaolei Huang, Xiaodong He.

Nesta publicação, quero falar sobre meus experimentos com a arquitetura AttnGAN para gerar imagens a partir de uma descrição de texto. Essa arquitetura já foi mencionada em Habré após o lançamento do artigo original no início de 2018, e eu estava interessado na pergunta - quão difícil será treinar você mesmo esse modelo?

Descrição da arquitetura


Para aqueles que não estão familiarizados com o AttnGAN e o clássico GAN, descreverei brevemente a essência. O GAN clássico consiste em pelo menos duas redes neurais - um gerador e um discriminador. A tarefa do gerador é gerar alguns dados (imagens, texto, áudio, vídeo, etc.) que são "semelhantes" aos dados reais do conjunto de dados. A tarefa do discriminador é avaliar os dados gerados, uma tentativa de compará-los com os reais e rejeitá-los. O resultado rejeitado do trabalho do gerador o estimula a gerar o melhor resultado para "enganar" o discriminador, que, por sua vez, está aprendendo a reconhecer melhor as falsificações.

Existem muitas modificações no GAN, e os autores do AttnGAN abordaram a questão da arquitetura de maneira bastante criativa. O modelo consiste em 9 redes neurais que são afinadas para interação. Parece algo como isto:



Os codificadores de texto e imagem (codificador de texto / imagem) convertem a descrição original do texto e as imagens reais em algum tipo de representação interna. Caracteristicamente, nesse caso, o texto é considerado como uma sequência de palavras individuais, cuja apresentação é processada juntamente com a representação da imagem, o que permite comparar palavras individuais com partes individuais da imagem. Dessa maneira, o mecanismo de atenção chamado pelos autores do artigo DAMSM é implementado.

Fca - cria uma representação concisa da cena geral na imagem, com base na descrição completa do texto. O valor de C na saída é concatenado com um vetor da distribuição normal de Z, que determina a variabilidade da cena. Esta informação é a base para a operação do gerador.

O gerador é a maior rede composta por três níveis. Cada nível produz imagens com resolução cada vez maior, de 64 * 64 a 256 * 256 pixels, e o resultado do trabalho em cada nível é ajustado usando as redes de atenção da Fattn, que transportam informações sobre a localização correta de objetos individuais na cena. Além disso, os resultados em cada nível são verificados por três discriminadores que trabalham separadamente, que avaliam o realismo da imagem e sua consistência com a ideia geral da cena.

Treinamento


Para testar a arquitetura, usei o conjunto de dados CUB padrão com fotos e descrições textuais de pássaros.

Todo o modelo é treinado em duas etapas. O primeiro estágio é o pré-treinamento das redes DAMSM, que consiste em um codificador de texto e imagem. Durante esse estágio, conforme descrito acima, um "mapa de atenção" é criado com a seguinte aparência:



Como pode ser visto na figura, o DAMSM consegue capturar com muita precisão a relação entre palavras individuais da descrição do texto e dos elementos da imagem. É especialmente fácil para o modelo reconhecer cores. Devo dizer que o sistema não possui nenhuma informação adicional sobre o que é "vermelho", "amarelo" ou "asas", "bico". Existe apenas um conjunto de textos e imagens.

O treinamento DAMSM ocorre sem problemas, o tempo de treinamento neste conjunto de dados é de 150 a 200 eras, o que corresponde a várias horas em uma GPU de alta potência.

O segundo e principal estágio é treinar o gerador usando o modelo DAMSM.
O gerador em cada nível gera uma imagem de maior resolução - é assim:



O treinamento do gerador leva muito mais tempo e nem sempre é tão estável; o tempo de treinamento recomendado neste conjunto de dados é de 300 a 600 épocas, o que corresponde a cerca de 4-8 dias em uma GPU de alta potência.

O principal problema no treinamento do gerador, na minha opinião, é a falta de métricas suficientemente boas que nos permitam avaliar a qualidade do treinamento de uma maneira mais formal. Estudei várias implementações da pontuação Inception, que, em teoria, está posicionada como uma métrica universal para essas tarefas - mas elas não me pareceram convincentes o suficiente. Se você decidir treinar um gerador desse tipo, precisará monitorar constantemente o progresso do treinamento visualmente, de acordo com resultados intermediários. No entanto, essa regra é verdadeira para essas tarefas, o controle visual é sempre necessário.

Resultados


Agora a parte divertida. Usando o modelo treinado, tentaremos gerar imagens, começaremos com frases simples:



Vamos tentar descrições mais complexas:



Todas as descrições de texto são inventadas, intencionalmente não usei frases do conjunto de dados para testes. Obviamente, nem todas essas imagens foram obtidas na primeira tentativa. O modelo está errado, os próprios autores estão falando sobre isso. À medida que o texto de descrição e os elementos a serem exibidos aumentam, fica cada vez mais difícil manter o realismo de toda a cena. No entanto, se você deseja usar algo semelhante na produção, por exemplo, gerar imagens de determinados objetos para um designer, você pode treinar e personalizar o sistema de acordo com seus requisitos, o que pode ser bastante rigoroso.

Para cada descrição de texto, você pode gerar muitas opções de imagem (incluindo as irreais), para que sempre haja muito por onde escolher.

Detalhes técnicos


Neste trabalho, usei uma GPU de baixa potência para prototipagem e um servidor do Google Cloud com o Tesla K80 instalado durante a fase de treinamento.

O código fonte foi retirado do repositório dos autores do artigo e passou por uma refatoração séria. O sistema foi testado no Python 3.6 com o Pytorch 0.4.1

Obrigado pela atenção!

Artigo original: AttnGAN: geração de texto refinado para geração de imagens com redes adversas generativas de atenção , 2018 - Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe Gan, Xiaolei Huang, Xiaodong He.

Source: https://habr.com/ru/post/pt424957/


All Articles