Buckets:
| # | |
| # Sous licence Apache License, Version 2.0 (la « Licence ») ; | |
| # vous ne pouvez utiliser ce fichier que conformément à la Licence. | |
| # Vous pouvez obtenir un exemplaire de la Licence à | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Sauf exigence légale ou accord écrit | |
| # distribué sous la Licence est distribué sur une base « EN L'ÉTAT », | |
| # SANS AUCUNE GARANTIE NI CONDITION, explicite ou implicite. | |
| # Voir la Licence pour le langage spécifique régissant les autorisations et | |
| # limitations under the License. --> | |
| # Framepack | |
| [Packing Input Frame Context in Next-Frame Prediction Models for Video Generation](https://huggingface.co/papers/2504.12626) de Lvmin Zhang et Maneesh Agrawala. | |
| *Nous présentons une structure de réseau de neurones, FramePack, pour entraîner des modèles de prédiction de la frame suivante (ou de la section de frame suivante) destinés à la génération de vidéos. FramePack compresse les frames d’entrée afin que la longueur de contexte du transformer reste un nombre fixe, indépendamment de la longueur de la vidéo. En conséquence, nous sommes en mesure de traiter un grand nombre de frames en utilisant la diffusion vidéo, avec un goulot d’étranglement de calcul comparable à celui de la diffusion d’images. Cela permet également d’augmenter considérablement les tailles de lot d’entraînement vidéo (les tailles de lot deviennent comparables à celles de l’entraînement par diffusion d’images). Nous proposons également une méthode d’échantillonnage anti-dérive qui génère les frames dans un ordre temporel inversé, avec des points de terminaison établis tôt, afin d’éviter le biais d’exposition (accumulation d’erreurs au fil des itérations). Enfin, nous montrons que les modèles de diffusion vidéo existants peuvent être affinés avec FramePack, et que leur qualité visuelle peut être améliorée, car la prédiction de la frame suivante permet d’utiliser des planificateurs de diffusion plus équilibrés, avec des pas de temps de décalage de flux moins extrêmes.* | |
| > [!TIP] | |
| > Pensez à consulter le [guide des Schedulers](../../using-diffusers/schedulers) pour apprendre à explorer le compromis entre la vitesse et la qualité du scheduler, et à consulter la section [réutilisation des composants entre les pipelines](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) pour apprendre à charger efficacement les mêmes composants dans plusieurs pipelines. | |
| ## Modèles disponibles | |
| | Nom du modèle | Description | | |
| |:---|:---| | |
| - [`lllyasviel/FramePackI2V_HY`](https://huggingface.co/lllyasviel/FramePackI2V_HY) | Entraîné avec la stratégie « anti-dérive inversée » décrite dans l'article. L'inférence nécessite de définir `sampling_type="inverted_anti_drifting"` lors de l'exécution du pipeline. | | |
| - [`lllyasviel/FramePack_F1_I2V_HY_20250503`](https://huggingface.co/lllyasviel/FramePack_F1_I2V_HY_20250503) | Entraîné avec une stratégie anti-dérive novatrice, mais l'inférence est effectuée selon la stratégie « vanilla » telle que décrite dans l'article. L'inférence nécessite de définir `sampling_type="vanilla"` lors de l'exécution du pipeline. | | |
| ## Utilisation | |
| Consultez la documentation du pipeline pour des exemples d'utilisation de base. La section suivante contient des exemples de déchargement, de différentes méthodes d'échantillonnage, de quantification, et plus encore. | |
| ### Première et dernière image vers vidéo | |
| L’exemple suivant montre comment utiliser Framepack avec des contrôles d’image de début et de fin, en utilisant le modèle d’échantillonnage anti-dérive inversé. | |
| ```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) | |
| ``` | |
| ### Échantillonnage standard | |
| L'exemple suivant montre comment utiliser Framepack avec le modèle F1 entraîné avec un échantillonnage standard mais une nouvelle approche de régulation pour le dérive anti. | |
| ```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) | |
| ``` | |
| ### Group offloading | |
| Le déchargement par groupes ([apply_group_offloading()](/docs/diffusers/main/fr/api/utilities#diffusers.hooks.apply_group_offloading)) offre des optimisations mémoire agressives pour décharger les parties internes de n'importe quel modèle vers le CPU, sans surcoût supplémentaire potentiel sur le temps de génération. Si votre VRAM disponible est très faible, cette approche peut vous convenir en fonction de la quantité de RAM 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) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py#L243) | |
| **Paramètres :** | |
| text_encoder (`LlamaModel`) : [Llava Llama3-8B](https://huggingface.co/xtuner/llava-llama-3-8b-v1_1-transformers). | |
| tokenizer (`LlamaTokenizer`) : Tokenizer de [Llava Llama3-8B](https://huggingface.co/xtuner/llava-llama-3-8b-v1_1-transformers). | |
| transformer ([HunyuanVideoTransformer3DModel](/docs/diffusers/main/fr/api/models/hunyuan_video_transformer_3d#diffusers.HunyuanVideoTransformer3DModel)) : Transformer conditionnel pour le débruitage des latents d'image encodés. | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/fr/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : un planificateur à utiliser en combinaison avec `transformer` pour débruyer les latents d'image encodés. | |
| vae ([AutoencoderKLHunyuanVideo](/docs/diffusers/main/fr/api/models/autoencoder_kl_hunyuan_video#diffusers.AutoencoderKLHunyuanVideo)) : modèle de Variational Auto-Encoder (VAE) permettant d’encoder et de décoder des vidéos vers et depuis des représentations latentes. | |
| text_encoder_2 (`CLIPTextModel`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), plus précisément la variante [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14). | |
| tokenizer_2 (`CLIPTokenizer`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/en/model_doc/clip#transformers.CLIPTokenizer). | |
| Pipeline pour la génération de vidéos à partir de texte utilisant HunyuanVideo. | |
| Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline). Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.). | |
| #### __appel__[[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'>) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py#L586) | |
| **Paramètres :** | |
| image (`PIL.Image.Image` ou `np.ndarray` ou `torch.Tensor`) : L'image à utiliser comme point de départ pour la génération de la vidéo. | |
| last_image (`PIL.Image.Image` ou `np.ndarray` ou `torch.Tensor`, *facultatif*) : La dernière image facultative à utiliser comme point de fin pour la génération de la vidéo. Cela est utile pour générer des transitions entre deux images. | |
| prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passer `prompt_embeds` à la place. | |
| prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer à `tokenizer_2` et `text_encoder_2`. S'il n'est pas défini, `prompt` sera utilisé à la place. | |
| negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération de l'image. S'il n'est pas défini, il faut passer `negative_prompt_embeds` à la place. Ignoré lorsque le guidage n'est pas utilisé (c'est-à-dire ignoré si `true_cfg_scale` n'est pas supérieur à `1`). | |
| negative_prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à `tokenizer_2` et `text_encoder_2`. S’il n’est pas défini, `negative_prompt` est utilisé dans tous les encodeurs de texte. | |
| height (`int`, par défaut `720`) : La hauteur en pixels de l'image générée. | |
| width (`int`, par défaut `1280`) : La largeur en pixels de l'image générée. | |
| num_frames (`int`, par défaut `129`) : Le nombre de frames dans la vidéo générée. | |
| latent_window_size (`int`, par défaut `9`) : Nombre de trames latentes produites par fenêtre d'échantillonnage Framepack. | |
| num_inference_steps (`int`, par défaut `50`) : Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. | |
| sigmas (`list[float]`, *facultatif*) : Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `sigmas` dans leur méthode `set_timesteps`. S'ils ne sont pas définis, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé. | |
| true_cfg_scale (`float`, *facultatif*, valeur par défaut 1.0) : lorsque la valeur est supérieure à 1.0 et qu'un `negative_prompt` est fourni, active le vrai classifier-free guidance. | |
| guidance_scale (`float`, par défaut `6.0`) : Échelle de guidage telle que définie dans [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` est défini comme `w` de l'équation 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). L'échelle de guidage est activée en définissant `guidance_scale > 1`. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au `prompt` texte, généralement au détriment de la qualité de l'image. Notez que le seul modèle HunyuanVideo disponible est distillé CFG, ce qui signifie que le guidage traditionnel entre le latent inconditionnel et le latent conditionnel n'est pas appliqué. | |
| num_videos_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Le nombre d'images à générer par invite. | |
| generator (`torch.Generator` ou `list[torch.Generator]`, *facultatif*) : Un [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) pour rendre la génération déterministe. | |
| image_latents (`torch.Tensor`, *facultatif*) : Latents d'image pré-encodés. S'ils ne sont pas fournis, l'image sera encodée à l'aide du VAE. | |
| last_image_latents (`torch.Tensor`, *facultatif*) : Latents de la dernière image pré-encodés. S'ils ne sont pas fournis, la dernière image sera encodée à l'aide du VAE. | |
| prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). Si non fourni, les incrustations de texte sont générées à partir de l'argument d'entrée `prompt`. | |
| pooled_prompt_embeds (`torch.FloatTensor`, *facultatif*) : Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entrée `prompt`. | |
| negative_prompt_embeds (`torch.FloatTensor`, *facultatif*) : Incrustations de texte négatif pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. Si non fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`. | |
| negative_pooled_prompt_embeds (`torch.FloatTensor`, *facultatif*) : Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entrée `negative_prompt`. | |
| prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pour `prompt_embeds`. Obligatoire lorsque `prompt_embeds` est transmis directement. | |
| negative_prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pour `negative_prompt_embeds`. Obligatoire lorsque `negative_prompt_embeds` est transmis directement. | |
| output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de l'image générée. Choisissez entre `PIL.Image` ou `np.array`. | |
| return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un `HunyuanVideoFramepackPipelineOutput` plutôt qu'un simple tuple. | |
| attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'`AttentionProcessor` tel que défini sous `self.processor` dans [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| prompt_template (`dict`, *facultatif*) : Modèle utilisé pour formater le prompt avant l'encodage. Par défaut, le modèle utilise le modèle par défaut du modèle. | |
| max_sequence_length (`int`, *facultatif*, valeur par défaut 256) : Longueur de séquence maximale à utiliser pour l'encodeur de prompt. | |
| sampling_type (`FramepackSamplingType`, *facultatif*) : La stratégie d'échantillonnage Framepack à utiliser lors de l'itération sur les fenêtres latentes. | |
| callback_on_step_end (`Callable`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants : `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` contiendra une liste de tous les tenseurs, tels que spécifiés par `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`, *facultatif*) : La liste des entrées tensorielles pour la fonction `callback_on_step_end`. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument `callback_kwargs`. Vous ne pourrez inclure que les variables listées dans l'attribut `._callback_tensor_inputs` de votre classe de pipeline. | |
| **Retourne :** `~HunyuanVideoFramepackPipelineOutput` ou `tuple` | |
| Si `return_dict` est `True`, `HunyuanVideoFramepackPipelineOutput` est renvoyé, sinon un `tuple` est renvoyé dont le premier élément est une liste des images générées et le deuxième élément est une liste de `bool` indiquant si l'image générée correspondante contient du contenu « not-safe-for-work » (nsfw). | |
| La fonction d'appel du pipeline pour la génération. | |
| Exemples : | |
| ##### Image-vers-Vidéo | |
| ```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) | |
| ``` | |
| ##### Première et dernière image vers vidéo | |
| ```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) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/hunyuan_video/pipeline_output.py#L11) | |
| **Paramètres :** | |
| frames (`torch.Tensor`, `np.ndarray` ou list[list[PIL.Image.Image]]) : liste de sorties vidéo - Il peut s'agir d'une liste imbriquée de longueur `batch_size,` où chaque sous-liste contient des séquences d'images PIL débruitées de longueur `num_frames.` Il peut également s'agir d'un tableau NumPy ou d'un tenseur Torch de forme `(batch_size, num_frames, channels, height, width)`. | |
| Classe de sortie pour les pipelines HunyuanVideo. | |
Xet Storage Details
- Size:
- 27.1 kB
- Xet hash:
- 969733b9f5957f3494b8687c8094856eb6e04d0650908d2bfcab1587d4ae354f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.