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

Publicados: 2022-09-18

Imagem de cabeçalho. Coisa de abutre esquisita, gato cinza fofo e uma medusa cibernética.

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!

Índice

O que é difusão estável?
O que você precisa para executar esta versão do Stable Diffusion?
Como instalar difusão estável com uma GUI
Instale o Python primeiro
Instale o Git e baixe o repositório do GitHub
Baixe todos os checkpoints
Como gerar imagens usando difusão estável com uma GUI
Como mascarar imagens que você cria para Inpaint
Como corrigir o erro "CUDA sem memória"

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 pela Stability.ai. Ele entende milhares de palavras diferentes e pode ser usado para criar quase qualquer imagem que sua imaginação possa evocar em quase 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
Difusão estável traz geração de arte de IA local para o seu PC
A difusão estável RELACIONADA traz a geração de arte de IA local para o seu PC

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 criou rapidamente uma interface de usuário para ele e começou a adicionar seus próprios aprimoramentos, incluindo otimizações para minimizar o uso de vídeo ram (VRAM) e criar upscaling e mascaramento.

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

Esta versão do Stable Diffusion é uma bifurcação — uma ramificação — do repositório principal (repo) criado e mantido pelo Stability.ai. Ele possui uma interface gráfica de usuário (GUI) - tornando-o mais fácil de usar do que o Stable Diffusion normal, que possui apenas uma interface de linha de comando - e um instalador que lidará com a maior parte da configuração automaticamente.

RELACIONADO: Como executar difusão estável no seu PC para gerar imagens de IA

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

Este fork também contém várias otimizações que devem permitir que ele seja executado em PCs com menos RAM, upscaling integrado e recursos faciais usando GFPGAN, ESRGAN, RealESRGAN e CodeFormer e mascaramento. O mascaramento é um grande negócio - ele permite que você aplique seletivamente a geração de imagem de IA a certas partes da imagem sem distorcer outras partes, um processo normalmente chamado de inpainting.

  • Um mínimo de 10 gigabytes livres em seu disco rígido
  • Uma GPU NVIDIA com 6 GB de RAM (embora você possa fazer 4 GB funcionar)
  • Um PC com Windows 11, Windows 10, Windows 8.1 ou Windows 8
  • O repositório GitHub WebUI, por AUTOMATIC1111
  • Python 3.10.6 (Versões mais recentes e versões mais antigas também devem funcionar)
  • Os pontos de verificação oficiais de difusão estável (cuidado com os pontos de verificação v1.5 no final de setembro!)
  • Os Checkpoints GFPGAN v1.3 (v1.4 também podem funcionar)
  • Quaisquer modelos ESRGAN adicionais que você queira. Você pode usar quantos ou poucos quiser.

Como instalar difusão estável com uma GUI

O processo de instalação foi simplificado significativamente, mas ainda há algumas etapas que você precisa fazer 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. Vá para esse link, role até a parte inferior da página e clique em “Windows Installer (64 bits)”.

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

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

Instale o Git e baixe o repositório do GitHub

Você precisa baixar e instalar o Git no Windows antes que o instalador 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.

RELACIONADO: Como instalar o Git no Windows

Em seguida, você precisa baixar os arquivos do repositório GitHub. Clique no botão verde “Código” e clique em “Baixar ZIP” na parte inferior do menu.

Abra o arquivo ZIP no Explorador de Arquivos ou em seu programa de arquivamento de arquivos preferido e extraia o conteúdo em qualquer lugar que desejar. Apenas tenha em mente que a pasta é onde você precisará 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 quiser.

Nota: Certifique-se de não arrastar acidentalmente “stable-diffusion-webui-master” para outra pasta em vez de espaço vazio - se você fizer isso, ele cairá nessa pasta, não na pasta pai desejada.

Baixe todos os checkpoints

Existem alguns pontos de verificação necessários para que isso funcione. O primeiro e mais importante são os Pontos de Verificação de Difusão Estável. Você precisa criar uma conta para baixar os pontos de verificação, mas não é necessário muito para a conta - tudo o que eles precisam é de um nome e endereço de e-mail, e você está pronto para ir.

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

Copie e cole “sd-v1-4.ckpt” na pasta “stable-diffusion-webui-master” da seção anterior, clique com o botão direito do mouse em “sd-v1-4.ckpt” e clique em renomear. Digite “model.ckpt” no campo de texto e pressione Enter. Certifique-se de que é “model.ckpt” — caso contrário, isso não funcionará.

Nota: A função renomear é um ícone no Windows 11.

Você também precisa baixar os pontos de verificação GFPGAN. O autor do repositório que estamos usando pediu checkpoints GFPGAN v1.3, mas você pode usar a v1.4 se quiser experimentá-la. Role a página e clique em “Modelo V1.3”.

Coloque esse arquivo, “GFPGANv1.3.pth,” na pasta “stable-diffusion-webui-master” assim como você fez com o arquivo “sd-v1-4.ckpt”, mas não o renomeie. A pasta “stable-diffusion-webui-master” agora deve conter estes arquivos:

