Buckets:

mishig's picture
|
download
raw
15.4 kB

DreamLite

DreamLite es un modelo de texto a imagen y edición de imágenes de ByteDance. Combina un U-Net 2D personalizado (DreamLiteUNetModel) con el codificador multimodal Qwen3-VL como codificador de prompts / instrucciones de imagen, y utiliza un VAE AutoencoderTiny (estilo TAESD) para la codificación y decodificación rápida de latentes.

Se exponen dos pipelines:

Pipeline Modos CFG Caso de uso
DreamLitePipeline texto a imagen y edición de imagen (seleccionado automáticamente según si image es None) CFG dual de 3 ramas (guidance_scale en la rama de texto, image_guidance_scale en la rama de imagen, al estilo de InstructPix2Pix) Máxima calidad
DreamLiteMobilePipeline texto a imagen y edición de imagen (seleccionado automáticamente según si image es None) Ninguna — destilada, un solo paso de UNet por iteración En el dispositivo / baja latencia

Puntos de control oficiales:

Ambos pipelines detectan automáticamente el modo de texto a imagen frente a edición de imagen según si se proporciona el argumento image. No existe una clase Img2Img separada.

Al cargar una imagen de entrada para editarla, se prefiere diffusers.utils.load_image(...) sobre PIL.Image.open(...) sin procesar. load_image aplica una conversión a RGB y la orientación EXIF, dos aspectos que el pipeline asume. Un Image.open simple de una fuente RGBA / con paleta / rotada por EXIF producirá silenciosamente una condición latente diferente y degradará la calidad de la salida.

Texto a imagen (Base)

import torch
from diffusers import DreamLitePipeline

