Article image
Thiago Poiani
Thiago Poiani25/05/2023 16:36
Compartilhe

Inteligência Artificial Generativa com Modelos de Difusão (Stable Diffusion)

  • #Python
  • #Inteligência Artificial (IA)

A inteligência artificial (IA) é um campo complexo e multifacetado que engloba vários subcampos, cada um com suas próprias características e aplicações únicas. Um tipo de IA que tem chamado a atenção de pesquisadores e entusiastas é a IA generativa

 

Inteligência artificial generativa encontrou seu caminho em várias aplicações, e uma área particularmente fascinante é a arte. Com a capacidade de gerar conteúdo novo e original, a IA generativa abriu novas possibilidades no mundo da arte, permitindo que artistas criem peças únicas que de outra forma seriam impossíveis. 

 

Neste post do blog, vamos guiá-lo pelo processo de configuração do Stable Diffusion Web UI, uma poderosa ferramenta para trabalhar com IA generativa. 

 

Se você é um artista procurando explorar novas maneiras de se expressar ou um entusiasta da tecnologia interessado nos últimos desenvolvimentos em IA, este post do blog é para você. Então, vamos mergulhar no fascinante mundo da arte generativa e aprender como configurar o Stable Diffusion Web UI

image

Prompt: close up photo of a cute fox, wildfire forest, haze, halation, bloom, dramatic atmosphere, centred, rule of thirds, 200mm 1.4f macro shot, 8k uhd 
Negative prompt: (semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.4), text, close up, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck 
Steps: 25, Sampler: Euler a, CFG scale: 7, Seed: 2525211986, Size: 768x768, Model hash: 81086e2b3f, Model: Realistic_Vision_V2.0 

image

Prompt: modern disney cute fox 
Negative prompt: person human 
Steps: 50, Sampler: Euler a, CFG scale: 7, Seed: 3008055887, Size: 768x768, Model hash: 8067368533, Model: moDi-v1-pruned, Denoising strength: 0.4 

image

Prompt: nvinkpunk 
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 3700654680, Size: 768x768, Model hash: 2182245415, Model: Inkpunk-Diffusion-v2, Denoising strength: 0.45

Configurar Stable Diffusion Web UI 

Configurar o projeto Stable Diffusion Web UI no Windows pode parecer assustador, mas com os passos certos, pode ser um processo direto. Neste post do blog, vamos passar pelas etapas necessárias para configurar o projeto em sua máquina com Windows.

Quando se trata de instalar o Python 3.10.6 no Windows, o primeiro passo é baixar os arquivos do site oficial do Python. Basta ir para https://www.python.org/downloads/release/python-3106/ e baixar o instalador apropriado para o seu sistema.

Vale ressaltar que alguns desenvolvedores preferem usar um gerenciador de pacotes como Anaconda ou Miniconda para instalar o Python e gerenciar seu ambiente. No entanto, se você preferir instalar o Python diretamente sem usar um gerenciador de pacotes, pode seguir as instruções fornecidas no site do Python.

Depois de baixar o instalador, clique duas vezes nele para executá-lo e siga as instruções para instalar o Python em seu sistema. Certifique-se de selecionar a opção para adicionar o Python ao seu PATH para que você possa usá-lo facilmente a partir da linha de comando. Depois que a instalação estiver concluída, você pode verificar se o Python foi instalado corretamente abrindo um prompt de comando e executando o comando python --version. Se tudo tiver sido configurado corretamente, isso deve exibir a versão do Python que você acabou de instalar.

Instalar Git

Em seguida, precisamos instalar o Git. O Git é um sistema de controle de versão que usaremos para clonar o projeto Stable Diffusion Web UI. Você pode baixar o instalador no site oficial do Git: https://git-scm.com/download/win 

Clonar o projeto Stable Diffusion Web UI

Depois de instalarmos o Python e o Git, podemos clonar o projeto Stable Diffusion Web UI do GitHub. Para fazer isso, abra um prompt de comando e navegue até o diretório onde deseja clonar o projeto. Em seguida, execute o seguinte comando: 

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 

Instalar modelos do Hugging Face

O Stable Diffusion Web UI requer que os modelos sejam instalados a partir do Hugging Face, um repositório popular de modelos de aprendizado de máquina. Você pode pesquisar e baixar os modelos necessários no site do Hugging Face. Depois de baixar os modelos, salve-os no diretório models dentro do projeto stable-diffusion-webui. Veja alguns exemplos e procure baixe os arquivos ckpt

Uso

Abra o Windows Explorer e navegue até o diretório onde você clonou o repositório. Dê um duplo clique no arquivo webui-user.bat para executá-lo. Isso iniciará o servidor da web e abrirá o Stable Diffusion Web UI no seu navegador padrão. 

http://127.0.0.1:7860

image

Observe que você deve executar o webui-user.bat como um usuário normal, sem privilégios de administrador, para evitar problemas de permissão. Para fechar a interface da web e parar o servidor da web, basta fechar a janela do navegador ou pressionar Ctrl+C no prompt de comando onde o servidor da web está sendo executado.

Depois que a interface da web estiver em execução, você poderá usar os vários campos de entrada e parâmetros para configurar o modelo e gerar saída. Os prompts, sampling method, sampling steps, CFG scale, denoising strength e seed podem ser ajustados para ajustar o modelo e gerar saída que atenda às suas necessidades. 

Sampling method: Isso se refere ao algoritmo usado para gerar a saída. 