Esta é a aparência da pasta depois que você renomeou o modelo Stable Diffusion e adicionou o modelo GFPGAN.

Você também pode baixar quantos checkpoints ESRGAN desejar. Eles normalmente vêm empacotados como arquivos ZIP. Após baixar um, abra o arquivo ZIP e extraia o arquivo “.pth” para a pasta “ESRGAN”. Aqui está um exemplo:

A localização para os modelos ESRGAN.

Os modelos ESRGAN tendem a fornecer funcionalidades mais específicas, então escolha alguns que agradem a você.

Agora, você só precisa clicar duas vezes no arquivo “webui-user.bat”, que está localizado na pasta principal “stable-diffusion-webui-master”. Uma janela de console aparecerá e começará a buscar todos os outros arquivos importantes, construir um ambiente Python e configurar uma interface de usuário da web. Isso parecerá assim:

Observação: espere que a primeira vez que você executar isso demore pelo menos alguns minutos. Ele precisa baixar um monte de coisas da Internet. Se parecer travar por um tempo excessivamente longo em uma etapa, tente selecionar a janela do console e pressionar a tecla Enter.

O cliente WebUI baixando e instalando todos os ativos.

Quando terminar, o console exibirá:

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

RELACIONADO: O que é o endereço IP 127.0.0.1 e como você o usa?

Como gerar imagens usando difusão estável com uma GUI

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

Nota: O que exatamente isso significa, o que está acontecendo? 127.0.0.1 é o endereço do host local — o endereço IP que seu computador fornece a si mesmo. 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 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 Roll: 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 receber uma saída. Mais geralmente é melhor, mas há retornos decrescentes.
  • Método de Amostragem: A matemática subjacente que governa 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 corrigir rostos estranhos ou distorcidos.
  • Batch Count: 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á o prompt que você der. Números maiores significam que ele segue com muito cuidado, enquanto números menores dão 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.

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

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

A janela de saída ficará assim:

Saída para um prompt sobre vacas das terras altas. Cinco vacas das montanhas, duas pretas e brancas.

Nota: Suas imagens serão diferentes.

A imagem do meio superior é aquela que usaremos para tentar mascarar um pouco mais tarde. Não há realmente uma razão para essa escolha específica além da preferência pessoal. Pegue qualquer imagem que você gosta.

Uma adorável vaca das montanhas em uma floresta.

Selecione-o e clique em "Enviar para o Inpaint".

Como mascarar imagens que você cria para Inpaint

Inpainting é 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) partes da imagem seletivamente. 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 que você destacar, enquanto o inpaint não mascarado fará exatamente o oposto - apenas a área que você mascarar será preservada.

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

Dica: Se você está 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ê quer um círculo, por exemplo, é contraproducente.

Vamos pegar nosso exemplo de vaca das terras altas e dar a ele um chapéu de chef. Mascare uma região com aproximadamente a forma 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 ideal (ish).

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

Nota: Você notará que a borda esquerda do chapéu apagou parte de seu chifre. Isso aconteceu porque a configuração “Mask Blur” estava um pouco alta demais. Se você vir coisas assim em suas imagens, tente diminuir o valor “Mask Blur”.
Uma vaca das terras altas com um chapéu de chef.
Prompt: Chapéu do Chef Configurações: Inpaint Masked, Latent Diffusion, CFG 9.5, intensidade de ruído 0.75, Sampling Steps = 50, Sampling Method = Euler_A

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

Uma vaca das terras altas com um chapéu-coco.
Prompt: Bwel hat Configurações: Inpaint Masked, Latent Diffusion, CFG 9,5, intensidade de ruído 0,75, Etapas de Amostragem = 50, Método de Amostragem = Euler_A

Quão positivamente elegante.

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

Como corrigir o erro “CUDA sem memória”

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

Se você está ansioso para fazer imagens maiores em um computador que não tem problemas com imagens 512×512, ou está se deparando com vários erros de “Memória insuficiente”, há algumas mudanças na configuração que devem ajudar.

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

RELACIONADO: Como escrever um script em lote no Windows

Se você quer apenas fazer fotos enormes ou está ficando sem memória RAM em uma GPU da série GTX 10XX, experimente --opt-split-attention . Vai ficar assim:

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

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

Você pode adicionar --always-batch-cond-uncond para tentar corrigir problemas de memória adicionais se os comandos anteriores não ajudarem. Há também uma alternativa para --medvram que pode reduzir ainda mais o uso de VRAM, --lowvram , mas não podemos atestar se funcionará ou não.

A adição de uma interface de usuário é um passo crítico para tornar esses tipos de ferramentas orientadas por IA acessíveis a todos. As possibilidades são quase infinitas, e mesmo uma rápida olhada nas comunidades online dedicadas à arte da IA ​​mostrará o quão poderosa é a tecnologia, mesmo em sua infância. Obviamente, se você não tiver um computador para jogos ou não quiser se preocupar com a configuração, sempre poderá 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.