Construcción estable de difusión XL

Aquí presentamos principalmente cómo construir Stable Diffusion XL de 0 a 1 para pintar con IA.

Stable Diffusion XL es una versión optimizada de Stable Diffusion, publicada por Stability AI. En comparación con Stable Diffusion, Stable Diffusion XL se ha optimizado por completo. Rocky cree que Stable Diffusion será "YOLO" en el campo de la generación de imágenes, y Stable Diffusion XL es "YOLOv3".

Utilice ComfyUI para crear un proceso de inferencia Stable Diffusion XL con base cero

ComfyUI es una herramienta de pintura de IA de difusión estable basada en nodos . En comparación con Stable Diffusion WebUI, ComfyUI logra una personalización del flujo de trabajo más precisa y una clara reproducibilidad al dividir la tubería de inferencia de generación de modelos de Stable Diffusion en nodos independientes.

Al mismo tiempo, su mecanismo perfecto de carga de modelos y generación de imágenes le permite construir un flujo de trabajo Stable Diffusion XL en la tarjeta gráfica 2080Ti y puede generar imágenes con una resolución de 1024 x 1024. Es muy amigable desde el punto de vista computacional y puede describirse como una buena noticia. para principiantes.

En la actualidad, ComfyUI es compatible con el modelo Base y el modelo Refiner de Stable Diffusion XL. Las siguientes dos imágenes son la canalización completa de Rocky usando ComfyUI para cargar el modelo Stable Diffusion XL Base y el modelo Stable Diffusion XL Base + Refiner y generar imágenes: ComfyUI carga el modelo Stable Diffusion XL Base  ComfyUI carga el modelo Stable Diffusion XL Base + Refiner

A continuación, Rocky lo guiará paso a paso para usar ComfyUI para construir el proceso de inferencia Stable Diffusion XL, a fin de realizar el proceso de generación de los dos diagramas anteriores.

Primero, necesitamos instalar el marco ComfyUI, este paso es muy simple, solo ingrese el siguiente código en la línea de comando :

git clone https://github.com/comfyanonymous/ComfyUI.git  

Después de la instalación, podemos ver la carpeta local ComfyUI.

Después de que ComfyUI framework esté instalado localmente, necesitamos instalar sus bibliotecas dependientes, solo necesitamos hacer lo siguiente:

cd ComfyUI #进入下载好的ComfyUI文件夹中  
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 

Después de completar estas configuraciones, podemos configurar el modelo. Ponemos el modelo Stable Diffusion XL en la ruta ComfyUI/models/checkpoints/ . De esta forma, después de abrir la interfaz de visualización, podemos elegir el modelo Stable Diffusion XL para pintar con IA.

A continuación, ¡podemos iniciar ComfyUI! Vamos a la ruta ComfyUI/ y ejecutamos main.py:

python main.py --listen --port 8888

Una vez completada la operación, puede ver el registro que aparece en la línea de comando:

To see the GUI go to: http://0.0.0.0:8888  

Ingresamos http://0.0.0.0:8888 en nuestra página web local, y luego podemos abrir la interfaz visual de ComfyUI como se muestra en la figura anterior, y usar felizmente el modelo Stable Diffusion XL para generar la imagen que queremos.

A continuación, se explica el módulo basado en nodos de ComfyUI. Primero, solo se carga el modelo Base: Notas utilizadas por el modelo Base Stable Diffusion XL

Rocky ha realizado anotaciones más detalladas. Primero, puede seleccionar nuestro modelo (Base XL de difusión estable) en el cuadro rojo, luego completar el indicador y el indicador negativo, y configurar los parámetros del proceso de razonamiento generado (número de iteraciones, CFG, Semilla, etc.), luego configure la resolución de la imagen generada en el cuadro verde y luego haga clic en el botón Indicación de cola en el cuadro púrpura , y comienza todo el proceso de razonamiento. Después de completar todo el proceso de razonamiento, la imagen generada se mostrará en el lugar indicado por la flecha amarilla en la figura, y la imagen generada se guardará en la ruta/salida/ComfyUI local de forma sincrónica .

Después de completar el proceso de razonamiento del modelo Stable Diffusion Base, echemos un vistazo a cómo construir el proceso de razonamiento del modelo Base+Refiner: Notas utilizadas por el modelo Stable Diffusion XL Base+Refiner

