InternVideo2.5: Empowering Video MLLMs with Long and Rich Context Modeling

Authors: Yi Wang, Xinhao Li, Ziang Yan, Yinan He, Jiashuo Yu 等 (Shanghai AI Lab, Nanjing University, Shanghai Innovation Institute) GitHub: OpenGVLab/InternVideo, OpenGVLab/VideoChat-Flash

1. Motivation (研究动机)

当前视频多模态大语言模型 (Video MLLM) 面临两个核心瓶颈:

  1. 上下文长度不足 (Memory): 现有 MLLM 处理视频帧数有限, InternVL2.5-8B 甚至在 500 帧内就难以准确召回信息, 超过 1000 帧直接 OOM. 这严重限制了对长视频 (分钟级/小时级) 的理解能力.
  2. 上下文精细度不够 (Focus): MLLM 在基础视觉任务 (目标定位、跟踪、分割) 上表现不佳, 难以感知细粒度的时空细节, 如物体运动轨迹、精确时间边界等.

核心洞察: 提升多模态上下文的长度 (length) 和精细度 (fineness) 是增强视频 MLLM 能力的关键方向, 而非简单地增大模型规模或数据量.

Figure 1 解读: 左图展示了 InternVideo2.5 在 MVBench (短视频) 和 VideoMME (长视频) 上的性能对比. 相比 InternVL2.5 基座模型, InternVideo2.5 实现了全面提升, 并且能记忆 6 倍以上长度的视频输入. 右图展示了模型追踪指定行人并分析运动轨迹的能力, 体现了细粒度时空感知.


2. Idea (核心思想)

InternVideo2.5 提出 Long and Rich Context (LRC) Modeling, 通过两个正交且互补的技术增强视频 MLLM:

组件目标技术
HiCo (Hierarchical Token Compression)增长上下文长度 (Memory)自适应分层 token 压缩: ToMe + TDrop
TPO (Task Preference Optimization)增强上下文精细度 (Focus)多任务偏好学习: 时序定位头 + 分割头

关键思想:

  • HiCo: 利用视频时空冗余, 在 vision encoding 阶段通过 ToMe 进行 clip 级压缩, 在 LLM 处理阶段通过 TDrop 进行 video 级压缩, 实现约 1/50 的极端压缩比且几乎无性能损失
  • TPO: 将专家级视觉感知能力 (时序定位、实例分割) 通过 DPO 思路注入 MLLM, 使其在保持通用对话能力的同时获得精确的视觉分析能力

3. Method (方法)

Figure 2 解读: InternVideo2.5 的整体框架. 视频被分为多个 clip, 经 Vision Encoder 编码后通过 Connector (含 ToMe 压缩) 映射到 LLM 空间. 在 LLM 的 Transformer Block 中, TDrop 进一步减少 token 数量. 同时, Task Preference Model 包含 Temporal Head 和 Mask Head, 通过可学习的 task embedding 与 LLM 交互, 实现时序定位和分割任务.

3.1 HiCo: 分层 Token 压缩

HiCo 包含三个非学习性的组件:

(a) Adaptive Temporal Sampling (自适应时序采样)

根据视频时长动态调整采样帧率:

  • 短视频 (需要运动细粒度): 15 FPS 密采样
  • 长视频 (分钟/小时级, 事件级理解): 1 FPS 稀疏采样
  • 帧数范围: 128-512 帧
伪代码: Adaptive Temporal Sampling
─────────────────────────────────
输入: video, duration
输出: sampled_frames
 
local_num_frames = 4  # 每个 clip 的帧数
num_segments = duration // local_num_frames
num_frames = local_num_frames * num_segments
num_frames = clip(num_frames, min=128, max=512)
 
frame_indices = uniform_sample(0, total_frames, num_frames)
return video[frame_indices]

(b) Spatiotemporal Token Merging (时空 Token 合并)

在 Vision Encoder 输出后, 使用 ToMe (Token Merging) 对每个 clip 的 token 进行语义级压缩:

其中 个时序片段, 每个片段由 vision encoder 生成 个初始 token, 经 token connector 压缩为 个 token ().

ToMe 的核心是基于语义相似度的 bipartite soft matching:

  1. 将 token 分为偶数/奇数两组
  2. 计算两组间的余弦相似度矩阵
  3. 选择相似度最高的 token 对进行加权平均合并
  4. 迭代减半直到达到目标 token 数
