# Motif-Video

[Informe técnico](https://arxiv.org/abs/2604.16503)

Motif-Video es un difusor transformer de 2B parámetros diseñado para la generación de texto a video e imagen a video. Cuenta con una arquitectura de tres etapas con 12 capas de decodificador de doble flujo + 16 de flujo único + 8 capas de decodificador DDT, Shared Cross-Attention para una alineación estable de texto y video en secuencias de video largas, un codificador de texto T5Gemma2 y rectified flow matching para la predicción de velocidad.

  

## Generación de texto a video

Use `MotifVideoPipeline` para la generación de video a partir de texto:

```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)
```

## Generación de video a partir de imagen

Use `MotifVideoImage2VideoPipeline` para la generación de video a partir de una imagen:

```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)
```

### Inferencia eficiente en memoria

Para GPUs con menos de 30 GB de VRAM (p. ej., RTX 4090), usa el descargado de modelo a 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)
```

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

**Parámetros:**

transformer ([MotifVideoTransformer3DModel](/docs/diffusers/v0.43.0/es/api/models/motif_video_transformer_3d#diffusers.MotifVideoTransformer3DModel)) : Arquitectura de Transformer condicional para desruidar los latentes de video codificados.

scheduler ([SchedulerMixin](/docs/diffusers/v0.43.0/es/api/schedulers/overview#diffusers.SchedulerMixin)) : Un scheduler para usar en combinación con `transformer` para desruidar los latentes de video codificados. Debe ser una instancia de una clase que herede de `SchedulerMixin`, como [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler). Si no se proporciona, se utiliza el scheduler adjunto al modelo preentrenado.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/es/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes.

text_encoder (`T5Gemma2Encoder`) : Codificador de texto principal para codificar los prompts de texto en embeddings.

tokenizer (`PreTrainedTokenizerBase`) : Tokenizer correspondiente al codificador de texto principal.

guider ([BaseGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.BaseGuidance)) : El método de guía a utilizar. Debe ser una instancia de una clase que herede de `BaseGuidance`, como [ClassifierFreeGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance), [AdaptiveProjectedGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.AdaptiveProjectedGuidance) o [SkipLayerGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.SkipLayerGuidance). Si no se proporciona, el valor predeterminado es `ClassifierFreeGuidance`.

Pipeline para la generación de texto a video usando Motif-Video.

Este modelo hereda de [DiffusionPipeline](/docs/diffusers/v0.43.0/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.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)
```

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

**Parámetros:**

prompt (`str` o `List[str]`, *opcional*) : El prompt o prompts para guiar la generación del video. Si no se define, se debe pasar `prompt_embeds`.

negative_prompt (`str` o `List[str]`, *opcional*) : El prompt o prompts que no deben guiar la generación del video. Si no se define, se debe pasar `negative_prompt_embeds` en su lugar. Se ignora cuando no se usa guía.

height (`int`, por defecto `736`) : La altura en píxeles del video generado.

width (`int`, por defecto `1280`) : El ancho en píxeles del video generado.

num_frames (`int`, por defecto `121`) : El número de fotogramas de video a generar.

num_inference_steps (`int`, *opcional*, valor predeterminado 50) : El número de pasos de desruido. Más pasos de desruido suelen conducir a un video de mayor calidad a costa de una inferencia más lenta.

timesteps (`List[int]`, *opcional*) : Pasos de tiempo personalizados para usar en el proceso de desruido.

num_videos_per_prompt (`int`, *opcional*, valor predeterminado 1) : El número de videos a generar por indicación.

generator (`torch.Generator` o `List[torch.Generator]`, *opcional*) : Objeto(s) de Generador de PyTorch para la generación determinista.

latents (`torch.Tensor`, *opcional*) : Latentes ruidosos pregenerados.

prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados.

prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto.

negative_prompt_embeds (`torch.FloatTensor`, *opcional*) : Embeddings de texto negativos pregenerados.

