Conversão de Modelos ControlNet para WebUI: Guia Prático com Três Métodos

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 --fp16 ou --half_precision para 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.

Tags: ControlNet Stable Diffusion WebUI Pytorch Conversão de Formato

Publicado em 7-8 04:38