controlnet-canny-sdxl-1.0

xinsir
Texto a imagen

Hola, estoy muy feliz de anunciar el modelo controlnet-canny-sdxl-1.0, un controlnet muy poderoso que puede generar imágenes de alta resolución visualmente comparables con midjourney. El modelo fue entrenado con una gran cantidad de datos de alta calidad (más de 10,000,000 imágenes), cuidadosamente filtradas y subtituladas (modelo vllm poderoso). Además, se aplican trucos útiles durante el entrenamiento, incluyendo aumentación de datos, pérdida múltiple y resolución múltiple. Con solo una etapa de entrenamiento, el rendimiento supera a otros modelos canny de código abierto ([diffusers/controlnet-canny-sdxl-1.0], [TheMistoAI/MistoLine]). Lo libero y espero avanzar en la aplicación de modelos de difusión estable. Canny es uno de los modelos más importantes de la serie ControlNet y puede aplicarse a muchos trabajos relacionados con dibujo y diseño.

Como usar

from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers import DDIMScheduler, EulerAncestralDiscreteScheduler
from PIL import Image
import torch
import numpy as np
import cv2

def HWC3(x):
    assert x.dtype == np.uint8
    if x.ndim == 2:
        x = x[:, :, None]
    assert x.ndim == 3
    H, W, C = x.shape
    assert C == 1, 3 or 4
    if C == 3:
        return x
    if C == 1:
        return np.concatenate([x, x, x], axis=2)
    if C == 4:
        color = x[:, :, 0:3].astype(np.float32)
        alpha = x[:, :, 3:4].astype(np.float32) / 255.0
        y = color * alpha + 255.0 * (1.0 - alpha)
        y = y.clip(0, 255).astype(np.uint8)
        return y

controlnet_conditioning_scale = 1.0
prompt = "your prompt, the longer the better, you can describe it as detail as possible"
negative_prompt = 'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality'

eulera_scheduler = EulerAncestralDiscreteScheduler.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", subfolder="scheduler")


controlnet = ControlNetModel.from_pretrained(
    "xinsir/controlnet-canny-sdxl-1.0",
    torch_dtype=torch.float16
)

# when test with other base model, you need to change the vae also.
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)

pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    vae=vae,
    safety_checker=None,
    torch_dtype=torch.float16,
    scheduler=eulera_scheduler,
)

# need to resize the image resolution to 1024 * 1024 or same bucket resolution to get the best performance

controlnet_img = cv2.imread("your image path")
height, width, _  = controlnet_img.shape
ratio = np.sqrt(1024. * 1024. / (width * height))
new_width, new_height = int(width * ratio), int(height * ratio)
controlnet_img = cv2.resize(controlnet_img, (new_width, new_height))

controlnet_img = cv2.Canny(controlnet_img, 100, 200)
controlnet_img = HWC3(controlnet_img)
controlnet_img = Image.fromarray(controlnet_img)

images = pipe(
    prompt,
    negative_prompt=negative_prompt,
    image=controlnet_img,
    controlnet_conditioning_scale=controlnet_conditioning_scale,
    width=new_width,
    height=new_height,
    num_inference_steps=30,
).images

images[0].save(f"your image save path, png format is usually better than jpg or webp in terms of image quality but got much bigger")

Funcionalidades

Generación de imágenes visualmente comparables con midjourney
Entrenado con más de 10,000,000 imágenes de alta calidad
Incorporación de trucos de entrenamiento como aumentación de datos y resolución múltiple
Supera a otros modelos canny de código abierto
Aplicable a trabajos de dibujo y diseño

Casos de uso

Crear imágenes visualmente impresionantes comparables a midjourney
Aplicable a trabajos de dibujo y diseño
Usos comerciales como fotografía publicitaria y fotografía de revistas de comida
Creación de arte detallado y estético
Generación de imágenes en diferentes estilos de arte, incluyendo acuarela y realismo hiperrealista