Adaptive Keyframe Sampling for Long Video Understanding
Jun 21, 2026

배경
- 비디오가 길어지면 llm context에 한계가 생김
- 그래서 비디오에서 일부 프레임만 샘플링하는 기법 사용
- 하지만 기존에는 랜덤 샘플링을 사용함 → 랜덤 추출 → 오답이 됨

Method
Principles of Keyframe Selection
- 풀 수 없는 이상적 목표
- G: 모델의 output에 대한 confidence
- 하지만 가능한 F의 조합이 너무 많고, 그 프레임으로 정답을 맞췄다고 그게 완벽한 프레임이라는 보장은 없다

- 휴리스틱한 접근
- s(Q,Ft): 프롬프트 Q와 프레임 Ft의 관련성 (relevance)
- llm을 사용하기엔 비용이 너무 커서 CLIP, BLIP 등을 활용
- c(I): 커버리지. 선택된 키프레임 집합이 비디오 전체의 유용한 정보를 얼마나 골고루 커버하는가. 만약 중복 프레임이라면 뽑히지 않아야 함.
- 기본적으로 샘플링된 프레임이 시간축에 고르게 퍼져야함
- Ripley K-function
- 어떤 거리 r을 정하고 서로 거리 r에 안으로 들어오는 점의 쌍이 몇 개냐 < 이렇게 정량화 함
- Ripley K-function를 binning으로 단순화
- → Adaptive Keyframe Sampling

Adaptive Keyframe Sampling
- 양 극단의 케이스
- 기존 식에서,
- 만약 람다가 0이면 프롬프트와 일치도가 가장 높은 프레임만 뽑음
- 점수 높은 프레임들이 한 구간에 몰려있으면, 거기에서만 키프레임이 뽑혀서 다른 프레임의 정보들을 놓칠 수 있음
- 만약 람다가 Inf면 커버리지만 신경쓰게 됨 (s()는 무시)
- 그럼 기존 방식인 유니폼 샘플링과 똑같게 됨


- ADA (adaptive sampling)
- 람다가 0~inf 사이의 적절한 값이어야 함
- hierarchical optimization
- 계층적으로 전체 프레임을 쪼개며 진행
- judge: 각 레벨에서 아래 점수를 구함
- s_all: 현재 구간 모든 프레임의 평균 점수
- s_top : 현재 구간에서 점수 상위 M개 프레임의 평균 점수
- 만약 s_top - s_all이 일정 threshold를 넘으면 그 구간에 핵십 프레임이 있다 생각하고 top M개의 프레임 반환
- 만약 s_top - s_all의 차이가 크지 않다면 고만고만한 점수로 보고 split → judge 반복


실험
- 평가도구: LMMs-Eval
- 데이터셋: LongVideoBench(LVB), VideoMME(V-MME)
- 비디오 길이가 1시간을 넘는다고 함
- 실험 원칙
- llm 학습시키지 않음. 오직 키프레임 샘플링 알고리즘만 평가하기 위하여
- 자막 안 씀. 순수 시각으로 평가하기 위해서
- baseline mllm
- Qwen2VL
- LLaVA-OV
- LLaVA-Video
- 가장 강한 baseline(SigLIP 인코더 + Qwen2-7B LLM, 최대 64프레임)
- BLIP 이용하여 프롬프트-프레임 유사도 구함

- 어떤 모델이든 aks를 붙인게 성능이 올라감
- aks 붙인 작은 모델이 유료모델 뛰어 넘기도 함


- sampling 전략
- uni
- 유니폼 샘플링 (s 점수 안 봄)
- top
- split 하지 않고 전체 비디오를 통으로 본 후 top m뽑음
- bin
- 최고 깊이까지 split하고 각 bin에서 top 뽑음
- ada
- s_threshold에 따라 split and judge 적절히
- ADA 전략이 가장 효과 좋음
- 벤치마크 데이터셋의 질문에 따라 TOP, BIN 전략 중에 하나가 더 맞을 수도 있음
- 예를 들어 VideoMME는 “몇 번 일어나냐” 질문이면 유니폼 샘플링(bin)이 top 보다 어울림
- longvideobench: “특정 시점에 뭘 하냐”면 top이 어울림
- ADA: 어떤 질문 형식이든 adaptive하게 적용될 수 있음
- 똑같은 비디오라도 질문에 따라 ADA는 다른 프레임 조합을 선택함



- 프레임 선택 비율을 줄여도 0.25까지는 성능 하락이 크게 없다

- BLIP은 LongVideoBench에서, CLIP은 VideoMME에서 더 좋음
- CLIP은 일반 image-text 쌍으로 학습 → 전역적 인식에 강함
- BLIP은 object-level 데이터로 학습 → 객체 중심 질문에 강함

- LongVideoBench은 작은 s_threshold를, VMME는 큰 s_threshold가 맞음
- LongVideoBench은 핵심 정보가 집중되어있고, VMME는 분산되어 있어서

- 그냥 키프레임 추출 말고, “비디오 묘사” 등 다른 Task에 적용해도 잘 된다.
Share article