Como executar difusão estável localmente com uma GUI no Windows

Série de imagens mostrando difusão estável.

Você pode instalar o Stable Diffusion localmente em seu PC , mas o processo típico envolve muito trabalho com a linha de comando para instalar e usar. Felizmente para nós, a comunidade Stable Diffusion resolveu esse problema. Veja como instalar uma versão do Stable Diffusion que roda localmente com uma interface gráfica de usuário!

O que é difusão estável?

Stable Diffusion é um modelo de IA que pode gerar imagens a partir de prompts de texto ou modificar imagens existentes com um prompt de texto, como MidJourney ou DALL-E 2 . Foi lançado pela primeira vez em agosto de 2022 por Stability.ai. Ele compreende milhares de palavras diferentes e pode ser usado para criar praticamente qualquer imagem que sua imaginação possa imaginar em praticamente qualquer estilo.

Existem duas diferenças críticas que diferenciam o Stable Diffusion da maioria dos outros geradores populares de arte de IA:

  • Pode ser executado localmente no seu PC
  • É um projeto de código aberto

O último ponto é realmente a questão importante aqui. Tradicionalmente, o Stable Diffusion é instalado e executado por meio de uma interface de linha de comando . Funciona, mas pode ser desajeitado, pouco intuitivo e é uma barreira significativa à entrada de pessoas que, de outra forma, estariam interessadas. Mas, como é um projeto de código aberto, a comunidade rapidamente criou múltiplas interfaces de usuário para ele e começou a adicionar seus próprios aprimoramentos, incluindo otimizações para minimizar o uso de RAM de vídeo (VRAM) e aumentar a escala e o mascaramento.

O que você precisa para executar esta versão do Stable Diffusion?

Vamos cobrir dois forks (ramificações) diferentes do Stable Diffusion do repositório principal (repo) criado e mantido por Stability.ai . Ambos têm uma interface gráfica de usuário (GUI) – tornando-os mais fáceis de usar do que o Stable Diffusion normal, que possui apenas uma interface de linha de comando – e um instalador que cuidará da maior parte da configuração automaticamente. Ambos fornecem a mesma funcionalidade básica, mas a experiência do usuário é bem diferente. O WebUI do AUTOMATIC1111 é muito intuitivo e o mais fácil de aprender e usar, mas o ComfyUI oferece uma interface de usuário interessante e poderosa baseada em nós que atrairá usuários avançados e qualquer pessoa que queira encadear vários modelos.

Como sempre, tenha cuidado com forks de software de terceiros que você encontra no GitHub. Já os usamos há algum tempo sem problemas, assim como milhares de outros, por isso estamos inclinados a dizer que é seguro. Felizmente, o código e as alterações aqui são pequenos em comparação com algumas bifurcações de projetos de código aberto.

Esses forks também contêm várias otimizações que devem permitir a execução em PCs com menos RAM, upscaling integrado e recursos faciais usando GFPGAN, ESRGAN, RealESRGAN e CodeFormer e mascaramento. O mascaramento é muito importante – ele permite que você aplique seletivamente a geração de imagens de IA a certas partes da imagem sem distorcer outras partes, um processo normalmente chamado de pintura interna.

  • Um mínimo de 10 gigabytes livres em seu disco rígido
    • Você pode reutilizar o mesmo ambiente Python e pontos de verificação para economizar espaço se quiser usar o ComfyUI e o WebUI do AUTOMATIC1111.
    • Você também pode simplesmente instalá-los separadamente, o que é muito mais fácil.
  • Uma GPU NVIDIA com 6 GB de RAM (embora você possa fazer 4 GB funcionarem)
    • SDXL exigirá ainda mais RAM para gerar imagens maiores.
    • Você pode fazer as GPUs AMD funcionarem, mas elas exigem ajustes
  • Um PC com Windows 11, Windows 10, Windows 8.1 ou Windows 8
  • Um de:
    • O repositório GitHub WebUI por AUTOMATIC1111
    • UI confortável
  • Python 3.10.6 (use esta versão para garantir que não haja problemas de compatibilidade)
  • Os pontos de verificação oficiais do Stable Diffusion (fique de olho nas novas versões!)
  • Quaisquer modelos adicionais que você queira. Você pode usar quantos quiser.

Como instalar o Stable Diffusion com uma GUI

O processo de instalação foi simplificado significativamente, mas ainda existem algumas etapas que você precisa executar manualmente antes que o instalador possa ser usado.

