ViSpeak
(ICCV2025) Official repository of paper "ViSpeak: Visual Instruction Feedback in Streaming Videos"
Install / Use
/learn @HumanMLLM/ViSpeakREADME
ViSpeak: Visual Instruction Feedback in Streaming Videos
- Paper: Arxiv
- ViSpeak-Bench: GitHub
- Huggingface: ViSpeak-s2, ViSpeak-s3, ViSpeak-Instruct, ViSpeak-Bench
- ModelScope: ViSpeak-s2, ViSpeak-s3, ViSpeak-Instruct, ViSpeak-Bench
🔥 News
We are hiring self-motivated interns and research interns and conducting graduate recruitment in China. Please feel free to contact Tech Manager via WeChat (id: weixihan1)
[2025.06.26] Our paper was accepted by ICCV 2025.
👀 ViSpeak Overview
<p align="center"> <img src="./asset/task_example.jpg" width="100%" height="100%"> </p>Recent advances in Large Multi-modal Models (LMMs) are primarily focused on offline video understanding. Instead, streaming video understanding poses great challenges to recent models due to its time-sensitive, omni-modal and interactive characteristics. In this work, we aim to extend the streaming video understanding from a new perspective and propose a novel task named Visual Instruction Feedback in which models should be aware of visual contents and learn to extract instructions from them. For example, when users wave their hands to agents, agents should recognize the gesture and start conversations with welcome information. Thus, following instructions in visual modality greatly enhances user-agent interactions. To facilitate research, we define seven key subtasks highly relevant to visual modality and collect the ViSpeak-Instruct dataset for training and the ViSpeak-Bench for evaluation. Further, we propose the ViSpeak model, which is a SOTA streaming video understanding LMM with GPT-4o-level performance on various streaming video understanding benchmarks. After finetuning on our ViSpeak-Instruct dataset, ViSpeak is equipped with basic visual instruction feedback ability, serving as a solid baseline for future research.
🌟 Contributions in ViSpeak
-
We propose a novel streaming video understanding task named Visual Instruction Feedback, which requires the model to actively respond to visual contents. This task greatly enhances human-agent interactions.
-
To support exploration, we manually collect the ViSpeak-Bench benchmark and the ViSpeak-Instruct training dataset. We also provide some analysis based on the evaluation results of existing models.
-
We also propose a strong baseline ViSpeak for the new task, which is finetuned from an existing omni-modal model with three-stage finetuning. ViSpeak not only preserves offline understanding capacities but also achieves SOTA performance on streaming video understanding benchmarks.
📈 Experimental Results
📍 Model Zoo
- We provide our checkpoints at Huggingface and ModelScope
| Model | Link | Size | | :--------: | :----------------------------------------------------------: | :--: | | ViSpeak-s2 | Huggingface ModelScope | 7B | | ViSpeak-s3 | Huggingface ModelScope | 7B |
- Our model is built upon VITA 1.5. To use the model, uses should:
- Download audio-encoder and visual encoder
- And modify the
config.jsonfile
📍 Results
<p align="center"> <img src="./asset/streamingbench.jpg" width="100%" height="100%"> </p> <p align="center"> <img src="./asset/ovobench.jpg" width="100%" height="100%"> </p> <p align="center"> <img src="./asset/vispeakbench.jpg" width="100%" height="100%"> </p>📐 Demo
python demo.py --model_path /your/path/to/ViSpeak-s3/ --video demo.mp4
- The output will be:
Welcome! I'm ready to help you with any issue you might have. 3.9792746113989637
📏Evaluating on MLLM Benchmarks
📍 Offline Benchmarks
-
Download benchmark data.
-
Modify the model path of
vispeak_qwen2inVLMEvalKit/vlmeval/config.py
vispeak_series = {
'vispeak_qwen2': partial(ViSpeakQwen2, model_path='/path/to/model'),
}
- Then, evaluating on benchmarks:
cd VLMEvalKit
export PYTHONPATH=/your_path_to_ViSpeak/ViSpeak-main
CUDA_VISIBLE_DEVICES=0 python run.py --data MME --model vispeak_qwen2 --verbose
CUDA_VISIBLE_DEVICES=0 python run.py --data MVBench --model vispeak_qwen2 --verbose --nframe 64
CUDA_VISIBLE_DEVICES=0 python run.py --data Video-MME --model vispeak_qwen2 --verbose --nframe 64
📍 Online Benchmarks
-
Download benchmark data first.
-
Then, evaluating on benchmarks:
# StreamingBench
cd StreamingBench/scripts
export PYTHONPATH=/your_path_to_ViSpeak/ViSpeak-main
bash eval.sh
# OVO-Bench
cd OVO-Bench
export PYTHONPATH=/your_path_to_ViSpeak/ViSpeak-main
bash ViSpeak_inference.sh
📍 ViSpeak-Bench
-
Download benchmark data from ViSpeak-Bench.
-
Then, evaluating on benchmarks:
python -m torch.distributed.launch --use_env --nproc_per_node 1 --nnodes 1 ViSpeak_bench.py --model_path /path/to/ViSpeak-s3 --video_folder_path /path/to/ViSpeak-Bench
- The evaluation is based on GPT-4o, thus users should first get an API key. More evaluation instructions please see ViSpeak-Bench.
⭐ Training
Our environment
pytorch==2.4.0+cu121
transformers==4.44.2
numpy==1.23.5
# other packages
accelerate
decord
deepspeed
Jinja2
ninja
numpy
pillow
flash_attention
Data Preparation
- To reproduce the stage 3 fine-tuning, users should organize the data as follows:
|--ViSpeak-Instruct
| |--annotations
| | |--Anomaly_Warning_HIVUA_train.json
| | |--Gesture_Understanding_trainv3_7k.json
| | |--social_i_qa_merged_4k.json
| | |--Anomaly_Warning_oops_train.json
| | |--HumorQA_train_2k.json
| | |--interruption_text_training_data.json
| | |--socialiq_2K.json
| | |--wake_up_text_training_data_split.json
| | |--SMILE_1k.json
| | |--socialiq_our_anno_1k.json
| | |--intentqa_5k.json
| | |--reference_text_training_data.json
| |--FunQA
| | |--test
| | |--train
| | |--val
| |--HIVAU
| | |--videos
| | | |--ucf-crime
| | | | |--videos
| | | | | |--Abuse001_x264.mp4
| | | |--xd-violence
| | | | |--videos
| | | | | |--xxx.mp4
| |--IntentQA
| | |--videos
| |--SMILE
| | |--videos
| |--social-iq
| | |--videos
| |--UAL-Bench
| | |--uag_oops
| | |--uag_oops_instruct
| |--self_collected_data
| | |--20250211_envideo
| | |--20250212_envideo
| | |--20250213_envideo
| | |--20250214_envideo
| | |--20250216_envideo
| | |--20250219_envideo
| | |--20250220_envideo
| | |--20250221_envideo
| | |--20250222_envideo
| | |--20250224_envideo
| | |--Jester_videos
| | |--self_collected_gestures
-
annotationsandself_collected_datacan be found in our Huggingface and ModelScope. -
FunQA: https://huggingface.co/datasets/fesvhtr/FunQA -
HIVAU: https://github.com/pipixin321/HolmesVAU- After downloading the videos, please originize the videos as above.
-
IntentQA: https://github.com/JoseponLee/IntentQA -
SMILE: https://github.com/kaist-ami/SMILE-Dataset -
social-iq: https://www.kaggle.com/datasets/mathurinache/social-iq -
UAL-Bench: https://drive.google.com/drive/folders/1eE_ngd-E6rjdHz0KKttJATzsdxv4Wf_e?usp=sharing -
Paths in
vispeak/config/dataset_config.pyshould be modified accordingly. -
The training script is
script/train/finetune_qwen_stage3_nodes.sh
✒️ Citation
If you find our work helpful for your research, please consider citing our work.
@article{fu2025vispeak,
title={ViSpeak: Visual Instruction Feedback in Streaming Videos},
author={Fu, Shenghao and Yang, Qize and Li, Yuan-Ming and Peng, Yi-Xing and Lin, Kun-Yu and Wei, Xihan and Hu, Jian-Fang and Xie, Xiaohua and Zheng, Wei-Shi},
journal={arXiv preprint arXiv:2503.12769},
year={2025}
}
📣 Statement
ViSpeak is trained on large-scale open-source corpus, and its output has randomness. Any content generated by ViSpeak does not represent the views of the model developers. We are not responsible for any problems arising from the use, misuse, and dissemination of ViSpeak, including but not limited to public opinion risks and data security issues.
📜 Related Works
Explore our related researches:
- [HumanOmni] HumanOmni: A Large Vision-Speech Language Model for Human-Centric Video Understanding
- [R1-Omni] R1-Omni: Explainable Omni-Multimodal Emotion Recognition with Reinforcement Learning
- [Omni-Emotion] Omni-Emotion: Extending Video MLLM with Detailed Face and Audio Modeling for Multimodal Emotion Analysis
👍 Acknowledgement
ViSpeak is built with reference to the following outstanding works: VITA 1.5 and many other awesome datasets! Thanks!
📜 License
- Our models and code are under the Apache License 2.0.
- But our self-collected videos are under CC BY-NC-SA 4.0 license.
Related Skills
qqbot-channel
347.2kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.1k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
347.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Design
Campus Second-Hand Trading Platform \- General Design Document (v5.0 \- React Architecture \- Complete Final Version)1\. System Overall Design 1.1. Project Overview This project aims t