Es muy similar a la construcción del modelo Base. Primero, puede seleccionar nuestro modelo de Refinador (Refinador de Difusión Estable XL) en el cuadro rojo. El Aviso y el aviso negativo utilizados por el modelo de Refinador son consistentes con el modelo Base, y configuran los parámetros del proceso de razonamiento generado (Tiempos iterativos, CFG, Semilla, etc.), la flecha verde indica que la salida de características Latentes del modelo Base se usa como entrada del modelo Refinador , y luego haga clic en el botón Solicitud de cola en la caja azul y comienza todo el proceso de refinamiento del Refinador. Después de completar todo el proceso de razonamiento, la imagen generada se mostrará en el lugar indicado por la flecha morada en la figura, y la imagen generada se guardará en la ruta/salida/ComfyUI local de forma sincrónica .

Hasta ahora, Rocky ha explicado en detalle cómo usar ComfyUI para construir un modelo Stable Diffusion XL para pintar con IA, y puedes seguir los pasos de Rocky para intentarlo.

Uso de SD.Next para construir un proceso de inferencia Stable Diffusion XL con base cero

SD.Next fue originalmente una rama de Stable Diffusion WebUI y, después de una optimización iterativa continua, finalmente se convirtió en una versión independiente.

En comparación con Stable Diffusion WebUI, SD.Next contiene funciones más avanzadas y también es compatible con Stable Diffusion, Stable Diffusion XL, Kandinsky, DeepFloyd IF y otras estructuras modelo. Es un marco de pintura de IA muy potente.

Entonces, comencemos a construir y usar SD.Next de inmediato.

Primero, necesitamos instalar el marco SD.Next. Este paso es muy simple. Solo ingrese el siguiente código en la línea de comando :

git clone https://github.com/vladmandic/automatic 

Después de la instalación, podemos ver la carpeta automática local.

Después de que SD.Next framework esté instalado localmente, necesitamos instalar sus bibliotecas dependientes, solo necesitamos hacer lo siguiente:

cd automatic #进入下载好的automatic文件夹中  
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

Además de instalar las bibliotecas dependientes, también debe configurar los complementos de los repositorios requeridos por SD.Next Necesitamos ejecutar el siguiente código:

cd automatic #进入下载好的automatic文件夹中  
python installer.py 

Después de completar la instalación de los complementos de bibliotecas y repositorios dependientes, podemos configurar el modelo. Ponemos el modelo Stable Diffusion XL en la ruta /automatic/models/Stable-diffusion/ . De esta forma, después de abrir la interfaz de visualización, podemos elegir el modelo Stable Diffusion XL para razonar y generar imágenes.

Después de completar los pasos anteriores, podemos iniciar SD.Next! Vamos a la ruta /automatic/ y ejecutamos launch.py:

python launch.py --listen --port 8888  

Una vez completada la operación, puede ver el registro que aparece en la línea de comando:

To see the GUI go to: http://0.0.0.0:8888

Ingresamos http://0.0.0.0:8888 en nuestra página web local, y luego podemos abrir la interfaz visual SD.Next como se muestra en la figura a continuación, y felizmente usamos el modelo Stable Diffusion XL para la pintura de IA.  interfaz visual automática

Después de ingresar a la interfaz de visualización de SD.Next, podemos seleccionar el modelo en el cuadro rojo, y luego debemos modificar la configuración en Configuración para que SD.Next pueda cargar el modelo Stable Diffusion XL.

Hacemos clic en Configuración en el cuadro azul de arriba para ingresar a la interfaz de configuración de Configuración: Modificación automática de la configuración del marco [1]  modificación automática de la configuración del marco [2]

Como se puede ver en la ilustración anterior, la modificación que debemos hacer es establecer Configuración -> Difusión estable -> backend de Difusión estable para los difusores, y seleccionar el modelo Refinador en la columna Refinador de Difusión estable .

Luego, debemos configurar Configuración -> Configuración de difusores-> Seleccionar tubería de difusor al cargar desde la columna de tensores de seguridad a Stable Diffusion XL .

¡Después de completar la modificación de configuración anterior, podemos usar SD.Next para cargar Stable Diffusion XL para pintar con IA!

Use Stable Diffusion WebUI para construir el proceso de inferencia Stable Diffusion XL con base cero

Actualmente, Stable Diffusion WebUI admite el modelo Base en Stable Diffusion XL, pero no admite el modelo Refiner.

