Skip to content

IsaacAlves7/video-generation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

đŸ§ đŸŽ„đŸŽŹ Video Generation Landscape

Uma coisa importante para começar: modelos como o Seedance 2.0, o Veo, o Sora, o Kling ou o Wan normalmente não são apenas uma "LLM que gera vídeo". Na verdade, eles são sistemas multimodais compostos por vårios modelos especializados trabalhando juntos. A LLM participa principalmente da compreensão do prompt, mas a geração visual em si costuma ser realizada por arquiteturas de difusão, transformers multimodais e módulos temporais específicos para vídeo.

O que o Seedance 2.0 Ă© por baixo, Ă© um Video Diffusion Transformer (similar ao DiT) com geração conjunta de ĂĄudio+vĂ­deo. Para replicar algo nesse nĂ­vel vocĂȘ precisaria de:

  • ~50.000–500.000 horas de vĂ­deo rotulado de alta qualidade
  • Clusters de A100/H100 por semanas ou meses
  • Time de dezenas de pesquisadores
  • Orçamento estimado: $5M–$50M sĂł em compute

Isso estĂĄ fora do alcance de uma pessoa ou equipe pequena, antes de qualquer cĂłdigo: VocĂȘ nĂŁo pode criar um modelo "baseado no Seedance 2.0" — os pesos, arquitetura interna e dados de treinamento sĂŁo propriedade fechada do ByteDance. NĂŁo hĂĄ como clonar, fazer fine-tune ou destilação do Seedance 2.0 legalmente, porque os pesos nunca foram publicados.

O que vocĂȘ realmente quer Ă© provavelmente isso: rodar um modelo de geração de vĂ­deo open-source de graça, no seu prĂłprio servidor, sem pagar API nenhuma. Isso Ă© totalmente viĂĄvel. Os melhores candidatos hoje:

Modelo Qualidade VRAM mínima Licença
Wan 2.1 (Alibaba) ⭐⭐⭐⭐⭐ 8 GB Apache 2.0 ✅
HunyuanVideo (Tencent) ⭐⭐⭐⭐⭐ 24 GB Open ✅
CogVideoX-5B (Zhipu) ⭐⭐⭐⭐ 16 GB Apache 2.0 ✅
Open-Sora ⭐⭐⭐ 12 GB Apache 2.0 ✅

O Wan 2.1 Ă© o mais prĂłximo em qualidade do Seedance 2.0 e roda em GPUs acessĂ­veis (RTX 3080/4070). É viĂĄvel construir a mesma aplicação FastAPI + React, mas apontando para o Wan 2.1 rodando 100% local, sem nenhuma API externa.

đŸ€— Diffusers

“Diffusers” pode significar duas coisas dependendo do contexto, mas na prĂĄtica moderna de IA quase sempre se refere Ă  biblioteca da Hugging Face chamada Diffusers, que Ă© um framework open-source para construir, treinar e usar modelos de difusĂŁo.

Para entender isso de forma direta, pense que “diffusion model” Ă© a ideia matemĂĄtica e algorĂ­tmica (o processo de adicionar e remover ruĂ­do), enquanto “diffusers” Ă© a implementação prĂĄtica disso em cĂłdigo, como uma espĂ©cie de kit de ferramentas pronto para vocĂȘ montar, rodar e modificar esses modelos sem ter que reescrever toda a matemĂĄtica e infraestrutura do zero.

A biblioteca Diffusers da Hugging Face organiza os modelos de difusĂŁo como blocos reutilizĂĄveis. Em vez de vocĂȘ lidar manualmente com todo o pipeline — scheduler de ruĂ­do, rede neural de denoising, encoder de texto, VAE de compressĂŁo e decodificação — ela separa tudo em componentes bem definidos. Por exemplo, o “scheduler” controla como o ruĂ­do Ă© removido passo a passo (existem vĂĄrias estratĂ©gias diferentes disso), o “model” geralmente Ă© a rede neural que aprende a prever o ruĂ­do ou a imagem limpa (U-Net, Transformer ou hĂ­bridos), e o “pipeline” Ă© o encaixe final que conecta texto → ruĂ­do → imagem/vĂ­deo final.

