O campo da inteligência artificial está crescendo; a geração de imagens é um dos domínios mais proeminentes. Há muitos concorrentes no mercado, como Stable Diffusion, Midjourney e DALL-E. Todos esses produtos são baseados na abordagem de redes de difusão. Ao contrário dos modelos de difusão GPT, muitas vezes vistos como abstrusos, o objetivo desta história é desmistificar a complexidade dos modelos de difusão e explicar como eles funcionam de uma forma fácil, mas abrangente. Vamos lá!
O básico
As redes de difusão são redes neurais artificiais que permitem que você resolva várias tarefas de geração. A aplicação mais conhecida é a geração de imagens. Nesta história, vamos nos concentrar apenas neste tipo de geração. Existem inúmeros tipos de tarefas de geração: image2image, image2video, text2vide, video+image2video, etc. Mas todas elas são baseadas em uma estrutura semelhante.
A rede de difusão é composta por 3 blocos de construção (redes neurais):
- Processo de difusão: processo de geração de imagem;
- Condicionamento: uma maneira de restringir a geração a um determinado sujeito;
- Espaço latente: um truque que torna o modelo viável para execução em determinadas restrições de hardware.
Processo de Difusão
O conceito de processos de difusão vem da física, que descreve a maneira como as partículas se espalham em um meio ao longo do tempo. No contexto do aprendizado de máquina, um modelo de difusão aprende a "refinar" progressivamente um vetor de ruído em dados significativos, revertendo um conjunto de treinamento de processo semelhante a difusão criado a partir de imagens, adicionando gradualmente mais e mais ruído a cada imagem.
Processo para frente e para trás
Para amostrar/gerar a partir deste modelo, aplicamos a rede várias vezes para minimizar o ruído e recuperar a imagem (denoising). Diferentes modelos de difusão usam diferentes números de etapas e diferentes abordagens para gerar ruído.
Condicionamento
O condicionamento introduz uma dependência em informações adicionais (prompts de texto no nosso caso). Isso nos permitirá gerar amostras que atendem a restrições específicas.
Temos que converter o prompt de texto para incorporação para capturar a semântica do nosso prompt ("por exemplo: astronauta andando de bicicleta").
Treinamos a redução de ruído para aderir mais de perto à semântica textual da nossa semântica.
Espaço Latente
O último bloco de construção é o espaço latente. Normalmente, modelos generativos operam no espaço de pixels. No entanto, a inferência no espaço de pixels é cara, e o espaço de pixels é escasso. A solução é comprimir nossa imagem inicial em uma representação mais compacta, que exibe melhores propriedades de escala com relação à dimensionalidade espacial.
Como funciona o VAE
Esta compressão é obtida usando VAE (modelos de autocodificação variacional). Este tipo de codificação difere dos autocodificadores "vanilla"; ele codifica imagens para uma distribuição com permissores μ e σ. Esta abordagem permite a introdução de propriedades generativas para o espaço latente. Não explicarei os detalhes aqui. Confira esta postagem para mais detalhes.
O processo de difusão é conduzido no espaço latente.
Juntando tudo
Agora, estudamos todos os componentes-chave. É hora de juntar tudo.
Todo o processo passo a passo:
- Recebemos o nosso prompt "astronauta andando de bicicleta".
- O prompt é compactado para incorporar representação; esta representação condicionará a geração.
- O processo de redução de ruído é realizado no espaço latente em relação à condição.
- O último estado de etapa no espaço latente é decodificado para o espaço de pixel.
- Finalmente conseguimos nossa foto!
Espero que este artigo tenha ajudado a desmistificar a complexidade dos modelos de difusão e a entender melhor como eles funcionam. A geração de imagens é apenas um dos muitos campos em que esses modelos estão sendo aplicados, e estou ansioso para ver o que o futuro reserva para essa tecnologia emocionante.