# ChronoEditTransformer3DModel

Um modelo Diffusion Transformer para dados de vídeo 3D do [ChronoEdit: Towards Temporal Reasoning for Image Editing and World Simulation](https://huggingface.co/papers/2510.04290) da NVIDIA e da University of Toronto, por Jay Zhangjie Wu, Xuanchi Ren, Tianchang Shen, Tianshi Cao, Kai He, Yifan Lu, Ruiyuan Gao, Enze Xie, Shiyi Lan, Jose M. Alvarez, Jun Gao, Sanja Fidler, Zian Wang, Huan Ling.

> **Resumo:** O ChronoEdit reformula a edição de imagens como uma tarefa de geração de vídeo, utilizando as imagens de entrada e editadas como quadros inicial e final para aproveitar modelos de vídeo pré-treinados com consistência temporal. Um estágio de raciocínio temporal introduz tokens de raciocínio para garantir edições fisicamente plausíveis e visualizar a trajetória da edição.

O modelo pode ser carregado com o seguinte trecho de código.

```python
from diffusers import ChronoEditTransformer3DModel

transformer = ChronoEditTransformer3DModel.from_pretrained("nvidia/ChronoEdit-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)
```

## ChronoEditTransformer3DModel[[diffusers.ChronoEditTransformer3DModel]]

#### diffusers.ChronoEditTransformer3DModel[[diffusers.ChronoEditTransformer3DModel]]

```python
diffusers.ChronoEditTransformer3DModel(patch_size: tuple = (1, 2, 2), num_attention_heads: int = 40, attention_head_dim: int = 128, in_channels: int = 16, out_channels: int = 16, text_dim: int = 4096, freq_dim: int = 256, ffn_dim: int = 13824, num_layers: int = 40, cross_attn_norm: bool = True, qk_norm: str | None = 'rms_norm_across_heads', eps: float = 1e-06, image_dim: int | None = None, added_kv_proj_dim: int | None = None, rope_max_seq_len: int = 1024, pos_embed_seq_len: int | None = None, rope_temporal_skip_len: int = 8)
```

[Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_chronoedit.py#L523)

**Parâmetros:**

patch_size (`tuple[int]`, padrão `(1, 2, 2)`) : dimensões do patch 3D para incorporação de vídeo (t_patch, h_patch, w_patch).

num_attention_heads (`int`, padrão `40`) : Comprimento fixo para incorporações de texto.

attention_head_dim (`int`, padrão `128`) : O número de canais em cada head.

in_channels (`int`, padrão `16`) : O número de canais na entrada.

out_channels (`int`, padrão `16`) : O número de canais na saída.

text_dim (`int`, padrão `512`) : Dimensão de entrada para embeddings de texto.

freq_dim (`int`, padrão `256`) : Dimensão para embeddings de tempo sinusoidais.

ffn_dim (`int`, padrão `13824`) : Dimensão intermediária na rede feed-forward.

num_layers (`int`, padrão `40`) : O número de blocos de transformador a serem usados.

window_size (`tuple[int]`, padrão `(-1, -1)`) : Tamanho da janela para atenção local (-1 indica atenção global).

cross_attn_norm (`bool`, padrão `True`) : Ativa a normalização de atenção cruzada.

qk_norm (`bool`, padrão `True`) : Ativa a normalização de query/key.

eps (`float`, padrão `1e-6`) : Valor de epsilon para as camadas de normalização.

add_img_emb (`bool`, padrão `False`) : Se deve usar img_emb.

added_kv_proj_dim (`int`, *opcional*, padrão `None`) : O número de canais a serem usados para as projeções de chave e valor adicionadas. Se `None`, nenhuma projeção é usada.

Um modelo Transformer para dados semelhantes a vídeo usado no modelo ChronoEdit.

#### forward[[diffusers.ChronoEditTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: LongTensor, encoder_hidden_states: Tensor, encoder_hidden_states_image: typing.Optional[torch.Tensor] = None, return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None)
```

[Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_chronoedit.py#L644)

**Parâmetros:**

hidden_states (`torch.Tensor` de forma `(batch_size, num_channels, num_frames, height, width)`) : `hidden_states` de entrada.

timestep (`torch.LongTensor`) : Usado para indicar o passo de desruidamento.

encoder_hidden_states (`torch.Tensor` de forma `(batch_size, sequence_len, embed_dims)`) : Embeddings condicionais (embeddings calculados a partir das condições de entrada, como prompts) a serem usados.

encoder_hidden_states_image (`torch.Tensor`, *opcional*) : Incorporações de imagem condicionais para geração condicionada por imagem.

return_dict (`bool`, *opcional*, padrão `True`) : Indica se deve retornar um `~models.transformer_2d.Transformer2DModelOutput` em vez de uma tupla simples.

attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado para o `AttentionProcessor` conforme definido em `self.processor` em [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

**Retorna:**

Se `return_dict` for True, um `~models.transformer_2d.Transformer2DModelOutput` é retornado; caso contrário, uma `tuple` onde o primeiro elemento é o tensor da amostra.

O método forward do [ChronoEditTransformer3DModel](/docs/diffusers/main/pt/api/models/chronoedit_transformer_3d#diffusers.ChronoEditTransformer3DModel).

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L21)

**Parâmetros:**

sample (`torch.Tensor` de forma `(batch_size, num_channels, height, width)` ou `(batch size, num_vector_embeds - 1, num_latent_pixels)` se [Transformer2DModel](/docs/diffusers/main/pt/api/models/transformer2d#diffusers.Transformer2DModel) for discreto) : A saída dos estados ocultos condicionada à entrada `encoder_hidden_states`. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.

A saída de [Transformer2DModel](/docs/diffusers/main/pt/api/models/transformer2d#diffusers.Transformer2DModel).