negative_prompt_attention_mask (`torch.FloatTensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto negativos.

output_type (`str`, *opcional*, por defecto `"pil"`) : El formato de salida del video generado. Elija entre `"pil"`, `"np"` o `"latent"`.

return_dict (`bool`, *opcional*, valor predeterminado `True`) : Si se debe devolver un [~MotifVideoPipelineOutput](/docs/diffusers/v0.43.0/es/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) en lugar de una tupla simple.

attention_kwargs (`dict`, *opcional*) : Argumentos pasados al procesador de atención.

callback_on_step_end (`Callable`, *opcional*) : Una función o subclase de `PipelineCallback` o `MultiPipelineCallbacks` que se llama al final de cada paso de desruido.

callback_on_step_end_tensor_inputs (`List`, *opcional*) : La lista de entradas de tensor para la función `callback_on_step_end`.

max_sequence_length (`int`, por defecto `512`) : Longitud máxima de secuencia para el tokenizador.

vae_batch_size (`int`, *opcional*) : Tamaño del lote para la decodificación del VAE. Si se proporciona y el tamaño del lote de latentes es mayor, la decodificación del VAE se realizará en fragmentos.

**Devuelve:** [~MotifVideoPipelineOutput](/docs/diffusers/v0.43.0/es/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) o `tuple`

Si `return_dict` es `True`, se devuelve [~MotifVideoPipelineOutput](/docs/diffusers/v0.43.0/es/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput); en caso contrario, se devuelve una `tuple` cuyo primer elemento es una lista de fotogramas de video generados.

La función de llamada para la pipeline de generación de texto a video.

Ejemplos:
```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)
```

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

**Parámetros:**

prompt (`str` o `List[str]`, *opcional*) : El prompt o los prompts 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`).

num_videos_per_prompt (`int`, *opcional*, valor predeterminado 1) : Número de vídeos a generar por indicación.

prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados.

