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.