EntĂŁo quando alguĂ©m fala “estou usando diffusers”, normalmente quer dizer que estĂĄ usando essa biblioteca para rodar modelos como Stable Diffusion, Stable Video Diffusion, ou variantes de geração de imagem e vĂ­deo baseadas em difusĂŁo. Ela virou um padrĂŁo de facto porque simplifica muito a experimentação: vocĂȘ consegue trocar componentes, ajustar schedulers, testar checkpoints diferentes e atĂ© treinar ou fine-tunar modelos sem precisar reconstruir toda a arquitetura do zero.

Agora, se vocĂȘ estiver pensando no sentido mais teĂłrico da palavra “diffusers” (no plural, como conceito), algumas pessoas usam informalmente para se referir aos prĂłprios modelos de difusĂŁo em si, como “diffusion models”, mas isso Ă© mais gĂ­ria do que termo tĂ©cnico formal. O termo correto mesmo continua sendo “diffusion models”, enquanto “Diffusers” com D maiĂșsculo geralmente aponta para a biblioteca da Hugging Face.

!pip install diffusers==0.11.1

O ponto importante Ă© que “diffusers” nĂŁo Ă© um tipo de modelo novo nem uma arquitetura, e sim uma camada de abstração que facilita trabalhar com modelos de difusĂŁo existentes, quase como um framework que padroniza como vocĂȘ monta e executa esse tipo de IA.

Todo modelo de difusão não é um transformer, e essa confusão é bem comum porque hoje muitos dos modelos mais famosos de difusão acabaram adotando transformers como backbone, mas isso é uma escolha de arquitetura, não uma regra do método.

O que define um modelo de difusĂŁo nĂŁo Ă© o tipo de rede neural usada por dentro, e sim o processo matemĂĄtico de aprendizado e geração. Ele Ă© definido pelo fato de que vocĂȘ pega um dado real (imagem, ĂĄudio, vĂ­deo), vai adicionando ruĂ­do progressivamente atĂ© destruir completamente a estrutura, e depois treina um modelo para aprender o caminho inverso, isto Ă©, remover o ruĂ­do passo a passo atĂ© reconstruir o dado original a partir de uma amostra aleatĂłria. Esse “vai e volta” entre ruĂ­do e reconstrução Ă© o coração da difusĂŁo. Isso pode ser implementado com vĂĄrias arquiteturas diferentes.

Historicamente, os primeiros modelos de difusĂŁo de alta performance em imagens, como o DDPM (Denoising Diffusion Probabilistic Models), usavam principalmente U-Nets com convoluçÔes, nĂŁo transformers. Esses U-Nets sĂŁo redes convolucionais com conexĂ”es de skip connections, muito boas para visĂŁo computacional porque preservam detalhes espaciais enquanto refinam a imagem em mĂșltiplas escalas. Inclusive, atĂ© hoje, muitos modelos de difusĂŁo populares ainda usam U-Net como base, porque ele Ă© eficiente e extremamente eficaz para lidar com estrutura espacial.

O transformer entra como uma evolução arquitetural possĂ­vel, nĂŁo obrigatĂłria. Quando vocĂȘ substitui ou combina o U-Net com blocos de atenção baseados em transformer, vocĂȘ ganha uma capacidade melhor de modelar dependĂȘncias globais, especialmente Ăștil para geração de imagens de alta resolução, vĂ­deos ou tarefas onde o contexto distante importa muito. É por isso que modelos mais recentes, como os usados em geração de vĂ­deo ou text-to-image de Ășltima geração, muitas vezes sĂŁo hĂ­bridos ou totalmente baseados em transformer.

EntĂŁo a forma mais correta de entender isso Ă©: difusĂŁo Ă© o “mĂ©todo de geração”, enquanto transformer, U-Net, CNN e outros sĂŁo “formas de implementar o cĂ©rebro que aprende esse mĂ©todo”. VocĂȘ pode ter um modelo de difusĂŁo com CNN puro, com U-Net, com transformer puro, ou com combinaçÔes hĂ­bridas. O que muda nĂŁo Ă© o princĂ­pio da difusĂŁo, mas a capacidade e o tipo de padrĂŁo que o modelo consegue aprender dentro desse processo de remoção de ruĂ­do.

