Diffusers documentation

Helios

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LoRA

Helios

Helios: Real Real-Time Long Video Generation Model de Peking University & ByteDance & etc, por Shenghai Yuan, Yuanyang Yin, Zongjian Li, Xinwei Huang, Xiao Yang, Li Yuan.

  • Presentamos Helios, el primer modelo de generación de video de 14B que funciona a 17 FPS en una sola GPU NVIDIA H100 y soporta generación a escala de minutos, igualando la calidad de una línea base sólida. Logramos avances en tres dimensiones clave: (1) robustez ante la deriva en videos largos sin usar heurísticas comunes anti-deriva como self-forcing, error banks o muestreo de fotogramas clave; (2) generación en tiempo real sin técnicas estándar de aceleración como KV-cache, enmascarado causal o atención dispersa; y (3) entrenamiento sin marcos de paralelismo o particionamiento, lo que permite tamaños de lote a escala de difusión de imágenes mientras se ajustan hasta cuatro modelos de 14B en 80 GB de memoria de GPU. Específicamente, Helios es un modelo de difusión autoregresivo de 14B con una representación de entrada unificada que soporta de forma nativa tareas T2V, I2V y V2V. Para mitigar la deriva en la generación de videos largos, caracterizamos sus modos de fallo típicos y proponemos estrategias de entrenamiento simples pero efectivas que simulan explícitamente la deriva durante el entrenamiento, eliminando el movimiento repetitivo en su origen. Para la eficiencia, comprimimos en gran medida el contexto histórico y ruidoso y reducimos el número de pasos de muestreo, lo que genera costos computacionales comparables o inferiores a los de los modelos generativos de video de 1.3B. Además, introducimos optimizaciones a nivel de infraestructura que aceleran tanto la inferencia como el entrenamiento, reduciendo al mismo tiempo el consumo de memoria. Experimentos extensos demuestran que Helios supera consistentemente a los métodos anteriores tanto en la generación de videos cortos como largos. Todo el código y los modelos están disponibles en [this https URL](https://pku-yuangroup.github.io/Helios-Page).

Los siguientes modelos de Helios son compatibles con Diffusers:

  • Helios-Base: Mejor calidad, con v-predicción, CFG estándar y HeliosScheduler personalizado.
  • Helios-Mid: Peso intermedio, con v-predicción, CFG-Zero* y HeliosScheduler personalizado.
  • Helios-Distilled: la mejor eficiencia, con x0-prediction y HeliosDMDScheduler personalizado.

Haz clic en los modelos Helios en la barra lateral derecha para ver más ejemplos de generación de video.

Optimización de la memoria y la velocidad de inferencia

El siguiente ejemplo demuestra cómo generar un video a partir de texto optimizado para la memoria o la velocidad de inferencia.

memoria
velocidad de inferencia

Consulte la guía Reduce memory usage para obtener más detalles sobre las diversas técnicas de ahorro de memoria.

El modelo Helios de abajo requiere ~6 GB de VRAM.

import torch
from diffusers import AutoModel, HeliosPipeline
from diffusers.hooks.group_offloading import apply_group_offloading
from diffusers.utils import export_to_video

vae = AutoModel.from_pretrained("BestWishYsh/Helios-Base", subfolder="vae", dtype=torch.float32)

# group-offloading
pipeline = HeliosPipeline.from_pretrained(
    "BestWishYsh/Helios-Base",
    vae=vae,
    dtype=torch.bfloat16
)
pipeline.enable_group_offload(
    onload_device=torch.device("cuda"),
    offload_device=torch.device("cpu"),
    offload_type="leaf_level",
    use_stream=True,
    record_stream=True,
)

prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue 
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with 
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear, 
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades 
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and 
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    num_frames=99,
    num_inference_steps=50,
    guidance_scale=5.0,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_t2v_output.mp4", fps=24)

Generación con Helios-Base

El siguiente ejemplo demuestra cómo usar Helios-Base para generar video a partir de texto, imagen o video.

uso
import torch
from diffusers import AutoModel, HeliosPipeline
from diffusers.utils import export_to_video, load_video, load_image

vae = AutoModel.from_pretrained("BestWishYsh/Helios-Base", subfolder="vae", dtype=torch.float32)

pipeline = HeliosPipeline.from_pretrained(
    "BestWishYsh/Helios-Base",
    vae=vae,
    dtype=torch.bfloat16
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"

negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""

# For Text-to-Video
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue 
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with 
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear, 
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades 
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and 
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    num_frames=99,
    num_inference_steps=50,
    guidance_scale=5.0,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_t2v_output.mp4", fps=24)

# For Image-to-Video
prompt = """
A towering emerald wave surges forward, its crest curling with raw power and energy. Sunlight glints off the translucent water, 
illuminating the intricate textures and deep green hues within the wave’s body. A thick spray erupts from the breaking crest, 
casting a misty veil that dances above the churning surface. As the perspective widens, the immense scale of the wave becomes 
apparent, revealing the restless expanse of the ocean stretching beyond. The scene captures the ocean’s untamed beauty and 
relentless force, with every droplet and ripple shimmering in the light. The dynamic motion and vivid colors evoke both awe and 
respect for nature’s might.
"""
image_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/wave.jpg"

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    image=load_image(image_path).resize((640, 384)),
    num_frames=99,
    num_inference_steps=50,
    guidance_scale=5.0,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_i2v_output.mp4", fps=24)

# For Video-to-Video
prompt = """
A bright yellow Lamborghini Huracn Tecnica speeds along a curving mountain road, surrounded by lush green trees 
under a partly cloudy sky. The car's sleek design and vibrant color stand out against the natural backdrop, 
emphasizing its dynamic movement. The road curves gently, with a guardrail visible on one side, adding depth to 
the scene. The motion blur captures the sense of speed and energy, creating a thrilling and exhilarating atmosphere. 
A front-facing shot from a slightly elevated angle, highlighting the car's aggressive stance and the surrounding greenery.
"""
video_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/car.mp4"

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    video=load_video(video_path),
    num_frames=99,
    num_inference_steps=50,
    guidance_scale=5.0,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_base_v2v_output.mp4", fps=24)

Generación con Helios-Mid

El siguiente ejemplo demuestra cómo usar Helios-Mid para generar video a partir de texto, imagen o video.

uso
import torch
from diffusers import AutoModel, HeliosPyramidPipeline
from diffusers.utils import export_to_video, load_video, load_image

vae = AutoModel.from_pretrained("BestWishYsh/Helios-Mid", subfolder="vae", dtype=torch.float32)

pipeline = HeliosPyramidPipeline.from_pretrained(
    "BestWishYsh/Helios-Mid",
    vae=vae,
    dtype=torch.bfloat16
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"

negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""

# For Text-to-Video
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue 
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with 
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear, 
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades 
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and 
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    num_frames=99,
    pyramid_num_inference_steps_list=[20, 20, 20],
    guidance_scale=5.0,
    use_zero_init=True,
    zero_steps=1,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_pyramid_t2v_output.mp4", fps=24)

# For Image-to-Video
prompt = """
A towering emerald wave surges forward, its crest curling with raw power and energy. Sunlight glints off the translucent water, 
illuminating the intricate textures and deep green hues within the wave’s body. A thick spray erupts from the breaking crest, 
casting a misty veil that dances above the churning surface. As the perspective widens, the immense scale of the wave becomes 
apparent, revealing the restless expanse of the ocean stretching beyond. The scene captures the ocean’s untamed beauty and 
relentless force, with every droplet and ripple shimmering in the light. The dynamic motion and vivid colors evoke both awe and 
respect for nature’s might.
"""
image_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/wave.jpg"

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    image=load_image(image_path).resize((640, 384)),
    num_frames=99,
    pyramid_num_inference_steps_list=[20, 20, 20],
    guidance_scale=5.0,
    use_zero_init=True,
    zero_steps=1,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_pyramid_i2v_output.mp4", fps=24)

# For Video-to-Video
prompt = """
A bright yellow Lamborghini Huracn Tecnica speeds along a curving mountain road, surrounded by lush green trees 
under a partly cloudy sky. The car's sleek design and vibrant color stand out against the natural backdrop, 
emphasizing its dynamic movement. The road curves gently, with a guardrail visible on one side, adding depth to 
the scene. The motion blur captures the sense of speed and energy, creating a thrilling and exhilarating atmosphere. 
A front-facing shot from a slightly elevated angle, highlighting the car's aggressive stance and the surrounding greenery.
"""
video_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/car.mp4"

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    video=load_video(video_path),
    num_frames=99,
    pyramid_num_inference_steps_list=[20, 20, 20],
    guidance_scale=5.0,
    use_zero_init=True,
    zero_steps=1,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_pyramid_v2v_output.mp4", fps=24)

Generación con Helios-Distilled

El siguiente ejemplo demuestra cómo usar Helios-Distilled para generar video a partir de texto, imagen o video.

uso
import torch
from diffusers import AutoModel, HeliosPyramidPipeline
from diffusers.utils import export_to_video, load_video, load_image

vae = AutoModel.from_pretrained("BestWishYsh/Helios-Distilled", subfolder="vae", dtype=torch.float32)

pipeline = HeliosPyramidPipeline.from_pretrained(
    "BestWishYsh/Helios-Distilled",
    vae=vae,
    dtype=torch.bfloat16
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"

negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""

# For Text-to-Video
prompt = """
A vibrant tropical fish swimming gracefully among colorful coral reefs in a clear, turquoise ocean. The fish has bright blue 
and yellow scales with a small, distinctive orange spot on its side, its fins moving fluidly. The coral reefs are alive with 
a variety of marine life, including small schools of colorful fish and sea turtles gliding by. The water is crystal clear, 
allowing for a view of the sandy ocean floor below. The reef itself is adorned with a mix of hard and soft corals in shades 
of red, orange, and green. The photo captures the fish from a slightly elevated angle, emphasizing its lively movements and 
the vivid colors of its surroundings. A close-up shot with dynamic movement.
"""

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    num_frames=240,
    pyramid_num_inference_steps_list=[2, 2, 2],
    guidance_scale=1.0,
    is_amplify_first_chunk=True,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_distilled_t2v_output.mp4", fps=24)

# For Image-to-Video
prompt = """
A towering emerald wave surges forward, its crest curling with raw power and energy. Sunlight glints off the translucent water, 
illuminating the intricate textures and deep green hues within the wave’s body. A thick spray erupts from the breaking crest, 
casting a misty veil that dances above the churning surface. As the perspective widens, the immense scale of the wave becomes 
apparent, revealing the restless expanse of the ocean stretching beyond. The scene captures the ocean’s untamed beauty and 
relentless force, with every droplet and ripple shimmering in the light. The dynamic motion and vivid colors evoke both awe and 
respect for nature’s might.
"""
image_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/wave.jpg"

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    image=load_image(image_path).resize((640, 384)),
    num_frames=240,
    pyramid_num_inference_steps_list=[2, 2, 2],
    guidance_scale=1.0,
    is_amplify_first_chunk=True,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_distilled_i2v_output.mp4", fps=24)

# For Video-to-Video
prompt = """
A bright yellow Lamborghini Huracn Tecnica speeds along a curving mountain road, surrounded by lush green trees 
under a partly cloudy sky. The car's sleek design and vibrant color stand out against the natural backdrop, 
emphasizing its dynamic movement. The road curves gently, with a guardrail visible on one side, adding depth to 
the scene. The motion blur captures the sense of speed and energy, creating a thrilling and exhilarating atmosphere. 
A front-facing shot from a slightly elevated angle, highlighting the car's aggressive stance and the surrounding greenery.
"""
video_path = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/helios/car.mp4"

output = pipeline(
    prompt=prompt,
    negative_prompt=negative_prompt,
    video=load_video(video_path),
    num_frames=240,
    pyramid_num_inference_steps_list=[2, 2, 2],
    guidance_scale=1.0,
    is_amplify_first_chunk=True,
    generator=torch.Generator("cuda").manual_seed(42),
).frames[0]
export_to_video(output, "helios_distilled_v2v_output.mp4", fps=24)

Muestras de Texto a Video

PromptVideo generado
Un guerrero vikingo conduciendo un autobús urbano moderno lleno de pasajeros. El vikingo tiene el cabello rubio largo recogido hacia atrás, barba, y viste un casco y una armadura forrados de piel. Lleva una túnica y pantalones tradicionales, pero también usa un cinturón de seguridad mientras se concentra en navegar por las calles concurridas. El interior del autobús es típico, con filas de asientos ocupados por diversos pasajeros que siguen sus rutinas diarias. Las tomas exteriores muestran el bullicioso entorno urbano, incluyendo edificios altos y tráfico. Plano medio centrado en el vikingo al volante, con primeros planos ocasionales de su expresión decidida.
Una fotografía de naturaleza de estilo documental tomada desde un camión de cámaras en movimiento hacia la izquierda, que captura a un cangrejo que se escabulle rápidamente hacia su madriguera. El cangrejo tiene un caparazón duro de color verde pardo y garras largas, y se mueve con velocidad decidida sobre el suelo arenoso. Su cuerpo está ligeramente arqueado mientras se hunde en la arena, dejando un pequeño rastro detrás. El fondo muestra una playa poco profunda con rocas y conchas marinas dispersas, y el horizonte presenta una suave curva de la línea de costa. La foto tiene una textura natural y realista, que enfatiza el movimiento natural del cangrejo y la textura de la arena. Un primer plano desde un ángulo ligeramente elevado.

Muestras de imagen a video

ImagenPromptVideo generado
Un elegante coche rojo Kia avanza a toda velocidad por una carretera rural bajo un cielo nublado; su diseño moderno y movimiento dinámico se acentúan por el desenfoque de movimiento de los campos y árboles circundantes que se extienden hasta el horizonte. El exterior brillante del coche refleja el cielo cubierto, destacando su forma aerodinámica y su postura deportiva. La matrícula dice "KIA 626" y los faros del vehículo están encendidos, lo que añade a la sensación de movimiento y energía. La carretera curva suavemente, con el coche situado ligeramente fuera del centro, creando una sensación de impulso hacia adelante. Una vista frontal de tres cuartos dinámica captura la poderosa presencia del coche contra el sereno telón de fondo de colinas ondulantes y árboles dispersos.
Un primer plano captura a un gato naranja esponjoso con ojos verdes llamativos y bigotes blancos, mirando fijamente hacia la cámara. El pelaje del gato es suave y bien cuidado, con una mezcla de tonos cálidos de naranja y crema. Sus grandes ojos expresivos son de un verde vívido, reflejando curiosidad y alerta. La nariz del gato es pequeña y rosada, y su boca está ligeramente abierta, dejando entrever un atisbo de su lengua rosada. El fondo está suavemente desenfocado, sugiriendo un ambiente interior acogedor con tonos neutros. La foto tiene una profundidad de campo reducida, enfocando nítidamente en la cara del gato mientras el fondo permanece desenfocado. Un disparo de primer plano desde una perspectiva ligeramente elevada.

Vitrinas de video interactivas

PromptVideo generado
El prompt se puede encontrar aquí
El prompt se puede encontrar aquí

Recursos

Obtén más información sobre Helios con los siguientes recursos.

HeliosPipeline

clase diffusers.HeliosPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModelvae: AutoencoderKLWanscheduler: HeliosSchedulertransformer: HeliosTransformer3DModel )

Parámetros

  • tokenizer (T5Tokenizer) — Tokenizer de T5, específicamente la variante google/umt5-xxl.
  • text_encoder (T5EncoderModel) — T5, concretamente la variante google/umt5-xxl.
  • transformer (HeliosTransformer3DModel) — Transformer condicional para desruidar los latentes de entrada.
  • scheduler (HeliosScheduler) — Un scheduler para usar en combinación con transformer para desruidar los latentes de la imagen codificada.
  • vae (AutoencoderKLWan) — Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes.

Pipeline para la generación de texto a video / imagen a video / video a video usando Helios.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Noneheight: int = 384width: int = 640num_frames: int = 132num_inference_steps: int = 50sigmas: list = Noneguidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'np'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneimage_latents: typing.Optional[torch.Tensor] = Nonefake_image_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_image_latents: bool = Trueimage_noise_sigma_min: float = 0.111image_noise_sigma_max: float = 0.135video: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonevideo_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_video_latents: bool = Truevideo_noise_sigma_min: float = 0.111video_noise_sigma_max: float = 0.135history_sizes: list = [16, 2, 1]num_latent_frames_per_chunk: int = 9keep_first_frame: bool = Trueis_skip_first_chunk: bool = False ) → ~HeliosPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, pase prompt_embeds en su lugar.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts a evitar durante la generación de imágenes. Si no se define, pase negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • height (int, por defecto 384) — La altura en píxeles de la imagen generada.
  • width (int, por defecto 640) — El ancho en píxeles de la imagen generada.
  • num_frames (int, por defecto 132) — El número de fotogramas en el video generado.
  • num_inference_steps (int, por defecto 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido. Si no se definen, se utiliza la programación predeterminada del programador.
  • guidance_scale (float, por defecto 5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 de Imagen Paper. La escala de guía se activa al establecer guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto de prompt, generalmente a costa de una menor calidad de imagen.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generan por indicación.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Si no se proporcionan, se generan a partir de negative_prompt.
  • output_type (str, opcional, por defecto "np") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un HeliosPipelineOutput en lugar de una tupla simple.
  • attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • max_sequence_length (int, por defecto 512) — La longitud máxima de secuencia del codificador de texto. Si el prompt es más largo que esto, se truncará. Si el prompt es más corto, se rellenará hasta esta longitud.
  • image (PipelineImageInput, opcional) — Imagen de entrada utilizada para la condición de imagen a video.
  • image_latents (torch.Tensor, opcional) — Latentes de imagen precodificados para usar en lugar de image.
  • fake_image_latents (torch.Tensor, opcional) — Latentes de imagen falsos opcionales utilizados durante la condicionamiento.
  • add_noise_to_image_latents (bool, opcional, valor predeterminado True) — Si se debe añadir ruido a los latentes de la imagen antes del desruido.
  • image_noise_sigma_min (float, opcional, valor predeterminado 0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de imagen.
  • image_noise_sigma_max (float, opcional, valor predeterminado 0.135) — Valor máximo de sigma para el ruido añadido a los latentes de imagen.
  • video (PipelineImageInput, opcional) — Video de entrada utilizado para la condición de video a video.
  • video_latents (torch.Tensor, opcional) — Latentes de video precodificados para usar en lugar de video.
  • add_noise_to_video_latents (bool, opcional, valor predeterminado True) — Si se debe añadir ruido a los latentes del vídeo antes del desruido.
  • video_noise_sigma_min (float, opcional, valor predeterminado 0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de video.
  • video_noise_sigma_max (float, opcional, valor predeterminado 0.135) — Valor máximo de sigma para el ruido añadido a los latentes de video.
  • history_sizes (list, opcional, valor predeterminado [16, 2, 1]) — Tamaños de la ventana de historial utilizados para la generación por bloques autorregresiva.
  • num_latent_frames_per_chunk (int, opcional, valor predeterminado 9) — Número de fotogramas latentes producidos por bloque durante la generación autoregresiva.
  • keep_first_frame (bool, opcional, valor predeterminado True) — Si se conserva el primer fotograma entre los fragmentos.
  • is_skip_first_chunk (bool, opcional, valor predeterminado False) — Si se debe omitir la generación del primer fragmento.

Devuelve

~HeliosPipelineOutput o tuple

Si return_dict es True, se devuelve HeliosPipelineOutput; en caso contrario, se devuelve una tuple donde el primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers.utils import export_to_video
>>> from diffusers import AutoencoderKLWan, HeliosPipeline

>>> # Available models: BestWishYsh/Helios-Base, BestWishYsh/Helios-Mid, BestWishYsh/Helios-Distilled
>>> model_id = "BestWishYsh/Helios-Base"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = HeliosPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"

>>> output = pipe(
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     height=384,
...     width=640,
...     num_frames=132,
...     guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • do_classifier_free_guidance (bool, opcional, valor predeterminado True) — Si se debe usar classifier free guidance o no.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — Número de videos que deben generarse por prompt. Dispositivo torch en el que colocar las incrustaciones resultantes
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entrada negative_prompt.
  • device — (torch.device, opcional): dispositivo de torch
  • dtype — (torch.dtype, opcional): dtype de torch

Codifica el prompt en estados ocultos del codificador de texto.

HeliosPyramidPipeline

clase diffusers.HeliosPyramidPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModelvae: AutoencoderKLWanscheduler: diffusers.schedulers.scheduling_helios.HeliosScheduler | diffusers.schedulers.scheduling_helios_dmd.HeliosDMDSchedulertransformer: HeliosTransformer3DModelis_cfg_zero_star: bool = Falseis_distilled: bool = False )

Parámetros

  • tokenizer (T5Tokenizer) — Tokenizer de T5, específicamente la variante google/umt5-xxl.
  • text_encoder (T5EncoderModel) — T5, concretamente la variante google/umt5-xxl.
  • transformer (HeliosTransformer3DModel) — Transformer condicional para desruidar los latentes de entrada.
  • scheduler ([HeliosScheduler, HeliosDMDScheduler]) — Un scheduler para usar en combinación con transformer para desruidar los latentes de imagen codificados.
  • vae (AutoencoderKLWan) — Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes.

Pipeline para la generación de texto a video / imagen a video / video a video usando Helios.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Noneheight: int = 384width: int = 640num_frames: int = 132sigmas: list = Noneguidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'np'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneimage_latents: typing.Optional[torch.Tensor] = Nonefake_image_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_image_latents: bool = Trueimage_noise_sigma_min: float = 0.111image_noise_sigma_max: float = 0.135video: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonevideo_latents: typing.Optional[torch.Tensor] = Noneadd_noise_to_video_latents: bool = Truevideo_noise_sigma_min: float = 0.111video_noise_sigma_max: float = 0.135history_sizes: list = [16, 2, 1]num_latent_frames_per_chunk: int = 9keep_first_frame: bool = Trueis_skip_first_chunk: bool = Falsepyramid_num_inference_steps_list: list = [10, 10, 10]use_zero_init: bool | None = Truezero_steps: int | None = 1is_amplify_first_chunk: bool = False ) → ~HeliosPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, pase prompt_embeds en su lugar.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts a evitar durante la generación de imágenes. Si no se define, pase negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • height (int, por defecto 384) — La altura en píxeles de la imagen generada.
  • width (int, por defecto 640) — El ancho en píxeles de la imagen generada.
  • num_frames (int, por defecto 132) — El número de fotogramas en el video generado.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido. Si no se definen, se utiliza la programación predeterminada del programador.
  • guidance_scale (float, por defecto 5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 de Imagen Paper. La escala de guía se activa al establecer guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto de prompt, generalmente a costa de una menor calidad de imagen.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generan por indicación.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Si no se proporcionan, se generan a partir de negative_prompt.
  • output_type (str, opcional, por defecto "np") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un HeliosPipelineOutput en lugar de una tupla simple.
  • attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • max_sequence_length (int, por defecto 512) — La longitud máxima de secuencia del codificador de texto. Si el prompt es más largo que esto, se truncará. Si el prompt es más corto, se rellenará hasta esta longitud.
  • image (PipelineImageInput, opcional) — Imagen de entrada utilizada para la condición de imagen a video.
  • image_latents (torch.Tensor, opcional) — Latentes de imagen precodificados para usar en lugar de image.
  • fake_image_latents (torch.Tensor, opcional) — Latentes de imagen falsos opcionales utilizados durante la condicionamiento.
  • add_noise_to_image_latents (bool, opcional, valor predeterminado True) — Si se debe añadir ruido a los latentes de la imagen antes del desruido.
  • image_noise_sigma_min (float, opcional, valor predeterminado 0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de imagen.
  • image_noise_sigma_max (float, opcional, valor predeterminado 0.135) — Valor máximo de sigma para el ruido añadido a los latentes de imagen.
  • video (PipelineImageInput, opcional) — Video de entrada utilizado para la condición de video a video.
  • video_latents (torch.Tensor, opcional) — Latentes de video precodificados para usar en lugar de video.
  • add_noise_to_video_latents (bool, opcional, valor predeterminado True) — Si se debe añadir ruido a los latentes del vídeo antes del desruido.
  • video_noise_sigma_min (float, opcional, valor predeterminado 0.111) — Valor mínimo de sigma para el ruido añadido a los latentes de video.
  • video_noise_sigma_max (float, opcional, valor predeterminado 0.135) — Valor máximo de sigma para el ruido añadido a los latentes de video.
  • history_sizes (list, opcional, valor predeterminado [16, 2, 1]) — Tamaños de la ventana de historial utilizados para la generación por bloques autorregresiva.
  • num_latent_frames_per_chunk (int, opcional, valor predeterminado 9) — Número de fotogramas latentes producidos por bloque durante la generación autoregresiva.
  • keep_first_frame (bool, opcional, valor predeterminado True) — Si se conserva el primer fotograma entre los fragmentos.
  • is_skip_first_chunk (bool, opcional, valor predeterminado False) — Si se debe omitir la generación del primer fragmento.
  • pyramid_num_inference_steps_list (list, opcional, valor predeterminado [10, 10, 10]) — Número de pasos de inferencia para cada etapa de la pirámide durante la generación de la Etapa 2.
  • use_zero_init (bool, opcional, valor predeterminado True) — Si se aplica la inicialización a cero de CFG al inicio del desruido.
  • zero_steps (int, opcional, valor predeterminado 1) — Número de pasos iniciales que utilizan la inicialización cero de CFG.
  • is_amplify_first_chunk (bool, opcional, valor predeterminado False) — Si se amplifica la guía en el primer fragmento (relacionado con DMD).

Devuelve

~HeliosPipelineOutput o tuple

Si return_dict es True, se devuelve HeliosPipelineOutput; en caso contrario, se devuelve una tuple donde el primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers.utils import export_to_video
>>> from diffusers import AutoencoderKLWan, HeliosPyramidPipeline

>>> # Available models: BestWishYsh/Helios-Base, BestWishYsh/Helios-Mid, BestWishYsh/Helios-Distilled
>>> model_id = "BestWishYsh/Helios-Base"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = HeliosPyramidPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"

>>> output = pipe(
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     height=384,
...     width=640,
...     num_frames=132,
...     guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • do_classifier_free_guidance (bool, opcional, valor predeterminado True) — Si se debe usar classifier free guidance o no.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — Número de videos que deben generarse por prompt. Dispositivo torch en el que colocar las incrustaciones resultantes
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entrada negative_prompt.
  • device — (torch.device, opcional): dispositivo de torch
  • dtype — (torch.dtype, opcional): dtype de torch

Codifica el prompt en estados ocultos del codificador de texto.

HeliosPipelineOutput

clase diffusers.pipelines.helios.pipeline_output.HeliosPipelineOutput

< >

( frames: Tensor )

Parámetros

  • frames (torch.Tensor, np.ndarray o List[List[PIL.Image.Image]]) — Lista de salidas de video. Puede ser una lista anidada de longitud batch_size, donde cada sublista contiene secuencias de imágenes PIL desruidas de longitud num_frames. También puede ser un array de NumPy o un tensor de Torch de forma (batch_size, num_frames, channels, height, width).

Clase de salida para las tuberías de Helios.

Update on GitHub