Phase 12 - Lesson 17
Modelos de Vídeo-Linguagem: Tokens Temporais e Grounding
O vídeo não é uma pilha de fotos. Um clipe de 5 segundos possui ordenação causal, verbos de ação e tempo de eventos que um modelo de imagem não pode representar. O Video-LLaMA (Zhang et al., junho de 2023) lançou o primeiro LLM de vídeo aberto com grounding de áudio-visual. VideoChat e Video-LLaVA escalaram o padrão. Em 2025, o TMRoPE do Qwen2.5-VL eliminou a diferença em relação aos modelos proprietários de ponta. Cada sistema resolveu os tokens temporais de forma diferente — Q-former por clipe, concat-pool por quadro, TMRoPE por token. Esta lição lê os padrões, constrói um amostrador de quadros uniforme vs. dinâmico e avalia em tarefas de grounding temporal.
Tipo: Construir Linguagens: Python (biblioteca padrão, amostrador de quadros + avaliador de grounding temporal) Pré-requisitos: Fase 12 · 08 (LLaVA-OneVision) Tempo: ~180 minutos
Objetivos de Aprendizado
- Explicar por que a codificação posicional temporal altera o desempenho do VLM de vídeo independentemente do codificador de visão.
- Comparar a amostragem de quadros uniforme, baseada em FPS dinâmico e orientada a eventos em relação a tokens por segundo vs. acurácia de grounding.
- Descrever os designs de Q-former-por-clipe (Video-LLaMA) vs. pooling-por-quadro (Video-LLaVA) vs. M-RoPE-por-token (Qwen2.5-VL).
- Nomear os quatro benchmarks de vídeo: VideoMME, TempCompass, EgoSchema, Video-MMMU.
O Problema
Um vídeo de 1 minuto a 30 FPS tem 1800 quadros. Com 196 tokens visuais por quadro (ViT-B a 224), isso resulta em 352k tokens — maior do que qualquer contexto de LLM da era de 2024.
Existem três estratégias de redução:
- Subamostrar quadros (1-8 FPS dependendo do conteúdo).
- Agrupar (pool) agressivamente os tokens de patch de cada quadro (pool bilinear 3x3 ou 4x4).
- Comprimir por meio de um Q-former que recebe um clipe de 16 quadros e gera 64 tokens.
Cada compensação é diferente. A subamostragem perde detalhes temporais. O pooling perde detalhes espaciais. O Q-former perde um pouco de ambos, mas economiza tokens.
A codificação de posição temporal é o outro eixo: como o modelo sabe que o quadro 5 veio antes do quadro 6? As opções incluem RoPE temporal 1D simples (Video-LLaMA), embeddings temporais aprendidos (Video-LLaVA) e TMRoPE (Qwen2.5-VL, 3D completo).
O Conceito
Video-LLaMA: Q-former per clip + audio branch
O Video-LLaMA (2023) foi o primeiro video-LLM aberto. Arquitetura:
- Clipes de 16 quadros a 2 FPS (portanto, 8 segundos).
- Recursos de ViT por quadro -> Video Q-former que realiza atenção cruzada em todos os 16 quadros -> 32 consultas aprendidas -> LLM.
- Ramo de áudio paralelo: forma de onda -> codificador de áudio ImageBind -> Audio Q-former -> 32 consultas -> LLM.
Força: raciocínio conjunto áudio-visual. Fraqueza: comprimento de clipe fixo, sem grounding de tempo arbitrário.
VideoChat and Video-LLaVA
O VideoChat manteve a ideia do Video-LLaMA, mas removeu o áudio e simplificou. O Video-LLaVA (Lin et al., 2023) treinou um único codificador visual em imagens e quadros de vídeo ("alinhamento antes da projeção"), proporcionando uma representação unificada. Ambos consistem em um codificador CLIP congelado + MLP + LLM.
Nenhum deles lida com vídeos longos. Ambos são sistemas de 8 a 16 quadros.
Qwen2.5-VL and TMRoPE
O Qwen2.5-VL introduziu o TMRoPE — Temporal-Modality Rotary Position Embedding. Cada token de patch carrega uma posição (t, h, w), onde t é a marca de tempo real (não o índice do quadro).
Principais diferenças em relação ao embedding temporal simples:
- Tempo absoluto, não índice. O modelo vê "aos 4.2 segundos" e não "no quadro 15."
- Rotação por token, não por clipe. Cada token visual rotaciona de forma independente por sua marca de tempo.
- Compatível com FPS dinâmico. Se você amostrar a 2 FPS aqui e a 4 FPS ali, o TMRoPE lida com o espaçamento irregular nativamente.
O TMRoPE permite consultas como "em qual segundo o gato pula?". O modelo pode responder "aos 4.2 segundos". O Video-LLaMA só conseguia responder "no início do clipe".
Frame sampling strategies
Uniforme: amostra N quadros uniformemente ao longo da duração. Simples, perde picos de movimento.
FPS dinâmico: amostra adaptativamente com base na intensidade do movimento. O fluxo óptico ou a diferenciação de quadros seleciona segmentos de alto movimento para uma amostragem mais densa. O Qwen2.5-VL treina com isso.
Orientada a eventos: executa um detector leve e amostra mais onde a ação acontece. Usado pelo VideoAgent.
Quadro-chave + contexto: amostra nos limites de cena + alguns quadros adjacentes. Usado para conteúdo cinematográfico.
Pooling per frame
A 1 FPS e 576 tokens por quadro, um clipe de 5 minutos representa 172.800 tokens. É viável com o contexto de 128k do Qwen2.5-VL-72B, mas é caro.
O pooling bilinear 3x3 reduz para 64 tokens por quadro -> 19.200 tokens para 5 minutos. O ponto ideal para a maioria das tarefas.
Agrupe de forma mais agressiva (6x6 -> 16 tokens por quadro) para fluxos de trabalho de agentes onde o detalhe espacial importa menos.
The four video benchmarks
- VideoMME: compreensão abrangente de vídeo, curto + médio + longo.
- TempCompass: raciocínio temporal de granularidade fina, perguntas do tipo "antes" / "depois".
- EgoSchema: vídeo de primeira pessoa de longo horizonte.
- Video-MMMU: perguntas de vídeo multidisciplinares e multimodais.
Uma avaliação completa de video-VLM atinge os quatro. Eles testam diferentes eixos — o TempCompass foca em ordenação, o EgoSchema em raciocínio de mais de 3 minutos e o VideoMME abrange várias durações.
Grounding output formats
Formatos de saída para grounding temporal:
- Texto livre: "O gato pula por volta da marca de 4 segundos." Fácil de analisar, mas impreciso.
- JSON estruturado:
{"event": "jump", "start": 4.1, "end": 4.3}. O Qwen2.5-VL treina isso. - Baseado em tokens: tokens especiais
<time>4.1</time>intercalados com a resposta. Formato interno do Qwen2.5-VL.
O formato baseado em tokens é o mais preciso para uso posterior. O formato de saída JSON do Qwen2.5-VL é analisado diretamente.
2026 best practice
Para VLMs de vídeo em 2026:
- Codificador: SigLIP 2 com M-RoPE ou TMRoPE (Qwen2.5-VL).
- Amostragem de quadros: FPS dinâmico (1-4 dependendo do movimento) com limite máximo de quadros.
- Pooling por quadro: bilinear 3x3.
- Saída: JSON estruturado com os campos de tempo e evento.
- Benchmarks: VideoMME + TempCompass para geral; EgoSchema para longo horizonte.
Uso
O arquivo code/main.py inclui:
- Amostradores de quadros uniforme e por FPS dinâmico.
- Um avaliador de grounding temporal simples: dada uma marca de tempo T real de um evento e uma saída do modelo, calcula a acurácia com uma tolerância.
- Uma comparação entre Video-LLaMA (16 quadros, Q-former), Video-LLaVA (8 quadros, MLP) e Qwen2.5-VL (FPS dinâmico + TMRoPE).
Envie
Esta lição produz outputs/skill-video-vlm-frame-planner.md. Dada uma tarefa de vídeo (monitoramento, reconhecimento de ação, grounding temporal, sumarização), ela seleciona o amostrador de quadros, o fator de pooling, o formato de saída e o nível de acurácia esperado.
Exercícios
Para uma demonstração de culinária de 3 minutos, escolha entre FPS uniforme vs. dinâmico. Justifique com uma contagem de tokens.
O que especificamente o TMRoPE adiciona que uma tabela simples de embedding temporal não consegue fazer?
Escreva um esquema JSON para grounding temporal que um VLM possa aprender a emitir. Inclua casos de erro.
Leia a Seção 3 do Video-LLaVA sobre "Alignment Before Projection." Por que isso é melhor do que treinar codificadores de imagem e vídeo separados?
Com base no painel de líderes do VideoMME, qual é a diferença entre o melhor modelo aberto e o melhor modelo proprietário em 2026? Quanto dessa diferença é atribuível à codificação temporal vs. escala do LLM base?
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Temporal grounding | "Respostas localizadas no tempo" | O VLM gera um intervalo de timestamps específico para quando um evento ocorre |
| TMRoPE | "RoPE Multimodal-Temporal" | Posição rotativa 3D com timestamps absolutos, utilizada pelo Qwen2.5-VL |
| Dynamic FPS | "Amostragem ciente de movimento" | Amostra mais quadros em segmentos de alto movimento e menos em segmentos estáticos |
| Frame pooling | "Compressão espacial por quadro" | Reduz patches por quadro com interpolação bilinear antes do LLM |
| Video Q-former | "Compressor de clipe" | Gargalo de atenção cruzada que mapeia N quadros para K consultas aprendidas |
| VideoMME | "Benchmark de vídeo" | Benchmark abrangente de vídeo curto/médio/longo, com mais de 2500 amostras |