Repository navigation
[Benchmark] Add QVHighlights moment retrieval and highlight detection - #1770
Open
aliasgerovs wants to merge 1 commit into
Open
aliasgerovs wants to merge 1 commit into
aliasgerovs wants to merge 1 commit into
Conversation
Adds the official QVHighlights validation split (1,550 queries) with both of its tasks: moment retrieval (mAP over IoU 0.5:0.05:0.95, R1@0.5 / 0.7) and highlight detection (mAP and HIT@1 over 2-second clip saliency scores), scored as in the official evaluation script.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
This PR adds QVHighlights (Lei et al., NeurIPS 2021), the standard benchmark for moment retrieval and highlight detection. Each query comes with every matching moment in a 150-second YouTube clip, and three annotators scored each 2-second clip of those moments from 0 (very bad) to 4 (very good). The PR uses the official validation split (1,550 queries over 1,519 videos; the test labels are not public) with both of its tasks:
QVHighlights-MRQVHighlights-HDHighlight detection is a different kind of task from the grounding benchmarks already in VLMEvalKit: the model scores parts of the video instead of returning a time span. TimeLens-Bench (#1715) uses a re-annotated QVHighlights test split for single-moment grounding, so the two do not overlap.
Data: annotations from https://github.com/jayleicn/moment_detr (CC BY-NC-SA 4.0); videos from the official archive linked there.
How it works
LMUData/QVHighlights/videos. If you already have the clips, put them there and nothing is downloaded.[[start, end], ...]. Up to 10 spans are read, in order; the order is the ranking used for mAP.standalone_eval/eval.py). On the sample predictions that ship with it (standalone_eval/sample_val_preds.jsonl), all 26 numbers are identical to the official script: mAP, mAP@0.5, mAP@0.75, R1@0.5 and R1@0.7 for all, short, middle and long moments, plus highlight mAP and HIT@1 at the three thresholds. One deliberate difference: an answer without a readable span counts as 0. The official script was written for models that always output windows, so it would leave such queries out of the mAP.QVHighlights-MR_2fps,QVHighlights-MR_1fps,QVHighlights-HD_2fps,QVHighlights-HD_1fps.Reference results
Qwen3-VL-8B-Instruct with the same model settings as #1715 (2 fps, 64 to 14,336 visual tokens, greedy):
All 1,550 answers could be read for both tasks. Short moments are the hard part of moment retrieval: the mAP is 6.1 for moments of up to 10 seconds, 25.3 for 10 to 30 seconds and 32.5 for longer ones. For highlight detection with the looser thresholds, mAP / HIT@1 is 46.0 / 60.4 (Good) and 56.2 / 64.2 (Fair). For context, the TimeChat paper reports 14.5 mAP / 23.9 HIT@1 for TimeChat-7B with the same zero-shot prompt.
Checks
pytest tests/test_qvhighlights_metrics.py: 8 passed (parsing, AP, both metric sets, end-to-end scoring).pytest tests/test_dataset_alias.py: 29 passed (the new datasets are in the shortcut manifest).