伪代码: ToMe Token Merging
─────────────────────────
输入: tokens [B, M, D], target_count N
输出: merged_tokens [B, N, D]
 
while tokens.shape[1] > N:
    r = tokens.shape[1] // 2  # 每次减半
    # 分为两组
    even_tokens = tokens[:, 0::2]
    odd_tokens = tokens[:, 1::2]
 
    # 计算余弦相似度
    similarity = cosine_sim(even_tokens, odd_tokens)
 
    # 找到最大匹配
    matched_pairs = argmax(similarity, dim=-1)
 
    # 加权平均合并
    merged = weighted_average(even_tokens, odd_tokens[matched_pairs])
    tokens = concat(unmerged, merged)
 
return tokens  # [B, N, D]
  • 每帧 448x448 图像经 InternViT 产生 1024 个 token
  • 8 帧一个 clip, 经 pixel shuffle (2x downsample) 后为 256 token/帧
  • ToMe 压缩到约 16 token/帧 (压缩比约 16x)

(c) Multimodal Token Dropout (多模态 Token 丢弃, TDrop)

在 LLM 处理过程中进一步减少视觉 token:

两阶段策略:

  1. 浅层: 均匀随机丢弃, 保持结构完整性, 降低计算量
  2. 深层: 基于 attention 权重的引导式 token 选择, 保留与任务相关的关键信息
伪代码: Token Dropout (TDrop)
────────────────────────────
输入: visual_tokens [B, NT, D], layer_id l
输出: pruned_tokens
 
if l < shallow_threshold:
    # 均匀随机丢弃
    mask = Bernoulli(p) for each token
    pruned_tokens = tokens[mask]
else:
    # Attention-guided 选择
    attn_scores = compute_attention(query_tokens, visual_tokens)
    top_k_indices = topk(attn_scores, k=keep_count)
    pruned_tokens = tokens[top_k_indices]
 
return pruned_tokens

3.2 TPO: 任务偏好优化

TPO 通过 Multi-task Preference Learning (MPL) 增强 MLLM 的精确视觉感知能力.

架构设计

整体框架包含:

  • 核心 MLLM : Vision Encoder + Cross-modal Connector + LLM
  • Visual Perception Module : 个 task-specific head , 通过可学习的 task embedding 与 MLLM 交互

Temporal Head (时序定位头):

  • 基于 CG-DETR 架构
  • 输入: 视频特征 + 文本 query + task-specific temporal embedding
  • 输出: 时间边界 + 相关性分数
  • 用于 moment retrieval、temporal grounding

Mask Head (分割头):

  • 基于 SAM2 预训练权重
  • 包含: image encoder + mask decoder + adaptive projection layer
  • 输入: MLLM embedding + 图像特征
  • 输出: 像素级分割掩码
  • 用于 referring segmentation

联合训练损失

其中:

  • : 标准语言建模损失
  • : 多任务对话损失, 为输入 query, 为任务标签
  • : 专项视觉任务损失, 为 task-specific 标注

3.3 渐进式三阶段训练

阶段目标数据帧数训练参数
Stage 1: Foundation Learning任务识别 + 视觉-语言对齐0.5M 图文 + 0.5M 短视频文本4帧Compressor + MLP (冻结 ViT 和 LLM)
Stage 2: Fine-grained Perception精细视觉感知3.5M 图像 + 2.5M 短视频 + 任务数据8帧Task tokens + Region head + Temporal head + Mask adapter + LLM (LoRA)
Stage 3: Integrated Long-form多任务联合 + 长视频1.1M 图像 + 1.7M 短视频 + 0.7M 长视频 = 3.5M64-512帧全模型 (ViT + Connector + Task tokens + Heads + LLM with LoRA)

3.4 模型配置

组件具体实现
Vision EncoderInternViT
LLMInternLM2.5-7B
ConnectorMLP-based Token Merging
Temporal HeadCG-DETR
Mask HeadSAM2
视频特征提取InternVideo2
位置编码两层 MLP (时间 + 空间)
Token/帧~16 tokens
最大帧数512
每 clip 帧数8

