O que são redes adversárias generativas (GANs)?

Autora

Jobit Varughese

Technical Content Writer

IBM

O que é uma GAN?

Uma rede adversária generativa, ou GAN, é um modelo de aprendizado de máquina projetado para gerar dados realistas, ao aprender padrões com conjuntos de dados de treinamento existentes. Ela opera dentro de um framework de aprendizado não supervisionado, usando técnicas de deep learning, onde duas redes neurais trabalham em oposição: uma gera dados, enquanto a outra avalia se os dados são reais ou gerados.

Embora o deep learning tenha se destacado em tarefas como classificação de imagens e reconhecimento de fala, gerar novos dados, incluindo imagens ou texto realistas, tem sido mais desafiador devido à complexidade dos cálculos em modelos generativos.

As GANs, introduzidas por Ian Goodfellow em seu artigo de 2014 Generative Adversarial Nets, oferecem uma solução revolucionária para esse desafio.1 Esse framework inovador transformou a modelagem generativa, facilitando o desenvolvimento de modelos e algoritmos capazes de criar dados de alta qualidade e realistas.

Como funcionam as GANs?

Uma arquitetura de GAN consiste em duas redes neurais profundas: a rede geradora e a rede discriminadora. O processo de treinamento da GAN envolve o gerador iniciando com entradas aleatórias (ruído) e criando dados sintéticos, como imagens, texto ou som que imitam os dados reais do conjunto de treinamento fornecido. O discriminador avalia as amostras geradas e os dados do conjunto de treinamento e decide se são reais ou falsos. Ele atribui uma pontuação entre 0 e 1: uma pontuação de 1 significa que os dados parecem reais e uma pontuação de 0 significa que são falsos. A retropropagação é, então, usada para otimizar ambas as redes. Isso significa que o gradiente da função de perda é calculado de acordo com os parâmetros da rede, e esses parâmetros são ajustados para minimizar a perda. Em seguida, o gerador usa o feedback do discriminador para melhorar, tentando criar dados mais realistas.

A estrutura de uma GAN

O treinamento de uma arquitetura de GAN envolve um processo adversário. O modelo gerador tenta enganar o modelo discriminativo para classificar dados falsos como reais, enquanto o discriminador melhora continuamente sua capacidade de distinguir entre dados reais e falsos. Esse processo é guiado por funções de perda que medem o desempenho de cada rede. A perda do gerador mede o quão bem o gerador pode enganar o discriminador fazendo-o acreditar que seus dados são reais. Uma baixa perda do gerador significa que o gerador está criando dados realistas com sucesso. A perda do discriminador mede o quão bem o discriminador pode distinguir entre dados falsos e dados reais. Uma baixa perda do discriminador indica que ele identificou com sucesso dados falsos.  

Por exemplo, em uma GAN treinada para gerar imagens de cachorros, o gerador transforma ruído aleatório em imagens que lembram cachorros, enquanto o discriminador avalia essas imagens em relação a fotos reais de cachorros do conjunto de treinamento.

Com o tempo, esse processo adversário impulsiona a melhoria de ambas as redes. Isso permite que o gerador crie dados convincentes e realistas que se assemelham ao conjunto de dados de treinamento original, enquanto o discriminador aprimora sua capacidade de identificar diferenças sutis entre dados reais e falsos. 

Tipos de GANs

Vanilla GANs

As Vanilla GANs são a forma básica de redes adversárias generativas que incluem um gerador e um discriminador engajado em um jogo adversário típico. O gerador cria amostras falsas, e o discriminador tem como objetivo distinguir entre as amostras de dados reais e falsas. As Vanilla GANs utilizam perceptrons multicamadas simples (MLPs) ou camadas de neurônios tanto para o gerador quanto para o discriminador, facilitando a implementação. Esses MLPs processam dados e classificam entradas para distinguir objetos conhecidos em um conjunto de dados. No entanto, eles são conhecidos por serem instáveis durante o treinamento e muitas vezes exigem ajuste cuidadoso de hiperparâmetros para alcançar bons resultados.

GANs condicionais (cGANs)

