Automatizando a geração de imagens com Stable Diffussion

Olá, tudo bem?

Nesse post iremos descobrir como podemos automatizar a geração de imagens utilizando Stable Diffusion e o N8N.
Imagine que você preencha uma lista com uma descrição breve das imagens desejadas e uma ferramenta trabalhe para gerá-las para você.

Interessante, não?
Essa automação foi aplicada nesse blog por exemplo e somente informando o título da postagem é gerado uma imagem de um tamanho e ‘modelo’ pré-definidos.

Vamos acompanhar.
Obs: O fluxo estará disponível para Download no final do Post.

Tópicos:

  • Analisando o fluxo de automação
  • Campos obrigatórios e opcionais
  • Testando o fluxo manualmente
  • Utilizando a partir de outro fluxo
  • Fluxo para Download

Analisando o fluxo de automação

Nosso fluxo N8N está configurado e pronto para receber entradas de duas maneiras: manualmente, para testes, ou sendo acionado por outro workflow do N8N.
Ao importar o fluxo, se o seu Stable Diffusion estiver rodando corretamente e nas configurações padrões (caso diferente, modifique em “exemplo informações” adicionando a variavel stablediff_endpoint com o endpoint correto), o fluxo estará disponível para ser rodado e a imagem será gerada no final.

Imagem gerada em “melhorando_tamanho”.

A estrutura do fluxo é a seguinte:

  • Entrada: Pode ser rodando o fluxo manualmente (elemento ‘execucao_manual’), tanto sendo chamada por outro subfluxo (elemento ‘chamada_outro_fluxo’).
  • verifica_campos_obrigatorios: Esse elemento irá verificar se a variável prompt foi preenchida, ela é uma variável obrigatória.
  • variaveis_globais: Possui um conjunto de variáveis com valores padrão.
  • junta_informacoes: Pequeno código que irá substituir das variáveis globais as modificações informadas pelo usuário.
  • verifica_stablediff_online: Esse elemento é uma simples chamada no endpoint para verificar se o StableDiffusion está sendo executado normalmente.
  • gerando_imagem: Componente responsável por gerar a imagem.
  • convertendo_em_arquivo: Esse elemento irá ler a resposta do Stable Diffusion e extrair a imagem.
  • melhorando_tamanho: O Stable Diffusion por padrão trás a imagem no formato PNG e com tamanho grande. O objetivo desse elemento é retornar uma imagem menor para uso na Web sem perder a qualidade.

Campos obrigatórios e opcionais

Nosso fluxo N8N está configurado e pronto para receber entradas de duas maneiras: manualmente, para testes, ou sendo acionado por outro workflow do N8N.
A única variável obrigatória que você precisa fornecer é o “prompt”. Utilize a descrição em inglês para melhor assertividade do modelo.
No entanto, se desejar personalizar ainda mais a geração de imagens, temos várias opções disponíveis que você pode ajustar conforme necessário.

Para adicionar, você pode adicionar esses parâmetros em:

  • exemplo_informações
    • Adicionando a variável no mapeamento.
  • chamada_outro_fluxo
    • Adicionando no mapeamento de ‘chamada_outro_fluxo’.

As variáveis disponíveis para modificação são:

  • stablediff_endpoint: Este é o endpoint onde o modelo de difusão está hospedado. No nosso caso, é configurado como “http://host.docker.internal:7860″.
    • Modifique se necessário apontando para o endpoint do seu Stable Diffusion.
  • checkpoint: Refere-se ao modelo treinado, essencial para a geração de imagens.
    • Informe o modelo instalado no seu Stable Diffusion.
  • width: Define a largura da imagem gerada. Ajustar este valor pode alterar a resolução e o aspecto visual da imagem final.
  • height: Define a altura da imagem gerada.
  • step: Este parâmetro controla o número de passos que o algoritmo de difusão executa para gerar a imagem. Um valor de 20 passos é utilizado no exemplo e influencia na qualidade e o tempo de processamento da imagem.
  • sampler_name: O nome do sampler utilizado no processo de geração. “Euler Simple” é o sampler escolhido, que determina o método de amostragem para a criação da imagem.
  • negative_prompt: Permite especificar elementos que você deseja evitar na imagem gerada. No exemplo, está vazio, mas pode ser preenchido para refinar o resultado.

Testando o fluxo manualmente

Nesta etapa de teste manual do fluxo N8N, você tem a possibilidade de modificar o elemento “exemplo_informacoes” para adicionar o prompt desejado.
Isso permite que você experimente diferentes descrições e veja como o modelo responde a cada uma delas, ajustando conforme necessário para obter o resultado desejado.

Dica Útil

Para otimizar ainda mais a criação e personalização do seu fluxo, considere utilizar ferramentas de IA que podem auxiliar na geração e automação de processos.


Utilizando a partir de outro fluxo

É totalmente viável integrar o fluxo de exemplo de geração de imagem em outro fluxo N8N. Para isso, basta adicionar o elemento “Execute Workflow” no seu fluxo principal.
Ao configurar este elemento, você deve preencher a variável “prompt” com a descrição desejada para a imagem que pretende gerar.


Essa abordagem permite que você reutilize o fluxo de geração de imagem em diferentes contextos.


Fluxo para download

Disponibilizamos um fluxo para Download, podendo ser utilizado diretamente ou sendo chamada por outro fluxo.
Esse fluxo irá simplificar a criação de imagens com o Stable Diffusion.

Dica Útil

Para otimizar ainda mais a criação e personalização do seu fluxo, considere utilizar ferramentas de IA que podem auxiliar na geração e automação de processos.

E por hoje é só, até mais!