Diffusers documentation

Geração controlada

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Geração controlada

Controlar as saídas geradas por modelos de difusão tem sido uma busca constante da comunidade e é atualmente um tópico ativo de pesquisa. Em muitos modelos de difusão populares, mudanças sutis nas entradas, tanto em imagens quanto em prompts de texto, podem alterar drasticamente as saídas. Em um mundo ideal, gostaríamos de poder controlar como a semântica é preservada e alterada.

A maioria dos exemplos de preservação de semântica se reduz à capacidade de mapear com precisão uma alteração na entrada para uma alteração na saída. Ou seja, adicionar um adjetivo a um sujeito em um prompt preserva a imagem inteira, modificando apenas o sujeito alterado. Ou, a variação de imagem de um sujeito específico preserva a pose do sujeito.

Além disso, existem qualidades das imagens geradas que gostaríamos de influenciar além da preservação semântica. Ou seja, em geral, gostaríamos que nossas saídas fossem de boa qualidade, aderissem a um estilo particular ou fossem realistas.

Documentaremos algumas das técnicas que o diffusers suporta para controlar a geração de modelos de difusão. Grande parte disso é pesquisa de ponta e pode ser bastante sutil. Se algo precisar de esclarecimento ou você tiver uma sugestão, não hesite em abrir uma Discussão no GitHub ou uma issue no GitHub.

Fornecemos uma explicação de alto nível sobre como a geração pode ser controlada, além de um trecho dos detalhes técnicos. Para explicações mais aprofundadas sobre os aspectos técnicos, os artigos originais, que estão vinculados nos pipelines, são sempre os melhores recursos.

Dependendo do caso de uso, deve-se escolher uma técnica de acordo. Em muitos casos, essas técnicas podem ser combinadas. Por exemplo, é possível combinar Textual Inversion com SEGA para fornecer mais orientação semântica às saídas geradas usando Textual Inversion.

A menos que indicado o contrário, estas são técnicas que funcionam com modelos existentes e não exigem pesos próprios.

  1. InstructPix2Pix
  2. Atender e Excitar
  3. Guiamento Semântico
  4. Guia de autoatenção
  5. Depth2Image
  6. Panorama MultiDiffusion
  7. DreamBooth
  8. Inversão Textual
  9. ControlNet
  10. Ponderação de Prompt
  11. Custom Diffusion
  12. DiffEdit
  13. T2I-Adapter
  14. FABRIC

Para sua conveniência, fornecemos uma tabela para indicar quais métodos são apenas de inferência e quais exigem ajuste fino/treinamento.

MétodoSomente inferênciaExige treinamento /
ajuste fino
Comentários
InstructPix2Pix✅❌Pode ser adicionalmente
ajustado para melhor
desempenho em instruções de
edição específicas.
Atender e Excitar✅❌
Guiamento Semântico✅❌
Guia de autoatenção✅❌
Depth2Image✅❌
Panorama MultiDiffusion✅❌
DreamBooth❌✅
Inversão Textual❌✅
ControlNet✅❌Um ControlNet pode ser
treinado/ajustado finamente em
uma condição personalizada.
Ponderação de Prompt✅❌
Custom Diffusion❌✅
DiffEdit✅❌
T2I-Adapter✅❌
Fabric✅❌

InstructPix2Pix

Artigo

InstructPix2Pix é ajustado a partir do Stable Diffusion para suportar a edição de imagens de entrada. Ele recebe como entrada uma imagem e um prompt descrevendo uma edição, e produz a imagem editada. O InstructPix2Pix foi treinado explicitamente para funcionar bem com prompts semelhantes aos do InstructGPT.

Participar e Excitar

Artigo

Attend and Excite permite que os elementos do prompt sejam representados fielmente na imagem final.

Um conjunto de índices de tokens é fornecido como entrada, correspondendo aos sujeitos no prompt que precisam estar presentes na imagem. Durante o desruidamento, cada índice de token é garantido a ter um limiar mínimo de atenção para pelo menos um patch da imagem. Os latentes intermediários são otimizados iterativamente durante o processo de desruidamento para fortalecer a atenção do token de sujeito mais negligenciado até que o limiar de atenção seja atingido para todos os tokens de sujeito.

Assim como o Pix2Pix Zero, o Attend and Excite também envolve um mini loop de otimização (deixando os pesos pré-treinados intactos) em seu pipeline e pode exigir mais memória do que o StableDiffusionPipeline usual.