Stable Diffusion WebUI es el marco más popular en el campo de la pintura de IA, y su ecología es extremadamente próspera. Muchos complementos ascendentes y descendentes pueden funcionar con Stable Diffusion WebUI para completar flujos de trabajo como la generación de video AI, la generación de fotos ID AI, etc. ., que es muy jugable.

A continuación, usemos este popular marco para construir el proceso de inferencia Stable Diffusion XL.

Primero, necesitamos descargar e instalar el marco Stable Diffusion WebUI, solo necesitamos ingresar el siguiente código en la línea de comando :

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 

Después de la instalación, podemos ver la carpeta local stable-diffusion-webui.

A continuación, debemos instalar su biblioteca dependiente, ingresamos a la carpeta Stable Diffusion WebUI y hacemos lo siguiente:

cd stable-diffusion-webui #进入下载好的automatic文件夹中  
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 

Similar al proceso de configuración de SD. A continuación, también debemos configurar el complemento de repositorios de Stable Diffusion WebUI, debemos ejecutar el siguiente código:

sh webui.sh  
#主要依赖包括:BLIP CodeFormer generative-models k-diffusion stable-diffusion-stability-ai taming-transformers

Después de completar la instalación de los complementos de bibliotecas y repositorios dependientes, podemos configurar el modelo. Ponemos el modelo Stable Diffusion XL en la ruta /stable-diffusion-webui/models/Stable-diffusion/ . De esta forma, después de abrir la interfaz de visualización, podemos elegir el modelo Stable Diffusion XL para razonar y generar imágenes.

¡Después de completar los pasos anteriores, podemos iniciar la WebUI de difusión estable! Vamos a la ruta de /stable-diffusion-webui/ y ejecutamos launch.py ​​:

python launch.py --listen --port 8888 

Una vez completada la operación, puede ver el registro que aparece en la línea de comando:

To see the GUI go to: http://0.0.0.0:8888

Ingresamos http://0.0.0.0:8888 en nuestra página web local, y luego podemos abrir la interfaz visual Stable Diffusion WebUI como se muestra en la figura a continuación, y felizmente usar el modelo Stable Diffusion XL para la pintura de IA.

Interfaz visual WebUI de difusión estable

Después de ingresar a la interfaz visual Stable Diffusion WebUI, podemos seleccionar el modelo SDXL en el cuadro rojo, luego ingresar nuestras palabras de aviso y negativas en el cuadro amarillo, y establecer la resolución de imagen que queremos generar en el cuadro verde (configuración recomendada en 1024x1024) , y luego podemos hacer clic en el botón Generar para comenzar a pintar AI.

Después de esperar un rato, la imagen se generará y se mostrará en la esquina inferior derecha de la interfaz, y también se guardará en la ruta /stable-diffusion-webui/outputs/txt2img-images/ , puede verla en la camino correspondiente.

Use difusores para construir un proceso de razonamiento Stable Diffusion XL con base cero

El proceso de inferencia Stable Diffusion XL se puede construir muy bien en difusores. Dado que los difusores actualmente no tienen una interfaz visual lista para usar, Rocky creará un flujo de trabajo de inferencia Stable Diffusion XL completo en Jupyter Notebook, para que todos puedan dominarlo rápidamente.

Primero, necesitamos instalar la biblioteca de difusores y asegurarnos de que la versión de los difusores sea >= 0.18.0, solo necesitamos ingresar el comando en la línea de comando para instalar:

pip install diffusers --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

Se muestra el siguiente registro para indicar que la instalación se realizó correctamente:

Successfully installed diffusers-0.18.2 huggingface-hub-0.16.4

Agregue el comando: -i https://pypi.tuna.tsinghua.edu.cn/simple some-package significa usar la fuente de Tsinghua para descargar el paquete dependiente, ¡la velocidad es muy rápida!

A continuación, continuamos con la instalación de otras bibliotecas dependientes:

pip install transformers==4.27.0 accelerate==0.12.0 safetensors==0.2.7 invisible\_watermark -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

Se muestra el siguiente registro para indicar que la instalación se realizó correctamente:

Successfully installed transformers-4.27.0 accelerate==0.12.0 safetensors==0.2.7 invisible\_watermark-0.2.0

Nota: Para cargar el modelo Stable Diffusion XL con precisión fp16 en difusores, la versión de la biblioteca de transformadores debe ser >=4.27.0

