비디오-언어 모델(Video-Language Models): 시간 토큰(Temporal Tokens)과 그라운딩(Grounding)

비디오는 사진을 쌓아 놓은 것이 아닙니다. 5초짜리 클립에도 이미지 모델(image model)이 표현할 수 없는 인과적 순서, 동작 동사, 사건 발생 시간이 들어 있습니다. Video-LLaMA(Zhang et al., 2023년 6월)는 오디오-비주얼 그라운딩(audio-visual grounding)을 갖춘 최초의 공개 비디오 LLM(video-LLM)을 내놓았습니다. VideoChat과 Video-LLaVA는 이 패턴을 더 확장했습니다. 2025년에는 Qwen2.5-VL의 TMRoPE가 최전선 독점 모델(frontier proprietary models)과의 격차를 좁혔습니다. 각 시스템은 시간 토큰을 서로 다르게 풀었습니다. Video-LLaMA는 클립마다 Q-former를 쓰고, Video-LLaVA 계열은 프레임별 concat-pool을 쓰며, Qwen2.5-VL은 토큰마다 TMRoPE를 적용합니다. 이 lesson에서는 이러한 패턴을 읽고, 균등 샘플러(uniform sampler)와 동적 FPS(dynamic-FPS) 프레임 샘플러를 만든 뒤, 시간적 그라운딩(temporal grounding) 과제에서 평가합니다.

유형: Build 언어: Python (표준 라이브러리, 프레임 샘플러 + 시간적 그라운딩 평가기) 선수 지식: Phase 12 · 08 (LLaVA-OneVision) 예상 시간: 약 180분

학습 목표

  • 시간적 위치 인코딩(temporal positional encoding)이 비전 인코더(vision encoder)와 독립적으로 비디오 VLM 성능을 바꾸는 이유를 설명합니다.
  • 균등 샘플링, 동적 FPS, 이벤트 기반(event-driven) 프레임 샘플링을 초당 토큰 수(tokens-per-second)와 그라운딩 정확도 관점에서 비교합니다.
  • 클립별 Q-former(Video-LLaMA), 프레임별 풀링(pooled-per-frame, Video-LLaVA), 토큰별 M-RoPE(Qwen2.5-VL) 설계를 설명합니다.
  • 네 가지 비디오 벤치마크인 VideoMME, TempCompass, EgoSchema, Video-MMMU의 이름과 역할을 말할 수 있습니다.

문제

30 FPS의 1분짜리 비디오는 1,800프레임입니다. 프레임마다 196개의 비주얼 토큰(visual tokens)을 만든다고 가정하면, 예를 들어 224 해상도의 ViT-B에서는 총 352,000토큰이 됩니다. 이는 2024년대 LLM 문맥(context) 크기보다 큽니다.

이 문제를 줄이는 전략은 크게 세 가지입니다.

  1. 콘텐츠에 따라 1-8 FPS 정도로 프레임을 서브샘플링(subsample)합니다.
  2. 각 프레임의 패치 토큰(patch tokens)을 3x3 또는 4x4 양선형 풀링(bilinear pool)으로 강하게 압축합니다.
  3. 16프레임 클립을 받아 64토큰을 출력하는 Q-former로 압축합니다.

각 전략의 손실은 다릅니다. 서브샘플링은 시간적 세부 정보(temporal detail)를 잃습니다. 풀링은 공간적 세부 정보(spatial detail)를 잃습니다. Q-former는 둘을 조금씩 잃지만 토큰을 크게 아낍니다.

다른 축은 시간적 위치 인코딩입니다. 모델은 5번 프레임이 6번 프레임보다 먼저 왔다는 사실을 어떻게 알까요? 선택지는 Video-LLaMA의 단순한 1차원 시간 RoPE(1D temporal RoPE), Video-LLaVA의 학습된 시간 임베딩(learned temporal embeddings), Qwen2.5-VL의 완전한 3차원 TMRoPE가 있습니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.시간적 위치 인코딩(temporal positional encoding)이 비전 인코더와 독립적으로 비디오 VLM 성능을 바꾸는 이유는 무엇인가요?

2.비디오 이해에서 동적 FPS(dynamic FPS) 프레임 샘플링이 균등 샘플링에 비해 가지는 핵심 장점은 무엇인가요?

0/2 답변 완료

개념

Video-LLaMA: 클립별 Q-former + 오디오 분기

Video-LLaMA(2023)는 최초의 공개 비디오 LLM이었습니다. 구조는 다음과 같습니다.

  • 2 FPS로 16프레임 클립을 사용합니다. 즉 한 클립은 8초입니다.
  • 프레임별 ViT 특징(features) -> 16프레임 전체에 대해 교차 어텐션(cross-attention)을 수행하는 Video Q-former -> 32개의 학습된 쿼리(learned queries) -> LLM으로 이어집니다.
  • 병렬 오디오 분기도 있습니다. 파형(waveform) -> ImageBind 오디오 인코더 -> Audio Q-former -> 32개 쿼리 -> LLM으로 이어집니다.