Na verdade, a biblioteca Diffusers Ă© apenas uma ferramenta de software. Ela nĂŁo Ă© necessĂĄria para gerar imagens, audios ou vĂ­deos por IA. O que realmente importa Ă© o modelo e a arquitetura por trĂĄs dele.

Por exemplo, vocĂȘ pode usar modelos de difusĂŁo implementados diretamente em PyTorch ou TensorFlow sem passar pela biblioteca Diffusers. Foi assim que muitos projetos surgiram originalmente. Os pesquisadores implementavam toda a lĂłgica de treinamento, inferĂȘncia, schedulers e redes neurais manualmente. A biblioteca Diffusers veio depois para padronizar e simplificar esse trabalho.

Além disso, nem toda IA generativa de imagem ou vídeo usa difusão. Existem outras famílias de modelos. As GANs (Generative Adversarial Networks) dominaram boa parte da geração de imagens antes da popularização da difusão. Modelos como StyleGAN geram rostos extremamente realistas sem usar difusão. Eles funcionam através de uma competição entre uma rede geradora e uma discriminadora.

Outra abordagem sĂŁo os modelos autoregressivos. Em vez de começar com ruĂ­do e remover esse ruĂ­do, eles geram conteĂșdo token por token, de forma semelhante aos LLMs gerando texto palavra por palavra. Alguns modelos modernos de imagem e vĂ­deo seguem essa linha, tratando patches visuais como tokens.

Também existem os modelos baseados em fluxos (normalizing flows), VAEs (Variational Autoencoders) e arquiteturas híbridas que combinam vårias técnicas. Um VAE, por exemplo, aprende um espaço latente comprimido e pode gerar novas imagens amostrando desse espaço.

Mais recentemente, surgiram os chamados "diffusion transformers" e também modelos puramente transformer para geração visual. Em vez de uma U-Net tradicional, usam mecanismos de atenção em larga escala para gerar imagens ou vídeos. Alguns sistemas de ponta atuais utilizam arquiteturas híbridas que misturam transformers, espaços latentes e processos de difusão.

Para vĂ­deo, alĂ©m da difusĂŁo, existem modelos que aprendem diretamente a dinĂąmica temporal, modelos autoregressivos que geram um frame apĂłs o outro e sistemas baseados em world models, que tentam aprender uma representação do funcionamento do mundo para prever sequĂȘncias visuais futuras.

EntĂŁo, se sua pergunta Ă© "preciso da biblioteca Diffusers para gerar imagens ou vĂ­deos?", a resposta Ă© definitivamente nĂŁo. VocĂȘ pode:

  • Implementar o modelo diretamente em PyTorch ou TensorFlow.
  • Usar GANs.
  • Usar VAEs.
  • Usar modelos autoregressivos.
  • Usar transformers visuais puros.
  • Usar arquiteturas hĂ­bridas.
  • Utilizar engines proprietĂĄrias desenvolvidas internamente por empresas.

A biblioteca Diffusers apenas facilita o trabalho com modelos de difusĂŁo. Ela estĂĄ para os modelos de difusĂŁo mais ou menos como um framework web estĂĄ para uma aplicação web: extremamente Ăștil, muito popular, mas nĂŁo Ă© a Ășnica maneira de construir ou executar o sistema.

Se quiser, dĂĄ pra ir um nĂ­vel mais fundo e comparar diretamente por que transformers começaram a dominar certos tipos de difusĂŁo (principalmente vĂ­deo e modelos multimodais) e onde eles ainda perdem para U-Nets em eficiĂȘncia e custo.

🧠 DiT - Diffusion Transformer

O DiT (Diffusion Transformer) é uma das evoluçÔes mais importantes dos modelos de difusão modernos e estå diretamente relacionado ao surgimento de geradores de vídeo extremamente avançados como Sora, Veo, Wan, Kling e outros.

Para entender o DiT, primeiro Ă© preciso lembrar como os modelos de difusĂŁo nasceram.

Os primeiros modelos de difusĂŁo usavam predominantemente CNNs (Convolutional Neural Networks), especialmente arquiteturas chamadas U-Net. Durante anos, o pipeline era algo parecido com:

Prompt
   ↓
Encoder de Texto
   ↓
U-Net
   ↓
DifusĂŁo
   ↓
Imagem

