kandinsky-2-2-controlnet-depth

kandinsky-community
Texto a imagen

Kandinsky hereda las mejores prácticas de Dall-E 2 y Latent diffusion mientras introduce algunas ideas nuevas. Utiliza el modelo CLIP como codificador de texto e imagen, y un prior de imagen de difusión (mapeo) entre espacios latentes de modalidades CLIP. Este enfoque aumenta el rendimiento visual del modelo y desvela nuevos horizontes en la mezcla de imágenes y manipulación guiada por texto. La arquitectura del modelo Kandinsky 2.2 incluye un modelo de prior de imagen basado en transformadores, un modelo de difusión unet y un decodificador. El modelo fue creado por Arseniy Shakhmatov, Anton Razzhigaev, Aleksandr Nikolich, Igor Pavlov, Andrey Kuznetsov y Denis Dimitrov.

Como usar

Python

import torch
import numpy as np
from transformers import pipeline
from diffusers.utils import load_image
from diffusers import KandinskyV22PriorPipeline, KandinskyV22ControlnetPipeline
# Procesar una imagen y extraer su mapa de profundidad
def make_hint(image, depth_estimator):
    image = depth_estimator(image)["depth"]
    image = np.array(image)
    image = image[:, :, None]
    image = np.concatenate([image, image, image], axis=2)
    detected_map = torch.from_numpy(image).float() / 255.0
    hint = detected_map.permute(2, 0, 1)
    return hint
img = load_image("https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinskyv22/cat.png").resize((768, 768))
depth_estimator = pipeline("depth-estimation")
hint = make_hint(img, depth_estimator).unsqueeze(0).half().to("cuda")
pipe_prior = KandinskyV22PriorPipeline.from_pretrained("kandinsky-community/kandinsky-2-2-prior", torch_dtype=torch.float16)
pipe_prior = pipe_prior.to("cuda")
pipe = KandinskyV22ControlnetPipeline.from_pretrained("kandinsky-community/kandinsky-2-2-controlnet-depth", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "Un robot, foto en 4k"
negative_prior_prompt = "baja resolución, texto, error, recortado, peor calidad, baja calidad, artefactos jpeg, feo, duplicado, mórbido, mutilado, fuera de marco, dedos extra, manos mutadas, manos mal dibujadas, cara mal dibujada, mutación, deformado, borroso, deshidratado, mala anatomía, malas proporciones, miembros extra, cara clonada, desfigurado, proporciones grotescas, miembros malformados, brazos faltantes, piernas faltantes, brazos extra, piernas extra, dedos fusionados, demasiados dedos, cuello largo, nombre de usuario, marca de agua, firma"
generator = torch.Generator(device="cuda").manual_seed(43)
image_emb, zero_image_emb = pipe_prior(prompt=prompt, negative_prompt=negative_prior_prompt, generator=generator).to_tuple()
images = pipe(image_embeds=image_emb, negative_image_embeds=zero_image_emb, hint=hint, num_inference_steps=50, generator=generator, height=768, width=768).images
images[0].save("robot_cat.png")

Funcionalidades

Generación de texto a imagen con acondicionamiento ControlNet
Generación de imagen a imagen con acondicionamiento ControlNet
Modelo basado en unCLIP y latent diffusion
Capacidad para generar imágenes de 1024x1024 con cualquier relación de aspecto

Casos de uso

Generación de imágenes a partir de texto con detalles específicos
Transformación de imágenes existentes usando mapeo de profundidad
Creación de imágenes artísticas fusionando textos e imágenes
Manipulación avanzada de imágenes guiada por descripciones textuales