CycleGAN é um tipo de rede adversária generativa (GAN) usada em tarefas de aprendizado de máquina não supervisionadas. A rede foi desenvolvida por Erik Meijer e Jun-Yan Zhu da UC Berkeley em 2017. Ela foi projetada para aprender traduções imagem a imagem sem a necessidade de quaisquer dados de entrada emparelhados.
Ao contrário de outros GANs, o CycleGAN pode ser usado para mapear imagens de um domínio para outro sem um conjunto fixo de imagens de entrada de cada domínio. Isso é possível devido ao aprendizado simultâneo de imagens de ambos os domínios, em oposição a conjuntos de dados “pareados”, que normalmente são usados em outras GANs. Isto ajuda a preencher a lacuna entre dois domínios de imagem diferentes, permitindo uma tarefa de geração de imagem mais complexa.
O modelo CycleGAN consiste em dois componentes: um gerador e um discriminador. O gerador recebe uma imagem de entrada de qualquer domínio e produz uma imagem de saída no outro domínio. O discriminador então avalia a imagem de saída e decide se é uma imagem real do outro domínio ou gerada pelo gerador.
Um exemplo de aplicação do CycleGAN é a tradução imagem para imagem, permitindo que uma imagem seja convertida de um domínio em uma imagem diferente em outro domínio. Por exemplo, CycleGAN poderia tirar uma foto de uma maçã e convertê-la em uma pintura em aquarela de uma maçã. Este aplicativo é especialmente útil em visão computacional e robótica, onde transformações de dados complexas, mas visualmente semelhantes, são necessárias para tarefas como reconhecimento de objetos.
Desde a sua introdução em 2017, o CycleGAN tem sido usado em uma variedade de tarefas, desde tradução de imagem para imagem até síntese de texto para imagem. Sua abordagem revolucionária e não supervisionada para aprender transformações complexas o torna uma ferramenta eficaz para muitas aplicações.