WEB3DEV

Cover image for Como treinar seu próprio Avatar de IA gratuitamente no Google Colab
Dimitris Carvalho Calixto
Dimitris Carvalho Calixto

Posted on

Como treinar seu próprio Avatar de IA gratuitamente no Google Colab

Recentemente, os avatares de IA e as imagens de perfil, como os gerados por Lensa, AvatarAI.me e ProfilePicture.AI, tem se tornado muito populares.

A maioria desses serviços tem uma coisa em comum: eles usam o modelo de IA StableDiffusion para criar essas imagens. Como o StableDiffusion é de uso gratuito e de código aberto, você mesmo pode realizar esse treinamento e a criação de imagens!

Este artigo vai orientar você nas etapas de configuração do Google Colab, treinando a IA em seu rosto e gerando suas próprias imagens usando o StableDiffusion gratuitamente*.

*O Google Colab geralmente fornece os recursos de GPU necessários para isso gratuitamente, mas, recentemente, eles começaram a perseguir contas que usam muitos de seus recursos de GPU gratuitos , por exemplo, para minerar criptomoedas.
Devido a isso, sua conta pode ser colocada na lista proibida e limitada internamente pelo Google - se esse for o caso, você terá que comprar recursos de computação para o Google Colab por cerca de US$ 10.

# Requisitos

Você não precisa de nenhum conhecimento prévio de codificação ou de IA para treinar o modelo, pois todas as partes difíceis já foram preparadas por outras pessoas.

No entanto, você deve se sentir à vontade para ler algumas saídas do console e executar comandos, etc., pois a IA pode apresentar alguns detalhes de erro dessa forma.

# O que é o Google Colab?

Se você já conhece o Jupyter Notebooks e o Google Colab, pode pular esta seção.

O Google Colab fornece uma interface da Web e recursos de computação em seus servidores para executar o Jupyter Notebooks.

Esses notebooks permitem colocar códigos Python (e outros) em "células" para configurá-los, executá-los e depurá-los individualmente. Se desejar, você pode acessar https://www.tutorialspoint.com/google_colab/google_colab_quick_guide.htm para obter um guia de início rápido sobre os detalhes dos notebooks.

# Leitura complementar