pipe = DreamLitePipeline.from_pretrained("carlofkl/DreamLite-base", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a dog running on the grass",
    negative_prompt="",
    height=1024,
    width=1024,
    num_inference_steps=28,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_t2i.png")

Edición de imágenes (Base)

Pase una image para entrar en modo de edición. Tanto guidance_scale (rama de texto) como image_guidance_scale (rama de imagen) están activos aquí.

import torch
from diffusers import DreamLitePipeline
from diffusers.utils import load_image

pipe = DreamLitePipeline.from_pretrained("carlofkl/DreamLite-base", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

source = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")

image = pipe(
    prompt="turn the cat into a corgi",
    image=source,
    height=1024,
    width=1024,
    num_inference_steps=28,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_edit.png")

Texto a imagen (móvil)

El pipeline móvil está destilado y omite por completo el CFG: una sola pasada de UNet por paso. Acepta los mismos argumentos prompt / height / width / num_inference_steps, pero ignora guidance_scale y image_guidance_scale si se pasan (se registra una advertencia).

import torch
from diffusers import DreamLiteMobilePipeline

pipe = DreamLiteMobilePipeline.from_pretrained("carlofkl/DreamLite-mobile", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a dog running on the grass",
    height=1024,
    width=1024,
    num_inference_steps=4,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_mobile_t2i.png")

Edición de imágenes (Móvil)

import torch
from diffusers import DreamLiteMobilePipeline
from diffusers.utils import load_image

pipe = DreamLiteMobilePipeline.from_pretrained("carlofkl/DreamLite-mobile", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

source = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")

image = pipe(
    prompt="turn the cat into a corgi",
    image=source,
    height=1024,
    width=1024,
    num_inference_steps=4,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_mobile_edit.png")

Notas y limitaciones

  • Ambos pipelines fuerzan batch_size = 1 internamente; num_images_per_prompt controla cuántas muestras se extraen del mismo prompt, en lugar de realizar un lote en paralelo.
  • El codificador de prompts es Qwen3-VL, que es un modelo multimodal. Por lo tanto, cargar el pipeline completo requiere suficiente memoria de GPU tanto para la U-Net como para el codificador de texto Qwen3-VL (~4 GB + ~0.7 GB en bf16 para la versión base).
  • El VAE es AutoencoderTiny y expone encoder_block_out_channels; vae_scale_factor se deriva de él en el momento de la inicialización de la pipeline.

DreamLitePipeline[[diffusers.DreamLitePipeline]]

diffusers.DreamLitePipeline[[diffusers.DreamLitePipeline]]

diffusers.DreamLitePipeline(text_encoder: Qwen3VLForConditionalGeneration, tokenizer: AutoTokenizer, processor: Qwen3VLProcessor, vae: AutoencoderTiny, unet: DreamLiteUNetModel, scheduler: FlowMatchEulerDiscreteScheduler)

Fuente

Pipeline DreamLite para la generación de imágenes a partir de texto y la edición de imágenes basada en instrucciones.

El mismo pipeline admite ambos modos; el modo de operación se detecta automáticamente a partir de las entradas:

  • image is None -> texto a imagen (CFG único en el texto).
  • image is not None -> imagen a imagen / edición por instrucción (CFG dual: texto + imagen).

Componentes: text_encoder ([~transformers.Qwen3VLForConditionalGeneration]): codificador de texto/visión multimodal utilizado para generar incrustaciones de condicionamiento. tokenizer ([~transformers.AutoTokenizer]): tokenizador para el modo solo texto (generate). processor ([~transformers.Qwen3VLProcessor]): procesador multimodal para el modo de edición (plantilla de texto + imagen). vae ([~diffusers.AutoencoderTiny]): VAE diminuto apto para móviles para codificar/decodificar latentes. unet ([~diffusers.DreamLiteUNetModel]): DreamLite UNet (GQA + qk_norm + convoluciones separables en profundidad). scheduler ([~diffusers.FlowMatchEulerDiscreteScheduler]): planificador Euler de flow-matching con desplazamiento dinámico.

Nota: batch_size se fuerza actualmente a 1; num_images_per_prompt está soportado.

call[[diffusers.DreamLitePipeline.call]]

__call__(prompt: typing.Optional[str] = None, negative_prompt: typing.Optional[str] = None, image: typing.Optional[PIL.Image.Image] = None, height: typing.Optional[int] = None, width: typing.Optional[int] = None, guidance_scale: float = 3.5, image_guidance_scale: float = 1.5, num_inference_steps: int = 30, sigmas: typing.Optional[typing.List[float]] = None, num_images_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, output_type: typing.Optional[str] = 'pil', return_dict: bool = True, max_sequence_length: int = 200, text_pad_embedding: typing.Optional[torch.Tensor] = None)

Fuente

Parámetros:

prompt : Prompt de texto.

negative_prompt : Prompt de texto negativo (por defecto, cadena vacía).

image : Imagen de entrada opcional. Si se proporciona, la canalización se ejecuta en modo edición / imagen a imagen con guía libre de clasificador dual; de lo contrario, se ejecuta en modo texto a imagen.

height : Resolución de salida (altura). El valor predeterminado es default_sample_size * vae_scale_factor (1024). El mismo valor predeterminado se aplica tanto en T2I como en I2I; pase un valor explícito para sobrescribirlo.

width : Resolución de salida (ancho). El valor predeterminado es default_sample_size * vae_scale_factor (1024). El mismo valor predeterminado se aplica tanto en T2I como en I2I; pase un valor explícito para sobrescribirlo.

guidance_scale : Escala CFG en la rama de texto (ambos modos).

image_guidance_scale : Escala CFG adicional en la rama de imagen (solo en modo de edición).

num_inference_steps : Número de pasos de desruido.

sigmas : Sigmas de FlowMatch explícitos opcionales; por defecto, se utiliza un linspace uniforme.

num_images_per_prompt : Imágenes de salida por indicación (nota: batch_size se fuerza a 1).

generator : Generador(es) aleatorio(s).

output_type : "pil", "np", "pt" o "latent".

return_dict : Si es True, devuelve un DreamLitePipelineOutput; en caso contrario, una tupla (images,).

max_sequence_length : Número máximo de tokens del prompt del usuario que se conservan después de eliminar el prefijo de la plantilla de chat. Solo se aplica al modo generate (el modo edit utiliza el relleno nativo del procesador multimodal).

text_pad_embedding : Embedding aprendido opcional para posiciones enmascaradas.

Devuelve:

DreamLitePipelineOutput o tuple.

Ejecuta el pipeline DreamLite.

DreamLiteMobilePipeline[[diffusers.DreamLiteMobilePipeline]]

diffusers.DreamLiteMobilePipeline[[diffusers.DreamLiteMobilePipeline]]

diffusers.DreamLiteMobilePipeline(text_encoder: Qwen3VLForConditionalGeneration, tokenizer: AutoTokenizer, processor: Qwen3VLProcessor, vae: AutoencoderTiny, unet: DreamLiteUNetModel, scheduler: FlowMatchEulerDiscreteScheduler)

Fuente

Pipeline Mobile de DreamLite: una variante destilada y sin guía libre de clasificador de DreamLitePipeline para inferencia rápida en pocos pasos (4 pasos por defecto).

El modo de operación se detecta automáticamente a partir de las entradas (igual que en la pipeline base):

  • image is None -> texto a imagen.
  • image is not None -> imagen a imagen / edición por instrucción.

Dado que la guía sin clasificador se elimina mediante destilación, guidance_scale y image_guidance_scale se aceptan por compatibilidad de API con DreamLitePipeline, pero se ignoran en el bucle de desruido. negative_prompt está ausente intencionalmente.

Components (idéntico a la pipeline base): text_encoder ([~transformers.Qwen3VLForConditionalGeneration]): Codificador multimodal de texto/visión. tokenizer ([~transformers.AutoTokenizer]): Tokenizador para el modo solo texto (generate). processor ([~transformers.Qwen3VLProcessor]): Procesador multimodal para el modo de edición. vae ([~diffusers.AutoencoderTiny]): VAE diminuto apto para móviles. unet ([~diffusers.DreamLiteUNetModel]): DreamLite UNet. scheduler ([~diffusers.FlowMatchEulerDiscreteScheduler]): Programador de Euler de flow-matching con desplazamiento dinámico.

Nota: batch_size se fuerza actualmente a 1; num_images_per_prompt está soportado.

call[[diffusers.DreamLiteMobilePipeline.call]]

__call__(prompt: typing.Union[str, typing.List[str]] = None, image: typing.Optional[PIL.Image.Image] = None, height: typing.Optional[int] = None, width: typing.Optional[int] = None, num_inference_steps: int = 4, guidance_scale: typing.Optional[float] = None, image_guidance_scale: typing.Optional[float] = None, sigmas: typing.Optional[typing.List[float]] = None, num_images_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, output_type: typing.Optional[str] = 'pil', return_dict: bool = True, max_sequence_length: int = 200, text_pad_embedding: typing.Optional[torch.Tensor] = None)

Fuente

Parámetros:

prompt : Prompt de texto.

image : Imagen de entrada opcional. Si se proporciona, se ejecuta en modo edición / imagen a imagen; de lo contrario, se ejecuta en modo texto a imagen.

height : Resolución de salida (altura). El valor predeterminado es default_sample_size * vae_scale_factor (1024).

width : Resolución de salida (ancho). El valor predeterminado es default_sample_size * vae_scale_factor (1024).

num_inference_steps : Número de pasos de desruido. El valor predeterminado es 4 (destilado).

guidance_scale : Aceptado por paridad de API con DreamLitePipeline; ignorado porque CFG se destiló.

image_guidance_scale : Aceptado por paridad de API con DreamLitePipeline; ignorado porque CFG se destiló.

sigmas : Sigmas de FlowMatch explícitos opcionales; por defecto, se utiliza un linspace uniforme.

num_images_per_prompt : Imágenes de salida por indicación (nota: batch_size se fuerza a 1).

generator : Generador(es) aleatorio(s).

output_type : "pil", "np", "pt" o "latent".

return_dict : Si es True, devuelve un DreamLitePipelineOutput; en caso contrario, (images,).

max_sequence_length : Número máximo de tokens del prompt del usuario que se conservan después de eliminar el prefijo de la plantilla de chat. Solo se aplica al modo generate (el modo edit utiliza el relleno nativo del procesador multimodal).

text_pad_embedding : Embedding aprendido opcional para posiciones enmascaradas.

Devuelve:

DreamLitePipelineOutput o tuple.

Ejecuta el pipeline de DreamLite Mobile destilado.

DreamLitePipelineOutput[[diffusers.DreamLitePipelineOutput]]

diffusers.DreamLitePipelineOutput[[diffusers.DreamLitePipelineOutput]]

diffusers.DreamLitePipelineOutput(images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray])

Fuente

Parámetros:

images (List[PIL.Image.Image] o np.ndarray) : Lista de imágenes PIL desruidas de longitud batch_size o matriz NumPy de forma (batch_size, height, width, num_channels). Las imágenes PIL o la matriz NumPy presentan las imágenes desruidas del pipeline de difusión.

Clase de salida para las tuberías de DreamLite.

Xet Storage Details

Size:
15.4 kB
·
Xet hash:
2b85c512cd7de18903c47c2c9040833ba8d2fdd85ef6a3763f5984589c2b25e9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.