A extensão WebUI para ControlNet e outros controles SD baseados em injeção.
Esta extensão é para a IU da web de Difusão Estável do AUTOMATIC1111, permite que a IU da Web adicione ControlNet ao modelo de Difusão Estável original para gerar imagens. A adição é instantânea, a fusão não é necessária.
https://github.com/Mikubill/sd-webui-controlnet.git
para "URL do repositório git da extensão".Você pode encontrar todos os links para download aqui: https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download.
Agora temos suporte perfeito para todos os modelos e pré-processadores disponíveis, incluindo suporte perfeito para adaptador estilo T2I e ControlNet 1.1 Shuffle. (Certifique-se de que os nomes dos arquivos YAML e dos arquivos do modelo sejam iguais, consulte também arquivos YAML em "stable-diffusion-webuiextensionssd-webui-controlnetmodels".)
Agora, se você ativar o High-Res Fix no A1111, cada rede de controle produzirá duas imagens de controle diferentes: uma pequena e uma grande. O pequeno é para a geração básica e o grande é para a geração do High-Res Fix. As duas imagens de controle são calculadas por um algoritmo inteligente denominado "reamostragem de imagem de controle de super alta qualidade". Isso está ativado por padrão e você não precisa alterar nenhuma configuração.
Agora o ControlNet é extensivamente testado com diferentes tipos de máscaras do A1111, incluindo "Inpaint mascarado"/"Inpaint não mascarado" e "Imagem inteira"/"Somente mascarado" e "Somente preenchimento mascarado" e "Desfoque de máscara". O redimensionamento corresponde perfeitamente a "Apenas redimensionar"/"Cortar e redimensionar"/"Redimensionar e preencher" do A1111. Isso significa que você pode usar o ControlNet em quase todos os lugares da interface do usuário do A1111 sem dificuldade!
Agora, se você ativar o modo pixel perfeito, não será necessário definir manualmente as resoluções do pré-processador (anotador). O ControlNet calculará automaticamente a melhor resolução do anotador para você, para que cada pixel corresponda perfeitamente à Difusão Estável.
Reorganizamos algumas interfaces de usuário anteriormente confusas, como "largura/altura da tela para nova tela" e agora ela está no botão. Agora a GUI de visualização é controlada pela opção "permitir visualização" e pelo botão de disparo ?. O tamanho da imagem de visualização está melhor do que antes e você não precisa rolar para cima e para baixo - sua GUI do a1111 não ficará mais bagunçada!
Agora o ControlNet 1.1 pode suportar quase todos os métodos de Upscaling/Tile. ControlNet 1.1 suporta o script "Ultimate SD upscale" e quase todas as outras extensões baseadas em blocos. Por favor, não confunda "Ultimate SD upscale" com "SD upscale" - são scripts diferentes. Observe que o método de upscaling mais recomendado é "Tiled VAE/Diffusion", mas testamos tantos métodos/extensões quanto possível. Observe que "SD upscale" é suportado desde 1.1.117 e, se você usá-lo, será necessário deixar todas as imagens ControlNet em branco (não recomendamos "SD upscale", pois é um pouco problemático e não pode ser mantido - use o "SD upscale" Ultimate SD sofisticado" em vez disso).
Corrigimos muitos bugs no modo de adivinhação da versão 1.0 anterior e agora ele é chamado de modo de controle
Agora você pode controlar qual aspecto é mais importante (seu prompt ou ControlNet):
"Balanceado": ControlNet em ambos os lados da escala CFG, o mesmo que desligar o "Modo Guess" no ControlNet 1.0
"Meu prompt é mais importante": ControlNet em ambos os lados da escala CFG, com injeções SD U-Net progressivamente reduzidas (layer_weight*=0,825**I, onde 0<=I <13, e 13 significa que ControlNet injetou SD 13 vezes ). Desta forma, você pode ter certeza de que seus prompts serão exibidos perfeitamente nas imagens geradas.
"ControlNet é mais importante": ControlNet apenas no lado condicional da escala CFG (o cond no batch-cond-uncond do A1111). Isso significa que o ControlNet será X vezes mais forte se sua escala cfg for X. Por exemplo, se sua escala cfg for 7, então o ControlNet será 7 vezes mais forte. Observe que aqui o X vezes mais forte é diferente de “Pesos de Controle” já que seus pesos não são modificados. Esse efeito "mais forte" geralmente tem menos artefatos e dá ao ControlNet mais espaço para adivinhar o que está faltando em seus prompts (e na versão 1.0 anterior, ele é chamado de "Modo de Adivinhação").
Entrada (profundidade+canny+hed) | "Equilibrado" | "Minha dica é mais importante" | “ControlNet é mais importante” |
Agora temos um pré-processador reference-only
que não requer nenhum modelo de controle. Pode orientar a difusão diretamente usando imagens como referências.
(Prompt "um cachorro correndo na pastagem, melhor qualidade, ...")
Este método é semelhante à referência baseada em inpaint, mas não torna sua imagem desordenada.
Muitos usuários profissionais do A1111 conhecem um truque para difundir imagens com referências por inpaint. Por exemplo, se você tiver uma imagem de um cachorro de 512x512 e quiser gerar outra imagem de 512x512 com o mesmo cachorro, alguns usuários conectarão a imagem de cachorro de 512x512 e uma imagem em branco de 512x512 em uma imagem de 1024x512, enviarão para inpaint e mascararão. a parte em branco 512x512 para difundir um cachorro com aparência semelhante. No entanto, esse método geralmente não é muito satisfatório, pois as imagens estão conectadas e muitas distorções aparecerão.
Este ControlNet reference-only
pode vincular diretamente as camadas de atenção do seu SD a quaisquer imagens independentes, de modo que o seu SD leia imagens arbitrárias para referência. Você precisa de pelo menos ControlNet 1.1.153 para usá-lo.
Para usar, basta selecionar reference-only
como pré-processador e colocar uma imagem. Seu SD usará apenas a imagem como referência.
Observe que este método é o mais "não opinativo" possível. Ele contém apenas códigos de conexão muito básicos, sem quaisquer preferências pessoais, para conectar as camadas de atenção às suas imagens de referência. No entanto, mesmo que tentássemos não incluir nenhum código opinativo, ainda precisaríamos escrever algumas implementações subjetivas para lidar com ponderação, escala cfg, etc. - o relatório técnico está a caminho.
Mais exemplos aqui.
Veja também os documentos do ControlNet 1.1:
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-specification
Esta é a minha configuração. Se você tiver algum problema, poderá usar esta configuração como uma verificação de integridade
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
Você ainda pode usar todos os modelos anteriores no ControlNet 1.0 anterior. Agora, a "profundidade" anterior agora é chamada de "profundidade_midas", a "normal" anterior é chamada de "normal_midas", a "hed" anterior é chamada de "softedge_hed". E a partir de 1.1, todos os mapas de linhas, mapas de bordas, mapas lineart e mapas de limites terão fundo preto e linhas brancas.
(Do adaptador TencentARC/T2I)
Para usar modelos de adaptador T2I:
Observe que o "CoAdapter" ainda não foi implementado.
Os resultados abaixo são do ControlNet 1.0.
Fonte | Entrada | Saída |
---|---|---|
(sem pré-processador) | ||
(sem pré-processador) | ||
Os exemplos abaixo são do adaptador T2I.
De t2iadapter_color_sd14v1.pth
:
Fonte | Entrada | Saída |
---|---|---|
De t2iadapter_style_sd14v1.pth
:
Fonte | Entrada | Saída |
---|---|---|
(clipe, sem imagem) |
--xformers
ativado e modo Low VRAM
marcado na UI, vai até 768x832 Esta opção permite múltiplas entradas ControlNet para uma única geração. Para habilitar esta opção, altere Multi ControlNet: Max models amount (requires restart)
nas configurações. Observe que você precisará reiniciar a WebUI para que as alterações tenham efeito.
Fonte A | Fonte B | Saída |
Peso é o peso da “influência” da rede de controle. É análogo a solicitar atenção/ênfase. Por exemplo (meu prompt: 1.2). Tecnicamente, é o fator pelo qual multiplicar as saídas ControlNet antes de mesclá-las com o SD Unet original.
Início/Fim da orientação é a porcentagem do total de passos que a rede de controle aplica (força da orientação = fim da orientação). É análogo à edição/mudança imediata. Por exemplo, [myprompt::0.8] (aplica-se desde o início até 80% do total de etapas)
Coloque qualquer unidade no modo lote para ativar o modo lote para todas as unidades. Especifique um diretório de lote para cada unidade ou use a nova caixa de texto na guia de lote img2img como substituto. Embora a caixa de texto esteja localizada na guia de lote img2img, você também pode usá-la para gerar imagens na guia txt2img.
Observe que esse recurso está disponível apenas na interface do usuário Gradio. Chame as APIs quantas vezes desejar para agendamento em lote personalizado.
Esta extensão pode aceitar tarefas txt2img ou img2img via API ou chamada de extensão externa. Observe que pode ser necessário ativar Allow other scripts to control this extension
nas configurações para chamadas externas.
Para usar a API: inicie o WebUI com o argumento --api
e vá para http://webui-address/docs
para obter documentos ou exemplos de checkout.
Para usar chamada externa: Checkout Wiki
Esta extensão adiciona estes argumentos de linha de comando ao webui:
--controlnet-dir ADD a controlnet models directory
--controlnet-annotator-models-path SET the directory for annotator models
--no-half-controlnet load controlnet models in full precision
--controlnet-preprocessor-cache-size Cache size for controlnet preprocessor results
--controlnet-loglevel Log level for the controlnet extension
--controlnet-tracemalloc Enable malloc memory tracing
Testado com pytorch todas as noites: # 143 (comentário)
Para usar esta extensão com mps e pytorch normal, atualmente você pode precisar iniciar o WebUI com --no-half
.
A versão anterior (sd-webui-controlnet 1.0) está arquivada em
https://github.com/lllyasviel/webui-controlnet-v1-archived
O uso desta versão não é uma interrupção temporária das atualizações. Você interromperá todas as atualizações para sempre.
Considere esta versão se você trabalha com estúdios profissionais que exigem a reprodução de 100% de todos os resultados anteriores, pixel por pixel.
Esta implementação é inspirada em kohya-ss/sd-webui-additional-networks