O U-Net era responsĂĄvel por olhar para o ruĂ­do e decidir como removĂȘ-lo passo a passo.

Funcionava muito bem para imagens.

Mas quando começaram a surgir modelos gigantescos, vídeos longos e cenas complexas, apareceram limitaçÔes.

As CNNs são excelentes para detectar padrÔes locais.

Por exemplo:

  • bordas;
  • texturas;
  • pequenas regiĂ”es da imagem.

Mas elas tĂȘm mais dificuldade em entender relaçÔes globais.

Imagine uma cena:

Castelo
           ↓
Montanha
           ↓
DragĂŁo voando

O modelo precisa compreender a relação entre todos esses elementos simultaneamente.

É aí que entram os Transformers.

Os Transformers revolucionaram primeiro o NLP.

Depois foram adaptados para visĂŁo computacional.

Primeiro vieram os:

  • Vision Transformers (ViT)
  • Swin Transformers
  • Video Transformers

Depois alguém teve a ideia:

"E se substituirmos o U-Net inteiro por um Transformer?"

Nasceu o DiT.

Em vez de processar a imagem usando convoluçÔes, o modelo divide a imagem em pequenos blocos chamados patches.

Imagine uma imagem:

████████
████████
████████
████████

Ela é quebrada em pedaços:

[Patch 1]
[Patch 2]
[Patch 3]
...

Cada patch vira um token.

Exatamente como uma palavra vira um token em uma LLM.

É por isso que existe uma forte conexão entre:

LLMs
Vision Transformers
DiTs

Todos trabalham sobre tokens.

Um GPT pode receber:

Batman
walks
in
Gotham

Um DiT recebe:

Patch 1
Patch 2
Patch 3
Patch 4
...

A magia acontece na Self-Attention.

O Transformer consegue perguntar:

"Quais partes da imagem sĂŁo importantes para entender esta outra parte?"

Isso permite enxergar dependĂȘncias globais.

Por exemplo:

Olho esquerdo
        ↔
Olho direito

Rosto
        ↔
Corpo

Pessoa
        ↔
Sombra

Tudo ao mesmo tempo.

Não existe mais aquela limitação local típica das convoluçÔes.

Nos vĂ­deos a coisa fica ainda mais interessante.

Imagine um tensor:

Largura
Altura
Tempo

Ou:

X
Y
T

Agora os patches também possuem dimensão temporal.

O DiT pode observar:

Frame 1
Frame 2
Frame 3
Frame 4

simultaneamente.

Ele consegue entender:

  • movimento;
  • velocidade;
  • direção;
  • consistĂȘncia temporal.

É uma das razĂ”es pelas quais os vĂ­deos modernos parecem muito mais estĂĄveis.

Antes:

Frame 1 → Pessoa A

Frame 2 → Pessoa B

Frame 3 → Pessoa C

O personagem mudava constantemente.

Com Transformers temporais e DiTs:

Frame 1 → Pessoa A

Frame 2 → Pessoa A

Frame 3 → Pessoa A

A identidade Ă© preservada com muito mais eficiĂȘncia.

Outra vantagem Ă© a escalabilidade.

Existe uma observação interessante na pesquisa atual:

Quanto maior o Transformer, melhor o DiT costuma escalar.

Isso lembra muito o comportamento das LLMs.

VocĂȘ aumenta:

  • parĂąmetros;
  • dados;
  • GPUs;
  • tempo de treinamento.

E o modelo continua melhorando.

Por isso muitos laboratĂłrios abandonaram progressivamente as U-Nets para modelos baseados em Transformer.

O pipeline moderno costuma ser algo parecido com:

Prompt
   ↓
Text Encoder
   ↓
Embeddings
   ↓
DiT
   ↓
DifusĂŁo Latente
   ↓
Decoder
   ↓
Imagem ou VĂ­deo

No caso de um gerador como o Seedance 2.0, vocĂȘ pode imaginar algo ainda mais sofisticado:

Prompt
   ↓
LLM
   ↓
Entendimento semĂąntico
   ↓
Embeddings multimodais
   ↓
DiT Espaço-Temporal
   ↓
DifusĂŁo de vĂ­deo
   ↓
Refinamento
   ↓
Upscaling
   ↓
VĂ­deo Final

