IF-II-L-v1.0

DeepFloyd
Texto a imagen

DeepFloyd-IF es un modelo de difusión en cascada basado en píxeles que puede generar imágenes con un nuevo estado del arte en fotorrealismo y comprensión del lenguaje. El resultado es un modelo altamente eficiente que supera a los modelos actuales de última generación, logrando una puntuación FID-30K de 6.66 en el conjunto de datos COCO.

Como usar

IF está integrado con la library de difusores de 🤗 Hugging Face 🧨, que está optimizada para ejecutarse en GPU con tan solo 14 GB de VRAM. Para usar IF, primero debes aceptar sus condiciones de uso. Para hacerlo:

pip install huggingface_hub --upgrade
from huggingface_hub import login
login()

e ingresa tu token de acceso a Hugging Face Hub. Luego instala diffusers y dependencias:

pip install diffusers acelerate transformers safetensors sentencepiece

Y ahora podemos ejecutar el modelo localmente. Por defecto, diffusers utiliza la descarga de modelos en la CPU para ejecutar toda la canalización IF con tan solo 14 GB de VRAM. Si estás usando torch>=2.0.0, asegúrate de eliminar todas las funciones enable_xformers_memory_efficient_attention().

from diffusers import DiffusionPipeline
from diffusers.utils import pt_to_pil
import torch

# etapa 1
etapa_1 = DiffusionPipeline.from_pretrained("DeepFloyd/IF-I-XL-v1.0", variante="fp16", torch_dtype=torch.float16)
etapa_1.enable_xformers_memory_efficient_attention() # eliminar línea si torch.__version__ >= 2.0.0
etapa_1.enable_model_cpu_offload()

# etapa 2
etapa_2 = DiffusionPipeline.from_pretrained(
"DeepFloyd/IF-II-L-v1.0", text_encoder=None, variant="fp16", torch_dtype=torch.float16
)
etapa_2.enable_xformers_memory_efficient_attention() # eliminar línea si torch.__version__ >= 2.0.0
etapa_2.enable_model_cpu_offload()

# etapa 3
safety_modules = {"feature_extractor": etapa_1.feature_extractor, "safety_checker": etapa_1.safety_checker, "watermarker": etapa_1.watermarker}
etapa_3 = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-x4-upscaler", **safety_modules, torch_dtype=torch.float16)
etapa_3.enable_xformers_memory_efficient_attention() # eliminar línea si torch.__version__ >= 2.0.0
etapa_3.enable_model_cpu_offload()

# Obtener incrustaciones de texto
prompt = 'una foto de un canguro con una sudadera con capucha naranja y gafas de sol azules frente a la torre eiffel con un cartel que dice "very deep learning"'

# incrustaciones de texto
prompt_embeds, negative_embeds = stage_1.encode_prompt(prompt)

# Ejecutar etapa 1
randomizador = torch.manual_seed(0)

imagen = stage_1(prompt_embeds=prompt_embeds, negative_prompt_embeds=negative_embeds, generator=randomizador, output_type="pt").images
pt_to_pil(imagen)[0].save("./if_stage_I.png")

# Ejecutar etapa 2
imagen = stage_2(
imagen=imagen, prompt_embeds=prompt_embeds, negative_prompt_embeds=negative_embeds, generator=randomizador, output_type="pt").images
pt_to_pil(imagen)[0].save("./if_stage_II.png")

# Ejecutar etapa 3
imagen = stage_3(prompt=prompt, imagen=imagen, generator=randomizador, noise_level=100).images
imagen[0].save("./if_stage_III.png")

Hay múltiples formas de acelerar el tiempo de inferencia y reducir aún más el consumo de memoria con diffusers.

Funcionalidades

Modelo de difusión en cascada basado en píxeles
Generación de imágenes con alta eficiencia
Comprensión avanzada del lenguaje
Capacidad para generar imágenes en resoluciones crecientes: 64x64, 256x256 y 1024x1024
Utiliza un codificador de texto congelado basado en el transformador T5
Supera a los modelos actuales de última generación en términos de fotorrealismo

Casos de uso

Generación de imágenes artísticas y uso en procesos de diseño u otros procesos artísticos.
Despliegue seguro de modelos que tienen el potencial de generar contenido dañino.
Investigación y comprensión de las limitaciones y sesgos de los modelos generativos.
Aplicaciones en herramientas educativas o creativas.
Investigación en modelos generativos.