negative_prompt_embeds (`torch.Tensor`, *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`.

prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto.

negative_prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto negativos.

max_sequence_length (`int`, valor predeterminado 512) : Longitud máxima de la secuencia para el tokenizador.

device (`torch.device`, *opcional*) : Dispositivo en el que colocar los tensores.

dtype (`torch.dtype`, *opcional*) : Tipo de datos para los tensores.

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

Una tupla que contiene:
- `prompt_embeds`: Los embeddings de texto para el prompt positivo
- `negative_prompt_embeds`: Los embeddings de texto para el prompt negativo (None si no se usa guía)
- `prompt_attention_mask`: La máscara de atención para el prompt positivo
- `negative_prompt_attention_mask`: La máscara de atención para el prompt negativo (None si no se usa guía)

Codifica el prompt en estados ocultos del codificador de texto.

## 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)
```

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

**Parámetros:**

transformer ([MotifVideoTransformer3DModel](/docs/diffusers/v0.43.0/es/api/models/motif_video_transformer_3d#diffusers.MotifVideoTransformer3DModel)) : Arquitectura de Transformer condicional para desruidar los latentes de video codificados.

scheduler ([SchedulerMixin](/docs/diffusers/v0.43.0/es/api/schedulers/overview#diffusers.SchedulerMixin)) : Un scheduler para usar en combinación con `transformer` para desruidar los latentes de video codificados. Debe ser una instancia de una clase que herede de `SchedulerMixin`, como [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler). Si no se proporciona, se utiliza el scheduler adjunto al modelo preentrenado.

vae ([AutoencoderKLWan](/docs/diffusers/v0.43.0/es/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : Modelo de Autoencoder Variacional (VAE) para codificar y decodificar videos hacia y desde representaciones latentes.

text_encoder (`T5Gemma2Encoder`) : Codificador de texto principal para codificar los prompts de texto en embeddings.

tokenizer (`PreTrainedTokenizerBase`) : Tokenizer correspondiente al codificador de texto principal.

feature_extractor (`SiglipImageProcessor`) : Procesador de imágenes para el codificador de visión de SigLIP.

guider ([BaseGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.BaseGuidance)) : El método de guía a utilizar. Debe ser una instancia de una clase que herede de `BaseGuidance`, como [ClassifierFreeGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance), [AdaptiveProjectedGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.AdaptiveProjectedGuidance) o [SkipLayerGuidance](/docs/diffusers/v0.43.0/es/api/modular_diffusers/guiders#diffusers.SkipLayerGuidance). Si no se proporciona, el valor predeterminado es `ClassifierFreeGuidance`.

Pipeline para la generación de video a partir de imágenes usando Motif-Video con condicionamiento del primer fotograma.

Este modelo hereda de [DiffusionPipeline](/docs/diffusers/v0.43.0/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.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)
```

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

**Parámetros:**

image (`PipelineImageInput`) : La imagen de entrada que se usará como primer fotograma para la generación de video.

prompt (`str` o `List[str]`) : El prompt o los prompts para guiar la generación del video.

negative_prompt (`str` o `List[str]`, *opcional*) : El prompt o los prompts que no deben guiar la generación del video.

height (`int`, por defecto `736`) : La altura en píxeles del video generado.

width (`int`, por defecto `1280`) : El ancho en píxeles del video generado.

num_frames (`int`, por defecto `121`) : El número de fotogramas de video a generar.

num_inference_steps (`int`, *opcional*, valor predeterminado 50) : El número de pasos de desruido.

timesteps (`List[int]`, *opcional*) : Pasos de tiempo personalizados para usar en el proceso de desruido.

num_videos_per_prompt (`int`, *opcional*, valor predeterminado 1) : El número de videos a generar por indicación.

generator (`torch.Generator` o `List[torch.Generator]`, *opcional*) : Objeto(s) de Generador de PyTorch para la generación determinista.

latents (`torch.Tensor`, *opcional*) : Latentes ruidosos pregenerados.

prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados.

prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto.

negative_prompt_embeds (`torch.FloatTensor`, *opcional*) : Embeddings de texto negativos pregenerados.

negative_prompt_attention_mask (`torch.FloatTensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto negativos.

output_type (`str`, *opcional*, por defecto `"pil"`) : El formato de salida del video generado.

return_dict (`bool`, *opcional*, valor predeterminado `True`) : Si se debe devolver un [~MotifVideoPipelineOutput](/docs/diffusers/v0.43.0/es/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) en lugar de una tupla simple.

attention_kwargs (`dict`, *opcional*) : Argumentos pasados al procesador de atención.

callback_on_step_end (`Callable`, *opcional*) : Una función o subclase de `PipelineCallback` que se llama al final de cada paso de desruido.

callback_on_step_end_tensor_inputs (`List`, *opcional*) : La lista de entradas de tensor para la función `callback_on_step_end`.

max_sequence_length (`int`, por defecto `512`) : Longitud máxima de secuencia para el tokenizador.

**Devuelve:** [~MotifVideoPipelineOutput](/docs/diffusers/v0.43.0/es/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput) o `tuple`

Si `return_dict` es `True`, se devuelve [~MotifVideoPipelineOutput](/docs/diffusers/v0.43.0/es/api/pipelines/motif_video#diffusers.MotifVideoPipelineOutput); en caso contrario, se devuelve una `tuple` cuyo primer elemento es una lista de fotogramas de video generados.

La función de llamada al pipeline para la generación de imagen a video.

Ejemplos:
```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)
```

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

**Parámetros:**

prompt (`str` o `List[str]`, *opcional*) : El prompt o los prompts 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`).

num_videos_per_prompt (`int`, *opcional*, valor predeterminado 1) : Número de vídeos a generar por indicación.

prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados.

negative_prompt_embeds (`torch.Tensor`, *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`.

prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto.

negative_prompt_attention_mask (`torch.Tensor`, *opcional*) : Máscara de atención pregenerada para los embeddings de texto negativos.

max_sequence_length (`int`, valor predeterminado 512) : Longitud máxima de la secuencia para el tokenizador.

device (`torch.device`, *opcional*) : Dispositivo en el que colocar los tensores.

dtype (`torch.dtype`, *opcional*) : Tipo de datos para los tensores.

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

Una tupla que contiene:
- `prompt_embeds`: Los embeddings de texto para el prompt positivo
- `negative_prompt_embeds`: Los embeddings de texto para el prompt negativo (None si no se usa guía)
- `prompt_attention_mask`: La máscara de atención para el prompt positivo
- `negative_prompt_attention_mask`: La máscara de atención para el prompt negativo (None si no se usa guía)

Codifica el prompt en estados ocultos del codificador de texto.

## MotifVideoPipelineOutput[[diffusers.MotifVideoPipelineOutput]]

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

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

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

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