Instale o Python primeiro

A primeira coisa que você deve fazer é instalar a versão do Python, 3.10.6 , recomendada pelo autor do repositório. Acesse esse link, role até o final da página e clique em “ Windows Installer (64 bits) ”.

Clique em “Instalador do Windows (64 bits)”.

Clique no executável que você baixou e siga as instruções. Se você já tem o Python instalado (e certamente tem), basta clicar em “Atualizar”. Caso contrário, siga as instruções recomendadas.

Recomendado:  22 jogos clássicos do Windows que você pode jogar agora mesmo

Certifique-se de adicionar Python 3.10.6 ao PATH se tiver uma opção para isso.

Instale o Git e baixe o repositório GitHub

Você precisa baixar e instalar o Git no Windows antes que o instalador do Stable Diffusion possa ser executado. Basta baixar o executável Git de 64 bits , executá-lo e usar as configurações recomendadas, a menos que você tenha algo específico em mente.

Em seguida, você precisa baixar os arquivos do GitHub para WebUI , ComfyUI do AUTOMATIC1111 ou ambos.

Se você estiver usando o WebUI do AUTOMATIC1111, clique no botão verde “Código” e, em seguida, clique em “Baixar ZIP” na parte inferior do menu.

Clique no botão verde “Código” e clique em “Baixar ZIP”.

Se você quiser dar uma olhada no ComfyUI, role para baixo até a seção “ Instalando ” e clique em “Link direto para download”.

O link de download direto do ComfyUI.

Abra o arquivo compactado no Explorador de Arquivos ou em seu programa de arquivamento de arquivos preferido e extraia o conteúdo onde desejar. Apenas tenha em mente que a pasta é onde você precisa ir para executar o Stable Diffusion. Este exemplo os extraiu para o diretório C:\, mas isso não é essencial.

Arraste a pasta “stable-diffusion-webui-master” para onde desejar.

Certifique-se de não arrastar acidentalmente “stable-diffusion-webui-master” ou “ComfyUI_windows_portable” para outra pasta em vez de um espaço vazio – se você fizer isso, ele cairá nessa pasta, não na pasta pai que você pretendia.

Baixe todos os pontos de verificação

Existem alguns pontos de verificação necessários para que isso funcione. Os primeiros e mais importantes são os Pontos de Verificação de Difusão Estável . No momento em que este artigo foi escrito, o WebUI do AUTOMATIC1111 buscaria automaticamente os pontos de verificação da versão 1.5 para você. Se quiser usar os pontos de verificação SDXL, você precisará baixá-los manualmente . O ComfyUI não busca os pontos de verificação automaticamente. Você também pode querer pegar o ponto de verificação do refinador . Não é estritamente necessário, mas pode melhorar os resultados obtidos com o SDXL e é fácil de ligar e desligar.

O download dos pontos de verificação tem vários gigabytes. Não espere que isso seja feito instantaneamente.

Depois que os pontos de verificação forem baixados, você deverá colocá-los na pasta correta. Se você estiver seguindo exatamente o que fizemos, esse caminho será “C:\stable-diffusion-webui\models\Stable-diffusion” para WebUI do AUTOMATIC1111 ou “C:\ComfyUI_windows_portable\ComfyUI\models\checkpoints” para UI confortável.

Agora você tem opções. Você pode adicionar modelos adicionais (como ESRGAN, Loras , etc) que adicionam funções extras. Alguns simplesmente aumentam a qualidade do upscaling, enquanto outros são projetados para fornecer melhores resultados para tipos específicos de imagens, como anime, fotografias de paisagens, retratos realistas, artistas específicos ou quase qualquer outra coisa que você possa imaginar. Tanto o ComfyUI quanto o WebUI do AUTOMATIC1111 criam pastas com nomes apropriados para esses modelos adicionais – basta arrastar e soltar e pronto.

Agora você só precisa executar o arquivo em lote para o ComfyUI ou o WebUI do AUTOMATIC1111. Abra a pasta WebUI principal do AUTOMATIC1111 e clique duas vezes em “webui-user.bat” se quiser usar essa interface, ou abra a pasta ComfyUI e clique em “run_nvidia_gpu.bat” para executar o ComfyUI.

A primeira vez que você executar isso levará pelo menos alguns minutos. Ele precisa baixar um monte de coisas da Internet. Se parecer travar por um tempo excessivamente longo em uma única etapa, tente selecionar a janela do console e pressionar a tecla Enter.

