# Motif-Video

[Rapport technique](https://arxiv.org/abs/2604.16503)

Motif-Video est un diffusion transformer de 2 Md de paramètres conçu pour la génération de vidéos à partir de texte et d’images. Il présente une architecture en trois étapes composée de 12 couches dual-stream + 16 couches single-stream + 8 couches de décodeur DDT, de Shared Cross-Attention pour un alignement texte-vidéo stable sous des séquences vidéo longues, d’un encodeur de texte T5Gemma2 et de rectified flow matching pour la prédiction de la vitesse.

  

## Génération de texte en vidéo

Utilisez `MotifVideoPipeline` pour la génération de vidéos à partir de texte :

```python
import torch
from diffusers import MotifVideoPipeline
from diffusers.utils import export_to_video

pipe = MotifVideoPipeline.from_pretrained(
    "Motif-Technologies/Motif-Video-2B",
    dtype=torch.bfloat16,
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A woman with long brown hair and light skin smiles at another woman with long blonde hair."
negative_prompt = "worst quality, inconsistent motion, blurry, jittery, distorted"

video = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    width=1280,
    height=736,
    num_frames=121,
    num_inference_steps=50,
).frames[0]
export_to_video(video, "output.mp4", fps=24)
```

## Génération d'images en vidéo

Utilisez `MotifVideoImage2VideoPipeline` pour la génération de vidéos à partir d’images :

```python
import torch
from diffusers import MotifVideoImage2VideoPipeline
from diffusers.utils import export_to_video, load_image

pipe = MotifVideoImage2VideoPipeline.from_pretrained(
    "Motif-Technologies/Motif-Video-2B",
    dtype=torch.bfloat16,
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = load_image("input_image.png")
prompt = "A cinematic scene with vivid colors."
negative_prompt = "worst quality, blurry, jittery, distorted"

video = pipe(
    image=image,
    prompt=prompt,
    negative_prompt=negative_prompt,
    width=1280,
    height=736,
    num_frames=121,
    num_inference_steps=50,
).frames[0]
export_to_video(video, "i2v_output.mp4", fps=24)
```

### Inférence économe en mémoire

Pour les GPU disposant de moins de 30 Go de VRAM (par exemple, RTX 4090), utilisez le déchargement du modèle sur le CPU :

```bash
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
```

```python
import torch
from diffusers import MotifVideoPipeline
from diffusers.utils import export_to_video

pipe = MotifVideoPipeline.from_pretrained(
    "Motif-Technologies/Motif-Video-2B",
    dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()

prompt = "A woman with long brown hair and light skin smiles at another woman with long blonde hair."
negative_prompt = "worst quality, inconsistent motion, blurry, jittery, distorted"

video = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    width=1280,
    height=736,
    num_frames=121,
    num_inference_steps=50,
).frames[0]
export_to_video(video, "output.mp4", fps=24)
```

## MotifVideoPipeline[[diffusers.MotifVideoPipeline]]

#### diffusers.MotifVideoPipeline[[diffusers.MotifVideoPipeline]]

```python
diffusers.MotifVideoPipeline(scheduler: SchedulerMixin, vae: AutoencoderKLWan, text_encoder: T5Gemma2Encoder, tokenizer: PreTrainedTokenizerBase, transformer: MotifVideoTransformer3DModel, guider: BaseGuidance, feature_extractor: typing.Optional[transformers.models.siglip.image_processing_pil_siglip.SiglipImageProcessorPil] = None)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_motif_video.py#L148)

**Paramètres :**

transformer ([MotifVideoTransformer3DModel](/docs/diffusers/main/fr/api/models/motif_video_transformer_3d#diffusers.MotifVideoTransformer3DModel)) : architecture Transformer conditionnelle pour le débruitage des latents vidéo encodés.

scheduler ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un scheduler à utiliser en combinaison avec `transformer` pour débruyer les latents vidéo encodés. Doit être une instance d'une classe héritant de `SchedulerMixin`, telle que [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler). S'il n'est pas fourni, le scheduler associé au modèle pré-entraîné est utilisé.

vae ([AutoencoderKLWan](/docs/diffusers/main/fr/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : modèle Variational Auto-Encoder (VAE) permettant d’encoder et de décoder des vidéos vers et depuis des représentations latentes.

text_encoder (`T5Gemma2Encoder`) : encodeur de texte principal pour encoder les invites de texte en embeddings.

tokenizer (`PreTrainedTokenizerBase`) : Tokenizer correspondant à l'encodeur de texte principal.

guider ([BaseGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.BaseGuidance)) : La méthode de guidage à utiliser. Doit être une instance d'une classe héritant de `BaseGuidance`, telle que [ClassifierFreeGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance), [AdaptiveProjectedGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.AdaptiveProjectedGuidance) ou [SkipLayerGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.SkipLayerGuidance). Si non fourni, la valeur par défaut est `ClassifierFreeGuidance`.

Pipeline pour la génération de vidéos à partir de texte utilisant Motif-Video.

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.MotifVideoPipeline.__call__]]

```python
__call__(prompt: typing.Union[str, typing.List[str], NoneType] = None, negative_prompt: typing.Union[str, typing.List[str], NoneType] = None, height: int = 736, width: int = 1280, num_frames: int = 121, num_inference_steps: int = 50, timesteps: typing.Optional[typing.List[int]] = None, num_videos_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: typing.Optional[str] = 'pil', return_dict: bool = True, attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None, callback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: typing.List[str] = ['latents'], max_sequence_length: int = 512, vae_batch_size: int | None = None)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_motif_video.py#L492)

**Paramètres :**

prompt (`str` ou `List[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération de la vidéo. S'il n'est pas défini, il faut passer `prompt_embeds`.

negative_prompt (`str` ou `List[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération de la vidéo. S'il n'est pas défini, il faut passer `negative_prompt_embeds` à la place. Ignoré lorsque la guidance n'est pas utilisée.

height (`int`, par défaut `736`) : La hauteur en pixels de la vidéo générée.

width (`int`, par défaut `1280`) : La largeur en pixels de la vidéo générée.

num_frames (`int`, par défaut `121`) : Le nombre de frames vidéo à générer.

num_inference_steps (`int`, *facultatif*, valeur 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 vidéo de meilleure qualité, au prix d'une inférence plus lente.

timesteps (`List[int]`, *facultatif*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage.

num_videos_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Le nombre de vidéos à générer par invite.

generator (`torch.Generator` ou `List[torch.Generator]`, *facultatif*) : Objet(s) Generator de PyTorch pour une génération déterministe.

latents (`torch.Tensor`, *facultatif*) : Latents bruités pré-générés.

prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées.

prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte.

negative_prompt_embeds (`torch.FloatTensor`, *facultatif*) : Incrustations de texte négatif pré-générées.

negative_prompt_attention_mask (`torch.FloatTensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte négatif.

output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de la vidéo générée. Choisissez entre `"pil"`, `"np"` ou `"latent"`.

return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un [~MotifVideoPipelineOutput](/docs/diffusers/main/fr/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) plutôt qu'un simple tuple.

attention_kwargs (`dict`, *facultatif*) : Arguments transmis au processeur d'attention.

callback_on_step_end (`Callable`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` appelée à la fin de chaque étape de débruitage.

callback_on_step_end_tensor_inputs (`List`, *facultatif*) : La liste des entrées de tenseurs pour la fonction `callback_on_step_end`.

max_sequence_length (`int`, par défaut `512`) : Longueur de séquence maximale pour le tokenizer.

vae_batch_size (`int`, *facultatif*) : Taille du lot pour le décodage VAE. Si cette valeur est fournie et que la taille du lot des latents est supérieure, le décodage VAE sera effectué par lots.

**Retourne :** [~MotifVideoPipelineOutput](/docs/diffusers/main/fr/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) ou `tuple`

Si `return_dict` est `True`, [~MotifVideoPipelineOutput](/docs/diffusers/main/fr/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) est retourné, sinon un `tuple` est retourné dont le premier élément est une liste de frames de vidéo générées.

La fonction d'appel du pipeline pour la génération de texte vers vidéo.

Exemples :
```python
>>> import torch
>>> from diffusers import MotifVideoPipeline
>>> from diffusers.utils import export_to_video

>>> # Load the Motif-Video pipeline
>>> motif_video_model_id = "Motif-Technologies/Motif-Video-2B"
>>> pipe = MotifVideoPipeline.from_pretrained(motif_video_model_id, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A woman with long brown hair and light skin smiles at another woman with long blonde hair. The woman with brown hair wears a black jacket and has a small, barely noticeable mole on her right cheek. The camera angle is a close-up, focused on the woman with brown hair's face. The lighting is warm and natural, likely from the setting sun, casting a soft glow on the scene. The scene appears to be real-life footage"
>>> negative_prompt = "worst quality, inconsistent motion, blurry, jittery, distorted"

>>> video = pipe(
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     width=1280,
...     height=736,
...     num_frames=121,
...     num_inference_steps=50,
... ).frames[0]
>>> export_to_video(video, "output.mp4", fps=24)
```

#### encode_prompt[[diffusers.MotifVideoPipeline.encode_prompt]]

```python
encode_prompt(prompt: typing.Union[str, typing.List[str]], negative_prompt: typing.Union[str, typing.List[str], NoneType] = None, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 512, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_motif_video.py#L247)

**Paramètres :**

prompt (`str` ou `List[str]`, *facultatif*) : Le prompt ou les prompts à encoder.

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 `guidance_scale` est inférieur à `1`).

num_videos_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Nombre de vidéos à générer par invite.

prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées.

negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif 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, negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte.

negative_prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte négatif.

max_sequence_length (`int`, par défaut 512) : Longueur maximale de séquence pour le tokenizer.

device (`torch.device`, *facultatif*) : Appareil sur lequel placer les tenseurs.

dtype (`torch.dtype`, *facultatif*) : Type de données pour les tenseurs.

**Retourne :** `tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor]`

Un tuple contenant :
- `prompt_embeds` : les embeddings de texte pour le prompt positif
- `negative_prompt_embeds` : Les embeddings de texte pour le prompt négatif (None si la guidance n'est pas utilisée)
- `prompt_attention_mask` : le masque d'attention pour le prompt positif
- `negative_prompt_attention_mask` : le masque d'attention pour le prompt négatif (None si la guidance n'est pas utilisée)

Encode le prompt dans les états cachés de l'encodeur de texte.

## MotifVideoImage2VideoPipeline[[diffusers.MotifVideoImage2VideoPipeline]]

#### diffusers.MotifVideoImage2VideoPipeline[[diffusers.MotifVideoImage2VideoPipeline]]

```python
diffusers.MotifVideoImage2VideoPipeline(scheduler: SchedulerMixin, vae: AutoencoderKLWan, text_encoder: T5Gemma2Encoder, tokenizer: PreTrainedTokenizerBase, transformer: MotifVideoTransformer3DModel, guider: BaseGuidance, feature_extractor: SiglipImageProcessorPil)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_motif_video_image2video.py#L157)

**Paramètres :**

transformer ([MotifVideoTransformer3DModel](/docs/diffusers/main/fr/api/models/motif_video_transformer_3d#diffusers.MotifVideoTransformer3DModel)) : architecture Transformer conditionnelle pour le débruitage des latents vidéo encodés.

scheduler ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un scheduler à utiliser en combinaison avec `transformer` pour débruyer les latents vidéo encodés. Doit être une instance d'une classe héritant de `SchedulerMixin`, telle que [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler). S'il n'est pas fourni, le scheduler associé au modèle pré-entraîné est utilisé.

vae ([AutoencoderKLWan](/docs/diffusers/main/fr/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : modèle Variational Auto-Encoder (VAE) permettant d’encoder et de décoder des vidéos vers et depuis des représentations latentes.

text_encoder (`T5Gemma2Encoder`) : encodeur de texte principal pour encoder les invites de texte en embeddings.

tokenizer (`PreTrainedTokenizerBase`) : Tokenizer correspondant à l'encodeur de texte principal.

feature_extractor (`SiglipImageProcessor`) : Processeur d'images pour l'encodeur visuel SigLIP.

guider ([BaseGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.BaseGuidance)) : La méthode de guidage à utiliser. Doit être une instance d'une classe héritant de `BaseGuidance`, telle que [ClassifierFreeGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance), [AdaptiveProjectedGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.AdaptiveProjectedGuidance) ou [SkipLayerGuidance](/docs/diffusers/main/fr/api/modular_diffusers/guiders#diffusers.SkipLayerGuidance). Si non fourni, la valeur par défaut est `ClassifierFreeGuidance`.

Pipeline pour la génération d'images en vidéo utilisant Motif-Video avec conditionnement sur le premier plan.

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.MotifVideoImage2VideoPipeline.__call__]]

```python
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], prompt: typing.Union[str, typing.List[str]], negative_prompt: typing.Union[str, typing.List[str], NoneType] = None, height: int = 736, width: int = 1280, num_frames: int = 121, num_inference_steps: int = 50, timesteps: typing.Optional[typing.List[int]] = None, num_videos_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: typing.Optional[str] = 'pil', return_dict: bool = True, attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None, callback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: typing.List[str] = ['latents'], max_sequence_length: int = 512)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_motif_video_image2video.py#L620)

**Paramètres :**

image (`PipelineImageInput`) : L'image d'entrée à utiliser comme première image pour la génération de vidéo.

prompt (`str` ou `List[str]`) : Le prompt ou les prompts pour guider la génération de la vidéo.

negative_prompt (`str` ou `List[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération de la vidéo.

height (`int`, par défaut `736`) : La hauteur en pixels de la vidéo générée.

width (`int`, par défaut `1280`) : La largeur en pixels de la vidéo générée.

num_frames (`int`, par défaut `121`) : Le nombre de frames vidéo à générer.

num_inference_steps (`int`, *facultatif*, par défaut 50) : Le nombre d'étapes de débruitage.

timesteps (`List[int]`, *facultatif*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage.

num_videos_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Le nombre de vidéos à générer par invite.

generator (`torch.Generator` ou `List[torch.Generator]`, *facultatif*) : Objet(s) Generator de PyTorch pour une génération déterministe.

latents (`torch.Tensor`, *facultatif*) : Latents bruités pré-générés.

prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées.

prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte.

negative_prompt_embeds (`torch.FloatTensor`, *facultatif*) : Incrustations de texte négatif pré-générées.

negative_prompt_attention_mask (`torch.FloatTensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte négatif.

output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de la vidéo générée.

return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un [~MotifVideoPipelineOutput](/docs/diffusers/main/fr/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) plutôt qu'un simple tuple.

attention_kwargs (`dict`, *facultatif*) : Arguments transmis au processeur d'attention.

callback_on_step_end (`Callable`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` appelée à la fin de chaque étape de débruitage.

callback_on_step_end_tensor_inputs (`List`, *facultatif*) : La liste des entrées de tenseurs pour la fonction `callback_on_step_end`.

max_sequence_length (`int`, par défaut `512`) : Longueur de séquence maximale pour le tokenizer.

**Retourne :** [~MotifVideoPipelineOutput](/docs/diffusers/main/fr/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) ou `tuple`

Si `return_dict` est `True`, [~MotifVideoPipelineOutput](/docs/diffusers/main/fr/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) est retourné, sinon un `tuple` est retourné dont le premier élément est une liste de frames de vidéo générées.

La fonction d'appel du pipeline pour la génération d'images en vidéo.

Exemples :
```python
>>> import torch
>>> from PIL import Image
>>> from diffusers import MotifVideoImage2VideoPipeline
>>> from diffusers.utils import export_to_video, load_image

>>> # Load the Motif-Video image-to-video pipeline
>>> motif_video_model_id = "Motif-Technologies/Motif-Video-2B"
>>> pipe = MotifVideoImage2VideoPipeline.from_pretrained(motif_video_model_id, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> # Load an image
>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.png"
... )

>>> prompt = "An astronaut is walking on the moon surface, kicking up dust with each step"
>>> negative_prompt = "worst quality, inconsistent motion, blurry, jittery, distorted"

>>> video = pipe(
...     image=image,
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     width=1280,
...     height=736,
...     num_frames=121,
...     num_inference_steps=50,
... ).frames[0]
>>> export_to_video(video, "output.mp4", fps=24)
```

#### encode_prompt[[diffusers.MotifVideoImage2VideoPipeline.encode_prompt]]

```python
encode_prompt(prompt: typing.Union[str, typing.List[str]], negative_prompt: typing.Union[str, typing.List[str], NoneType] = None, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 512, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_motif_video_image2video.py#L259)

**Paramètres :**

prompt (`str` ou `List[str]`, *facultatif*) : Le prompt ou les prompts à encoder.

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 `guidance_scale` est inférieur à `1`).

num_videos_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Nombre de vidéos à générer par invite.

prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées.

negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif 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, negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte.

negative_prompt_attention_mask (`torch.Tensor`, *facultatif*) : Masque d'attention pré-généré pour les embeddings de texte négatif.

max_sequence_length (`int`, par défaut 512) : Longueur maximale de séquence pour le tokenizer.

device (`torch.device`, *facultatif*) : Appareil sur lequel placer les tenseurs.

dtype (`torch.dtype`, *facultatif*) : Type de données pour les tenseurs.

**Retourne :** `tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor]`

Un tuple contenant :
- `prompt_embeds` : les embeddings de texte pour le prompt positif
- `negative_prompt_embeds` : Les embeddings de texte pour le prompt négatif (None si la guidance n'est pas utilisée)
- `prompt_attention_mask` : le masque d'attention pour le prompt positif
- `negative_prompt_attention_mask` : le masque d'attention pour le prompt négatif (None si la guidance n'est pas utilisée)

Encode le prompt dans les états cachés de l'encodeur de texte.

## MotifVideoPipelineOutput[[diffusers.MotifVideoPipelineOutput]]

#### diffusers.MotifVideoPipelineOutput[[diffusers.MotifVideoPipelineOutput]]

```python
diffusers.MotifVideoPipelineOutput(frames: Tensor)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/motif_video/pipeline_output.py#L9)

**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 Motif-Video.

