shi-labs/versatile-diffusion

shi-labs
Texto a imagen

Versatile Diffusion V1.0 es un modelo de difusión multimodal unificado de SHI Labs diseñado para combinar texto e imágenes en varios flujos generativos. Soporta de forma nativa generación texto a imagen, variaciones de imagen, generación guiada por texto e imagen, imagen a texto y variaciones de texto. Está basado en una arquitectura multiflujo donde cada flujo incluye un VAE, un difusor y un codificador de contexto.

Como usar

Instalación básica con Diffusers:

pip install -U diffusers transformers accelerate

Uso rápido:

import torch
from diffusers import DiffusionPipeline

# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("shi-labs/versatile-diffusion", dtype=torch.bfloat16, device_map="cuda")

prompt = "A high tech solarpunk utopia in the Amazon rainforest"
image = pipe(prompt).images[0]

Uso con VersatileDiffusionPipeline para varias tareas:

#! pip install git+https://github.com/huggingface/transformers diffusers torch
from diffusers import VersatileDiffusionPipeline
import torch
import requests
from io import BytesIO
from PIL import Image

pipe = VersatileDiffusionPipeline.from_pretrained("shi-labs/versatile-diffusion", torch_dtype=torch.float16)
pipe = pipe.to("cuda")

# prompt
prompt = "a red car"

# initial image
url = "https://huggingface.co/datasets/diffusers/images/resolve/main/benz.jpg"
response = requests.get(url)
image = Image.open(BytesIO(response.content)).convert("RGB")

# text to image
image = pipe.text_to_image(prompt).images[0]

# image variation
image = pipe.image_variation(image).images[0]

# dual-guided generation
image = pipe.dual_guided(prompt, image).images[0]

Pipeline específico para texto a imagen:

from diffusers import VersatileDiffusionTextToImagePipeline
import torch

pipe = VersatileDiffusionTextToImagePipeline.from_pretrained("shi-labs/versatile-diffusion", torch_dtype=torch.float16)
pipe.remove_unused_weights()
pipe = pipe.to("cuda")

generator = torch.Generator(device="cuda").manual_seed(0)
image = pipe("an astronaut riding on a horse on mars", generator=generator).images[0]
image.save("./astronaut.png")

Pipeline para variaciones de imagen:

from diffusers import VersatileDiffusionImageVariationPipeline
import torch
import requests
from io import BytesIO
from PIL import Image

# download an initial image
url = "https://huggingface.co/datasets/diffusers/images/resolve/main/benz.jpg"
response = requests.get(url)
image = Image.open(BytesIO(response.content)).convert("RGB")

pipe = VersatileDiffusionImageVariationPipeline.from_pretrained("shi-labs/versatile-diffusion", torch_dtype=torch.float16)
pipe = pipe.to("cuda")

generator = torch.Generator(device="cuda").manual_seed(0)
image = pipe(image, generator=generator).images[0]
image.save("./car_variation.png")

Pipeline para generación dual guiada:

from diffusers import VersatileDiffusionDualGuidedPipeline
import torch
import requests
from io import BytesIO
from PIL import Image

# download an initial image
url = "https://huggingface.co/datasets/diffusers/images/resolve/main/benz.jpg"
response = requests.get(url)
image = Image.open(BytesIO(response.content)).convert("RGB")

text = "a red car in the sun"
pipe = VersatileDiffusionDualGuidedPipeline.from_pretrained("shi-labs/versatile-diffusion", torch_dtype=torch.float16)
pipe.remove_unused_weights()
pipe = pipe.to("cuda")

generator = torch.Generator(device="cuda").manual_seed(0)
text_to_image_strength = 0.75
image = pipe(prompt=text, image=image, text_to_image_strength=text_to_image_strength, generator=generator).images[0]
image.save("./red_car.png")

Funcionalidades

Modelo de difusión multimodal para texto e imágenes.
Compatible con generación texto a imagen, imagen a imagen, imagen a texto, texto a texto, edición de imagen, variaciones de imagen y generación dual guiada.
Integración con Diffusers mediante VersatileDiffusionPipeline y pipelines específicos por tarea.
Entrenado con LAION-2B-en y publicado bajo licencia MIT.
Incluye pipelines más eficientes en memoria que cargan solo los pesos necesarios para tareas específicas.

Casos de uso

Crear imágenes a partir de prompts de texto.
Generar variaciones visuales de una imagen inicial.
Combinar una imagen y una descripción textual para producir una salida guiada por ambas señales.
Explorar flujos multimodales de investigación que conectan texto e imagen.
Probar edición latente y generación creativa basada en imagen y texto.