Ambos serão parecidos com isso.

O cliente WebUI baixando e instalando todos os ativos.

Quando terminar, o console exibirá:

Executando na URL local: http:// 127.0.0.1 :7860 Para criar um link público, defina `share=True` em `launch()`

O ComfyUI será executado no mesmo endereço IP, pois é uma interface web hospedada localmente, mas é executado na porta 8188 em vez de 7860.

Como gerar imagens usando difusão estável com WebUI do AUTOMATIC1111

Tudo bem, você instalou a variante WebUI do Stable Diffusion e seu console informa que está “executando no URL local: http://127.0.0.1:7860”.

O que exatamente isso significa, o que está acontecendo? 127.0.0.1 é o endereço localhost – o endereço IP fornecido pelo seu computador. Esta versão do Stable Diffusion cria um servidor em seu PC local que pode ser acessado por meio de seu próprio endereço IP, mas somente se você se conectar pela porta correta : 7860.

Abra seu navegador, digite “127.0.0.1:7860” ou “localhost:7860” na barra de endereço e pressione Enter. Você verá isso na guia txt2img:

A primeira página do cliente WebUI no Google Chrome.

Se você já usou a Difusão Estável antes, essas configurações serão familiares para você, mas aqui está uma breve visão geral do que significam as opções mais importantes:

  • Prompt: A descrição do que você gostaria de criar.
  • Botão Palete do Pintor: Aplica um estilo artístico aleatório ao seu prompt.
  • Etapas de amostragem: o número de vezes que a imagem será refinada antes de você receber uma saída. Mais geralmente é melhor, mas há retornos decrescentes.
  • Método de amostragem: A matemática subjacente que rege como a amostragem é tratada. Você pode usar qualquer um deles, mas euler_a e PLMS parecem ser as opções mais populares. Você pode ler mais sobre PLMS neste artigo.
  • Restaurar rostos: usa GFPGAN para tentar consertar rostos estranhos ou distorcidos.
  • Contagem de lote: O número de imagens a serem geradas.
  • Tamanho do lote: O número de “lotes”. Mantenha isso em 1, a menos que você tenha uma quantidade enorme de VRAM.
  • Escala CFG: Com que cuidado a Difusão Estável seguirá a solicitação que você fornecer. Números maiores significam que ele é seguido com muito cuidado, enquanto números mais baixos proporcionam mais liberdade criativa.
  • Largura: A largura da imagem que você deseja gerar.
  • Altura: A largura da imagem que você deseja gerar.
  • Semente: O número que fornece uma entrada inicial para um gerador de números aleatórios. Deixe em -1 para gerar aleatoriamente uma nova semente.
Recomendado:  Microsoft promete melhorar o desempenho do Windows 11 em 2022

Vamos gerar cinco imagens com base no prompt: “uma vaca das terras altas em uma floresta mágica, fotografia de filme 35mm, nítida” e ver o que obtemos usando o amostrador de Euler, 40 etapas de amostragem e uma escala CFG de 5.

Você sempre pode clicar no botão “Interromper” para interromper a geração se o seu trabalho estiver demorando muito.

A janela de saída ficará assim:

Cinco vacas diferentes das terras altas

Suas imagens serão diferentes.

A imagem inferior esquerda é a que usaremos para testar o mascaramento um pouco mais tarde. Não há realmente uma razão para esta escolha específica além da preferência pessoal. Pegue qualquer imagem que desejar.

Uma linda vaca das montanhas

Selecione-o e clique em “Enviar para Inpaint”.

Como mascarar imagens que você cria para pintar

A pintura interna é um recurso fantástico. Normalmente, a Difusão Estável é usada para criar imagens inteiras a partir de um prompt, mas a pintura interna permite gerar (ou regenerar) seletivamente partes da imagem. Existem duas opções críticas aqui: inpaint mascarado, inpaint não mascarado.

O Inpaint mascarado usará o prompt para gerar imagens dentro da área destacada, enquanto o Inpaint não mascarado fará exatamente o oposto – apenas a área mascarada será preservada.

Abordaremos um pouco sobre o Inpaint mascarado primeiro. Arraste o mouse pela imagem segurando o botão esquerdo e você notará uma camada branca aparecendo na parte superior da imagem. Desenhe o formato da área que deseja substituir e certifique-se de preenchê-la totalmente. Você não está circulando uma região, você está mascarando toda a região.

