La extensión WebUI para ControlNet y otros controles SD basados en inyección.
Esta extensión es para la interfaz de usuario web de Stable Diffusion de AUTOMATIC1111 y permite que la interfaz de usuario web agregue ControlNet al modelo de Stable Diffusion original para generar imágenes. La adición se realiza sobre la marcha, no es necesaria la fusión.
https://github.com/Mikubill/sd-webui-controlnet.git
en "URL del repositorio git de la extensión".Puede encontrar todos los enlaces de descarga aquí: https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download.
Ahora tenemos soporte perfecto para todos los modelos y preprocesadores disponibles, incluido el soporte perfecto para el adaptador estilo T2I y ControlNet 1.1 Shuffle. (Asegúrese de que los nombres de los archivos YAML y los nombres de los archivos del modelo sean los mismos; consulte también los archivos YAML en "stable-diffusion-webuiextensionssd-webui-controlnetmodels".)
Ahora, si activa High-Res Fix en A1111, cada controlnet generará dos imágenes de control diferentes: una pequeña y otra grande. El pequeño es para la generación básica y el grande es para la generación de High-Res Fix. Las dos imágenes de control se calculan mediante un algoritmo inteligente llamado "remuestreo de imágenes de control de súper alta calidad". Esto está activado de forma predeterminada y no es necesario cambiar ninguna configuración.
Ahora ControlNet se ha probado exhaustivamente con los diferentes tipos de máscaras de A1111, incluidas "Inpaint enmascarada"/"Inpaint no enmascarada" y "Imagen completa"/"Sólo enmascarada" y "Sólo relleno enmascarado" y "Máscara desenfocada". El cambio de tamaño coincide perfectamente con "Simplemente cambiar el tamaño"/"Recortar y cambiar el tamaño"/"Cambiar el tamaño y rellenar" de A1111. ¡Esto significa que puede usar ControlNet en casi todas partes de su interfaz de usuario A1111 sin dificultad!
Ahora, si activa el modo de píxeles perfectos, no necesita configurar manualmente las resoluciones del preprocesador (anotador). ControlNet calculará automáticamente la mejor resolución del anotador para que cada píxel coincida perfectamente con la difusión estable.
Reorganizamos algunas interfaces de usuario que antes eran confusas, como "ancho/alto del lienzo para un lienzo nuevo", y ahora está en el botón. Ahora la GUI de vista previa está controlada por la opción "permitir vista previa" y el botón de activación ?. El tamaño de la imagen de vista previa es mejor que antes y no necesita desplazarse hacia arriba y hacia abajo: ¡su GUI a1111 ya no se estropeará más!
Ahora ControlNet 1.1 puede admitir casi todos los métodos de ampliación/mosaico. ControlNet 1.1 admite el script "Ultimate SD upscale" y casi todas las demás extensiones basadas en mosaicos. No confunda "Ultimate SD upscale" con "SD upscale": son scripts diferentes. Tenga en cuenta que el método de ampliación más recomendado es "Tiled VAE/Diffusion", pero probamos tantos métodos/extensiones como sea posible. Tenga en cuenta que "SD upscale" se admite desde 1.1.117 y, si lo usa, debe dejar todas las imágenes de ControlNet en blanco (no recomendamos "SD upscale" ya que tiene algunos errores y no se puede mantener; use el " Ultimate SD upscale" en su lugar).
Hemos solucionado muchos errores en el Modo Guess de la versión 1.0 anterior y ahora se llama Modo Control.
Ahora puedes controlar qué aspecto es más importante (tu mensaje o tu ControlNet):
"Equilibrado": ControlNet en ambos lados de la escala CFG, lo mismo que desactivar el "Modo Guess" en ControlNet 1.0
"Mi mensaje es más importante": ControlNet en ambos lados de la escala CFG, con inyecciones SD U-Net progresivamente reducidas (layer_weight*=0.825**I, donde 0<=I <13, y 13 significa que ControlNet inyectó SD 13 veces ). De esta manera, puede asegurarse de que sus indicaciones se muestren perfectamente en las imágenes generadas.
"ControlNet es más importante": ControlNet solo en el lado condicional de la escala CFG (el cond en el lote-cond-uncond de A1111). Esto significa que ControlNet será X veces más potente si su escala de cfg es X. Por ejemplo, si su escala de cfg es 7, entonces ControlNet es 7 veces más potente. Tenga en cuenta que aquí X veces más fuerte es diferente de "Controlar pesos" ya que sus pesos no se modifican. Este efecto "más fuerte" generalmente tiene menos artefactos y le da a ControlNet más espacio para adivinar lo que falta en las indicaciones (y en la versión 1.0 anterior, se llama "Modo Guess").
Entrada (profundidad+astuta+hed) | "Equilibrado" | "Mi mensaje es más importante" | "ControlNet es más importante" |
Ahora tenemos un preprocesador reference-only
que no requiere ningún modelo de control. Puede guiar la difusión directamente utilizando imágenes como referencia.
(Mensaje "un perro corriendo por el prado, la mejor calidad, ...")
Este método es similar a la referencia basada en pintura, pero no desordena la imagen.
Muchos usuarios profesionales de A1111 conocen un truco para difundir imágenes con referencias mediante inpaint. Por ejemplo, si tiene una imagen de 512x512 de un perro y desea generar otra imagen de 512x512 con el mismo perro, algunos usuarios conectarán la imagen del perro de 512x512 y una imagen en blanco de 512x512 en una imagen de 1024x512, la enviarán a inpaint y la enmascararán. la parte en blanco de 512x512 para difundir un perro con apariencia similar. Sin embargo, ese método no suele ser muy satisfactorio ya que las imágenes están conectadas y aparecerán muchas distorsiones.
Este ControlNet reference-only
puede vincular directamente las capas de atención de su SD a cualquier imagen independiente, de modo que su SD lea imágenes arbitrarias como referencia. Necesita al menos ControlNet 1.1.153 para usarlo.
Para usarlo, simplemente seleccione reference-only
como preprocesador y coloque una imagen. Tu SD solo usará la imagen como referencia.
Tenga en cuenta que este método es lo más "imprevisto" posible. Solo contiene códigos de conexión muy básicos, sin preferencias personales, para conectar las capas de atención con tus imágenes de referencia. Sin embargo, incluso si hicimos todo lo posible por no incluir ningún código con opiniones, aún necesitamos escribir algunas implementaciones subjetivas para abordar la ponderación, la escala de cfg, etc.; el informe técnico está en camino.
Más ejemplos aquí.
Ver también los documentos de ControlNet 1.1:
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-specification
Esta es mi configuración. Si tiene algún problema, puede usar esta configuración como control de cordura
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
Aún puede utilizar todos los modelos anteriores en el ControlNet 1.0 anterior. Ahora, la "profundidad" anterior ahora se llama "profundidad_midas", la "normal" anterior se llama "normal_midas", la "hed" anterior se llama "softedge_hed". Y a partir de la versión 1.1, todos los mapas de líneas, mapas de bordes, mapas lineales y mapas de límites tendrán fondo negro y líneas blancas.
(De TencentARC/T2I-Adapter)
Para utilizar modelos de adaptador T2I:
Tenga en cuenta que "CoAdapter" aún no está implementado.
Los siguientes resultados son de ControlNet 1.0.
Fuente | Aporte | Producción |
---|---|---|
(sin preprocesador) | ||
(sin preprocesador) | ||
Los siguientes ejemplos son de T2I-Adapter.
De t2iadapter_color_sd14v1.pth
:
Fuente | Aporte | Producción |
---|---|---|
De t2iadapter_style_sd14v1.pth
:
Fuente | Aporte | Producción |
---|---|---|
(clip, sin imagen) |
--xformers
habilitado y el modo Low VRAM
marcado en la interfaz de usuario, sube a 768x832 Esta opción permite múltiples entradas ControlNet para una sola generación. Para habilitar esta opción, cambie Multi ControlNet: Max models amount (requires restart)
en la configuración. Tenga en cuenta que deberá reiniciar la WebUI para que los cambios surtan efecto.
Fuente A | Fuente B | Producción |
El peso es el peso de la "influencia" de controlnet. Es análogo a provocar atención/énfasis. Por ejemplo (mi mensaje: 1.2). Técnicamente, es el factor por el cual se multiplican las salidas de ControlNet antes de fusionarlas con SD Unet original.
Inicio/Fin de la guía es el porcentaje del total de pasos que aplica el controlnet (fuerza de la guía = final de la guía). Es análogo a la edición/cambio de mensajes. Ej. [myprompt::0.8] (Aplica desde el inicio hasta el 80% del total de pasos)
Coloque cualquier unidad en modo por lotes para activar el modo por lotes para todas las unidades. Especifique un directorio de lotes para cada unidad o utilice el nuevo cuadro de texto en la pestaña de lotes img2img como alternativa. Aunque el cuadro de texto se encuentra en la pestaña de lote img2img, también puedes usarlo para generar imágenes en la pestaña txt2img.
Tenga en cuenta que esta función sólo está disponible en la interfaz de usuario de gradio. Llame a las API tantas veces como desee para una programación por lotes personalizada.
Esta extensión puede aceptar tareas txt2img o img2img a través de API o una llamada de extensión externa. Tenga en cuenta que es posible que deba habilitar Allow other scripts to control this extension
en la configuración de llamadas externas.
Para usar la API: inicie WebUI con el argumento --api
y vaya a http://webui-address/docs
para ver documentos o ejemplos de pago.
Para utilizar una llamada externa: Checkout Wiki
Esta extensión agrega estos argumentos de línea de comando a 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
Probado con pytorch todas las noches: #143 (comentario)
Para usar esta extensión con mps y pytorch normal, actualmente es posible que necesites iniciar WebUI con --no-half
.
La versión anterior (sd-webui-controlnet 1.0) está archivada en
https://github.com/lllyasviel/webui-controlnet-v1-archived
El uso de esta versión no supone una interrupción temporal de las actualizaciones. Detendrás todas las actualizaciones para siempre.
Considere esta versión si trabaja con estudios profesionales que requieren una reproducción del 100% de todos los resultados anteriores píxel a píxel.
Esta implementación está inspirada en kohya-ss/sd-webui-additional-networks