O método de amostragem usado no Stable Diffusion é um fator chave na determinação da qualidade e diversidade da saída gerada. Existem vários métodos de amostragem disponíveis no Stable Diffusion, incluindo Euler A e DPM++ 2s Karras. 


Euler A é um método de amostragem que envolve a adição de pequenas perturbações aos valores de pixel de uma imagem em cada etapa de difusão. Este método tende a produzir imagens mais suaves e coerentes, mas pode resultar em menor diversidade de saída gerada. 


DPM++ 2s Karras, por outro lado, é um método mais complexo que envolve a amostragem de uma distribuição de vetores de ruído e a mistura com o estado atual do modelo em cada etapa de difusão. Este método tende a produzir imagens mais diversas e visualmente interessantes, mas pode resultar em saída menos coerente ou ruidosa. 


Em geral, a escolha do método de amostragem dependerá do caso de uso específico e da saída desejada. Euler A pode ser preferido para tarefas que exigem saída mais coerente e consistente, como restauração ou estilização de imagem, enquanto DPM++ 2s Karras pode ser preferido para tarefas que exigem mais diversidade e criatividade, como geração de imagem artística ou exploração das capacidades do modelo. 

Sampling steps: Isso determina quantas etapas de amostragem serão usadas para gerar a saída. Cada etapa gera uma palavra ou token da saída, portanto um número maior de etapas geralmente resultará em uma saída mais longa e complexa. 

CFG scale: é a configuração que controla o quão fielmente Stable Diffusion deve seguir sua sugestão de texto. Quanto maior o valor CFG, mais estritamente seguirá sua sugestão. O valor padrão é 7, que dá um bom equilíbrio entre liberdade criativa e seguir sua direção. Um valor de 1 dará a Stable Diffusion quase completa liberdade, enquanto valores acima de 15 são bastante restritivos.

Denoising strength: Isso determina quanto ruído será adicionado à saída gerada. Uma força de desembaçamento maior geralmente resultará em uma saída mais suave e polida.

Seed: Isso se refere à semente aleatória usada para gerar a saída. Ao definir a semente para um valor específico, você pode reproduzir a mesma saída toda vez que executar o modelo. 

Prompts: Prompts são o texto de entrada ou palavras-chave usadas para gerar a saída. Você pode usar qualquer texto como prompt, mas é importante lembrar que a qualidade e relevância da saída dependerão muito da qualidade e relevância do prompt 

Um prompt negativo permite especificar o que não é incluído na imagem gerada. 

API

Para executar a API do Stable Diffusion, edite o arquivo webui-user.bat adicionando os parâmetros --api --listen em COMMANDLINE_ARGS

Set COMMANDLINE_ARGS= --api --listen 

Dê um duplo clique no arquivo webui-user.bat para executá-lo. Dessa vez, isso iniciará o servidor da web com uma API exposta, que pode ver verificado em http://127.0.0.1:7860/docs

---

A inteligência artificial generativa tem sido aplicada em várias áreas, incluindo a arte, permitindo a criação de conteúdo novo e original. Este post do blog guiou o leitor pelo processo de configuração do Stable Diffusion Web UI, uma ferramenta poderosa para trabalhar com IA generativa. Embora possa parecer complicado configurar o projeto Stable Diffusion Web UI no Windows, seguindo as instruções fornecidas no post, o processo pode ser direto. Depois de instalado, o usuário pode ajustar os parâmetros e campos de entrada para gerar saída personalizada. Com essa ferramenta, artistas podem criar peças únicas e entusiastas da tecnologia podem experimentar os últimos desenvolvimentos em IA.

Se você está interessado em aprender mais sobre como a IA generativa pode ser integrada em microserviços, confira a apresentação de Thiago Poiani sobre "Desenvolvendo Microsserviço em Java para Integração com IA Generativa". Nesta apresentação, Thiago compartilha suas ideias sobre como construir microsserviços que aproveitam o poder da IA generativa. Você aprenderá sobre os desafios e oportunidades de trabalhar com modelos generativos, bem como práticas para integrá-los em sua infraestrutura existente.

Compartilhe
Comentários (6)
EDUARDO TEODORO
EDUARDO TEODORO - 02/07/2023 21:40

Show de bola, Thiago!!! Instalei no Linux aqui e deu boa, seguindo alguns artigos de "fix" do github, pois foi necessário inserir alguns comandos em uma variável de ambiente no arquivo "webui-user.sh". Parabéns pelo conteúdo riquíssimo!! Agora bora pro projeto!! Abs.

Thiago Poiani
Thiago Poiani - 31/05/2023 21:49

Veja o código desenvolvido para o lab Desenvolvendo Microsserviço em Java para Integração com IA Generativa: https://github.com/thpoiani/avatar

Felipe Aguiar
Felipe Aguiar - 26/05/2023 09:55

Muito massa o Conteúdo!!!

Amanda Boza
Amanda Boza - 26/05/2023 06:56

Que maneiro, Thiago! Vai ter um evento voltado para IA dia 30 na EBAC! Caso tenha interesse, só se conectar comigo que eu te passo o link de inscrição!


Vamos nos conectar!

Renan Freitas
Renan Freitas - 25/05/2023 22:28

Conteúdo valioso demais, parabéns, Thiago! Curti muito.

LR

Leonardo Ropelato - 25/05/2023 17:49

Demais!!! Obrigado por compartilhar, Thiago!