Este tutorial é baseado no incrível guia de Benny Cheung (https://bennycheung.github.io/stable-diffusion-training-for-embeddings). Se quiser saber mais sobre como a IA e o treinamento funcionam e como você pode otimizar ainda mais seu resultado, leia o artigo dele.

Atualmente, o StableDiffusion e a WebUI estão mudando rapidamente. Os tutoriais que foram criados há um mês estão completamente desatualizados hoje. Se você seguir este tutorial no futuro, o Notebook ou a WebUI podem ter mudado, os botões podem ter sido movidos ou os campos adicionados. Se tiver problemas, fique à vontade para escrever um comentário ou procurar tutoriais mais recentes on-line, mas você pode simplesmente adaptar este tutorial às novas atualizações feitas!

# Configurando o ambiente

Este tutorial usa a configuração do Google Colab fornecida em https://github.com/acheong08/Diffusion-ColabUI.

Basta abrir o site https://colab.research.google.com/github/acheong08/Diffusion-ColabUI/blob/main/Diffusion_WebUI.ipynb para acessar o Notebook no Google Colab.

Clique no ícone de execução na célula "Check dependencies" (Verificar dependências) para garantir que todas as dependências necessárias estejam instaladas. Você provavelmente receberá um aviso de que o código não foi revisado pelo Google - clique em "Run anyway" (Executar mesmo assim) para confiar no código. A célula deve levar apenas alguns segundos para ser concluída.

Agora você precisará adicionar a configuração para StableDiffusion ao ambiente. Na célula "Add models" (Adicionar modelos), em "Defaults" (Padrões), selecione "defaultModel": "SDv2-0" e, em "Parameters" (Parâmetros), selecione "SD2": "V2-768". Isso configurará o StableDiffusion 2. Execute a célula para salvar essa configuração no ambiente atual.

# Iniciando a WebUI

O Notebook usa o StableDiffusion WebUI para oferecer uma maneira mais fácil de interagir com o modelo da IA.

Execute a célula "Start WebUI" (Iniciar WebUI) para configurar a IA e iniciar a interface da Web. A configuração da primeira vez no ambiente levará de 5 a 10 minutos, pois os scripts precisam primeiro fazer o download de todos os arquivos do modelo, mas você sempre pode verificar o status atual na saída do console da célula.

Se a WebUI puder ser iniciada com êxito, você deverá ver "Running on public URL" (Executando em URL pública) com um link ".gradio.app" no console.

Se o console exibir:

DiffusionWrapper has 865.91M params.
^C

e parar de funcionar, isso significa que sua conta do Google está internamente na lista proibida dos sistemas do Google, em um esforço para impedir o uso do Google Colab para mineração de criptografia etc. Se esse for o caso, leia o próximo capítulo.Se a WebUI puder ser iniciada com êxito, pule para o capítulo seguinte.

# O que fazer se sua conta do Google Colab estiver na lista proibida?

Se a WebUI tiver sido interrompida durante a inicialização, você tem duas opções:

  1. Tente outra Conta do Google

Se você tiver outra Conta do Google que já exista há muito tempo ou que tenha sido usada para outros projetos do Google Colab anteriormente, ela pode não estar na lista proibida. Em vez disso, tente executar o Notebook nessa conta.

Você pode ler mais sobre a lista proibida em https://github.com/acheong08/Diffusion-ColabUI/issues/44

  1. Atualizar para o Google Colab Pro

Infelizmente, se a conta estiver na lista proibida, você só poderá fazer upgrade para o plano pago do Google Colab para executar a IA.

Abra o site https://colab.research.google.com/signup/pricing e escolha "Colab Pro". É importante observar que a opção "Pay As You Go" não funcionará nesse caso, pois não inclui o aumento da memória. O plano inclui 100 unidades de computação por mês. A execução do ambiente custará cerca de 2 unidades por hora, cerca de 20 centavos, e você pode executar o ambiente por cerca de 50 horas por mês - portanto, certifique-se de parar o contêiner se não estiver mais usando-o!

Depois de atualizar o plano, em seu Notebook, escolha "Runtime" (tempo de execução) na barra de navegação superior > "Change runtime type" (alterar o tipo de tempo de execução) e selecione "High-RAM" como "Runtime shape" (forma de tempo de execução). Depois de salvar, você precisará mudar para o novo tempo de execução, que redefine os modelos de configuração, portanto, repita as etapas de "Setup your environment" (configurar seu ambiente) em diante.

Certifique-se de que a célula "Start WebUI" (iniciar WebUI) esteja em execução para acessar a WebUI posteriormente.

# Prepare suas imagens

Sua IA precisa de 5 a 20 imagens para treinar seu rosto. Para isso, você deve escolher imagens que mostrem você em diferentes ambientes (fora, dentro, em plena luz do dia ou com pouca luz, de diferentes ângulos etc.) e que mostrem seu rosto claramente sem distrações (por exemplo, sem óculos escuros, sem outras pessoas no quadro, sem fundo que distraia). Quanto melhores forem essas imagens de treinamento, melhores serão seus resultados finais!

As imagens precisam ter exatamente o tamanho de 512x512 pixels para que a IA possa treiná-las. Recomendo usar o site https://www.birme.net/?target_width=512&target_height=512 para cortar e redimensionar rapidamente suas imagens de uma só vez. Você também pode alterar o formato da imagem para "JPEG" e usar um esquema de nomenclatura unificado como "image-xxx" para unificar suas imagens, embora também as preparemos usando a etapa de preparação da WebUI.

Em sua interface do Google Colab, abra o painel de arquivos na barra lateral esquerda. Você já deve ver duas pastas, "stable-diffusion-webui" e "sample_data", depois de concluir as etapas anteriores.

Clique com o botão direito do mouse e crie uma nova pasta no diretório chamada "training_images"; em seguida, clique com o botão direito do mouse na pasta e selecione "Upload" para carregar as imagens preparadas.

# Pré-processe suas imagens na WebUI

Agora você pode abrir o link .gradio.app que sua célula WebUI produziu e fazer login usando o nome de usuário "webui" e a senha "diffusion".

Vá para a guia "Train" (Treinar) na barra de navegação superior.

Agora você precisará criar uma "Embedding" (incorporação) que posteriormente conterá o modelo treinado do seu rosto. Em "name" (nome), insira um nome exclusivo como "my-face-1" (meu rosto-1), como texto de inicialização insira "person" (pessoa) e clique em "Create embedding" (criar incorporação).

Agora, você pode ir para a guia "Preprocess images" (pré-processar imagens), que nos permite preparar as imagens unificadas que você carregou no Notebook.

Como diretório de origem, insira "/content/training_images" e, como diretório de destino, insira "/content/training_images/preprocessed", ative "Use BLIP for caption" e pressione "Preprocess" (pré-processar). Isso pode levar um ou dois minutos, pois é necessário fazer o download do modelo BLIP da IAI.

Uma vez concluído, precisamos verificar as legendas criadas pela IA. Na interface do Google Colab, abra a pasta "training_images/preprocessed" na barra lateral de arquivos. A pasta deve conter os arquivos png e txt preparados.

Examine os arquivos txt e verifique se eles descrevem com precisão as imagens que você carregou. Se uma descrição não estiver correta (por exemplo, "uma mulher" em vez de "um homem"), altere o texto. O Google Colab salva automaticamente as alterações, portanto, não é necessário usar CTRL-S, pois isso apenas tentará salvar o Notebook como um todo.

# Treine sua integração

Agora que os dados estão preparados, você pode começar a treinar o modelo de IA.

Primeiro, volte para a guia "img2txt" na barra de navegação superior da WebUI. Agora, basta digitar "A portrait of a man, trending on artstation, greg rutkowski, 4k" ou "A portrait of a woman, trending on artstation, greg rutkowski, 4k" no prompt - precisaremos desse estado mais tarde.

Em seguida, volte para a guia "Train" (treinar) e selecione a subguia "Train" abaixo. Escolha sua incorporação, como o diretório do conjunto de dados, insira "/content/training_images/preprocessed" e atualize o arquivo de modelo do prompt para "/content/stable-diffusion-webui/textual_inversion_templates/subjectfilewords.txt" (por padrão, ele usa "_style_filewords.txt").

Aconselho que você defina "Max steps" (máximo de etapas) como 10000 (dez mil), pois é um bom meio-termo entre o treinamento completo e a não necessidade de muito tempo. Como regra geral, para mim, 100 passos levaram 1 minuto, portanto, 10.000 passos foram concluídos após 100 minutos ou 1h:40.

Ative a opção "Read parameters from txt2img tab..." (é por isso que inserimos esse prompt antes) e clique em "Train Embedding" para iniciar o treinamento.

Isso provavelmente levará cerca de 1h:45 para ser concluído - deixe a WebUI e o Google Colab abertos durante esse tempo. Se a WebUI informar "Training finished at 0 steps" (Tteinamento concluído em 0 etapas) após apenas alguns segundos, o treinamento apresentou um erro! Leia a próxima seção sobre o que fazer nesse caso, caso contrário, pule para a seção seguinte.

# O que fazer se o treinamento apresentar erros

A ocorrência de um erro durante o treinamento pode ter várias causas, mas você pode encontrar o erro exato na saída do console da célula do Google Colab.

Na versão atual, no momento em que este artigo foi escrito, você pode encontrar esse erro:

RuntimeError: os índices devem estar na cpu ou no mesmo dispositivo que o tensor indexado (cpu).

Esse é um erro na WebUI, e você precisará adicionar uma linha de código aos arquivos de origem. No painel de arquivos do Google Colab, navegue até "stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/models/diffusion/ddpm.py" e role até a linha 903 desse arquivo.

Você deverá ver esta linha de código:

logvar_t = self.logvar[t].to(self.device)

Atualize o código acrescentando uma nova linha antes dele, para que fique assim:

self.logvar = self.logvar.to(self.device)
logvar_t = self.logvar[t].to(self.device)

Novamente, o Google Colab salva automaticamente os arquivos, portanto, não é necessário usar CTRL-S.

Agora você precisará interromper a célula da WebUI, reiniciá-la e repetir as etapas de "Train your embedding" (treinar sua integração) para iniciar o treinamento novamente.

Para obter mais informações sobre esse erro, visite https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/3958.

# Verifique o status do seu treinamento

Durante o treinamento, a IA produzirá uma imagem de teste a cada 500 iterações (ou cerca de 5 minutos). Você pode encontrar essa imagem de teste no painel de arquivos do Google Colab em "-diffusion-webui/textural-inversion/(date)/(your embedding name)/images".

Observe que a WebUI pode travar e não atualizar o status após algum tempo. Se isso acontecer, não se preocupe, pois o treinamento continuará e você poderá simplesmente ver o status atual na saída do console do Google Colab.

O treinamento é concluído após 10.000 etapas, mas você pode interrompê-lo a qualquer momento para usar um dos embeddings criados a cada 500 etapas - lembre-se, porém, de que isso gerará resultados piores.

# Implantando sua incorporação

Após a conclusão do treinamento, no painel de arquivos do Google Colab, copie o modelo final de "stable-diffusion-webui/textual_inversion/(data)/()/embeddings/(o nome da sua incoporação)-10000.pt" para "stable-diffusion-webui/embeddings".

Nessa pasta, você deve encontrar um arquivo existente com o nome da incorporação que foi criado ao criar a incorporação na WebUI. Remova a incorporação existente com seu nome de incorporação e, em vez disso, renomeie seu novo modelo treinado para apenas "(o nome da sua incorporação).pt". Agora você também pode baixar o arquivo do modelo para uso posteriormente.

Por fim, pare e reinicie a célula da WebUI para permitir que ela carregue seu modelo.

# Utilizando seu modelo

Depois de implantar sua incorporação e reiniciar a WebUI, você poderá usar a incorporação em prompts de imagem.

Abra a guia "txt2img" na WebUI e digite um prompt como:

Um retrato de (o nome da sua incorporação)
arte de artgerm e greg rutkowski e alphonse mucha

Seu modelo agora deve ser capaz de gerar imagens treinadas em seu rosto.

Artigo escrito por Bennet. A versão original pode ser encontrada aqui. Traduzido e adaptado por Dimitris Calixto.

Top comments (0)