Uma cGAN é um tipo de rede adversária generativa que inclui informações adicionais, chamadas de "rótulos" ou "condições", tanto para o gerador quanto para o discriminador.2 Esses rótulos fornecem contexto, permitindo que o gerador produza dados com características específicas com base na entrada fornecida, em vez de depender apenas de ruído aleatório, como nas GANs comuns. Essa geração controlada torna as cGANs úteis para tarefas que exigem controle preciso sobre a saída. As cGANs são amplamente usadas para gerar imagens, texto e dados sintéticos adaptados a objetos, tópicos ou estilos específicos. Por exemplo, uma cGAN pode converter uma imagem em preto e branco em uma imagem colorida condicionando o gerador a transformar a escala de cinza no modelo de cores vermelho, verde e azul (RGB). Da mesma forma, ela pode gerar uma imagem a partir de entradas de texto, como "criar uma imagem de um gato branco peludo", produzindo saídas que se alinham com a descrição fornecida.

GAN convolucional profunda (DCGAN)

A GAN convolucional profunda (DCGAN) utiliza redes neurais convolucionais tanto para o gerador quanto para o discriminador. O gerador recebe ruído aleatório como entrada e o transforma em dados estruturados, como imagens. Ele usa convoluções transpostas (ou deconvoluções) para aprimorar o ruído de entrada em uma saída maior e mais detalhada, "aumentando o zoom" no ruído para criar uma imagem significativa. O discriminador usa camadas convolucionais padrão para analisar os dados de entrada. Essas camadas ajudam o discriminador a "reduzir o zoom" e analisar a estrutura geral e os detalhes dos dados para tomar uma decisão. Essa abordagem torna as DCGANs eficazes para gerar imagens de alta qualidade e outros dados estruturados. 

StyleGAN

A StyleGAN é um tipo de rede adversária generativa que produz imagens de alta resolução, com resolução de 1024 x 1024. As StyleGANs são treinadas usando um conjunto de dados de imagens do mesmo objeto. A rede do gerador é composta por várias camadas, cada uma responsável por adicionar diferentes níveis de detalhes à imagem, desde funcionalidades básicas até texturas complexas. A rede do discriminador também possui múltiplas camadas, avaliando o nível de detalhe e estimando a qualidade geral.

CycleGAN

Em uma CycleGAN, o gerador e o discriminador são treinados de maneira cíclica. Ela foi projetada para tradução de imagem para imagem usando conjuntos de dados não emparelhados. Ela funciona traduzindo uma imagem para outro estilo, como uma pintura, usando um gerador e, em seguida, traduzindo-a de volta ao estilo original usando um gerador reverso. Este método ajuda a garantir que a imagem reconstruída se assemelha à original por meio de um processo chamado consistência do ciclo. Esses resultados são especificamente úteis para tarefas como transferência de estilo de imagem e aprimoramento de imagem. 

GAN de pirâmide laplaciana (LAPGAN)

Uma GAN de pirâmide laplaciana (LAPGAN) foi projetada para gerar imagens de alta qualidade refinando-as em múltiplas escalas. Ela começa gerando uma imagem de baixa resolução e, em seguida, adiciona progressivamente mais detalhes em resoluções mais altas usando uma série de GANs. Essa abordagem multiescala, conhecida como pirâmide laplaciana, permite à LAPGAN lidar com a complexidade de gerar imagens de alta resolução de forma mais eficaz.

DiscoGAN

A DiscoGAN é usada para aprender relações entre domínios sem a necessidade de dados de treinamento emparelhados. Ela usa dois geradores e dois discriminadores para traduzir imagens de um domínio para outro e vice-versa, ajudando a garantir que a imagem reconstruída se assemelhe à original por meio da consistência do ciclo. Isso torna a DiscoGAN eficaz para tarefas como tradução de imagem para imagem, transferência de estilo e aprimoramento de imagens, mesmo com conjuntos de dados não emparelhados. 

As mais recentes tendências em IA, trazidas a você por especialistas

Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Aplicações das GANs

As GANs podem ser usadas em diversas aplicações de computer vision, geração de imagens, detecção de objetos, tradução de imagem para imagem, geração de texto para imagem, previsão do próximo quadro no vídeo e muito mais.

Geração de imagens