O motivo de tanta gente no mercado de IA estar falando de DiTs atualmente é que eles representam para a geração visual algo semelhante ao que os Transformers representaram para o NLP.

Da mesma forma que o GPT substituiu arquiteturas antigas de linguagem, os DiTs estão gradualmente substituindo arquiteturas tradicionais de difusão baseadas em convolução.

Por isso, quando vocĂȘ vĂȘ vĂ­deos extremamente consistentes gerados por modelos de Ășltima geração, existe uma grande chance de haver um Diffusion Transformer fazendo boa parte do trabalho pesado por trĂĄs dos panos.

Deixa eu clarificar como o DiT realmente funciona: A divisĂŁo real no DiT para vĂ­deo: O conditioning (o que vocĂȘ passa como entrada para guiar a geração) Ă© que varia, nĂŁo o tipo de modelo. Um mesmo modelo DiT pode aceitar mĂșltiplos tipos de condicionamento:

Tipos de condicionamento:

Text conditioning (T2V): O prompt de texto é codificado por um encoder de linguagem (T5, CLIP, etc.) e injetado no DiT via cross-attention. O modelo aprende a associar descriçÔes textuais com padrÔes visuais.

Image conditioning (I2V): Uma imagem de referĂȘncia Ă© codificada por um VAE e injetada como contexto visual. O modelo aprende a "animar" ou "continuar" a partir daquela imagem.

Ambos juntos (multimodal): É o que o Seedance 2.0, Wan 2.1 e HunyuanVideo fazem — o mesmo backbone DiT recebe texto + imagem + áudio simultñneamente via diferentes mecanismos de atenção.

Como o DiT processa tudo isso:

Entrada bruta
     │
     ▌
  VAE Encoder  ───────────────────────────────────┐
(comprime vídeo/imagem em espaço latente)         │
     │                                            │
     ▌                                            ▌
Latent Tokens                           Conditioning Tokens
(o vĂ­deo virou patches)           (texto via T5, imagem via CLIP)
     │                                            │
     └──────────────┬─────────────────────────────┘
                    ▌
             DiT Blocks
        (self-attention + cross-attention)
                    │
                    ▌
             VAE Decoder
        (latente → vídeo final)

Os dois componentes que vocĂȘ treina separadamente

Componente O que faz Treina separado?
VAE Comprime e reconstrói frames Sim, geralmente pré-treinado
DiT backbone Aprende a fazer diffusion guiado Sim, Ă© o nĂșcleo
Text encoder Entende prompts Geralmente congelado (T5/CLIP pré-treinados)

EntĂŁo quando vocĂȘ vĂȘ "modelo T2V" e "modelo I2V" no Wan ou CogVideoX, na prĂĄtica sĂŁo pesos diferentes do mesmo backbone DiT, treinados com estratĂ©gias de conditioning diferentes — nĂŁo arquiteturas separadas.

Qual parte vocĂȘ quer aprofundar — a arquitetura do DiT em si, o VAE, ou como estruturar o pipeline de treinamento?

đŸŽ„ Video Diffusion Transformer

O Video Diffusion Transformer (Ă s vezes abreviado como VideoDiT ou VDT em alguns trabalhos) Ă© uma arquitetura de modelo generativo que combina duas ideias centrais da IA moderna: os modelos de difusĂŁo e os transformers, aplicados especificamente Ă  geração de vĂ­deo. Para entender isso de forma intuitiva, dĂĄ pra pensar que ele Ă© uma evolução natural dos modelos que geram imagens com alta qualidade, mas estendidos para lidar com a dimensĂŁo extra do tempo, ou seja, nĂŁo apenas “o que aparece em cada frame”, mas tambĂ©m “como isso evolui de um frame para o outro de maneira coerente”.

Os modelos de difusĂŁo funcionam de maneira conceitual como um processo de “desruĂ­do”. Durante o treinamento, eles pegam dados reais (imagens ou vĂ­deos), adicionam ruĂ­do progressivamente atĂ© que tudo vire algo parecido com estĂĄtica aleatĂłria, e depois aprendem a inverter esse processo, ou seja, a reconstruir o conteĂșdo original a partir do ruĂ­do. Isso permite que, na geração, vocĂȘ comece com ruĂ­do puro e o modelo vĂĄ refinando passo a passo atĂ© surgir uma imagem ou vĂ­deo coerente. O ponto-chave aqui Ă© que isso nĂŁo acontece de uma vez sĂł, mas em vĂĄrias etapas iterativas, o que ajuda na qualidade final.

