A Comprehensive Benchmark for Omni-Proactive Streaming Video Understanding
OmniPro evaluates multimodal models on their ability to proactively interact with streaming video β detecting events, monitoring states, counting objects, and providing timely narrations without explicit user queries at each moment.
OmniPro consists of 9 evaluation tasks across two modes:
| Task | Abbr. | Type | Description |
|---|---|---|---|
| Instant Event Alert | Event-Alert | Alert | Detect and report specific events |
| Semantic Condition Alert | Cond.-Alert | Alert | Monitor for semantic conditions |
| Explicit Target Grounding | Target-Ground | Grounding | Locate targets when events occur |
| Snapshot Counting | Snap.-Count | Counting | Count objects at trigger moments |
| Cumulative Counting | Cum.-Count | Counting | Track cumulative event counts |
| Dedup Counting | Dedup.-Count | Counting | Count unique instances |
| Realtime State Monitor | State-Monitor | Monitor | Track state changes |
| Event Narration | Event-Narr. | Narration | Narrate events as they happen |
| Sequential Step Instruction | Step-Inst. | Instruction | Guide through procedures |
- Probe Mode: Model receives a video clip up to time t and answers whether an event has occurred. Tests temporal awareness and content understanding.
- Online Mode: Model processes video frame-by-frame in real-time and autonomously decides when to speak and what to say.
OmniPro/
βββ models/ # Model adapters (probe + streaming)
β βββ base.py # BaseModel abstract class
β βββ streaming_base.py # StreamingModel abstract class
β βββ qwen3_vl.py # Qwen3-VL probe adapter
β βββ qwen2_5_omni.py # Qwen2.5-Omni (audio+visual)
β βββ qwen3_omni.py # Qwen3-Omni
β βββ internvl3.py # InternVL3.5-8B
β βββ phi4_multimodal.py # Phi-4-multimodal
β βββ video_salmonn2.py # Video-SALMONN2+
β βββ videollama2_av.py # VideoLLaMA2.1-7B-AV
β βββ livestar.py # LiveStar-8B (online)
β βββ livestar_probe.py # LiveStar-8B (probe)
β βββ mmduet2.py # MMDuet2 (online)
β βββ mmduet2_probe.py # MMDuet2 (probe)
β βββ minicpm_o.py # MiniCPM-o 4.5 (online)
β βββ minicpm_o_probe.py # MiniCPM-o 4.5 (probe)
β βββ gemini.py # Gemini-3-Flash (API)
β βββ ...
βββ evaluators/ # Evaluation engines
β βββ probe_evaluator.py # GT-probe evaluation logic
β βββ online_evaluator.py# Frame-by-frame streaming evaluation
βββ metrics/ # Scoring and metrics
β βββ probe/ # Probe metrics (paired accuracy, F1)
β βββ online/ # Online metrics (time F1, content accuracy)
βββ utils/ # Utilities
β βββ prompts.py # Task-specific prompt templates
β βββ video.py # Video splitting/processing
β βββ io.py # Data I/O
β βββ online_parser.py # Response parsing
βββ scripts/ # Run scripts (one-click evaluation)
β βββ run_probe.py # Probe evaluation entry point
β βββ run_online.py # Online evaluation entry point
β βββ compute_metrics.py # Compute probe metrics
β βββ compute_online_metrics.py # Compute online metrics
β βββ run_probe_*.sh # Per-model probe scripts
β βββ run_online_*.sh # Per-model online scripts
βββ data/
β βββ benchmark.json # Benchmark annotations (2700 samples)
βββ third_party/ # Third-party model code (see README inside)
βββ visualization/ # Demo and visualization
βββ requirements.txt # Python dependencies
# Clone the repository
git clone https://github.com/RuixiangZhao/OmniPro
cd OmniPro
# Install base dependencies
pip install -r requirements.txt
# Clone third-party model repos (see third_party/README.md)Clone the data repository (videos + metadata) into the data/ directory:
# Clone the benchmark data (videos, annotations)
cd data
git clone https://huggingface.co/datasets/RuixiangZhao/OmniPro .
cd ..The data/ directory should contain:
benchmark.jsonβ Benchmark annotations (2700 samples, 9 tasks Γ 300)raw_videos/β Source video files referenced bybenchmark.json
# Example: Qwen3-VL-8B
bash scripts/run_probe_qwen3_vl.sh
# Quick smoke test (2 samples/task)
LIMIT=2 bash scripts/run_probe_qwen3_vl.sh
# Custom: specific tasks, limited samples
python scripts/run_probe.py \
--model qwen3-vl \
--model_path /path/to/model \
--tasks instant_event_alert,event_narration \
--limit 50 \
--num_gpus 8 \
--output_dir results/probe/Qwen3-VL-8B/# Example: MiniCPM-o 4.5
bash scripts/run_online_minicpmo.sh
# Quick test
LIMIT=4 bash scripts/run_online_minicpmo.sh# Probe metrics
python scripts/compute_metrics.py --pred_dir results/probe/Qwen3-VL-8B/ --tolerance 3,5
# Online metrics
python scripts/compute_online_metrics.py --pred_dir results/online/MiniCPM-o-4.5-Duplex/ --tolerance 3| Model | Size | Audio | Script |
|---|---|---|---|
| Qwen3-VL-8B | 8B | β | run_probe_qwen3_vl.sh |
| Qwen2.5-Omni-7B | 7B | β | run_probe_qwen2_5_omni.sh |
| Qwen3-Omni-30B-A3B | 30B | β | run_probe_qwen3_omni.sh |
| InternVL3.5-8B | 8B | β | run_probe_internvl3_5.sh |
| Phi-4-multimodal | 5.6B | β | run_probe_phi4_multimodal.sh |
| Video-SALMONN2+ | 7B | β | run_probe_video_salmonn2.sh |
| VideoLLaMA2.1-7B-AV | 7B | β | run_probe_videollama2_av.sh |
| LiveStar-8B | 8B | β | run_probe_livestar.sh |
| MMDuet2 | 3B | β | run_probe_mmduet2.sh |
| MiniCPM-o 4.5 | 9B | β | run_probe_minicpmo.sh |
| Gemini-3-Flash | β | β | run_probe_gemini.sh |
| Model | Size | Audio | Script |
|---|---|---|---|
| MiniCPM-o 4.5 | 9B | β | run_online_minicpmo.sh |
| MMDuet2 | 3B | β | run_online_mmduet2.sh |
| LiveStar-8B | 8B | β | run_online_livestar.sh |
- Paired Accuracy: Both pre-probe and post-probe must be correct
- Content F1: F1 score across all probe points
- Pre/Post Accuracy: Separate accuracy for before/after trigger
- Time F1: Precision Γ Recall of emit timestamps within tolerance window
- Content Accuracy: Correctness of emitted content (parsed or GPT-judged)
- Joint F1: Combined timing + content score
- Create
models/your_model.pyinheriting fromBaseModel - Implement
name()andgenerate(instruction, video_path) - Register in
scripts/run_probe.py(choices + build_model) - Create
scripts/run_probe_your_model.sh
- Create
models/your_model.pyinheriting fromStreamingModel - Implement
begin(),observe(),end() - Register in
scripts/run_online.py - Create
scripts/run_online_your_model.sh
@article{omnipro2026,
title={OmniPro: A Comprehensive Benchmark for Omni-Proactive Streaming Video Understanding},
author={Zhao, Ruixiang and Yang, Jie and Xin, Zijie and Wang, Tianyi and Rao, Fengyun and LYU, Jing and Li, Xirong},
journal={arXiv preprint arXiv:2605.18577},
year={2026}
}This project is released under the MIT License.