3.5 分布式训练系统

  • 基于 XTuner 的多模态序列并行系统
  • 结合 DeepSpeed-Ulysses 的 All-to-All (A2A) 通信 + Ring-Attention 的 P2P 通信
  • 采用 2D-Attention 策略: A2A 用于节点间, P2P 用于节点内
  • 动态数据打包 (Dynamic Packing): 按序列长度动态拼接, 最大化 GPU 利用率

4. Experimental Setup (实验设置)

评测基准

短视频理解:

  • MVBench (平均时长 16s)
  • PerceptionTest (23s)

长视频理解:

  • EgoSchema (180s)
  • LongVideoBench (473s)
  • MLVU (651s)
  • VideoMME (1010s)
  • LVBench (4101s)

专项视觉任务:

  • Charades-STA, Highlight Detection (时序定位)
  • Ref-YouTube-VOS, MeViS (视频分割)
  • LaSOT, GOT-10k (目标跟踪)

长视频记忆能力:

  • Single-hop Needle-In-A-Haystack (NIAH), 最多 5000 帧, 16 张 A100 (80G)

对比方法

  • 商业模型: GPT4-V, GPT4-o, Gemini-1.5-Pro
  • 开源 MLLM: InternVL2, LLaVA-OneVision, VideoLLaMA2, QwenVL2, InternVL2.5 等
  • 开源长视频 MLLM: LLaMA-VID, LongVA, LongLaVA, LongVU, VideoChat-Flash 等
  • 专项视觉模型: UniVTG, ReferFormer, SiamFC, ATOM, SiamRPN++ 等

训练数据规模

阶段SegmentationTemporal GroundingSpatial GroundingVisual Concept / 其他
Stage 150K50K50K1M alignment
Stage 2114.6K116.5K540.0K6M visual concept
Stage 3116.5K7.5K + 40K400K3.5M conversation

长视频数据: LongVid 数据集 (114,228 长视频, 3.4M QA 对, 5种任务类型)


5. Experimental Results (实验结果)

5.1 视频理解性能 (Table 2)

InternVideo2.5 在 7B 量级开源模型中几乎全面领先:

模型SizeTokensMVBenchPerceptionTestEgoSchemaLongVideoBenchMLVUVideoMMELVBench
InternVL2.58B25672.068.251.560.068.964.238.4
InternVideo2.57B1675.7 (+3.7)74.9 (+6.7)63.9 (+12.4)60.6 (+0.6)72.8 (+3.9)65.1 (+0.9)46.4 (+8.0)
GPT4-o--64.6-72.266.764.671.930.8
Gemini-1.5-Pro--60.5-71.264.0-75.033.1

关键发现:

  • 相比基座 InternVL2.5, MVBench +3.7, PerceptionTest +6.7, EgoSchema +12.4, LVBench +8.0
  • 在短视频时空理解上超越 GPT4-o 和 Gemini-1.5-Pro
  • 长视频基准仍落后于商业模型, 说明视觉-语言融合和长上下文建模仍有提升空间
  • 仅用 16 tokens/帧 (对比 InternVL2.5 的 256 tokens/帧), 大幅降低计算量

5.2 NIAH 长视频记忆测试 (Figure 3)

Figure 3 解读: Single-hop Needle-in-a-Haystack 测试结果. InternVL2.5 (上) 在 500 帧内就难以保持 95% 召回率, 超过 1000 帧 OOM. InternVL2.5-HiCo (中) 在 3000 帧内保持高召回 (0.94-0.98), 可处理 5000+ 帧. 完整的 InternVideo2.5 (下) 在 3000 帧内接近完美 (0.92-0.99), 但超过 3000 帧后性能下降, 可能因训练数据以短视频为主.

5.3 专项视觉任务 (Table 3)

InternVideo2.5 在多个传统视觉任务上达到专家模型级别:

任务指标InternVideo2.5最佳专家模型
Charades-STA 时序定位R@0.5 / mIoU43.3 / 41.7VideoChat-TPO: 40.2 / 38.1
Highlight DetectionmAP / HIT@134.7 / 60.3VideoChat-TPO: 38.8 / 66.2
Ref-YouTube-VOS 视频分割J&F34.2VideoLISA: 63.7
MeViS 运动分割J&F32.0VideoLISA: 44.4
LaSOT 跟踪Success / P_norm82.1 / 72.4SiamFC+++: 59.5 / 69.5
GOT-10k 跟踪Overlap / SR_0.579.8 / 83.0SiamRPN++: 51.8 / 61.8

