Video-Text-to-Text
Transformers
Safetensors
qwen3_vl
image-text-to-text
eventlens
video-understanding
temporal-grounding
reinforcement-learning
on-policy-distillation
Instructions to use Lostgreen/EventLens-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Lostgreen/EventLens-4B with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Lostgreen/EventLens-4B") model = AutoModelForMultimodalLM.from_pretrained("Lostgreen/EventLens-4B", device_map="auto") - Notebooks
- Google Colab
- Kaggle
|
Download README.md from Lostgreen/EventLens-4B: direct link, hf CLI and curl.
- Browser
- Download file 6.52 kB
-
https://huggingface.co/Lostgreen/EventLens-4B/resolve/main/README.md
- Command line
-
hf download hf://Lostgreen/EventLens-4B/README.md
-
curl -L -o README.md https://huggingface.co/Lostgreen/EventLens-4B/resolve/main/README.md
6.52 kB
| license: cc-by-nc-sa-4.0 | |
| library_name: transformers | |
| pipeline_tag: video-text-to-text | |
| base_model: Qwen/Qwen3-VL-4B-Instruct | |
| base_model_relation: finetune | |
| datasets: | |
| - Lostgreen/EventLens-Train | |
| tags: | |
| - eventlens | |
| - qwen3_vl | |
| - video-understanding | |
| - temporal-grounding | |
| - reinforcement-learning | |
| - on-policy-distillation | |
| - safetensors | |
|  | |
| **[Results](#results) · [Quick start](#quick-start) · [Training](#training) · [Dataset](https://huggingface.co/datasets/Lostgreen/EventLens-Train)** | |
| **EventLens-4B** is a video-language model developed through event-structure reinforcement learning and **multi-teacher on-policy distillation (MT-OPD)**. Built on [Qwen3-VL-4B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct), it learns to recognize **event boundaries, progression, and relations**, alongside temporal grounding and video question answering. | |
| The model is part of **EventLens: Event-Structure Reinforcement Learning for Video Understanding**, developed by **AIM3 Lab, Renmin University of China**, and **Kling AI**. | |
| ## Results | |
| Selected results reported in the EventLens paper, compared with the corresponding pretrained backbone under the shared **256-frame** protocol. | |
| | Benchmark | Qwen3-VL-4B | EventLens-4B | Gain | | |
| | --- | ---: | ---: | ---: | | |
| | QVHighlights | 54.31 | **58.50** | **+4.19** | | |
| | ActivityNet | 41.99 | **45.76** | **+3.77** | | |
| | Charades-STA | 43.64 | **47.99** | **+4.35** | | |
| | E.T. Bench | 34.55 | **41.47** | **+6.92** | | |
| | VinoGround | 37.00 | **45.00** | **+8.00** | | |
| QVHighlights, ActivityNet, and Charades-STA use **mIoU**. E.T. Bench and VinoGround use their official benchmark scores. Gains are absolute score differences; higher is better. These are paper-reported results. | |
| ## Model details | |
| | Property | Value | | |
| | --- | --- | | |
| | Base model | `Qwen/Qwen3-VL-4B-Instruct` | | |
| | Architecture | `Qwen3VLForConditionalGeneration` | | |
| | Checkpoint format | Full BF16 safetensors weights | | |
| | Weight files | 2 shards · 9.65 GB | | |
| | Stored tensor parameters¹ | 4,826,771,968 | | |
| | Student training | Multi-teacher on-policy distillation | | |
| | Specialist teachers used in training | Three 4B models: Boundary, Progression, Relation | | |
| | Paper prompt mode | Direct task answers (`no_cot`) | | |
| | Training view | `Lostgreen/EventLens-Train` / `paper_mt_opd` | | |
| ¹ The 4B name follows the backbone series. The stored tensor count includes both the language and vision components. Weight file size is distinct from runtime memory use. | |
| ## Quick start | |
| Use a Transformers version that supports Qwen3-VL. The example follows the [official Qwen3-VL integration](https://huggingface.co/docs/transformers/model_doc/qwen3_vl). | |
| ```bash | |
| pip install -U transformers accelerate torch torchcodec | |
| ``` | |
| ```python | |
| from transformers import AutoProcessor, Qwen3VLForConditionalGeneration | |
| MODEL_PATH = "Lostgreen/EventLens-4B" | |
| processor = AutoProcessor.from_pretrained(MODEL_PATH) | |
| model = Qwen3VLForConditionalGeneration.from_pretrained( | |
| MODEL_PATH, | |
| dtype="auto", | |
| device_map="auto", | |
| attn_implementation="sdpa", | |
| ).eval() | |
| messages = [{ | |
| "role": "user", | |
| "content": [ | |
| {"type": "video", "path": "/path/to/video.mp4"}, | |
| {"type": "text", "text": "Describe the main events in this video in chronological order."}, | |
| ], | |
| }] | |
| inputs = processor.apply_chat_template( | |
| messages, | |
| tokenize=True, | |
| add_generation_prompt=True, | |
| return_dict=True, | |
| return_tensors="pt", | |
| num_frames=32, | |
| ).to(model.device) | |
| inputs.pop("token_type_ids", None) | |
| output_ids = model.generate(**inputs, max_new_tokens=256, do_sample=False) | |
| answer_ids = output_ids[:, inputs.input_ids.shape[1]:] | |
| print(processor.batch_decode(answer_ids, skip_special_tokens=True)[0]) | |
| ``` | |
| This short example samples **32 frames**. Reproducing the paper's scores requires the benchmark-specific prompts, preprocessing, and 256-frame protocol. For event recovery tasks, follow the task's answer format in the released dataset; frame order and clip grouping are part of the input. | |
| ## Training | |
|  | |
| **Stage I — Learn event specialists.** Three Qwen3-VL-4B teachers are trained on event boundaries, single-event progression, and multi-event relations using reinforcement learning with verifiable rewards. | |
| **Stage II — Distill a unified student.** The 4B student generates its own responses. Task routing selects the matching specialist, which provides token distributions for on-policy distillation. Both EventLens student sizes use the same three 4B teachers. | |
| The released model is the **unified 4B student**. Specialist teacher checkpoints are not included in this release. | |
| ### Training data | |
| The public [EventLens training dataset](https://huggingface.co/datasets/Lostgreen/EventLens-Train) provides frozen task views, original hierarchy annotations, and shared sampled JPEG frames. The default student view contains **37,428 training examples**: | |
| | Task family | Training examples | | |
| | --- | ---: | | |
| | Event boundaries | 10,000 | | |
| | Event progression | 10,000 | | |
| | Event relations | 10,000 | | |
| | Temporal grounding | 4,791 | | |
| | Video QA | 2,637 | | |
| The historical `monitor_val` split contains 1,950 records and overlaps training. Benchmark results above use the corresponding external evaluation benchmarks. | |
| ## Intended use | |
| EventLens-4B supports research on video event understanding, temporal grounding, event ordering, and video question answering. Event timing and ordering depend on the supplied visual evidence: sparse sampling can omit brief actions, and generated descriptions or timestamps may be inaccurate. Review outputs when exact event boundaries matter. | |
| ## License and credits | |
| **EventLens model weights are released under [CC-BY-NC-SA-4.0](LICENSE) for non-commercial use.** The [Qwen3-VL-4B-Instruct base model](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct) is distributed under Apache-2.0. The EventLens dataset uses CC-BY-NC-SA-4.0 for EventLens-derived annotations and labels, with source-specific terms for third-party data and media. The original Apache-2.0 license is retained in [LICENSE-BASE-QWEN-APACHE2](LICENSE-BASE-QWEN-APACHE2), with attribution in [NOTICE](NOTICE). | |
| EventLens builds on **Qwen3-VL**, **EasyR1**, and **verl**. The training dataset acknowledges its upstream sources in its [dataset card](https://huggingface.co/datasets/Lostgreen/EventLens-Train). | |