IF-II-M-v1.0

DeepFloyd
Texto a imagen

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

Como usar

IF está integrado con la biblioteca de difusores de Hugging Face, optimizada para funcionar en GPU con tan solo 14 GB de VRAM. Antes de usar IF, debes aceptar sus condiciones de uso. Para hacerlo:

Asegúrate de tener una cuenta de Hugging Face y haber iniciado sesión
Acepta la licencia en la tarjeta del modelo DeepFloyd/IF-I-M-v1.0
Asegúrate de iniciar sesión localmente.

```python
pip install huggingface_hub --upgrade

```python
from huggingface_hub import login
login()

Ingresa tu token de acceso de Hugging Face Hub.

Luego instalamos difusores y dependencias:

pip install diffusers accelerate transformers safetensors sentencepiece

Y ahora podemos ejecutar el modelo localmente. De manera predeterminada, los difusores hacen uso de la descarga del modelo a la CPU para ejecutar toda la tubería 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
stage_1 = DiffusionPipeline.from_pretrained("DeepFloyd/IF-I-M-v1.0", variant="fp16", torch_dtype=torch.float16)
stage_1.enable_xformers_memory_efficient_attention() # eliminar la línea si torch.__version__ >= 2.0.0
stage_1.enable_model_cpu_offload()

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

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

Recorte de texto
prompt = 'una foto de un canguro con una sudadera con capucha naranja y gafas de sol azules parado frente a la torre Eiffel sosteniendo un cartel que dice "deep learning very deep"

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

Ejecutar etapa 1
generator = torch.manual_seed(0)
imagen = stage_1(prompt_embeds=prompt_embeds, negative_prompt_embeds=negative_embeds, generator=generator, output_type="pt").images
pt_to_pil(image)[0].save("./if_stage_I.png")

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

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

Para más información detallada sobre cómo usar IF, consulta la publicación del blog de IF y la documentación 📖. Los scripts de dreambooth de Diffusers también admiten la afinación fina 🎨 de IF. Con una afinación de parámetros eficiente, puede agregar nuevos conceptos a IF con una sola GPU y aproximadamente 28 GB de VRAM.

Funcionalidades

Modelo de difusión en cascada basado en píxeles
Generación de imágenes en tres etapas: 64x64, 256x256 y 1024x1024
Uso de un codificador de texto basado en el transformador T5
Arquitectura UNet mejorada con atención cruzada y agrupación de atención
Robusta comprensión de texto en inglés y, en menor medida, otros idiomas romances

Casos de uso

Generación de imágenes artísticas y uso en procesos de diseño y otras aplicaciones artísticas.
Despliegue seguro de modelos que puedan generar contenido dañino.
Análisis y comprensión de las limitaciones y sesgos de los modelos generativos.
Aplicaciones en herramientas educativas o creativas.
Investigación en modelos generativos.