关键发现: 在目标跟踪 (LaSOT, GOT-10k) 上大幅超越传统专家模型, 体现了 MLLM + TPO 的强大潜力.

5.4 Ablation Studies

Token 数量对性能的影响 (Table 4)

Tokens/帧MVBenchPerceptionTestEgoSchemaLongVideoBenchMLVUVideoMME
6474.471.965.762.772.666.4
1674.071.462.959.671.564.9
  • 短视频基准降幅较小 (~0.5 points)
  • 长视频基准降幅更明显 (1-3 points)
  • 说明长上下文建模中 token 信息密度仍有优化空间

HiCo 与 TPO 的兼容性和互补性 (Table 5)

HiCoTPOMVBenchPerceptionTestEgoSchemaLongVideoBenchMLVUVideoMME
--72.068.251.560.068.964.2
Yes-74.071.462.959.671.564.9
YesYes75.774.963.960.672.865.1
  • HiCo 单独使用即可带来显著提升 (MVBench +2.0, EgoSchema +11.4)
  • TPO 在 HiCo 基础上进一步提升 (MVBench +1.7, PerceptionTest +3.5)
  • 两者正交互补, 联合训练简化了整体流程

5.5 定性分析

Figure 4 解读: InternVideo2.5 能够以精确的时间戳描述视频中女性的瑜伽动作序列 (如 “00:00:02-00:00:04 过渡到下犬式”), 而对比模型只能给出模糊的整体描述, 缺乏时间锚点.

Figure 5 解读: 目标跟踪与推理示例. 用户指定 “突然出现的行人”, 模型不仅能追踪目标, 还能描述行为 (“一个人在跑, 跳过一辆车, 落在另一辆车引擎盖上”) 并返回带标注的帧序列.

Figure 6a 解读: 长视频监控场景. 模型能在长时间监控视频中精确定位特定人物出现时间 (“约 1409.5 秒”), 并进行 moment retrieval, 展示了长视频理解和时序定位能力.

Figure 6b 解读: 监控视频异常检测. 面对 “是否存在犯罪行为” 的问题, 对比模型 (VideoChat2) 给出错误的否定回答, 而 InternVideo2.5 正确识别出可疑行为 (有人走进房屋, 可能涉及入室盗窃), 并返回相关帧序列, 体现了长视频细粒度事件理解能力.


代码-论文映射

论文组件代码位置说明
ToMe Token Merging (Eq. 1)VideoChat-Flash/llava-train_videochat/llava/model/multimodal_projector/tome16_mlp_hd64.pybipartite_soft_matching() 实现二部图匹配, merge_wavg() 实现加权平均合并, merge_tokens() 迭代减半
Token Dropout TDrop (Eq. 2)VideoChat-Flash/xtuner-eval_niah/longva/model/multimodal_resampler/masked_drop.pyMaskedDrop 类, random_masking() 实现 Bernoulli 采样
InternVL Chat Model (整体架构)VideoChat-Flash/xtuner-train_internvideo2_5/xtuner/_lite/internvl/v1_5/modeling_internvl_chat.pyInternVLChatModel 类, extract_feature() + pixel_shuffle() 实现视觉特征提取
训练配置 (Stage 3)VideoChat-Flash/xtuner-train_internvideo2_5/unify_internvl2_train_r16.pyLazyInternVL2Dataset 数据集, AdamW 优化器, lr=4e-5, max_length=131072
训练脚本VideoChat-Flash/xtuner-train_internvideo2_5/ft_internvideo_2_5_datapacking.sh带 dynamic packing 的训练启动脚本
自适应帧采样HuggingFace 推理代码 get_num_frames_by_duration()local_num_frames=4, clip(128, 512)
NIAH 评测VideoChat-Flash/xtuner-eval_niah/Needle-in-a-Haystack 评测脚本
视频问答评测VideoChat-Flash/lmms-eval_videochat/基于 lmms-eval 的评测框架

注意: TPO 的 Temporal Head (CG-DETR) 和 Mask Head (SAM2) 的具体集成代码暂未在开源仓库中找到, 训练代码主要覆盖了 HiCo + 标准 SFT 流程.