As GANs são usadas para gerar imagens fotorrealistas de amostras que nunca existiram e para criar visuais a partir de descrições textuais, permitindo a criação de imagens com base em atributos ou cenas especificados. A BigGAN, treinada em grandes conjuntos de dados, gera dados com base em classes ou condições específicas e alcança resultados de última geração na geração de imagens.3 É utilizada em diversas aplicações, incluindo síntese, colorização e reconstrução de imagens. Por exemplo, a GAN-BVRM, um novo método de reconstrução visual bayesiano baseado na GAN, utiliza um classificador para decodificar dados de imagens de ressonância magnética funcional (fMRI). Um gerador de BigGAN pré-treinado produz imagens específicas da categoria, e modelos de codificação selecionam imagens que se alinham com a atividade cerebral, alcançando maior naturalidade e fidelidade na reconstrução de estímulos de imagens. As GANs estão fazendo avanços significativos na área da saúde ao gerar dados médicos realistas, como ressonância magnética, tomografia computadorizada e raios-X, para treinamento e análise, e criando novas estruturas moleculares para descoberta de medicamentos. 

Superresolução da imagem

As GANs podem aprimorar imagens de baixa resolução ao gerar variações de alta resolução, melhorando a qualidade e os detalhes das imagens. Por exemplo, a StyleGAN2 da NVIDIA gera imagens de alta resolução e altamente realistas, com controle refinado sobre atributos como conteúdo, identidade, expressão e postura, permitindo que os usuários criem e manipulem imagens para aplicações artísticas e práticas.4

Tradução de imagem para imagem

As GANs realizam a transferência de estilo e a edição de imagens, transformando imagens de um domínio para outro, como transformar um esboço em uma versão desenhada. Por exemplo, as CycleGANs são usadas para converter fotos em pinturas. Esse processo envolve um gerador que converte imagens do domínio de origem (fotografias) para o domínio-alvo (pinturas) e vice-versa por meio de uma restrição cíclica, ajudando a garantir que o mapeamento mantenha a coerência semântica. 

Redestinação de vídeo 

As GANs são usadas para redirecionamento de vídeo não supervisionado, adaptando o conteúdo de vídeo para se ajustar a diferentes proporções e formatos e, ao mesmo tempo, preservando informações visuais importantes. As Recycle-GANs utilizam uma estratégia cíclica semelhante à que é comumente encontrada nas CycleGANs, aplicando-a especificamente aos dados de vídeo. Por exemplo, as Recycle-GANs podem converter um vídeo amplo em um formato quadrado para plataformas de redes sociais, ajudando a garantir que os principais elementos e movimentos do vídeo permaneçam intactos.5

Manipulação de atributos faciais 

As GANs permitem a alteração de funcionalidades faciais em imagens, como mudança de expressões ou efeitos de envelhecimento, mostrando seu potencial em aplicações de entretenimento e redes sociais. A StyleGAN opera aplicando uma modificação em camadas nas amostras geradas com base em "estilos" extraídos do espaço latente. Esse processo possibilita o controle intuitivo sobre vários atributos, incluindo cor de cabelo e expressão facial, possibilitando que os usuários manipulem os rostos de acordo com funcionalidades específicas sem a necessidade de ajustes manuais. Por exemplo, a StyleGAN pode ser usada para mudar a cor do cabelo de uma pessoa de marrom para roxo ou para adicionar um sorriso a uma expressão facial neutra. 

Detecção de objetos 

As GANs são usadas na detecção de objetos para melhorar a qualidade e a diversidade dos dados de treinamento, o que pode melhorar significativamente o desempenho dos modelos de detecção de objetos. Ao gerar imagens sintéticas que se assemelham a dados reais, as GANs aumentam o conjunto de dados de treinamento, ajudando o modelo a generalizar melhor e a ter um desempenho mais preciso. Por exemplo, pesquisas mostraram que o desempenho de modelos de deep learning para detecção de objetos se deteriora significativamente quando aplicados a imagens com qualidade reduzida, como aquelas afetadas por ruído, desfoque ou outras distorções.6 O artigo apresenta o framework GAN-DO, que utiliza GANs para aumentar a robustez dos modelos de detecção de objetos em relação à qualidade da imagem variável, sem adicionar complexidade à arquitetura do modelo ou à velocidade de inferência. Resultados experimentais demonstram que a GAN-DO supera os desempenho dos métodos tradicionais de ajuste fino, levando a uma melhor precisão na detecção de objetos.

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Outros modelos generativos para geração de dados sintéticos

