Visão geral
- GANs são modelos generativos, acredite no que você os alimenta.
- Nós listamos 4 bibliotecas GAN apresentadas
Introdução
Atualmente, GAN é considerada uma das áreas de pesquisa mais interessantes em visão computacional. Sua capacidade de processamento de imagem é incomparável e, ser um cientista de dados, não explorar seria um erro. Mesmo pessoas eminentes como Yann LeCun descreveram os GANs como “a ideia mais interessante em aprendizado de máquina nos últimos 10 anos”.
Quando trabalhei pela primeira vez com GAN, Eu o desenvolvi do zero usando PyTorch e era uma tarefa tediosa. Fica ainda mais difícil quando o resultado não é satisfatório e você quer tentar outra arquitetura, já que agora você tem que reescrever o código. Mas felizmente, Pesquisadores que trabalham em vários gigantes técnicos desenvolveram várias bibliotecas GAN para ajudá-lo a explorar e desenvolver aplicativos baseados em GAN.
Neste artigo, Vamos ver 4 Bibliotecas GAN interessantes que você definitivamente deve conhecer. O que mais, Vou te dar uma visão geral do GAN, para começar.
Eu recomendo que você consulte nosso completo Programa de visão artificial para começar neste campo.
Tabela de conteúdo
- Uma rápida visão geral dos GANs
- Bibliotecas GAN
- TF-GAN
- Torch-GAN
- Mimetismo
- IBM Toolkit- GAN
Uma rápida visão geral dos GANs
Ian Good Fellow apresentou GAN em 2014 e é um método de aprendizado profundoAqui está o caminho de aprendizado para dominar o aprendizado profundo em, Uma subdisciplina da inteligência artificial, depende de redes neurais artificiais para analisar e processar grandes volumes de dados. Essa técnica permite que as máquinas aprendam padrões e executem tarefas complexas, como reconhecimento de fala e visão computacional. Sua capacidade de melhorar continuamente à medida que mais dados são fornecidos a ele o torna uma ferramenta fundamental em vários setores, da saúde... estado da arte. É um membro da família Generative Model que passa pelo TreinamentoO treinamento é um processo sistemático projetado para melhorar as habilidades, Conhecimento ou habilidades físicas. É aplicado em várias áreas, como esporte, Educação e desenvolvimento profissional. Um programa de treinamento eficaz inclui planejamento de metas, prática regular e avaliação do progresso. A adaptação às necessidades individuais e a motivação são fatores-chave para alcançar resultados bem-sucedidos e sustentáveis em qualquer disciplina.... adversário.
A modelagem gerativa é um método poderoso no qual a rede aprende a distribuição dos dados de entrada e tenta gerar o novo ponto de dados com base em uma distribuição semelhante.. Se olharmos para os exemplos de modelos generativos, temos Codificadores Automáticos, máquinas Boltzmann, redes geradoras adversárias, redes bayesianas, etc.
Arquitetura GAN
GANs consistem em duas redes neurais, um gerador GRAMA e um discriminador D. O que mais, esses dois modelos estão envolvidos em um jogo de soma zero durante o treinamento.
A rede do gerador aprende a distribuição dos dados de treinamento. E quando fornecemos ruído aleatório como entrada, gera alguns dados sintéticos que tentam imitar as amostras de treinamento.
Agora aí vem o modelo discriminador (D). Designa um rótulo: Real ou falso para os dados gerados por GRAMA com base na distribuição de dados. Isso significa que a nova imagem vem das imagens de treinamento ou é uma imagem gerada artificialmente.
O caso quando D reconhecer com sucesso a imagem como real ou falsa leva ao aumento da perda do gerador. Do mesmo modo, quando GRAMA consegue construir imagens de boa qualidade semelhantes às reais e engana o D, perda de discriminador aumenta. O que mais, o gerador aprende com o processo e gera imagens melhores e mais realistas na próxima iteração.
Basicamente, pode ser considerado um jogo MIN-MAX para dois jogadores. Aqui, o desempenho de ambas as redes melhora com o tempo. Ambas as redes passam por várias iterações de treinamento. Com o passar do tempo e várias atualizações no parametroso "parametros" são variáveis ou critérios usados para definir, medir ou avaliar um fenômeno ou sistema. Em vários domínios, como a estatística, Ciência da Computação e Pesquisa Científica, Os parâmetros são essenciais para estabelecer normas e padrões que orientam a análise e interpretação dos dados. Sua seleção e manuseio adequados são cruciais para obter resultados precisos e relevantes em qualquer estudo ou projeto.... do modelo como pesos e vieses, atingir o estado estacionário, também conhecido como equilíbrio de Nash.
Qual é o equilíbrio de Nash?
O equilíbrio de Nash é um estado estável de um sistema que envolve a interação de diferentes participantes, em que nenhum participante pode vencer por meio de uma mudança unilateral de estratégia se as estratégias dos outros permanecerem inalteradas.
Em última instância, neste jogo de soma zero, podemos gerar com sucesso imagens artificiais ou falsas que se parecem principalmente com o conjunto de dados de treinamento real.
Exemplo-
Vamos ver como os GANs podem ser úteis.
Por exemplo, durante o bloqueio, teve a chance de revisar seu antigo álbum de fotos. Em um momento tão estressante, é uma boa crítica para reviver suas memórias. Mas como este álbum esteve em seu armário por anos, intacto, algumas fotos foram danificadas e isso te deixou triste. E foi exatamente quando você decidiu usar GAN.
A imagem abaixo foi restaurada com sucesso com a ajuda de GAN, usando um método chamado Image Inpainting.
Fonte da imagem: Bertalmío et al., 2000.
A pintura de imagens é a arte de restaurar imagens danificadas reconstruindo as partes que faltam usando as informações de fundo disponíveis.. Esta técnica também é usada para remover objetos indesejados das imagens fornecidas.
Esta foi apenas uma revisão rápida do GAN. Se você quiser saber mais sobre isso, Eu sugiro que você leia os seguintes artigos.
Agora veremos algumas bibliotecas GAN interessantes.
TF-GAN
Tensorflow GAN, também conhecido como TF-GAN, é uma biblioteca python leve de código aberto. Ele foi desenvolvido por pesquisadores de IA do Google para uma implementação GAN fácil e eficaz.
TF-GAN fornece uma infraestrutura bem desenvolvida para treinar e avaliar a Rede Adversarial Gerativa junto com funções de perda efetivamente comprovadas e métricas de avaliação. A biblioteca consiste em vários módulos para implementar o modelo. Fornece chamadas de função simples que um usuário pode aplicar em seus próprios dados sem escrever o código do zero.
É fácil de instalar e usar como outros pacotes como NumPy e pandas, uma vez que fornece o pacote PyPi. Use o seguinte código
#Instalando a biblioteca pip instalar tensorflow-gan #importing the library importar tenorflow_gan como tfgan
A seguir está um código para gerar imagens do conjunto de dados MNIST usando TF-Gan-
# Configure a entrada. imagens = mnist_data_provider.provide_data(BANDEIRAS.tamanho do batch) barulho = tf.random_normal([BANDEIRAS.tamanho do batch, BANDEIRAS.noise_dims]) # Construir o gerador e discriminador. gan_model = tfgan.gan_model( generator_fn=mnist.unconditional_generator, # você define discriminator_fn=mnist.unconditional_discriminator, # você define dados_real=imagens, generator_inputs=barulho) # Construa a perda de GAN. gan_loss = tfgan.gan_loss( gan_model, generator_loss_fn=tfgan_losses.wasserstein_generator_loss, discriminator_loss_fn=tfgan_losses.wasserstein_discriminator_loss) # Crie as operações de trem, que calculam gradientes e aplicam atualizações aos pesos. train_ops = tfgan.gan_train_ops( gan_model, gan_loss, generator_optimizer=tf.train.AdamOptimizer(gen_lr, 0.5), discriminator_optimizer=tf.train.AdamOptimizer(dis_lr, 0.5)) # Execute as operações de trem no esquema de treinamento alternado. tfgan.gan_train( train_ops, ganchos=[tf.train.StopAtStepHook(num_steps=BANDEIRAS.max_number_of_steps)], logdir=BANDEIRAS.train_log_dir)
O que eu gosto na biblioteca
- Uma coisa importante sobre a biblioteca é que o TF-GAN atualmente suporta Tensorflow-2.0, quer dizer, a versão mais recente do TensorFlow. O que mais, você pode usá-lo de forma eficiente com outras estruturas.
- Treinar um modelo de adversário gerador é uma tarefa de processamento pesada, isso costumava levar semanas. TF-GAN é compatível com Cloud TPU. Portanto, o processo de treinamento é concluído em poucas horas. Para saber mais sobre como usar TF-GAN em TPU, pode ver Está tutorial de autores de biblioteca.
- Caso você precise comparar os resultados de vários artigos, TF-GAN fornece métricas padrão que tornam mais fácil para o usuário comparar de forma eficiente e fácil diferentes artigos de pesquisa sem qualquer tendência estatística..
A seguir estão alguns projetos implementados com TF-GAN-
O que mais, para saber mais sobre esta interessante biblioteca GAN usada por pesquisadores do Google, Leia o documento oficial.
Torch-GAN
Torch-GAN é uma estrutura baseada em PyTorch para escrever códigos curtos e fáceis de entender para desenvolver GAN. Este pacote consiste em várias redes geradoras de adversários junto com os utilitários necessários para sua implementação..
Geralmente, GANs compartilham um design padrão que tem vários componentes, como o modelo do gerador, o modelo discriminador, a Função de perdaA função de perda é uma ferramenta fundamental no aprendizado de máquina que quantifica a discrepância entre as previsões do modelo e os valores reais. Seu objetivo é orientar o processo de treinamento, minimizando essa diferença, permitindo assim que o modelo aprenda de forma mais eficaz. Existem diferentes tipos de funções de perda, como erro quadrático médio e entropia cruzada, cada um adequado para diferentes tarefas e... e métricas de avaliação. Enquanto Torch GAN imita o design de GANs por meio de uma API simples e permite que os componentes sejam personalizados quando necessário.
Esta biblioteca GAN facilita a interação entre os componentes GAN por meio de um treinador altamente versátil que se adapta automaticamente aos padrões e perdas definidos pelo usuário..
Instalar a biblioteca é simples usando pip. Você só precisa usar o comando abaixo e voila.
pip3 instalar tocchgan
Implementação de modelos Torch-GAN
No centro do design, temos um módulo de treinador responsável pela flexibilidade e facilidade de uso. O usuário deve fornecer as especificações exigidas, quer dizer, a arquitetura dos modelos gerador e discriminador, junto com o otimizador associado. O usuário também deve fornecer as funções de perda e métricas de avaliação.
A biblioteca oferece a liberdade de escolher suas especificações a partir da ampla gama disponível ou suas próprias variantes personalizadas. Na imagem a seguir, podemos ver a implementação do DC-GAN apenas em 10 linhas de código, não é surpreendente?
O que eu gosto nesta biblioteca GAN?
- A ampla variedade de arquitetura GAN que suporta. Você nomeia a arquitetura e você encontrará a implementação TorchGAN dela. Por exemplo, Vanilla GAN, DCGAN, CycleGan, GAN condicional, Rede multi-adversária generativa e muito mais.
- Outra característica importante do quadro é sua extensibilidade e flexibilidade.. Torch-GAN é um pacote compreensível. Podemos usá-lo de forma eficiente com funcionalidades integradas ou definidas pelo usuário.
- O que mais, fornece exibição de desempenho eficiente por meio de um objeto Logger. Suporta registro de console e visualização de desempenho usando TensorBoardO TensorBoard é uma ferramenta de visualização que acompanha o TensorFlow, Projetado para facilitar a análise de modelos de aprendizado de máquina. Permite que os usuários monitorem métricas como perda e precisão, bem como visualizar gráficos e estruturas de modelos. Graças à sua interface intuitiva, O TensorBoard ajuda os desenvolvedores a entender melhor o desempenho de seus modelos e fazer os ajustes necessários durante o processo de treinamento.... e Vizdom.
Se você quiser ir mais fundo, não se esqueça de ler o documentação oficial de TorchGAN.
Mimetismo
Com o aumento da pesquisa no campo, podemos ver várias implementações GAN. Difícil de comparar várias implementações desenvolvidas usando diferentes estruturas, treinados em diferentes condições e avaliados usando diferentes métricas. Essa comparação é uma tarefa inevitável para os pesquisadores. Portanto, esta foi a principal motivação por trás do desenvolvimento do Mimetismo.
Mimetismo é uma biblioteca PyTorch leve para reprodutibilidade GAN. Fornece funcionalidades comuns necessárias para treinar e avaliar um modelo Gan. Isso permite que os pesquisadores se concentrem na implementação do modelo, em vez de escrever o mesmo código clichê repetidamente..
Esta biblioteca GAN fornece a implementação padrão de várias arquiteturas GAN, como DCGAN, Wasserstein GAN com penalidade de gradienteGradiente é um termo usado em vários campos, como matemática e ciência da computação, descrever uma variação contínua de valores. Na matemática, refere-se à taxa de variação de uma função, enquanto em design gráfico, Aplica-se à transição de cores. Esse conceito é essencial para entender fenômenos como otimização em algoritmos e representação visual de dados, permitindo uma melhor interpretação e análise em... (WGAN-GP), GAN auto-monitorado (SSGAN), etc. mesmo tamanho de modelo, treinado em condições semelhantes.
Como as outras duas bibliotecas, podemos facilmente instalar o Mimicry usando pip e está pronto para usar.
pip instalar tocha-mimetismo
Aqui está a implementação rápida de SNGAN usando mimetismo
importar tocha importar torch.optim Como ótimo importar torch_mimicry Como mmc a partir de torch_mimicry.nets importar Sngan # Objetos de manipulação de dados dispositivo = tocha.dispositivo('milagres:0' E se tocha.milagres.está disponível() outro "CPU") conjunto de dados = mmc.conjuntos de dados.load_dataset(raiz='./datasets', nome='cifar10') dataloader = tocha.útil.dados.DataLoader( conjunto de dados, tamanho do batch=64, embaralhar=Verdade, num_workers=4) # Defina modelos e otimizadores netG = Sngan.SNGANGenerator32().para(dispositivo) netD = Sngan.SNGANDiscriminator32().para(dispositivo) optD = ótimo.Adão(netD.parametros(), 2e-4, betas=(0.0, 0.9)) optG = ótimo.Adão(netG.parametros(), 2e-4, betas=(0.0, 0.9)) # Comece a treinar treinador = mmc.Treinamento.Treinador( netD=netD, netG=netG, optD=optD, optG=optG, n_dis=5, num_steps=100000, lr_decay='linear', dataloader=dataloader, log_dir='./log/example', dispositivo=dispositivo) treinador.Comboio()
Outro recurso importante do mimetismo é que ele fornece suporte Tensorboard para visualização de desempenho. Portanto, você pode criar uma curva de perda e probabilidade para monitorar o treinamento. Pode exibir imagens geradas aleatoriamente para verificar a variedade.
Mimetismo é um desenvolvimento interessante que visa ajudar os pesquisadores. Eu irei pessoalmente sugerir que você leia o Papel de imitação.
IBM GAN Toolkit
Até agora, vimos algumas bibliotecas GAN muito eficientes e de ponta. Existem muitas outras bibliotecas GAN como Keras-GAN, PyTorch-GAN, PyGAN, etc. Quando olhamos de perto, vemos algumas coisas em comum entre essas bibliotecas GAN. Eles usam muitos códigos. Se você quiser usar algum deles, deve ser bem versado em
- O conhecimento e implementação do GAN.
- Fluente em Python
- Como usar o quadro particular
É um pouco difícil saber tudo para um programador de software. Para resolver o problema, aqui temos uma ferramenta GAN fácil de usar: IBM GAN-Toolkit.
O GAN Toolkit fornece uma variante altamente flexível, sem código, para implementar modelos GAN. O que mais, fornece um alto nível de abstração para implementar o modelo GAN. Aqui, o usuário só precisa fornecer detalhes do modelo usando o arquivo de configuração ou o argumento da linha de comando. Então o framework cuidará de todo o resto. Eu pessoalmente achei muito interessante.
As etapas a seguir irão ajudá-lo com a instalação:
- Em primeiro lugar, nós clonamos o código
$ https clone git://github.com/IBM/gan-toolkit $ CD gan-toolkit
- Em seguida, instale todos os requisitos
$ pip install -r requisitos.txt
Agora você está pronto para usar. Finalmente, Para treinar a rede, temos que fornecer um arquivo de configuração em formato. JSONJSON, o Notação de objeto JavaScript, É um formato leve de troca de dados que é fácil para os humanos lerem e escreverem, e fácil para as máquinas analisarem e gerarem. É comumente usado em aplicativos da web para enviar e receber informações entre um servidor e um cliente. Sua estrutura é baseada em pares de valores-chave, tornando-o versátil e amplamente adotado no desenvolvimento de software.. da seguinte maneira
{ "gerador":{ "escolha":"gan" }, "discriminador":{ "escolha":"gan" }, "data_path":"datasets / dataset1.p", "metric_evaluate":"MMD" }
$ python main.py --config my_gan.json
O kit de ferramentas implementa várias arquiteturas GAN como vanilla GAN, DC-GAN, GAN condicional e mais.
Vantagens do GAN Toolkit
- Fornece uma maneira livre de código para implementar a tecnologia de visão computacional de próxima geração. Apenas um arquivo JSON simples é necessário para definir uma arquitetura GAN. Não é necessário escrever o código de treinamento, pois a estrutura cuidará disso.
- Fornece suporte para várias bibliotecas, quer dizer, PyTorch, Keras e TensorFlow também.
- O que mais, no kit de ferramentas GAN, temos a liberdade de misturar e combinar facilmente os componentes de diferentes modelos. Por exemplo, pode usar o modelo de gerador DC-GAN, o discriminador C-GAN e o processo de treinamento vanilla gan.
Agora é só ler o documento e jogue GANs do seu jeito.
Notas finais
GANs são um campo ativo de pesquisa. Vemos atualizações regulares quase que semanalmente na próxima versão do GAN. Você pode verificar o trabalho que os pesquisadores fizeram aqui.
Para concluir, Neste artigo, discutimos o 4 Bibliotecas GAN mais importantes que podem ser facilmente implementadas em Python. Diariamente, vemos desenvolvimentos tremendos e vemos novas aplicações de GAN. O artigo a seguir explica alguns desses aplicativos incríveis:
Quais são as bibliotecas GAN que você usa? Você acha que eu deveria ter incluído alguma outra biblioteca? Deixe-nos saber nos comentários abaixo!.