Videoförståelse
Kunna förklara hur tidsdimensionen hanteras i videomodeller.
Förkunskaper
Intuition
Video är bilder plus tid — och tiden är dyr. En minut i 30 bilder per sekund är 1 800 bildrutor. Att köra varje ruta genom en bildmodell är både ohållbart och onödigt: intilliggande rutor är nästan identiska.
Fyra sätt att hantera tidsdimensionen:
| Ansats | Hur | Klarar |
|---|---|---|
| Gles sampling | ta 8–32 rutor jämnt fördelade, koda var för sig, poola | «vad handlar klippet om» |
| 3D-faltning | faltningskärnor över (tid, höjd, bredd) | lokal rörelse, korta handlingar |
| Rumtidsattention | tokens är (tid, patch); attention över båda | långa beroenden, dyrast |
| Minne / strömmande | håll ett komprimerat tillstånd över tid | timmeslånga videor |
Den avgörande frågan för varje uppgift: krävs det att modellen ser ordningen? «Vilken sport spelas?» går att svara på från en enda ruta. «Slog personen till bollen före eller efter att domaren blåste?» gör det inte.
Och just den skillnaden är där de flesta videobenchmarks visar sig vara svagare än de ser ut.
Formellt
En obekväm insikt om utvärdering. På många populära videobenchmarks når en modell som ser en enda slumpmässig bildruta nära toppresultatet. Det betyder att uppgifterna går att lösa på utseende, inte på händelseförlopp — och att förbättrade siffror inte nödvändigtvis speglar bättre temporal förståelse.
Två baslinjer du alltid ska köra, innan du drar någon slutsats om tid:
- Enkelrutebaslinjen. Samma modell, en slumpmässig ruta. Hur nära kommer den?
- Blandad ordning. Samma rutor i slumpmässig ordning. Faller resultatet?
Är de nära originalet mäter din benchmark inte tid. Det är bland det mest användbara du kan veta om en videomodell — och det tar en eftermiddag att ta reda på.
Samplingsstrategier:
| Strategi | Passar |
|---|---|
| Jämn sampling av N rutor | klassificering av korta klipp |
| Nyckelrutor vid scenbyten | långa videor med tydlig struktur |
| Tät sampling i intressanta fönster | handlingsdetektion med tidsgränser |
| Rutor + transkriberat tal | föreläsningar, möten, intervjuer — ofta den billigaste stora vinsten |
Den sista raden är underskattad. För allt innehåll där någon talar bär transkriptionen merparten av informationen, till en bråkdel av kostnaden. Kombinera ASR med gles rutesampling innan du når efter en tung videomodell.
Kostnadsordning i praktiken: transkribera → gles rutesampling → nyckelrutor → tät rumtidsattention. Gå nedåt i listan bara när mätningen visar att du behöver det.
Kod
import numpy as np
def jamn_sampling(antal_rutor, n=16):
return np.linspace(0, antal_rutor - 1, n).round().astype(int).tolist()
def nyckelrutor(rutor, trosk=0.3, max_n=32):
"""Välj rutor där bilden ändras påtagligt — scenbyten i stället för jämn sampling."""
valda, forra = [0], graa(rutor[0])
for i in range(1, len(rutor)):
g = graa(rutor[i])
if float(np.abs(g - forra).mean()) > trosk:
valda.append(i); forra = g
if len(valda) >= max_n:
break
return valda
# De två baslinjerna som avgör om din utvärdering faktiskt mäter tid
def temporala_baslinjer(modell, dataset, rng=np.random.default_rng(0)):
fullt = np.mean([modell(d["rutor"]) == d["svar"] for d in dataset])
en_ruta = np.mean([modell([d["rutor"][rng.integers(len(d["rutor"]))]]) == d["svar"]
for d in dataset])
blandad = np.mean([modell(list(rng.permutation(d["rutor"]))) == d["svar"] for d in dataset])
return {"fullt": round(float(fullt), 3),
"en_ruta": round(float(en_ruta), 3),
"blandad_ordning": round(float(blandad), 3),
"kraver_tid": bool(fullt - max(en_ruta, blandad) > 0.10)}
print(temporala_baslinjer(modell, dataset))
# {'fullt': 0.71, 'en_ruta': 0.68, 'blandad_ordning': 0.70, 'kraver_tid': False}
# → benchmarken mäter utseende, inte händelseförlopp
Utskriften är det vanliga utfallet första gången någon kör testet. Det betyder inte att modellen är dålig — det betyder att uppgiften inte mäter det man trodde.
Behärskning innebär
- Beskriver hur tid modelleras i videomodeller
- Väljer samplingsstrategi utifrån uppgiften
- Utvärderar med mått som kräver temporal förståelse
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — ViViT: A Video Vision Transformer — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Revisiting the "Video" in Video-Language Understanding — arXiv (öppen åtkomst; licens per artikel)
- Hugging Face — dokumentation (Apache-2.0) — Apache-2.0