Se você estiver apenas adicionando algo a uma imagem existente, pode ser útil tentar alinhar a região mascarada com a forma aproximada que você está tentando criar. Mascarar uma forma triangular quando você deseja um círculo, por exemplo, é contraproducente.

Vamos pegar o exemplo da vaca das montanhas e dar-lhe um chapéu de chef. Mascare uma região aproximadamente no formato de um chapéu de chef e certifique-se de definir “Tamanho do lote” para mais de 1. Você provavelmente precisará de vários para obter um resultado (ish) ideal.

Além disso, você deve selecionar “Ruído Latente” em vez de “Preencher”, “Original” ou “Nada Latente”. Tende a produzir os melhores resultados quando você deseja gerar um objeto completamente novo em uma cena.

Vaca com chapéu de chef
Prompt: “uma vaca das terras altas usando um chapéu de chef em uma floresta mágica, fotografia de filme 35mm, nítida”
Desfoque de máscara: 10
Conteúdo mascarado: Ruído latente
Área de pintura: Imagem inteira
Método de amostragem: Euler A
Etapas de amostragem: 30
Escala CFG: 5

Tudo bem – talvez um chapéu de chef não seja a escolha certa para sua vaca das montanhas. Sua vaca das terras altas gosta mais das vibrações do início do século 20, então vamos dar a ela um chapéu-coco.

vaca com chapéu-coco
Prompt: “uma vaca das terras altas usando um chapéu-coco em uma floresta mágica, fotografia de filme 35mm, nítida”
Desfoque de máscara: 10
Conteúdo mascarado: Ruído latente
Área de pintura: Imagem inteira
Método de amostragem: Euler A
Etapas de amostragem: 30
Escala CFG: 5

Quão positivamente elegante.

Claro, você também pode fazer exatamente o oposto com Inpaint Not Masked. É conceitualmente semelhante, exceto que as regiões definidas são invertidas. Em vez de marcar a região que deseja alterar, marque as regiões que deseja preservar. Muitas vezes é útil quando você deseja mover um objeto pequeno para um fundo diferente.

Como usar difusão estável com ComfyUI

ComfyUI é muito diferente do WebUI do AUTOMATIC1111, mas sem dúvida mais útil se você quiser realmente personalizar seus resultados. ComfyUI é executado em nós. Se você não está familiarizado com o funcionamento de um sistema baseado em nós, aqui está uma analogia que pode ser útil.

Imagine que a ComfyUI é uma fábrica que produz uma imagem. Dentro da fábrica há uma variedade de máquinas que fazem diversas coisas para criar uma imagem completa, assim como você pode ter várias máquinas em uma fábrica que produz carros. No caso do ComfyUI e do Stable Diffusion, você tem algumas “máquinas” ou nós diferentes. Se parece com isso:

O fluxo de trabalho padrão do ComfyUI

Parece pior do que realmente é. Aqui está o que cada nó faz:

  • Load Checkpoint: carrega o modelo treinado.
  • Codificação de texto de clipe: onde você insere um prompt. Existem dois porque temos um prompt positivo, que diz ao Stable Diffusion o que você deseja, e um prompt negativo, que diz o que evitar.
  • Imagem latente vazia: cria uma imagem em branco (com ruído).
  • KSampler: O nó que contém o amostrador. O amostrador é a parte do programa que converte ruído aleatório em “coisas” reconhecíveis.
  • Decodificação VAE: Cria a imagem final.
  • Salvar imagem: grava a imagem em seu disco rígido.
Recomendado:  O Windows 11 adiciona um ótimo recurso do desktop KDE do Linux

Cada nó possui vários pontos de fixação que informam o que você precisa “conectar” a cada ponto, de forma semelhante às correias transportadoras que conectam diferentes máquinas em uma fábrica. Então, se você quisesse o prompt: “uma vaca das terras altas em uma floresta mágica, fotografia de filme 35mm, nítida”, você o inseriria na caixa anexada à posição “positiva” no nó do amostrador.

Os nós de prompt anexados ao nó de amostra.

Desconectamos a imagem latente e os nós do modelo para limpar a confusão da captura de tela, mas eles devem estar conectados para que o Stable Diffusion funcione.