강점은 오디오와 비주얼을 함께 추론(audio-visual joint reasoning)할 수 있다는 점입니다. 약점은 클립 길이가 고정되어 있고, 임의 시점에 대한 시간 그라운딩을 처리하기 어렵다는 점입니다.

VideoChat과 Video-LLaVA

VideoChat은 Video-LLaMA의 아이디어를 유지하되 오디오를 제거하고 구조를 단순화했습니다. Video-LLaVA(Lin et al., 2023)는 이미지와 비디오 프레임 모두에 대해 하나의 비주얼 인코더를 학습했습니다. 이 방식은 "투영 전 정렬(alignment before projection)"이라고 부르며, 이미지와 비디오를 하나의 통합 표현(unified representation)으로 다루게 해줍니다. 두 모델 모두 동결된 CLIP 인코더(frozen CLIP encoder) + MLP + LLM 구조입니다.

둘 다 장편 비디오(long video)를 처리하지는 못합니다. 두 시스템은 기본적으로 8-16프레임 시스템입니다.

Qwen2.5-VL과 TMRoPE

Qwen2.5-VL은 TMRoPE(Temporal-Modality Rotary Position Embedding)를 도입했습니다. 각 패치 토큰은 (t, h, w) 위치를 가집니다. 여기서 t는 프레임 인덱스가 아니라 실제 타임스탬프(actual timestamp)입니다.

단순 시간 임베딩과의 핵심 차이는 다음과 같습니다.

  • 인덱스가 아니라 절대 시간(absolute time)을 봅니다. 모델은 "15번 프레임에서"가 아니라 "4.2초 시점에"라는 정보를 봅니다.
  • 클립 단위가 아니라 토큰 단위 회전(per-token rotation)을 합니다. 각 비주얼 토큰이 자신의 타임스탬프에 따라 독립적으로 회전합니다.
  • 동적 FPS와 호환됩니다. 어떤 구간에서는 2 FPS로, 다른 구간에서는 4 FPS로 샘플링하더라도 TMRoPE는 그 불균등한 간격을 자연스럽게 처리합니다.

TMRoPE는 "고양이가 몇 초에 점프했는가?" 같은 질문을 가능하게 합니다. 모델은 "4.2초 시점"이라고 답할 수 있습니다. Video-LLaMA는 "클립 초반" 정도로만 말할 수 있었습니다.

프레임 샘플링 전략

균등 샘플링(uniform sampling)은 전체 길이에 걸쳐 N개의 프레임을 고르게 뽑습니다. 단순하지만 움직임이 가장 큰 순간(motion peaks)을 놓칠 수 있습니다.

동적 FPS(dynamic FPS)는 움직임 강도(motion intensity)에 따라 적응적으로 샘플링합니다. 옵티컬 플로(optical flow)나 프레임 차분(frame differencing)을 이용해 움직임이 큰 구간을 더 촘촘히 뽑습니다. Qwen2.5-VL은 이 방식으로 학습합니다.

이벤트 기반(event-driven) 샘플링은 가벼운 검출기(lightweight detector)를 먼저 실행한 뒤, 동작이 일어나는 구간을 더 많이 샘플링합니다. VideoAgent에서 쓰이는 방식입니다.

키프레임 + 문맥(keyframe + context)은 장면 전환(shot boundaries)과 그 주변 몇 프레임을 함께 뽑습니다. 영화적 콘텐츠(cinematic content)에 적합합니다.

프레임별 풀링

1 FPS, 프레임당 576토큰으로 5분짜리 클립을 처리하면 172,800토큰이 됩니다. Qwen2.5-VL-72B의 128k 문맥으로도 감당하기 어렵거나 매우 비쌉니다.

3x3 양선형 풀링은 프레임당 토큰 수를 64개로 줄입니다. 그러면 5분 비디오가 19,200토큰으로 줄어듭니다. 대부분의 과제에서 좋은 절충점입니다.

에이전트 워크플로(agent workflows)처럼 공간적 세부 정보가 덜 중요한 경우에는 더 강하게 풀링할 수 있습니다. 예를 들어 6x6 풀링은 프레임당 16토큰까지 줄입니다.

네 가지 비디오 벤치마크

  • VideoMME: 짧은 비디오, 중간 길이 비디오, 긴 비디오를 모두 포함하는 종합 비디오 이해 벤치마크입니다.
  • TempCompass: "이전(before)" / "이후(after)" 질문처럼 세밀한 시간 추론(fine-grained temporal reasoning)을 평가합니다.
  • EgoSchema: 긴 시간 범위(long-horizon)의 1인칭 비디오(first-person video)를 평가합니다.
  • Video-MMMU: 여러 학문 분야를 포함하는 멀티모달 비디오 질문(multimodal multi-discipline video questions)을 평가합니다.

완전한 비디오 VLM 평가는 네 벤치마크를 모두 다룹니다. 각 벤치마크는 서로 다른 축을 압박합니다. TempCompass는 순서(ordering)가 핵심이고, EgoSchema는 3분 이상 추론이 핵심이며, VideoMME는 다양한 길이를 포괄합니다.

그라운딩 출력 형식