Além das GANs, os autocodificadores variacionais (VAEs) são outro modelo de deep learning que pode criar novas amostras de dados que imitam dados do mundo real. Os VAEs são modelos probabilísticos, o que significa que representam dados em termos de distribuições de probabilidade, que descrevem a probabilidade de diferentes resultados ou valores ocorrerem nos dados. Esses modelos são projetados para aprender padrões com um conjunto de dados de treinamento e criar novos dados que são variações do conjunto de dados original, em vez de réplicas exatas. Um autocodificador variacional (VAE) contém dois componentes. O codificador (modelo de reconhecimento) compacta dados de entrada complexos, como imagens, em dados mais simples de baixa dimensão, e o decodificador (modelo generativo) recria a entrada original da representação compactada. Os VAEs também podem gerar amostras completamente novas de aprendizado de dados a partir dos padrões do conjunto de dados de treinamento. Os VAEs normalmente produzem saídas mais borradas e menos nítidas, mas são mais estáveis para treinar, enquanto as GANs geram saídas mais nítidas e realistas, mas são mais difíceis para treinar devido à instabilidade.

Em última análise, a escolha entre VAEs e GANs depende dos requisitos específicos da tarefa, como a qualidade da saída desejada, a estabilidade do treinamento e a necessidade de representações latentes interpretáveis, tornando cada modelo único e valioso em diferentes aplicações.

Benefícios e desafios das GANs

As redes adversárias generativas (GANs) podem gerar dados altamente realistas e diversos, como imagens, texto e áudio. Elas são usadas em aplicações que incluem processamento de linguagem natural (PLN) para gerar dados de texto e melhorar modelos de linguagem e na geração de música para criar novas composições e sons de instrumentos realistas. Simulações e jogos usam GANs para gerar ambientes e personagens realistas e detecção de anomalias, identificando padrões que se desviam da norma. As GANs também ajudam na pesquisa científica ao simular dados complexos para experimentos que são caros ou impraticáveis de realizar. Elas aprimoram os processos de aprendizado de máquina (ML) por meio do aumento de dados, aumentando a quantidade e a diversidade de conjuntos de treinamento para lidar com o desafio de big data limitado. Espera-se que as GANs se integrem ainda mais a tecnologias como aprendizado por reforço, robótica e NLP para avançar nos sistemas de inteligência artificial (IA). 

Apesar do aumento dos transformadores, as GANs permanecem relevantes devido à sua arquitetura leve e eficiência computacional, tornando-as ideais para implementação de edge. Com menos parâmetros em comparação com os transformadores, as GANs oferecem geração controlada para manipulação refinada de funcionalidades (por exemplo, atributos faciais), o que simplifica o ajuste fino para tarefas específicas. As GANs fornecem velocidades de inferência mais rápidas, pois exigem uma única passagem de avanço (ou fluxo único de entrada através de uma rede neural para gerar uma saída). Isso os torna ideais para aplicações em tempo real em dispositivos de edge com recursos limitados, como telefones móveis e sistemas de IoT. Essas vantagens tornam as GANs uma escolha prática para tarefas como tradução de imagens, super-resolução e síntese de vídeo em tempo real em ambientes de edge. 

No entanto, as GANs enfrentam desafios significativos. Um dos principais problemas é a instabilidade de treinamento, onde o gerador e o discriminador podem não convergir adequadamente, levando a saídas de baixa qualidade. O colapso modal é outro desafio em que o gerador produz uma variedade limitada, não conseguindo capturar toda a diversidade dos dados de treinamento. As GANs também exigem grandes quantidades de dados e recursos computacionais substanciais, o que pode ser uma barreira para seu uso generalizado. Avaliar a qualidade das saídas geradas pelas GANs é um desafio, pois as métricas tradicionais podem não capturar totalmente as nuances dos dados gerados. Ajudar a garantir o uso ético das amostras geradas é uma preocupação cada vez maior, pois as GANs podem ser usadas para criar deep fakes e outros conteúdos potencialmente prejudiciais.