Después de completar la instalación de las bibliotecas dependientes anteriores, podemos construir el flujo de trabajo completo del modelo Stable Diffusion XL.

Primero usamos el modelo Base solo en Stable Diffusion XL para generar imágenes:

# 加载diffusers和torch依赖库  
from diffusers import DiffusionPipeline  
import torch

  
  
# 构建Stable Diffusion XL Base模型的Pipeline,加载Stable Diffusion XL Base模型  
pipe = DiffusionPipeline.from\_pretrained\("/本地路径/stable-diffusion-xl-base-0.9",torch\_dtype=torch.float16, variant="fp16"\)  
# "本地路径/stable-diffusion-xl-base-0.9"表示我们需要加载的Stable Diffusion XL Base模型,  
# 大家可以关注Rocky的公众号WeThinkIn,后台回复:SDXL模型,即可获得资源链接  
# "fp16"代表启动fp16精度。比起fp32,fp16可以使模型显存占用减半。  
  
# 使用GPU进行Pipeline的推理  
pipe.to\("cuda"\)  
  
# 输入提示词  
prompt = "Watercolor painting of a desert landscape, with sand dunes, mountains, and a blazing sun, soft and delicate brushstrokes, warm and vibrant colors"  
  
# 输入负向提示词,表示我们不想要生成的特征  
negative\_prompt = "\(EasyNegative\),\(watermark\), \(signature\), \(sketch by bad-artist\), \(signature\), \(worst quality\), \(low quality\), \(bad anatomy\), NSFW, nude, \(normal quality\)"  
  
# 设置seed,可以固定构图  
seed = torch.Generator\("cuda"\).manual\_seed\(42\)  
  
# Pipeline进行推理  
image = pipe\(prompt, negative\_prompt=negative\_prompt,generator=seed\).images\[0\]  
\# Pipeline生成的images包含在一个list中:\[\<PIL.Image.Image image mode=RGB size=1024x1024>\]  
#所以需要使用images\[0\]来获取list中的PIL图像  
  
# 保存生成图像  
image.save\("test.png"\)  

Después de completar todo el proceso de código anterior, podemos generar una pintura de paisaje desértico estilo acuarela . Si opera de acuerdo con los parámetros de Rocky, debería poder asegurarse de que se genere la siguiente imagen: Imagen generada por el modelo base

A continuación, conectamos en cascada el modelo base y el modelo refinador para generar imágenes:

from diffusers import DiffusionPipeline  
import torch  
  
pipe = DiffusionPipeline.from\_pretrained\("/本地路径/stable-diffusion-xl-base-0.9", torch\_dtype=torch.float16, variant="fp16"\)  
  
pipe.to\("cuda"\)  
  
prompt = "Watercolor painting of a desert landscape, with sand dunes, mountains, and a blazing sun, soft and delicate brushstrokes, warm and vibrant colors"  
  
negative\_prompt = "\(EasyNegative\),\(watermark\), \(signature\), \(sketch by bad-artist\), \(signature\), \(worst quality\), \(low quality\), \(bad anatomy\), NSFW, nude, \(normal quality\)"  
  
seed = torch.Generator\("cuda"\).manual\_seed\(42\)  
  
# 首先运行Base模型的Pipeline,输出格式为output\_type="latent"  
image = pipe\(prompt=prompt, negative\_prompt=negative\_prompt, generator=seed, output\_type="latent"\).images  
  
# 构建Stable Diffusion XL Refiner模型的Pipeline,加载Stable Diffusion XL Refiner模型  
pipe = DiffusionPipeline.from\_pretrained\("/本地路径/stable-diffusion-xl-refiner-0.9", torch\_dtype=torch.float16, variant="fp16"\)  
# "本地路径/stable-diffusion-xl-refiner-0.9"表示我们需要加载的Stable Diffusion XL Refiner模型,  
# 大家可以关注Rocky的公众号WeThinkIn,后台回复:SDXL模型,即可获得资源链接  
  
pipe.to\("cuda"\)  
  
images = pipe\(prompt=prompt, negative\_prompt=negative\_prompt, generator=seed, image=image\).images  
  
images\[0\].save\("test.png"\)  

Después de completar el flujo de código anterior, echemos un vistazo a las imágenes generadas al conectar en cascada el modelo base y el modelo refinador:  Imágenes generadas al conectar en cascada el modelo base y el modelo refinador