JĂĄ o transformer entra como a espinha dorsal da arquitetura que decide como esse “desruĂ­do” acontece de forma estruturada. Transformers sĂŁo excelentes em modelar relaçÔes globais em dados, porque trabalham com mecanismos de atenção, onde cada parte do dado pode “olhar” para outras partes e entender contexto. Em imagens isso jĂĄ funciona bem, mas em vĂ­deos isso se torna ainda mais importante, porque agora vocĂȘ nĂŁo estĂĄ lidando sĂł com pixels em uma grade 2D, mas tambĂ©m com consistĂȘncia temporal entre frames. O Video Diffusion Transformer usa essa capacidade de atenção para entender nĂŁo sĂł o espaço (o que estĂĄ na imagem), mas tambĂ©m o tempo (como isso muda de frame para frame), garantindo continuidade visual, movimento coerente e identidade estĂĄvel de objetos.

Na prĂĄtica, o que diferencia esse tipo de modelo de abordagens mais antigas de geração de vĂ­deo Ă© que ele nĂŁo tenta gerar o vĂ­deo como uma sequĂȘncia de imagens independentes, nem usa exclusivamente redes convolucionais tradicionais que tĂȘm dificuldade em capturar dependĂȘncias de longo alcance. Em vez disso, ele trata o vĂ­deo como uma sequĂȘncia estruturada de tokens, algo parecido com linguagem, onde cada “token” pode representar patches de imagem ao longo do tempo. Isso permite que o modelo aprenda relaçÔes complexas, como um personagem mantendo sua aparĂȘncia enquanto se move, iluminação mudando de forma consistente ou objetos interagindo de maneira fisicamente plausĂ­vel.

Outro ponto importante é que o Video Diffusion Transformer geralmente opera em um espaço latente comprimido, e não diretamente nos pixels brutos. Isso reduz a complexidade computacional e permite trabalhar com vídeos mais longos ou resoluçÔes maiores. O modelo primeiro aprende uma representação comprimida do vídeo, aplica o processo de difusão nesse espaço mais eficiente e depois reconstrói o resultado final em pixels através de um decodificador.

No fundo, ele representa uma convergĂȘncia de duas linhas fortes da IA moderna: a capacidade dos modelos de difusĂŁo de gerar alta qualidade e diversidade, e a capacidade dos transformers de modelar dependĂȘncias globais complexas. Quando vocĂȘ junta essas duas coisas no domĂ­nio temporal do vĂ­deo, vocĂȘ obtĂ©m um sistema que nĂŁo sĂł gera imagens bonitas, mas tambĂ©m consegue “simular” uma continuidade visual convincente, que Ă© justamente o grande desafio da geração de vĂ­deo por IA.

O que Ă© realisticamente possĂ­vel fazer

Existem 3 caminhos viĂĄveis dependendo do seu objetivo real:

Caminho 1 — Fine-tune de um modelo open-source (semanas, ~$500–2000 em GPU): Pegar o Wan 2.1 ou CogVideoX e especializar em um estilo/domínio específico com seus próprios dados. Resultado: modelo seu, customizado, rodando local.

Caminho 2 — Construir um modelo pequeno do zero (meses, viĂĄvel com 1 GPU): Implementar um Video Diffusion Transformer simples com PyTorch, treinar em um dataset pĂșblico como WebVid ou Panda-70M. Qualidade bem abaixo do Seedance, mas Ă© seu modelo, vocĂȘ entende cada camada.

Caminho 3 — Distilação de conhecimento de open-sources (meses): Usar modelos open como "professores" para treinar um modelo menor e mais eficiente. Legalmente viável se os professores forem modelos com licença permissiva.

Qual desses caminhos faz mais sentido para vocĂȘ? E qual Ă© o objetivo final — aprender a fundo, ter um modelo para produção, ou especializar em um domĂ­nio especĂ­fico? Isso muda completamente o que vale a pena construir.

