Isenção de responsabilidade
Este é um projeto de pesquisa, NÃO um produto comercial. Os usuários têm a liberdade de criar imagens usando esta ferramenta, mas espera-se que cumpram as leis locais e a utilizem de maneira responsável. Os desenvolvedores não assumem qualquer responsabilidade por potencial uso indevido por parte dos usuários.
Notícias e atualizações
- [29 de janeiro] Atualização para suporte a difusores==0.24.0!
- [23 de outubro] Código e dados do DragBench são divulgados! Por favor, verifique o README em "drag_bench_evaluation" para obter detalhes.
- [16 de outubro] Integre o FreeU ao arrastar a imagem gerada.
- [3 de outubro] Acelerando o treinamento LoRA ao editar imagens reais. ( Agora apenas cerca de 20 anos no A100! )
- [3 de setembro] Versão v0.1.0.
- Habilite arrastar imagens geradas por difusão.
- Apresentando um novo mecanismo de orientação que melhora muito a qualidade dos resultados de arrastamento. (Inspirado em MasaCtrl)
- Ativar arrastar imagens com proporção arbitrária
- Adicionando suporte para DPM++Solver (imagens geradas)
- [18 de julho] Versão v0.0.1.
- Integre o treinamento LoRA na interface do usuário. Não há necessidade de usar script de treinamento e tudo pode ser feito convenientemente na UI!
- Otimize o layout da interface do usuário.
- Habilite o uso de VAE melhor para olhos e rostos (veja isto)
- [8 de julho] Versão v0.0.0.
- Implementar função básica de DragDiffusion
Instalação
Recomenda-se executar nosso código em uma GPU Nvidia com sistema Linux. Ainda não testamos em outras configurações. Atualmente, são necessários cerca de 14 GB de memória GPU para executar nosso método. Continuaremos otimizando a eficiência da memória
Para instalar as bibliotecas necessárias, basta executar o seguinte comando:
conda env create -f environment.yaml
conda activate dragdiff
Execute DragDiffusion
Para começar, na linha de comando, execute o seguinte para iniciar a interface do usuário gradio:
Você pode conferir nosso GIF acima que demonstra o uso da UI passo a passo.
Basicamente, consiste nas seguintes etapas:
Caso 1: arrastando imagens reais de entrada
1) treinar um LoRA
- Solte nossa imagem de entrada na caixa mais à esquerda.
- Insira um prompt descrevendo a imagem no campo "prompt"
- Clique no botão "Train LoRA" para treinar um LoRA de acordo com a imagem de entrada
2) faça a edição "arrastar"
- Desenhe uma máscara na caixa mais à esquerda para especificar as áreas editáveis.
- Clique na alça e nos pontos de destino na caixa do meio. Além disso, você pode redefinir todos os pontos clicando em "Desfazer ponto".
- Clique no botão "Executar" para executar nosso algoritmo. Os resultados editados serão exibidos na caixa mais à direita.
Caso 2: Arrastar imagens geradas por difusão
1) gerar uma imagem
- Preencha os parâmetros de geração (por exemplo, prompt positivo/negativo, parâmetros em Generation Config e FreeU Parameters).
- Clique em “Gerar imagem”.
2) "arraste" na imagem gerada
- Desenhe uma máscara na caixa mais à esquerda para especificar as áreas editáveis
- Clique nos pontos de controle e nos pontos de destino na caixa do meio.
- Clique no botão "Executar" para executar nosso algoritmo. Os resultados editados serão exibidos na caixa mais à direita.
Licença
O código relacionado ao algoritmo DragDiffusion está sob licença Apache 2.0.
BibTeX
Se você achar nosso repositório útil, deixe uma estrela ou cite nosso artigo :)
@article { shi2023dragdiffusion ,
title = { DragDiffusion: Harnessing Diffusion Models for Interactive Point-based Image Editing } ,
author = { Shi, Yujun and Xue, Chuhui and Pan, Jiachun and Zhang, Wenqing and Tan, Vincent YF and Bai, Song } ,
journal = { arXiv preprint arXiv:2306.14435 } ,
year = { 2023 }
}
Contato
Para qualquer dúvida sobre este projeto, entre em contato com Yujun ([email protected])
Reconhecimento
Este trabalho é inspirado no incrível DragGAN. O código de treinamento lora foi modificado a partir de um exemplo de difusores. Amostras de imagens são coletadas de unsplash, pexels, pixabay. Finalmente, um grande agradecimento a todos os incríveis modelos e bibliotecas de difusão de código aberto.
Links relacionados
- Arraste seu GAN: manipulação interativa baseada em pontos no coletor de imagens generativas
- MasaCtrl: controle de autoatenção mútua sem ajuste para síntese e edição consistente de imagens
- Correspondência emergente da difusão de imagens
- DragonDiffusion: Habilitando manipulação estilo arrastar em modelos de difusão
- FreeDrag: O rastreamento de pontos não é necessário para edição de imagens interativa baseada em pontos
Problemas e soluções comuns
- Para usuários com dificuldades para carregar modelos do huggingface devido a restrições de internet, por favor 1) siga este link e baixe o modelo no diretório "local_pretrained_models"; 2) Execute "drag_ui.py" e selecione o diretório para seu modelo pré-treinado em "Parâmetros de algoritmo -> Configuração do modelo base -> Caminho do modelo de difusão".