Orientação Semântica (SEGA)

Artigo

O SEGA permite aplicar ou remover um ou mais conceitos de uma imagem. A intensidade do conceito também pode ser controlada. Ou seja, o conceito de sorriso pode ser usado para aumentar ou diminuir gradualmente o sorriso de um retrato.

Assim como a classifier free guidance fornece orientação por meio de entradas de prompt vazias, a SEGA fornece orientação em prompts conceituais. Vários desses prompts conceituais podem ser aplicados simultaneamente. Cada prompt conceitual pode adicionar ou remover seu conceito, dependendo de a orientação ser aplicada de forma positiva ou negativa.

Diferentemente de Pix2Pix Zero ou Attend and Excite, o SEGA interage diretamente com o processo de difusão, em vez de realizar qualquer otimização explícita baseada em gradiente.

Orientação de autoatenção (SAG)

Artigo

O Self-attention Guidance melhora a qualidade geral das imagens.

O SAG fornece orientação a partir de previsões não condicionadas em detalhes de alta frequência até imagens totalmente condicionadas. Os detalhes de alta frequência são extraídos dos mapas de autoatenção do UNet.

Depth2Image

Projeto

Depth2Image é ajustado a partir do Stable Diffusion para preservar melhor a semântica na variação de imagens guiada por texto.

Ele é condicionado em uma estimativa de profundidade monocular da imagem original.

MultiDiffusion Panorama

Artigo

MultiDiffusion Panorama define um novo processo de geração sobre um modelo de difusão pré-treinado. Esse processo integra vários métodos de geração por difusão que podem ser aplicados prontamente para gerar imagens de alta qualidade e diversas. Os resultados seguem os controles fornecidos pelo usuário, como a proporção de aspecto desejada (por exemplo, panorama) e sinais de orientação espacial, variando de máscaras de segmentação precisas a caixas delimitadoras. MultiDiffusion Panorama permite gerar imagens de alta qualidade em proporções de aspecto arbitrárias (por exemplo, panoramas).

Ajuste fino dos seus próprios modelos

Além dos modelos pré-treinados, o Diffusers possui scripts de treinamento para ajuste fino de modelos com dados fornecidos pelo usuário.

DreamBooth

Projeto

O DreamBooth ajusta finamente um modelo para ensiná-lo sobre um novo assunto. Ou seja, algumas fotos de uma pessoa podem ser usadas para gerar imagens dessa pessoa em diferentes estilos.

Inversão textual

Artigo

O Textual Inversion ajusta finamente um modelo para ensiná-lo sobre um novo conceito. Ou seja, algumas imagens de um estilo de arte podem ser usadas para gerar imagens nesse estilo.

ControlNet

Artigo

ControlNet é uma rede auxiliar que adiciona uma condição extra. Existem 8 ControlNets pré-treinados canônicos treinados em diferentes condicionamentos, como detecção de bordas, rabiscos, mapas de profundidade e segmentações semânticas.

Ponderação de Prompt

Ponderação de prompt é uma técnica simples que atribui mais peso de atenção a certas partes da entrada de texto.

Custom Diffusion

Artigo

Custom Diffusion realiza o ajuste fino apenas dos mapas de atenção cruzada de um modelo de difusão de texto para imagem pré-treinado. Ele também permite realizar adicionalmente o Textual Inversion. Por design, ele suporta treinamento de múltiplos conceitos. Assim como DreamBooth e Textual Inversion, o Custom Diffusion também é usado para ensinar a um modelo de difusão de texto para imagem pré-treinado sobre novos conceitos, a fim de gerar saídas que envolvam o(s) conceito(s) de interesse.

DiffEdit

Artigo

O DiffEdit permite a edição semântica de imagens de entrada junto com prompts de entrada, preservando as imagens de entrada originais o máximo possível.

T2I-Adapter

Artigo

T2I-Adapter é uma rede auxiliar que adiciona uma condição extra. Existem 8 adaptadores pré-treinados canônicos treinados em diferentes condicionamentos, como detecção de bordas, esboço, mapas de profundidade e segmentações semânticas.

Fabric

Artigo

Fabric é uma abordagem sem treinamento aplicável a uma ampla variedade de modelos de difusão populares, que explora a camada de autoatenção presente nas arquiteturas mais amplamente utilizadas para condicionar o processo de difusão em um conjunto de imagens de feedback.

Update on GitHub