Para una comparación más intuitiva, comparamos las dos imágenes que acabamos de generar: podemos ver claramente que después de usar el modelo Refiner, la calidad general y los detalles de la imagen mejoran mucho, y la composición y el color son más suaves.

Por supuesto, también podemos usar el modelo Refiner solo para optimizar la imagen:

import torch  
from diffusers import StableDiffusionXLImg2ImgPipeline  
from diffusers.utils import load\_image  
  
pipe = DiffusionPipeline.from\_pretrained\("/本地路径/stable-diffusion-xl-refiner-0.9", torch\_dtype=torch.float16, variant="fp16"\)  
  
pipe = pipe.to\("cuda"\)  
  
image\_path = "/本地路径/test.png"  
  
init\_image = load\_image\(image\_path\).convert\("RGB"\)  
  
prompt = "Watercolor painting of a desert landscape, with sand dunes, mountains, and a blazing sun, soft and delicate brushstrokes, warm and vibrant colors"  
  
negative\_prompt = "\(EasyNegative\),\(watermark\), \(signature\), \(sketch by bad-artist\), \(signature\), \(worst quality\), \(low quality\), \(bad anatomy\), NSFW, nude, \(normal quality\)"  
  
seed = torch.Generator\("cuda"\).manual\_seed\(42\)  
  
image = pipe\(prompt, negative\_prompt=negative\_prompt, generator=seed, image=init\_image\).images\[0\]  
  
image.save\("refiner.png"\)  

Aquí, Rocky usa futuras imágenes de estilo mecha para probar y comparar. Como puede ver en la imagen a continuación, el efecto del modelo Refinador en la optimización de la calidad de la imagen sigue siendo muy obvio. Las fallas de la imagen obviamente se eliminan, la imagen general es más natural y suave, y los detalles también son mejores, complementan y reconstruyen. Ejemplo de generación XL de difusión estable

Ejemplo 1: estilo urbano futurista whaosoft  aiot  http://143ai.com

Aviso: Impresionante puesta de sol sobre una ciudad futurista, con imponentes rascacielos y vehículos voladores, iluminación de hora dorada y nubes dramáticas, gran detalle, atmósfera cambiante

Indicación negativa: (Negativo fácil), (marca de agua), (firma), (boceto del mal artista), (firma), (peor calidad), (baja calidad), (mala anatomía), NSFW, desnudo, (calidad normal)

Stable Diffusion XL Base+Refiner Resultado: Stable Diffusion XL Resultado: Estilo Urbano Futurista

Ejemplo 2: Indicación estilo Paradise Beach: Serena escena de playa con aguas cristalinas y arena blanca, palmeras tropicales meciéndose con la brisa, paraíso perfecto, paisaje marino

Indicación negativa: (Negativo fácil), (marca de agua), (firma), (boceto del mal artista), (firma), (peor calidad), (baja calidad), (mala anatomía), NSFW, desnudo, (calidad normal)

Stable Diffusion XL Base+Refiner Resultados de construcción: Stable Diffusion XL Resultados de construcción: Paradise Beach Style

Ejemplo 3: estilo mecánico futuro

Aviso: robots gigantes que luchan en una ciudad futurista, con edificios que se derrumban y explosiones por todas partes, intenso, vertiginoso, dramático, estilizado, futurista

Indicación negativa: (Negativo fácil), (marca de agua), (firma), (boceto del mal artista), (firma), (peor calidad), (baja calidad), (mala anatomía), NSFW, desnudo, (calidad normal)

Stable Diffusion XL Base+Refiner Resultado: Stable Diffusion XL Resultado: Future Mech Style

Ejemplo 4: estilo almizcle

Mensaje: Elon Musk de pie en una sala de trabajo, al estilo de la estética de la maquinaria industrial, deutscher werkbund, imágenes escenificadas uniformemente, soviet, índigo claro y bronce oscuro, nueva fotografía estadounidense en color, rasgos faciales detallados

Indicación negativa: (Negativo fácil), (marca de agua), (firma), (boceto del mal artista), (firma), (peor calidad), (baja calidad), (mala anatomía), NSFW, desnudo, (calidad normal)

El resultado de Stable Diffusion XL Base+Refiner: El resultado de Stable Diffusion XL: Estilo almizcle 

 

Supongo que te gusta

Origin blog.csdn.net/qq_29788741/article/details/132052190
Recomendado
Clasificación