GANs condicionais e transferência de estilo
cGAN com condicionamento por classe, conceito do CycleGAN e transferência neural de estilo com VGG.
GANs condicionais e transferência de estilo é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Controlando o que as GANs geram
Uma GAN comum produz amostras aleatórias; não é possível pedir uma classe específica. Esta lição aborda a geração condicional (cGANs), a tradução não pareada (CycleGAN) e a transferência de estilo neural.
GANs condicionais (cGAN)
Uma cGAN adiciona uma condição, como um rótulo de classe, tanto ao gerador quanto ao discriminador. Assim, você pode pedir "gere um 7" fornecendo o rótulo junto com o ruído.
Condicionando o gerador
O gerador concatena o rótulo (codificado como vetor unitário ou incorporado) com o vetor de ruído. Essa entrada combinada permite gerar amostras da classe solicitada.
label_emb = embedding(label) # e.g. dim 10
z = torch.randn(batch, 100)
gen_input = torch.cat([z, label_emb], dim=1)
fake = generator(gen_input)Condicionando o discriminador
O discriminador também recebe o rótulo, portanto não julga apenas "isto é real?", mas também "isto é um exemplo real desta classe?". Isso obriga o gerador a respeitar a condição.
d_input = torch.cat([image, label_emb], dim=1)
score = discriminator(d_input)Tradução de imagens não pareadas
Muitas vezes não temos pares correspondentes, por exemplo, o mesmo cavalo como cavalo e como zebra. O CycleGAN traduz entre dois domínios usando imagens não pareadas, aprendendo a transformar cavalo em zebra e vice-versa sem exemplos alinhados.
Dois geradores, dois domínios
O CycleGAN usa dois geradores: G: A to B e F: B to A, cada um com seu próprio discriminador. Juntos, eles traduzem nos dois sentidos entre os domínios.
# G: photo -> painting
# F: painting -> photoPerda de consistência cíclica
A ideia central é: traduzir de A para B e depois voltar para A deve retornar o original. A perda de consistência cíclica impõe F(G(a)) == a, restringindo o mapeamento sem dados pareados.
cycle_loss = (
l1(F(G(a)), a) +
l1(G(F(b)), b)
)Transferência de estilo neural
A transferência de estilo neural combina o conteúdo de uma imagem com o estilo de outra, por exemplo, uma foto pintada como se fosse de Van Gogh. Ela otimiza diretamente a imagem de saída usando características de uma CNN pré-treinada.
Perda de conteúdo
A perda de conteúdo mantém a estrutura de alto nível da saída próxima à da imagem de conteúdo, comparando mapas de características profundos da CNN. Ela preserva o que está na imagem.
content_loss = mse(features_out, features_content)Perda de estilo e a matriz de Gram
O estilo é capturado pela matriz de Gram, que representa as correlações entre os canais de características. Comparar as matrizes de Gram transfere texturas e cores. A perda de estilo compara as matrizes de Gram da saída e da imagem de estilo.
def gram(f):
b, c, h, w = f.size()
f = f.view(c, h * w)
return f @ f.t()
style_loss = mse(gram(features_out), gram(features_style))Combinando as perdas
A perda total é uma soma ponderada: alpha * content_loss + beta * style_loss. Ajustar os pesos cria um equilíbrio entre o quanto o resultado preserva o conteúdo e o quanto adota o estilo.
total = alpha * content_loss + beta * style_loss
total.backward() # gradients update the output IMAGEVerificação rápida
Teste seus conhecimentos sobre geração condicional.
Recapitulação: GANs condicionais e transferência de estilo
Você aprendeu que as cGANs concatenam um rótulo de classe à entrada do gerador (e do discriminador) para permitir uma geração controlada; o CycleGAN usa a perda de consistência cíclica para a tradução não pareada; e a transferência de estilo neural combina a perda de conteúdo com uma perda de estilo baseada na matriz de Gram para repintar imagens.
Perguntas Frequentes
A aula “GANs condicionais e transferência de estilo” é grátis?
Sim — o texto completo de “GANs condicionais e transferência de estilo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “GANs condicionais e transferência de estilo”?
cGAN com condicionamento por classe, conceito do CycleGAN e transferência neural de estilo com VGG. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “GANs condicionais e transferência de estilo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Autoencoders para aprendizado de representações
- Autoencoders variacionais (VAE)
- GANs: gerador e discriminador
- GANs condicionais e transferência de estilo