Views
No views yet

EVA: Efficient Reinforcement Learning for End-to-End Video Agenthttps://arxiv.org/abs/2603.22918https://mercury7353.github.io/EVA-Page/https://github.com/wangruohui/EfficientVideoAgenthttps://huggingface.co/WRHC/EfficientVideoAgent/results-12k.
You can compute accuracy with accuracy.py:python accuracy.py <result_jsonl_path>| Dataset | Acc | Round | Token |
|---|---|---|---|
| VideoMME | 60.15 | 2.42 | 16911 |
| LongVideoBench | 54.97 | 2.57 | 19042 |
| MLVU | 68.26 | 2.42 | 16570 |
| LSDBench | 49.31 | 2.48 | 13914 |
| VideoHolmes | 37.18 | 2.75 | 9085 |
| LVBench | 43.32 | 2.62 | 20412 |
Token includes both text tokens and image tokens.1git clone https://github.com/wangruohui/EfficientVideoAgent.git
2cd EfficientVideoAgenthttps://huggingface.co/WRHC/EfficientVideoAgent/ to hf_model/:huggingface-cli download WRHC/EfficientVideoAgent --local-dir hf_modelhttps://www.ffmpeg.org/download.html, ensure ffprobe is in PATH, and ensure FFmpeg shared libraries are in LD_LIBRARY_PATH.requirements.txt (recommended: uv)1uv venv .venv
2source .venv/bin/activate
3uv pip install -r requirements.txteval-eva.py reads dataset meta from DATASET_CONFIG. Before running evaluation, make sure each dataset is available locally and paths are correct.data/*.jsonl and have been normalized to a unified format.eval-eva.py -> DATASET_CONFIG: only video_root needs to be changed to your local video directory.1DATASET_CONFIG = {
2 "videomme": {
3 "jsonl": "data/videomme_test_wosubtitles_raw_list_full.jsonl",
4 "video_root": "/path/to/VideoMME/video",
5 "cache": "cache_videomme.jsonl",
6 "result": "result_videomme.jsonl",
7 },
8}1vllm serve <MODEL_PATH_OR_HF_ID> \
2 --data-parallel-size <NUM_GPUS> \
3 --limit-mm-per-prompt '{"image": 9999, "video":0}' \
4 --mm_processor_cache_gb 20 \
5 --attention-backend FLASH_ATTN \
6 --allowed-local-media-path <LOCAL_MEDIA_ROOT>temperature=0, final accuracy can still fluctuate by around 0.x% across runs.eval-eva.py Runtime Settings and Run Evaluationeval-eva.py:BASE_URL: OpenAI-compatible endpoint for your vLLM server (for example, http://localhost:8000/v1).API_KEY: API key used by the client (can be a dummy value for local vLLM setups if authentication is disabled).MODEL_TOKENIZER_PATH: Tokenizer path, should pointing to downloaded hf model weights, i.e. https://huggingface.co/WRHC/EfficientVideoAgent/ in step 2.FRAME_TOOL_PATH: path to the frame selection tool script (default is select_frame_fallback.py).FRAME_SAVE_ROOT: directory where extracted frames are saved during tool calls.
Also make sure:
FRAME_SAVE_ROOT directory exists and is writable (or set it to a writable path).--allowed-local-media-path covers your dataset video_root directories.DATASET_CONFIG: per-dataset I/O configuration.DATASET_CONFIG[*].video_root: root directory containing raw video files.DATASET_CONFIG[*].cache: incremental cache file used during running.DATASET_CONFIG[*].result: final merged output file written at the end.1python eval-eva.py --dataset videomme
2python eval-eva.py --dataset lsdbench
3python eval-eva.py --dataset lvbench
4python eval-eva.py --dataset videoholmes
5python eval-eva.py --dataset longvideobench
6python eval-eva.py --dataset mlvu-v/--max-visual-tokens.
When a tool call exceeds this budget, eval-eva.py automatically reduces resolution and frame count before extraction.1python eval-eva.py --dataset videomme -v 12000
2python eval-eva.py --dataset videomme -v 32000batch.sh:bash batch.shDATASET_CONFIG in eval-eva.py.cache_*.jsonl: online cache (appended sample-by-sample)result_*.jsonl: final merged output--retry-error: retry only failed/error cached samples--new-cache: recreate cache from scratch--output-dir: redirect cache/result outputs to another directory1@misc{zhang2026evaefficientreinforcementlearning,
2 title={EVA: Efficient Reinforcement Learning for End-to-End Video Agent},
3 author={Yaolun Zhang and Ruohui Wang and Jiahao Wang and Yepeng Tang and Xuanyu Zheng and Haonan Duan and Hao Lu and Hanming Deng and Lewei Lu},
4 year={2026},
5 eprint={2603.22918},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2603.22918},
9}