Quando vocĂȘ instala um sistema open source de geração de vĂ­deo localmente, como um pipeline baseado em Diffusers, Wan ou CogVideoX, o processo começa muito antes da geração. Primeiro vocĂȘ precisa do ambiente: Python, CUDA, drivers NVIDIA, PyTorch, bibliotecas de inferĂȘncia e os pesos do modelo. Os pesos sĂŁo os arquivos gigantescos que armazenam o conhecimento aprendido durante o treinamento. Dependendo do modelo, eles podem ocupar dezenas ou centenas de gigabytes.

Após a instalação, o modelo não "sabe gerar vídeos" da forma como um programador escreveria um algoritmo tradicional. O que ele possui é uma enorme quantidade de parùmetros numéricos aprendidos durante o treinamento. Durante esse treinamento, bilhÔes de imagens, vídeos e descriçÔes textuais foram apresentados ao sistema. O modelo aprendeu relaçÔes estatísticas extremamente complexas entre palavras, conceitos, objetos, movimentos, iluminação, cùmeras, estilos artísticos, física aparente e comportamento visual.

Quando vocĂȘ escreve um prompt como:

"Um cavaleiro medieval caminhando em uma floresta ao amanhecer, cĂąmera cinematogrĂĄfica, neblina suave."

A primeira etapa geralmente passa por um encoder de texto. Muitas arquiteturas modernas usam algo semelhante a uma LLM compacta ou um encoder derivado de transformers. O texto Ă© transformado em embeddings.

Um embedding é uma representação vetorial.

Em vez de armazenar:

cavaleiro
floresta
amanhecer

o sistema converte tudo em milhares de nĂșmeros.

Algo conceitualmente parecido com:

[0.1532, -0.7821, 0.9911, ...]

Esses vetores carregam significado semĂąntico.

O modelo aprende que:

rei ≈ rainha
homem ≈ mulher
cachorro ≈ lobo

ocupam regiÔes próximas do espaço vetorial.

O prompt inteiro vira uma estrutura matemĂĄtica gigantesca.

A partir daí começa a parte mais interessante.

Muita gente imagina que o modelo desenha quadro por quadro.

Na realidade, os modelos modernos de difusĂŁo fazem quase o oposto.

Eles começam com ruído puro.

Literalmente algo parecido com televisĂŁo sem sinal.

Imagine um tensor multidimensional preenchido por valores aleatĂłrios.

O estado inicial se parece com:

█████████████
█████████████
█████████████
█████████████

Sem significado algum.

O trabalho do modelo Ă© remover o ruĂ­do gradualmente.

Por isso o nome "difusĂŁo".

Durante o treinamento, o modelo aprendeu duas tarefas:

Adicionar ruĂ­do.

Remover ruĂ­do.

Na inferĂȘncia ele executa apenas a segunda.

O processo ocorre em dezenas ou centenas de passos.

Em cada passo ele pergunta:

"Com base no prompt e no estado atual, qual parte deste ruĂ­do parece errada?"

EntĂŁo corrige.

Depois corrige novamente.

Depois corrige novamente.

Até que o ruído começa a adquirir forma.

Primeiro surgem manchas.

Depois silhuetas.

Depois objetos.

Depois detalhes.

Em um gerador de imagens, o resultado final seria uma Ășnica imagem.

Em vĂ­deo isso nĂŁo basta.

O sistema precisa resolver um problema muito mais difĂ­cil:

ConsistĂȘncia temporal.

Imagine gerar:

Frame 1
Frame 2
Frame 3
Frame 4

independentemente.

O cavaleiro poderia ter:

  • olhos diferentes;
  • armadura diferente;
  • cabelo diferente;
  • posição impossĂ­vel.

O vídeo pareceria um pesadelo psicodélico.

Então os modelos modernos trabalham em um espaço espaço-temporal.

Em vez de pensar:

altura
largura

eles pensam:

altura
largura
tempo

O vĂ­deo Ă© tratado como um bloco tridimensional.

Conceitualmente:

[x, y, t]

onde t representa o tempo.

A geração ocorre simultaneamente sobre mĂșltiplos quadros.

O modelo aprende que:

  • objetos devem permanecer os mesmos;
  • iluminação deve ser coerente;
  • movimentos devem ser suaves;
  • personagens devem manter identidade.

É aqui que entram transformers temporais e attention temporal.