Como implementar um modelo de GAN 

Uma GAN pode ser implementada usando Tensorflow e Keras. É necessário um conjunto de dados de treinamento, um script gerador e um script discriminador para criar um modelo de GAN em Python. Veja a seguir um guia passo a passo para ajudar você a começar:

Etapa 1: importe as bibliotecas necessárias, incluindo o TensorFlow e outras bibliotecas essenciais, como numpy e matplotlib, para criar e treinar o modelo de GAN. 

Etapa 2: Carregue e pré-processe o conjunto de dados, ajudando a garantir que ele represente a distribuição de dados-alvo (por exemplo, imagens, texto e outros).  

Etapa 3: Construa o modelo gerador usando camadas do TensorFlow ou Keras que pegam ruído aleatório e produzem amostras de dados que correspondem à distribuição-alvo.

Etapa 4: Construa o modelo discriminador para classificar amostras de dados reais versus falsas geradas pelo gerador. 

Etapa 5: Use otimizadores adequados para as funções de gerador e discriminador e defina funções de perda.

Etapa 6: Combine o gerador e o discriminador em um único modelo de GAN para treinar o gerador para enganar o discriminador. 

Etapa 7: Implemente um loop para alternar entre o treinamento do discriminador e do gerador com dados reais e falsos.

Etapa 8: Analise a saída do gerador e a precisão do discriminador ao longo dos epochs para ajudar a garantir a convergência.

Etapa 9: Use o gerador treinado para produzir novas amostras que imitem a distribuição de dados-alvo.

Etapa 10: Plote ou analise os dados gerados para validar o quanto a GAN aprendeu a distribuição-alvo. 

Seguindo estas etapas, um modelo de GAN básico pode ser implementado usando o TensorFlow.  

O futuro das GANs é promissor, com avanços esperados em realismo, estabilidade, eficiência e considerações éticas. À medida que as GANs se tornam mais integradas a outras tecnologias e encontram novas aplicações, elas continuarão a revolucionar vários setores e áreas.

Soluções relacionadas
IBM watsonx.ai

Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.

Conheça o watsonx.ai
Soluções de inteligência artificial

Use a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.

Explore as soluções de IA
Consultoria e serviços em IA

Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.

Explore os serviços de IA
Dê o próximo passo

Obtenha acesso completo aos recursos que abrangem o ciclo de vida do desenvolvimento da IA. Produza soluções poderosas de IA com interfaces fáceis de usar, fluxos de trabalhos e acesso a APIs e SDKs padrão do setor.

Explore o watsonx.ai Agende uma demonstração em tempo real
Notas de rodapé

1 Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., ... e Bengio, Y. (2014). Generative adversarial nets. Advances in neural information processing systems27.

2 Alqahtani, Hamed & Kavakli, Manolya e Kumar, Gulshan. (2019). Applications of Generative Adversarial Networks (GANs): An Updated Review. Archives of Computational Methods in Engineering. 28. 10.1007/s11831-019-09388-y.

3 Qiao, K., Chen, J., Wang, L., Zhang, C., Tong, L. e Yan, B. (2020). BigGAN-based Bayesian reconstruction of natural images from human brain activity. Neuroscience, 444, 92–105. https://doi.org/10.1016/j.neuroscience.2020.07.040.

4 Alarcon, N. (2020). Synthesizing High-Resolution Images with StyleGAN2. NVIDIA Technical Blog. https://developer.nvidia.com/blog/synthesizing-high-resolution-images-with-stylegan2.

5 Bansal, A., Ma, S., Ramanan, D. e Sheikh, Y. (2018). Recycle-GAN: Unsupervised Video Retargeting. arXiv. https://doi.org/10.48550/arXiv.1808.05174.

6 Prakash, C. D., Shrivastava, A. e Torresani, L. (2019). It GAN DO Better: GAN-based Detection of Objects on Images with Varying Quality. arXiv. https://arxiv.org/abs/1912.01707.