Buckets:
| # | |
| # Bajo licencia Apache License, versión 2.0 (la "Licencia"); | |
| # no puede usar este archivo excepto en cumplimiento de la Licencia. | |
| # Puede obtener una copia de la Licencia en | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # A menos que la ley aplicable lo exija o se haya acordado por escrito, el software | |
| # distribuido bajo la Licencia se distribuye en una base "TAL CUAL", | |
| # SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita. | |
| # Consulte la Licencia para el lenguaje específico que rige los permisos y | |
| # limitaciones de la Licencia. --> | |
| # Framepack | |
| [Empaquetado del contexto de fotogramas de entrada en modelos de predicción del siguiente fotograma para la generación de video](https://huggingface.co/papers/2504.12626) de Lvmin Zhang y Maneesh Agrawala. | |
| *Presentamos una estructura de red neuronal, FramePack, para entrenar modelos de predicción del siguiente fotograma (o de la siguiente sección de fotograma) para la generación de video. FramePack comprime los fotogramas de entrada para que la longitud de contexto del transformer sea un número fijo, independientemente de la duración del video. Como resultado, podemos procesar un gran número de fotogramas utilizando difusión de video con un cuello de botella de cómputo similar al de la difusión de imágenes. Esto también permite que los tamaños de lote de entrenamiento de video sean significativamente mayores (los tamaños de lote se vuelven comparables a los del entrenamiento de difusión de imágenes). También proponemos un método de muestreo anti-deslizamiento que genera fotogramas en orden temporal inverso con puntos finales establecidos de antemano para evitar el sesgo de exposición (acumulación de errores a lo largo de las iteraciones). Finalmente, demostramos que los modelos de difusión de video existentes pueden ser afinados con FramePack, y su calidad visual puede mejorar porque la predicción del siguiente fotograma admite programadores de difusión más equilibrados con pasos de tiempo de desplazamiento de flujo menos extremos.* | |
| > [!TIP] | |
| > Asegúrate de consultar la [guía de Schedulers](../../using-diffusers/schedulers) para aprender a explorar el equilibrio entre la velocidad y la calidad del scheduler, y consulta la sección [reutilizar componentes entre pipelines](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) para aprender a cargar eficientemente los mismos componentes en múltiples pipelines. | |
| ## Modelos disponibles | |
| | Nombre del modelo | Descripción | | |
| |:---|:---| | |
| - [`lllyasviel/FramePackI2V_HY`](https://huggingface.co/lllyasviel/FramePackI2V_HY) | Entrenado con la estrategia de "anti-drifting invertido" descrita en el artículo. La inferencia requiere establecer `sampling_type="inverted_anti_drifting"` al ejecutar el pipeline. | | |
| - [`lllyasviel/FramePack_F1_I2V_HY_20250503`](https://huggingface.co/lllyasviel/FramePack_F1_I2V_HY_20250503) | Entrenado con una estrategia novedosa anti-drifting, pero la inferencia se realiza con la estrategia "vanilla" descrita en el artículo. La inferencia requiere establecer `sampling_type="vanilla"` al ejecutar el pipeline. | | |
| ## Uso | |
| Consulte la documentación de la pipeline para ejemplos básicos de uso. La siguiente sección contiene ejemplos de offloading, diferentes métodos de muestreo, cuantización y más. | |
| ### Primer y último fotograma a video | |
| El siguiente ejemplo muestra cómo usar Framepack con controles de imagen de inicio y final, utilizando el modelo de muestreo anti-drifiting invertido. | |
| ```python | |
| import torch | |
| from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel | |
| from diffusers.utils import export_to_video, load_image | |
| from transformers import SiglipImageProcessor, SiglipVisionModel | |
| transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained( | |
| "lllyasviel/FramePackI2V_HY", dtype=torch.bfloat16 | |
| ) | |
| feature_extractor = SiglipImageProcessor.from_pretrained( | |
| "lllyasviel/flux_redux_bfl", subfolder="feature_extractor" | |
| ) | |
| image_encoder = SiglipVisionModel.from_pretrained( | |
| "lllyasviel/flux_redux_bfl", subfolder="image_encoder", dtype=torch.float16 | |
| ) | |
| pipe = HunyuanVideoFramepackPipeline.from_pretrained( | |
| "hunyuanvideo-community/HunyuanVideo", | |
| transformer=transformer, | |
| feature_extractor=feature_extractor, | |
| image_encoder=image_encoder, | |
| dtype=torch.float16, | |
| ) | |
| # Enable memory optimizations | |
| pipe.enable_model_cpu_offload() | |
| pipe.vae.enable_tiling() | |
| prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective." | |
| first_image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png" | |
| ) | |
| last_image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png" | |
| ) | |
| output = pipe( | |
| image=first_image, | |
| last_image=last_image, | |
| prompt=prompt, | |
| height=512, | |
| width=512, | |
| num_frames=91, | |
| num_inference_steps=30, | |
| guidance_scale=9.0, | |
| generator=torch.Generator().manual_seed(0), | |
| sampling_type="inverted_anti_drifting", | |
| ).frames[0] | |
| export_to_video(output, "output.mp4", fps=30) | |
| ``` | |
| ### Muestreo simple | |
| El siguiente ejemplo muestra cómo usar Framepack con el modelo F1 entrenado con muestreo vanilla pero con un nuevo enfoque de regulación para evitar el desplazamiento. | |
| ```python | |
| import torch | |
| from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel | |
| from diffusers.utils import export_to_video, load_image | |
| from transformers import SiglipImageProcessor, SiglipVisionModel | |
| transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained( | |
| "lllyasviel/FramePack_F1_I2V_HY_20250503", dtype=torch.bfloat16 | |
| ) | |
| feature_extractor = SiglipImageProcessor.from_pretrained( | |
| "lllyasviel/flux_redux_bfl", subfolder="feature_extractor" | |
| ) | |
| image_encoder = SiglipVisionModel.from_pretrained( | |
| "lllyasviel/flux_redux_bfl", subfolder="image_encoder", dtype=torch.float16 | |
| ) | |
| pipe = HunyuanVideoFramepackPipeline.from_pretrained( | |
| "hunyuanvideo-community/HunyuanVideo", | |
| transformer=transformer, | |
| feature_extractor=feature_extractor, | |
| image_encoder=image_encoder, | |
| dtype=torch.float16, | |
| ) | |
| # Enable memory optimizations | |
| pipe.enable_model_cpu_offload() | |
| pipe.vae.enable_tiling() | |
| image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png" | |
| ) | |
| output = pipe( | |
| image=image, | |
| prompt="A penguin dancing in the snow", | |
| height=832, | |
| width=480, | |
| num_frames=91, | |
| num_inference_steps=30, | |
| guidance_scale=9.0, | |
| generator=torch.Generator().manual_seed(0), | |
| sampling_type="vanilla", | |
| ).frames[0] | |
| export_to_video(output, "output.mp4", fps=30) | |
| ``` | |
| ### Descarga de grupos | |
| El descargado por grupos ([apply_group_offloading()](/docs/diffusers/main/es/api/utilities#diffusers.hooks.apply_group_offloading)) ofrece optimizaciones agresivas de memoria para descargar partes internas de cualquier modelo a la CPU, posiblemente sin un sobrecoste adicional en el tiempo de generación. Si dispone de muy poca VRAM disponible, este enfoque puede ser adecuado para usted, dependiendo de la cantidad de RAM de CPU disponible. | |
| ```python | |
| import torch | |
| from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel | |
| from diffusers.hooks import apply_group_offloading | |
| from diffusers.utils import export_to_video, load_image | |
| from transformers import SiglipImageProcessor, SiglipVisionModel | |
| transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained( | |
| "lllyasviel/FramePack_F1_I2V_HY_20250503", dtype=torch.bfloat16 | |
| ) | |
| feature_extractor = SiglipImageProcessor.from_pretrained( | |
| "lllyasviel/flux_redux_bfl", subfolder="feature_extractor" | |
| ) | |
| image_encoder = SiglipVisionModel.from_pretrained( | |
| "lllyasviel/flux_redux_bfl", subfolder="image_encoder", dtype=torch.float16 | |
| ) | |
| pipe = HunyuanVideoFramepackPipeline.from_pretrained( | |
| "hunyuanvideo-community/HunyuanVideo", | |
| transformer=transformer, | |
| feature_extractor=feature_extractor, | |
| image_encoder=image_encoder, | |
| dtype=torch.float16, | |
| ) | |
| # Enable group offloading | |
| onload_device = torch.device("cuda") | |
| offload_device = torch.device("cpu") | |
| list(map( | |
| lambda x: apply_group_offloading(x, onload_device, offload_device, offload_type="leaf_level", use_stream=True, low_cpu_mem_usage=True), | |
| [pipe.text_encoder, pipe.text_encoder_2, pipe.transformer] | |
| )) | |
| pipe.image_encoder.to(onload_device) | |
| pipe.vae.to(onload_device) | |
| pipe.vae.enable_tiling() | |
| image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png" | |
| ) | |
| output = pipe( | |
| image=image, | |
| prompt="A penguin dancing in the snow", | |
| height=832, | |
| width=480, | |
| num_frames=91, | |
| num_inference_steps=30, | |
| guidance_scale=9.0, | |
| generator=torch.Generator().manual_seed(0), | |
| sampling_type="vanilla", | |
| ).frames[0] | |
| print(f"Max memory: {torch.cuda.max_memory_allocated() / 1024**3:.3f} GB") | |
| export_to_video(output, "output.mp4", fps=30) | |
| ``` | |
| ## HunyuanVideoFramepackPipeline[[diffusers.HunyuanVideoFramepackPipeline]] | |
| #### diffusers.HunyuanVideoFramepackPipeline[[diffusers.HunyuanVideoFramepackPipeline]] | |
| ```python | |
| diffusers.HunyuanVideoFramepackPipeline(text_encoder: LlamaModel, tokenizer: LlamaTokenizer, transformer: HunyuanVideoFramepackTransformer3DModel, vae: AutoencoderKLHunyuanVideo, scheduler: FlowMatchEulerDiscreteScheduler, text_encoder_2: CLIPTextModel, tokenizer_2: CLIPTokenizer, image_encoder: SiglipVisionModel, feature_extractor: SiglipImageProcessorPil) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py#L243) | |
| **Parámetros:** | |
| text_encoder (`LlamaModel`) : [Llava Llama3-8B](https://huggingface.co/xtuner/llava-llama-3-8b-v1_1-transformers). | |
| tokenizer (`LlamaTokenizer`) : Tokenizador de [Llava Llama3-8B](https://huggingface.co/xtuner/llava-llama-3-8b-v1_1-transformers). | |
| transformer ([HunyuanVideoTransformer3DModel](/docs/diffusers/main/es/api/models/hunyuan_video_transformer_3d#diffusers.HunyuanVideoTransformer3DModel)) : Transformer condicional para desruidar los latentes de imagen codificados. | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/es/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Un programador para usar en combinación con `transformer` para desruidar los latentes de imagen codificados. | |
| vae ([AutoencoderKLHunyuanVideo](/docs/diffusers/main/es/api/models/autoencoder_kl_hunyuan_video#diffusers.AutoencoderKLHunyuanVideo)) : Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes. | |
| text_encoder_2 (`CLIPTextModel`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), específicamente la variante [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14). | |
| tokenizer_2 (`CLIPTokenizer`) : Tokenizador de la clase [CLIPTokenizer](https://huggingface.co/docs/transformers/en/model_doc/clip#transformers.CLIPTokenizer). | |
| Pipeline para la generación de texto a video usando HunyuanVideo. | |
| Este modelo hereda de [DiffusionPipeline](/docs/diffusers/main/es/api/pipelines/overview#diffusers.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__[[diffusers.HunyuanVideoFramepackPipeline.__call__]] | |
| ```python | |
| __call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], last_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, prompt: str | list[str] = None, prompt_2: str | list[str] = None, negative_prompt: str | list[str] = None, negative_prompt_2: str | list[str] = None, height: int = 720, width: int = 1280, num_frames: int = 129, latent_window_size: int = 9, num_inference_steps: int = 50, sigmas: list[float] = None, true_cfg_scale: float = 1.0, guidance_scale: float = 6.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, image_latents: typing.Optional[torch.Tensor] = None, last_image_latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], prompt_template: dict[str, typing.Any] = {'template': '<|start_header_id|>system<|end_header_id|>\n\nDescribe the video by detailing the following aspects: 1. The main content and theme of the video.2. The color, shape, size, texture, quantity, text, and spatial relationships of the objects.3. Actions, events, behaviors temporal relationships, physical movement changes of the objects.4. background environment, light, style and atmosphere.5. camera angles, movements, and transitions used in the video:<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{}<|eot_id|>', 'crop_start': 95}, max_sequence_length: int = 256, sampling_type: FramepackSamplingType = <FramepackSamplingType.INVERTED_ANTI_DRIFTING: 'inverted_anti_drifting'>) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py#L586) | |
| **Parámetros:** | |
| image (`PIL.Image.Image` o `np.ndarray` o `torch.Tensor`) : La imagen que se utilizará como punto de partida para la generación del video. | |
| last_image (`PIL.Image.Image` o `np.ndarray` o `torch.Tensor`, *opcional*) : La imagen final opcional que se utilizará como punto de finalización para la generación del video. Esto es útil para generar transiciones entre dos imágenes. | |
| prompt (`str` o `list[str]`, *opcional*) : El prompt o los prompts para guiar la generación de la imagen. Si no se define, se debe pasar `prompt_embeds` en su lugar. | |
| prompt_2 (`str` o `list[str]`, *opcional*) : El prompt o los prompts que se enviarán a `tokenizer_2` y `text_encoder_2`. Si no se define, se utilizará `prompt` en su lugar. | |
| 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 `true_cfg_scale` no es mayor que `1`). | |
| negative_prompt_2 (`str` o `list[str]`, *opcional*) : El prompt o los prompts que no deben guiar la generación de la imagen y que se enviarán a `tokenizer_2` y `text_encoder_2`. Si no se define, `negative_prompt` se utiliza en todos los text-encoders. | |
| height (`int`, por defecto `720`) : La altura en píxeles de la imagen generada. | |
| width (`int`, por defecto `1280`) : El ancho en píxeles de la imagen generada. | |
| num_frames (`int`, por defecto `129`) : El número de fotogramas en el video generado. | |
| latent_window_size (`int`, por defecto `9`) : Número de fotogramas latentes producidos por ventana de muestreo de Framepack. | |
| 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 con programadores que admiten un argumento `sigmas` en su método `set_timesteps`. Si no se define, se usará el comportamiento predeterminado cuando se pase `num_inference_steps`. | |
| true_cfg_scale (`float`, *opcional*, valor predeterminado 1.0) : Cuando es > 1.0 y se proporciona un `negative_prompt`, habilita la guía libre de clasificador (classifier-free guidance) real. | |
| guidance_scale (`float`, por defecto `6.0`) : Escala de guía definida en [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` se define como `w` de la ecuación 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). La escala de guía se habilita estableciendo `guidance_scale > 1`. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al `prompt` de texto, generalmente a costa de una menor calidad de imagen. Tenga en cuenta que el único modelo de HunyuanVideo disponible está destilado con CFG, lo que significa que no se aplica la guía tradicional entre el latente incondicional y el condicional. | |
| num_videos_per_prompt (`int`, *opcional*, valor predeterminado 1) : El número de imágenes a generar por indicación. | |
| generator (`torch.Generator` o `list[torch.Generator]`, *opcional*) : Un [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) para hacer la generación determinista. | |
| image_latents (`torch.Tensor`, *opcional*) : Latentes de imagen predecodificados. Si no se proporcionan, la imagen se codificará usando el VAE. | |
| last_image_latents (`torch.Tensor`, *opcional*) : Latentes de la última imagen pre-codificados. Si no se proporcionan, la última imagen se codificará usando el VAE. | |
| 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`. | |
| pooled_prompt_embeds (`torch.FloatTensor`, *opcional*) : Embeddings de texto agrupados pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* ponderación de prompts. Si no se proporcionan, los embeddings de texto agrupados se generarán a partir del argumento de entrada `prompt`. | |
| negative_prompt_embeds (`torch.FloatTensor`, *opcional*) : Embeddings de texto negativos pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* el ponderado de prompts. Si no se proporcionan, negative_prompt_embeds se generará a partir del argumento de entrada `negative_prompt`. | |
| negative_pooled_prompt_embeds (`torch.FloatTensor`, *opcional*) : Embeddings de texto negativo ya generados. Se pueden usar para ajustar fácilmente las entradas de texto, *p. ej.* el peso de los prompts. Si no se proporcionan, los pooled negative_prompt_embeds se generarán a partir del argumento de entrada `negative_prompt`. | |
| prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención para `prompt_embeds`. Obligatorio cuando se pasa `prompt_embeds` directamente. | |
| negative_prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención para `negative_prompt_embeds`. Obligatorio cuando se pasa `negative_prompt_embeds` directamente. | |
| output_type (`str`, *opcional*, por defecto `"pil"`) : 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 `HunyuanVideoFramepackPipelineOutput` en lugar de una tupla simple. | |
| attention_kwargs (`dict`, *opcional*) : Un diccionario de kwargs que, si se especifica, se pasa al `AttentionProcessor` tal como se define bajo `self.processor` en [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| prompt_template (`dict`, *opcional*) : Plantilla utilizada para formatear el prompt antes de codificarlo. Por defecto, se utiliza la plantilla predeterminada del modelo. | |
| max_sequence_length (`int`, *opcional*, valor predeterminado 256) : Longitud máxima de secuencia a utilizar para el codificador de prompts. | |
| sampling_type (`FramepackSamplingType`, *opcional*) : La estrategia de muestreo de Framepack que se utilizará al iterar sobre las ventanas latentes. | |
| 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 denoising 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á incluir variables enumeradas en el atributo `._callback_tensor_inputs` de su clase de pipeline. | |
| **Devuelve:** `~HunyuanVideoFramepackPipelineOutput` o `tuple` | |
| Si `return_dict` es `True`, se devuelve `HunyuanVideoFramepackPipelineOutput`; en caso contrario, se devuelve una `tuple` cuyo primer elemento es una lista con las imágenes generadas y cuyo 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: | |
| ##### Imagen a video | |
| ```python | |
| >>> import torch | |
| >>> from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel | |
| >>> from diffusers.utils import export_to_video, load_image | |
| >>> from transformers import SiglipImageProcessor, SiglipVisionModel | |
| >>> transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained( | |
| ... "lllyasviel/FramePackI2V_HY", torch_dtype=torch.bfloat16 | |
| ... ) | |
| >>> feature_extractor = SiglipImageProcessor.from_pretrained( | |
| ... "lllyasviel/flux_redux_bfl", subfolder="feature_extractor" | |
| ... ) | |
| >>> image_encoder = SiglipVisionModel.from_pretrained( | |
| ... "lllyasviel/flux_redux_bfl", subfolder="image_encoder", torch_dtype=torch.float16 | |
| ... ) | |
| >>> pipe = HunyuanVideoFramepackPipeline.from_pretrained( | |
| ... "hunyuanvideo-community/HunyuanVideo", | |
| ... transformer=transformer, | |
| ... feature_extractor=feature_extractor, | |
| ... image_encoder=image_encoder, | |
| ... torch_dtype=torch.float16, | |
| ... ) | |
| >>> pipe.vae.enable_tiling() | |
| >>> pipe.to("cuda") | |
| >>> image = load_image( | |
| ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png" | |
| ... ) | |
| >>> output = pipe( | |
| ... image=image, | |
| ... prompt="A penguin dancing in the snow", | |
| ... height=832, | |
| ... width=480, | |
| ... num_frames=91, | |
| ... num_inference_steps=30, | |
| ... guidance_scale=9.0, | |
| ... generator=torch.Generator().manual_seed(0), | |
| ... sampling_type="inverted_anti_drifting", | |
| ... ).frames[0] | |
| >>> export_to_video(output, "output.mp4", fps=30) | |
| ``` | |
| ##### Imagen a video de primera y última | |
| ```python | |
| >>> import torch | |
| >>> from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel | |
| >>> from diffusers.utils import export_to_video, load_image | |
| >>> from transformers import SiglipImageProcessor, SiglipVisionModel | |
| >>> transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained( | |
| ... "lllyasviel/FramePackI2V_HY", torch_dtype=torch.bfloat16 | |
| ... ) | |
| >>> feature_extractor = SiglipImageProcessor.from_pretrained( | |
| ... "lllyasviel/flux_redux_bfl", subfolder="feature_extractor" | |
| ... ) | |
| >>> image_encoder = SiglipVisionModel.from_pretrained( | |
| ... "lllyasviel/flux_redux_bfl", subfolder="image_encoder", torch_dtype=torch.float16 | |
| ... ) | |
| >>> pipe = HunyuanVideoFramepackPipeline.from_pretrained( | |
| ... "hunyuanvideo-community/HunyuanVideo", | |
| ... transformer=transformer, | |
| ... feature_extractor=feature_extractor, | |
| ... image_encoder=image_encoder, | |
| ... torch_dtype=torch.float16, | |
| ... ) | |
| >>> pipe.to("cuda") | |
| >>> prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective." | |
| >>> first_image = load_image( | |
| ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png" | |
| ... ) | |
| >>> last_image = load_image( | |
| ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png" | |
| ... ) | |
| >>> output = pipe( | |
| ... image=first_image, | |
| ... last_image=last_image, | |
| ... prompt=prompt, | |
| ... height=512, | |
| ... width=512, | |
| ... num_frames=91, | |
| ... num_inference_steps=30, | |
| ... guidance_scale=9.0, | |
| ... generator=torch.Generator().manual_seed(0), | |
| ... sampling_type="inverted_anti_drifting", | |
| ... ).frames[0] | |
| >>> export_to_video(output, "output.mp4", fps=30) | |
| ``` | |
| ## HunyuanVideoPipelineOutput[[diffusers.pipelines.hunyuan_video.pipeline_output.HunyuanVideoPipelineOutput]] | |
| #### diffusers.pipelines.hunyuan_video.pipeline_output.HunyuanVideoPipelineOutput[[diffusers.pipelines.hunyuan_video.pipeline_output.HunyuanVideoPipelineOutput]] | |
| ```python | |
| diffusers.pipelines.hunyuan_video.pipeline_output.HunyuanVideoPipelineOutput(frames: Tensor) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/hunyuan_video/pipeline_output.py#L11) | |
| **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 pipelines de HunyuanVideo. | |
Xet Storage Details
- Size:
- 26.6 kB
- Xet hash:
- 077074215ef9ddc42c7f0a54c6b7b4bbf13d4605f176bc7a34a03cb29648c6ed
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.