A atenção temporal funciona como uma memória.

Quando o modelo estĂĄ gerando um quadro futuro, ele consegue olhar para quadros anteriores.

Algo como:

Frame 20
↓
consulta
↓
Frame 19
Frame 18
Frame 17

Isso evita mudanças bruscas.

Nos modelos mais modernos, como Seedance 2.0 e Sora, existe ainda uma compreensĂŁo implĂ­cita de fĂ­sica.

NĂŁo Ă© fĂ­sica real.

É física estatística aprendida.

O modelo observou tantos vídeos que aprendeu padrÔes como:

  • gravidade;
  • aceleração;
  • colisĂ”es;
  • reflexos;
  • comportamento da ĂĄgua;
  • fumaça;
  • tecidos.

Ele não resolve as equaçÔes de Newton explicitamente.

Ele aprendeu visualmente.

Da mesma forma que um ser humano consegue prever aproximadamente como uma bola cairĂĄ sem calcular integrais.

Outro componente importante Ă© o VAE (Variational Autoencoder).

VĂ­deos possuem uma quantidade absurda de pixels.

Gerar tudo diretamente seria inviĂĄvel.

Então o vídeo é comprimido para um espaço latente.

Pense nisso como:

VĂ­deo original
↓
CompressĂŁo inteligente
↓
Espaço latente
↓
DifusĂŁo
↓
Reconstrução
↓
VĂ­deo final

Em vez de trabalhar com milhÔes de pixels diretamente, o modelo trabalha em uma representação comprimida muito menor.

Isso reduz drasticamente o custo computacional.

Nos sistemas mais avançados, a geração tambĂ©m envolve mĂșltiplos estĂĄgios.

Primeiro surge um vídeo de baixa resolução.

Depois ocorre upscaling.

Depois refinamento.

Depois estabilização temporal.

Depois correçÔes de detalhes.

O vĂ­deo que vocĂȘ recebe normalmente passou por vĂĄrias redes neurais diferentes.

Quando o vĂ­deo termina de ser gerado, ele ainda nĂŁo estĂĄ necessariamente em formato MP4.

Internamente existe apenas uma sequĂȘncia de tensores.

O sistema converte esses tensores para imagens.

Depois as imagens sĂŁo codificadas em vĂ­deo usando codecs como H.264 ou H.265.

Somente entĂŁo surge o arquivo final.

Por baixo dos panos, um prompt aparentemente simples como:

"Batman caminhando em Gotham sob chuva intensa Ă  noite"

pode disparar bilhÔes de operaçÔes matemåticas.

Milhares de multiplicaçÔes matriciais.

Centenas de camadas transformer.

Dezenas de passos de difusĂŁo.

Gigabytes de dados transitando pela memĂłria da GPU.

E tudo isso acontece porque o modelo aprendeu uma representação matemåtica extremamente compacta do mundo visual a partir de enormes volumes de vídeos durante o treinamento.

A parte mais impressionante Ă© que o modelo nĂŁo possui uma biblioteca de vĂ­deos escondida que ele mistura. Ele nĂŁo procura um vĂ­deo de Batman e outro de chuva para colar um no outro. O que ele faz Ă© gerar uma nova sequĂȘncia visual a partir das distribuiçÔes estatĂ­sticas aprendidas. Cada quadro Ă© sintetizado matematicamente naquele momento, condicionado pelo prompt e pelos estados temporais anteriores. É por isso que duas execuçÔes do mesmo prompt podem produzir vĂ­deos diferentes, mas ainda coerentes com a descrição fornecida.

News:

Reddit Posts:

https://www.reddit.com/r/MachineLearning/comments/9wk188/p_biggan_generators_on_tf_hub_with_colab_demo/

Samples from github:

Samples Pretrained Models Code Paper Output Quality License
Memoji Model Code A Non Commercial CC
Deep Fakes demo (Download Pretrained model) Code A --
VideoGAN Download Model Code Tinyvideo -- --
Adversarial Video Generation Download Model Code 1511.05440 -- --
Improved VideoGAN -- Code 1711.11453 -- --

Work in progress:

If I missed your output sample/demo in this consolidation, just add and send a pull request. I will be more than happy to add it. Thanks!

Product Demos:

Arxiv-sanity