Paper · 2023-08-17 · cs.CV, cs.AI, cs.CL
EgoSchema: A Diagnostic Benchmark for Very Long-form Video Language Understanding
EgoSchema is a multiple-choice video QA benchmark of about 5,000 questions on three-minute Ego4D clips. Questions are generated by LLMs, filtered by rules and a blind-answer test, then curated by humans. The temporal certificate median is about 100 seconds. Zero-shot video-language models score 19.6-32.1% against 20% chance, while humans reach about 76% (author-reported).
Multimodal language modelLLM evaluationVision-language pre-trainingbenchmarkvideo-question-answeringlong-video-understanding
arXivPDFCodeMarkdown9 min read
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Most video AI tests use short clips, or ask questions that can be answered from a few seconds of footage. EgoSchema is a test built to find out whether a model can follow a long video. Each question is about a three-minute clip of first-person video, and the model picks one of five answers.
The authors also ask how much of the video you must watch to be sure of the right answer. For EgoSchema that is about 100 seconds, much longer than for other video datasets. The questions are written by a language model from human-written descriptions of the clip, then checked by people.
Today's video-language models score only a little above guessing (20% for five options), while people score about three in four. The benchmark is meant to show where long-video understanding still falls short.
TL;DR
- A zero-shot multiple-choice video QA benchmark: about 5,000 questions on 3-minute Ego4D clips, five options each §3.1 §4.2.
- The authors' measure of difficulty is temporal certificate length, with a median of about 100 seconds §1 §3.2 §4.1.
- Published video-language models score 19.6-32.1% (author-reported); humans reach about 76% §4.2.
- Build it yourself only if you have Ego4D access and can run the human curation; the answer key is mostly withheld.
Problem
Long-form video tasks often turn out to be short-term tasks in disguise: the answer depends on a few seconds, even if the clip is long §1. The authors measure this with the temporal certificate, the smallest set of sub-clips a human needs to watch to verify an annotation §3.2. Earlier datasets either use narrow label sets, such as like-ratio prediction in LVU §2, or have certificates of a few seconds, such as MAD §2.
Free-form answers are hard to score with BLEU or ROUGE, so the benchmark uses multiple-choice accuracy instead §1.
The construction assumes that a capable LLM can write hard questions and wrong answers from human narrations, and that people can then verify them §3.1.
Method
The benchmark has two parts: a data pipeline §3.1 and an evaluation protocol §4.2.
Data pipeline
The pipeline has four stages §3.1.
- Clip selection §3.1.1. Take Ego4D RGB video and its timestamped narrations. Cut non-overlapping three-minute clips and keep those with at least 30 narrations, which is 10 per minute app. Clip length.
- Question generation §3.1.2. Ask an LLM for N = 3 questions per clip. Then, in a second call, ask for one correct answer and M = 4 wrong answers per question. The authors call this Q(AW)-shot; it has two chained calls and is about 30% cheaper than the three-call QAW-shot variant §3.1.2.
- Automatic filtering §3.1.3. Drop items with prompt keywords leaking into the output or with malformed format; regenerate those. Then drop any question an LLM can answer blindly, without the narrations §3.1.3.
- Human curation §3.1.4. Two rounds. In round one, a question must be well formed, its correct answer must be right, each wrong answer must be wrong, and its certificate must be at least 30 seconds. Round one removes about 4-5x of the questions; round two keeps more than 97% of those that pass round one §3.1.4.
# EgoSchema construction pipeline [§3.1]
# Input: Ego4D RGB videos with timestamped narrations
# Output: curated 5-option questions, one per clip item
def build_benchmark(videos):
# Stage I: cut 3-minute clips with at least 30 narrations [§3.1.1]
clips = [
clip
for clip in cut_three_minute_clips(videos)
if len(clip.narrations) >= 30
]
# Stage II: questions first, then answers, both from an LLM [§3.1.2]
# 3 questions per clip; each gets 1 correct and 4 wrong answers
items = []
for clip in clips:
questions = llm_questions(clip.narrations, n=3)
answers = llm_answers(questions, clip.narrations, m=4)
items.extend(pair_up(questions, answers))
# Stage III: rule filter, then drop items answerable without the video
# [§3.1.3]
items = [item for item in items if passes_rules(item)]
items = [item for item in items if not answerable_blind(item)]
# Stage IV: two human curation rounds [§3.1.4]
items = [item for item in items if passes_round_one(item)]
items = [item for item in items if passes_round_two(item)]
return itemsTemporal certificate, the quantity the authors use to show difficulty §3.2:
L(C) = \sum_{i} \ell(s_i) §3.2
Here C is the certificate set of sub-clips s_i, and \ell is the duration of a sub-clip. The paper defines certificate length in words, as the summed duration of the sub-clips in the minimal necessary and sufficient set §3.2.
Certificate conventions §3.2: a certificate is at least 0.1 s; two non-contiguous certificates are merged when their closest ends are less than 5 s apart; annotators apply dataset-wide "meta-rules", such as label exclusivity, when they judge the certificate.
Evaluation protocol
Models are evaluated zero-shot, with frames sampled uniformly from each clip. Each model runs in two settings: the frame count it was trained on, and the most frames that fit on one 80 GB A100 §4.2. The authors evaluate four model families §4.2 app. Benchmarking details:
- FrozenBiLM (How2QA model), 10 and 90 frames §4.2.
- VIOLET, 5 and 75 frames; the authors report the best of several checkpoints. §4.2 says four fine-tuned models; the appendix lists one pre-trained and three fine-tuned §4.2 app. Benchmarking details.
- mPLUG-Owl, 1 to 30 frames. Each option is put into a yes/no question, and the option with the highest "Yes" probability wins §4.2.
- InternVideo (MSRVTT-fine-tuned), 10 to 90 frames. Each question-option pair is scored and the highest score wins §4.2.
For the generative mPLUG-Owl setup, the scoring logic is:
# Zero-shot scoring by "Yes" probability [§4.2]
# Used for mPLUG-Owl; FrozenBiLM and InternVideo score differently
def predict(frames, question, options):
scores = []
for option in options:
# ask the model whether this option answers the question [§4.2]
prompt = yes_no_prompt(question, option)
# probability of the token "Yes"; 0 if it is not generated [§4.2]
scores.append(yes_probability(frames, prompt))
# highest score wins; ties are broken uniformly at random [§4.2]
best_score = max(scores)
tied = [i for i, s in enumerate(scores) if s == best_score]
return random_choice(tied)Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| clip length | 3 minutes (180 s) | §3.1.1 | non-overlapping clips |
| narrations per clip | at least 30 (10 per minute) | §3.1.1 app. Clip length | chosen over 5/min and 20/min for 1-minute clips |
| questions per clip N | 3 | §3.1.2 | larger N gave near-duplicate questions |
| wrong answers per question M | 4 | §3.1.2 | 5 options in total |
| LLMs for generation | GPT-4, Bard, Claude | §3.1.2 | versions and dates not stated; GPT-3 and ChatGPT rejected |
| prompt search | about 85 prompts, 10 clips each | §3.1.2 | manual, zeroth-order search |
| certificate minimum | 0.1 s | §3.2 | |
| certificate merge gap | 5 s | §3.2 | merge non-contiguous sub-clips closer than this |
| round-one certificate threshold | 30 s | §3.1.4 | condition C |
| round-two pass rate | more than 97% | §3.1.4 | of items that passed round one |
| certificate estimate sample | 100 clips (5 hours) | §4.1 | other datasets: at least 2 hours, each label at least once |
| human no-constraint sample | 9 hours | §4.2 | other human settings: 5 hours |
| FrozenBiLM feature rate | frames / 180 per second | feature_gen.py | uniform over the clip |
| mPLUG-Owl generation | max_length 512, top_k 5, do_sample True | run_mplug.py | sampling, see Pitfalls |
| random seed | 1998 | run_mplug.py | tie-breaking; torch sampling is not seeded |
| VIOLET frames key | size_frame 10, max_size_frame 75 | args_egoSchema.json | paper evaluates 5 and 75 frames |
Results
Author-reported. Setup: zero-shot on EgoSchema; model sample size not stated §4.2; human accuracy is estimated on 5 hours of video, or 9 hours for the no-constraint setting §4.2.
Model accuracy on EgoSchema (multiple choice, chance = 20.0%) §4.2:
| Model | Release | Inference params | Frames / setting | QA acc |
|---|---|---|---|---|
| FrozenBiLM | Oct 2022 | 1.2B | 10 frames | 26.4% |
| FrozenBiLM | Oct 2022 | 1.2B | 90 frames | 26.9% |
| VIOLET | Sept 2022 | 198M | 5 frames | 19.9% |
| VIOLET | Sept 2022 | 198M | 75 frames | 19.6% |
| mPLUG-Owl | May 2023 | 7.2B | 1 frame | 27.0% |
| mPLUG-Owl | May 2023 | 7.2B | 5 frames | 31.1% |
| mPLUG-Owl | May 2023 | 7.2B | 10 frames | 29.6% |
| mPLUG-Owl | May 2023 | 7.2B | 15 frames | 28.7% |
| mPLUG-Owl | May 2023 | 7.2B | 30 frames | 20.0% |
| InternVideo | Dec 2022 | 478M | 10 frames | 31.4% |
| InternVideo | Dec 2022 | 478M | 30 frames | 31.8% |
| InternVideo | Dec 2022 | 478M | 90 frames | 32.1% |
Human accuracy §4.2:
| Evaluation setting | QA acc |
|---|---|
| 180 frames (1 fps) | 67.2% |
| answer in under 1 minute | 67.0% |
| answer in under 3 minutes | 68.0% |
| no constraint | 75.0% |
| watch video, then answer without re-watching (video to text) | 76.2% |
Difficulty: median temporal certificate about 100 seconds; the paper says it is 5.7x longer than the second-longest dataset and 10x to 100x longer than the rest §1 §4.1. Certificate estimates use 100 randomly chosen clips §4.1.
Dataset size: 5,063 instances, each with one video, one question and five options app. Datasheet.
Paper vs code
Official code: github.com/egoschema/EgoSchema, commit 505c787376b5e066d0ae406d0e0d41245cebba15 (last commit 2024-12-30). The paper links it in its datasheet app. Datasheet. It contains the download scripts, the released questions, 500 public answers and the baseline runners README.md. The baseline scripts are for mPLUG-Owl run_mplug.py, InternVideo run_internvideo.py, FrozenBiLM run_frozenbilm.py and VIOLET README.md. Scoring submissions go to a validation server validate.py.
Discrepancies:
- Dataset size. The paper says 5,063 instances app. Datasheet. The README says 5,031 questions for the full evaluation README.md.
- Generation code. The datasheet says the generation, filtering and curation code is in the supplementary material app. Datasheet. The repository has no generation, filtering or curation code.
- VIOLET checkpoint. The paper says the best of four fine-tuned checkpoints
was reported (lsmdc-mc, msrvtt-qa, msrvtt-retrieval, plus the pre-trained
model) app. Benchmarking details. The repository's default is
ckpt_violet_msrvtt-cap.pt, a checkpoint the paper does not name args_egoSchema.json. The README asks the user to setpath_ckptthemselves README.md. - mPLUG-Owl decoding. The paper scores the "Yes" token probability and does
not mention sampling. The code samples with
do_sample=Trueandtop_k=5run_mplug.py, so repeated runs can differ. - InternVideo backbone. The paper gives 478M parameters and names no
backbone §4.2. The config says
vit_base_patch16_224run_internvideo.py, while the clip checkpoint path isViT-L-14.ptrun_internvideo.py. Which backbone runs is not clear from the config alone. - FrozenBiLM size. The paper gives 1.2B parameters §4.2. The code loads
microsoft/deberta-v2-xlargerun_frozenbilm.py. The parameter count is not checked against this model.
No discrepancies were checked for the human benchmark, because no code exists for it.
Pitfalls
- Licences. The paper is CC BY 4.0. The benchmark data and code are under the Ego4D licence, which the paper says allows research and commercial use §2 app. Datasheet. The repository has no LICENSE file, so the code licence is not stated. Do not redistribute videos or answer keys from this card, and do not copy code without a licence.
- Answer key is mostly private. Only 500 correct answers are public README.md. The rest is scored through a submission server validate.py, so local scores on the full set cannot be reproduced.
- Inconsistent multipliers. The abstract and §4.1 say 5.7x longer than the next dataset and 10x to 100x longer than the others §4.1. The introduction and contributions say 5x and 25x to 100x §1. Use the §4.1 figures.
- Certificates need human judgement. The certificate length depends on annotators and the dataset-wide meta-rules they are told about §3.2. The paper gives no inter-annotator agreement figures.
- Blind filter drops good questions. It removes any question that a model can guess without the narrations, even when the guess is only luck. The authors accept that cost to favour precision §3.1.3.
- Generation is hard to reproduce. The LLMs are proprietary and their versions and dates are not stated §3.1.2. About 85 prompts were tuned by hand §3.1.2. Expect different questions if you rerun the generation.
- No variance reported. Model scores come from single runs. The paper gives no confidence intervals or repeated runs §4.2, so gaps of one or two points between settings are not established.
- Non-monotonic frame effects. mPLUG-Owl drops from 31.1% at 5 frames to 20.0% at 30 frames §4.2. Do not assume more frames helps for every model.
- Human sample. Ten annotators at one company were used [app. Benchmarking details]; their agreement with each other is not reported.
- Random ties. When two options tie, the baselines pick one at random run_mplug.py. A tie-breaking rule is part of the protocol; report it if you compare numbers.
Lineage
- Builds on: Ego4D, which supplies the video and narrations §3.1.1. Ego4D has no card in this wiki.
- Compared against: LVU and MAD for long-form video §2; NExT-QA, AGQA, How2QA and MSRVTT-QA among video QA sets §4.1. None has a card in this wiki.
- Evaluated models: FrozenBiLM, VIOLET, mPLUG-Owl and InternVideo §4.2. None has a card in this wiki.
- Superseded by: not known from this wiki.
Source and license
Adapted from “EgoSchema: A Diagnostic Benchmark for Very Long-form Video Language Understanding” by Karttikeya Mangalam, Raiymbek Akshulakov, Jitendra Malik (arXiv:2308.09126), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/egoschema/EgoSchema at commit 505c787376b5 (not stated (no LICENSE file in the repository; the paper names the Ego4D license for data and code)). Any quoted code is shown under that license.