시간적 그라운딩의 출력 형식은 다음과 같습니다.

  • 자유 텍스트(free text): "고양이는 4초쯤에 점프합니다." 파싱은 쉽지만 부정확합니다.
  • 구조화 JSON(structured JSON): {"event": "jump", "start": 4.1, "end": 4.3}. Qwen2.5-VL은 이런 형식으로 학습합니다.
  • 토큰 기반(token-based): 답변 안에 특수 <time>4.1</time> 토큰을 섞어 넣습니다. Qwen2.5-VL의 내부 형식입니다.

다운스트림(downstream)에서 쓰기에는 토큰 기반이 가장 정확합니다. 다만 Qwen2.5-VL의 JSON 출력 형식은 바로 파싱할 수 있습니다.

2026년 기준 권장 방식

2026년에 비디오 VLM을 만든다면 다음 구성이 기본 선택지입니다.

  • 인코더: M-RoPE 또는 TMRoPE를 갖춘 SigLIP 2(Qwen2.5-VL 계열)
  • 프레임 샘플링: 최대 프레임 수 제한(max-frame cap)을 둔 동적 FPS. 움직임에 따라 1-4 FPS를 사용합니다.
  • 프레임별 풀링: 3x3 양선형 풀링
  • 출력: 시간과 이벤트 필드를 포함한 구조화 JSON
  • 벤치마크: 일반 평가는 VideoMME + TempCompass, 긴 시간 범위 평가는 EgoSchema

사용해보기

code/main.py에는 다음이 포함되어 있습니다.

  • 균등 프레임 샘플러와 동적 FPS 프레임 샘플러
  • 장난감 수준의 시간적 그라운딩 평가기. 시간 T에 있는 정답(ground truth) 이벤트와 모델 출력을 받아 허용 오차(tolerance) 기준으로 정확도를 계산합니다.
  • Video-LLaMA(16프레임, Q-former), Video-LLaVA(8프레임, MLP), Qwen2.5-VL(동적 FPS + TMRoPE)의 비교

산출물 만들기

이 lesson은 outputs/skill-video-vlm-frame-planner.md를 만듭니다. 비디오 과제(모니터링, 동작 인식, 시간적 그라운딩, 요약)가 주어지면 프레임 샘플러, 풀링 계수, 출력 형식, 예상 정확도 등급을 고릅니다.

연습문제

  1. 3분짜리 요리 시연 영상에는 균등 FPS와 동적 FPS 중 무엇을 고르겠습니까? 토큰 수 계산과 함께 정당화합니다.

  2. TMRoPE는 단순한 시간 임베딩 테이블이 할 수 없는 무엇을 구체적으로 추가합니까?

  3. VLM이 학습해서 출력할 수 있는 시간적 그라운딩용 JSON 스키마를 작성합니다. 오류 사례(error cases)도 포함합니다.

  4. Video-LLaVA 논문의 Section 3, "Alignment Before Projection"을 읽습니다. 이미지 인코더와 비디오 인코더를 따로 학습하는 것보다 왜 더 나은지 설명합니다.

  5. VideoMME 리더보드를 기준으로, 2026년 현재 최상위 공개 모델과 최상위 독점 모델 사이의 격차는 얼마입니까? 그 격차 중 어느 정도가 시간 인코딩 때문이고, 어느 정도가 기반 LLM 규모 때문입니까?

핵심 용어

용어흔한 설명실제 의미
시간적 그라운딩(Temporal grounding)"시간 위치가 붙은 답변"VLM이 어떤 이벤트가 언제 일어나는지 구체적인 타임스탬프 범위로 출력하는 능력
TMRoPE(Temporal-Modality Rotary Position Embedding)"시간-멀티모달 RoPE"Qwen2.5-VL에서 쓰는 절대 타임스탬프 기반 3차원 회전 위치 표현
동적 FPS(Dynamic FPS)"움직임 인식 샘플링"움직임이 큰 구간에서는 더 많은 프레임을, 정적인 구간에서는 더 적은 프레임을 샘플링하는 방식
프레임 풀링(Frame pooling)"프레임별 공간 압축"LLM에 넣기 전에 양선형 보간으로 프레임당 패치 수를 줄이는 방법
Video Q-former"클립 압축기"N개 프레임을 K개의 학습된 쿼리로 매핑하는 교차 어텐션 병목 구조
VideoMME"비디오 벤치마크"2,500개 이상의 샘플을 포함하는 짧은/중간/긴 비디오 종합 벤치마크

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

video-vlm-frame-planner

Plan frame sampling, per-frame pooling, output format, and benchmark targets for a video-language model deployment.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.5분짜리 클립을 1 FPS, 프레임당 576토큰으로 처리하면 172,800토큰입니다. 3x3 양선형 풀링을 적용하면 프레임당 64토큰으로 줄어듭니다. 새로운 총 토큰 수는 얼마인가요?

2.TMRoPE는 프레임 인덱스 대신 절대 타임스탬프를 사용합니다. 단순한 시간 임베딩 테이블이 할 수 없는 어떤 능력을 가능하게 하나요?

3.비디오에서 세밀한 '이전/이후' 시간 추론을 구체적으로 평가하는 벤치마크는 어느 것인가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다