Introdução ao ControlNet e sd-webui-controlnet
ControlNet é uma tecnologia avançada para controle preciso na geração de imagens por IA. O sd-webui-controlnet é uma extensão para o WebUI que permite integrar esses modelos. Para garantir compatibilidade, é necessário converter os formatos de modelos ControlNet. Este guia apresenta três abordagens eficientes para essa conversão.
Preparação: Configuração do Ambiente
Antes de começar, certifique-se de ter o repositório do projeto clonado e as dependências instaladas. Execute o comando abaixo no terminal:
git clone https://gitcode.com/gh_mirrors/sd/sd-webui-controlnet
O repositório inclui exemplos de imagens geradas, ilustrando o potencial do ControlNet para controle detalhado em estilos como ilustrações anime.
Método 1: Conversão Básica com Script Dedicado
Utilize o script extract_controlnet.py para converter entre formatos PyTorch e Safetensors. Siga os passos:
python extract_controlnet.py --source caminho_do_modelo_original --destination caminho_do_modelo_convertido --fp16
Parâmetros principasi:
--source: Caminho do modelo de entrada.--destination: Caminho de saída para o modelo convertido.--fp16: Opcional, reduz o tamanho do modelo ao usar precisão FP16.
Este método processa automaticamente os parâmetros da rede de controle, assegurando que o modelo seja reconhecido pelo WebUI.
Método 2: Extração de Diferenças entre Modelos
Quando você possui um modelo base do Stable Diffusion 1.5 e um modelo com ControlNet integrado, use extract_controlnet_diff.py para extrair apenas as diferenças. Execute:
python extract_controlnet_diff.py --base_model caminho_sd15 --control_model caminho_com_controlnet --output caminho_saida --half_precision
Detalhes dos argumentos:
--base_model: Modelo original do Stable Diffusion.--control_model: Modelo contendo ControlNet.--output: Local para salvar o modelo de diferenças.--half_precision: Opcional, para economziar espaço em disco.
Esta técnica calcula as discrepâncias entre os modelos, gerando um arquivo ControlNet otimizado com menor tamanho e carregamento mais rápido.
Método 3: Conversão Manual para Usuários Avançados
Para controle granular, realize a conversão manualmente com PyTorch. Carregue o modelo original e extraia os parâmetros relevantes:
import torch
dados_originais = torch.load("caminho_modelo_original")
parametros_controlnet = {chave.replace("control_model.", ""): valor for chave, valor in dados_originais.items() if chave.startswith("control_model.")}
torch.save({"state_dict": parametros_controlnet}, "caminho_modelo_saida")
Este processo é recomendado para quem tem experiência com Python e PyTorch, permitindo ajustes específicos durante a conversão.
Uso dos Modelos Convertidos
Após a conversão, coloque os arquivos no diretório models/ do WebUI, que os carregará automaticamente. Modelos convertidos permitem controle preciso sobre aspectos como composição, pose e estilo na geração de imagens, como demonstrado em cenas detalhadas como cafeterias virtuais.
Solução de Problemas Comuns
- Falha ao carregar modelo: Verifique os caminhos dos arquivos e atualize o WebUI.
- Memória insuficiente: Use os parâmetros
--fp16ou--half_precisionpara reduzir o consumo. - Resultados inesperados: Ajuste os parâmetros de conversão ou repita o processo com o método de extração de diferenças.