Então você precisa escolher as configurações que deseja que o amostrador use. Você pode obter resultados totalmente diferentes aqui, dependendo do que selecionar.

  • Semente: Um número aleatório usado para gerar o ruído original na imagem.
  • CFG: Quão fortemente a Difusão Estável irá aderir ao prompt. Quanto maior o valor, mais cuidadosamente a Difusão Estável seguirá o prompt.
  • Etapas: quantas vezes o amostrador irá amostrar o ruído para gerar uma imagem.
  • Sampler_name: O amostrador que você usa para amostrar o ruído. Eles geralmente produzem resultados diferentes, então teste vários.
  • Denoise: Relevante para inpainting e img2img. Relaciona-se ao quanto sua imagem de saída se assemelha à imagem de entrada. Quanto maior o valor, mais diferentes serão.

Ajuste os valores de altura e largura do nó “Empty Latent Image” para alterar o tamanho da imagem de saída. Comece com 512×512 se sua GPU não tiver muita memória. Se você tiver 12 GB de VRAM (ou mais), poderá produzir imagens de 1024×1024 sem problemas. Você também pode alterar o tamanho do lote para produzir mais de uma variante de cada prompt ao iniciar a geração da imagem.

O nó Imagem latente vazia possui três campos: largura da imagem, altura e tamanho do lote.

Agora você terminou. Clique em “Prompt de fila” para iniciar a geração de imagens. Você verá cada nó acender enquanto estiver ativo.

Clique

Aqui está uma das imagens que obtivemos:

Uma vaca fofa.

ComfyUI é poderoso e extremamente flexível. Se você deseja realizar operações adicionais em uma imagem, basta clicar com o botão direito e começar a adicionar nós.

Adicione mais nós

Você pode adicionar quantos nós de modelo e modificação desejar, mas lembre-se de que cada etapa do processo, cada nó adicionado, aumentará o tempo computacional. A comunidade Stable Diffusion criou um grande número de arranjos de nós pré-construídos (geralmente chamados de fluxos de trabalho) que permitem ajustar seus resultados. Testamos alguns e descobrimos que muitas vezes eles podem melhorar significativamente seus resultados. Como sempre, tenha cuidado ao baixar e usar os recursos da comunidade – a comunidade Stable Diffusion é bastante segura, mas você nunca pode ser muito cuidadoso.

Como corrigir o erro “CUDA Out Of Memory” na WebUI do AUTOMATIC1111

Quanto maior a imagem criada, mais memória de vídeo será necessária. A primeira coisa que você deve tentar é gerar imagens menores. A difusão estável produz imagens boas – embora muito diferentes – em 256×256.

Se você deseja criar imagens maiores em um computador que não tem problemas com imagens de 512×512 ou se está enfrentando vários erros de “Sem memória”, há algumas alterações na configuração que devem ajudar.

Abra “webui-user.bat” no Bloco de Notas ou qualquer outro editor de texto simples que desejar. Basta clicar com o botão direito em “webui-user.bat”, clicar em “Editar” e selecionar Bloco de Notas. Identifique a linha que diz set COMMANDLINE_ARGS=. É aí que você colocará os comandos para otimizar o funcionamento do Stable Diffusion.

Se você deseja apenas tirar fotos enormes ou está ficando sem RAM em uma GPU da série GTX 10XX, experimente --opt-split-attentionprimeiro. Será assim:

Bloco de notas com argumento opt_split_attention.

Em seguida, clique em Arquivo > Salvar. Alternativamente, você pode pressionar Ctrl+S no teclado.

Se você ainda estiver recebendo erros de memória, tente adicionar --medvramargumentos de linha de comando (COMMANDLINE_ARGS) à lista.

Bloco de notas com argumento opt_split_attention e medvram.

Você pode adicionar --always-batch-cond-uncondpara tentar corrigir problemas de memória adicionais se os comandos anteriores não ajudarem. Também existe uma alternativa --medvram que pode reduzir ainda mais o uso de VRAM, --lowvrammas não podemos atestar se realmente funcionará ou não.

A adição de uma interface de usuário é um passo crítico para tornar esses tipos de ferramentas baseadas em IA acessíveis a todos. As possibilidades são quase infinitas, e mesmo uma rápida olhada nas comunidades online dedicadas à arte de IA mostrará o quão poderosa é a tecnologia, mesmo ainda em sua infância. Claro, se você não tem um computador para jogos ou não quer se preocupar com a configuração, você sempre pode usar um dos geradores de arte de IA online . Apenas tenha em mente que você não pode assumir que suas entradas são privadas.