|
Download idea/README.md from ZWJ666/VideoMend: direct link, hf CLI and curl.
- Browser
- Download file 29.4 kB
-
https://huggingface.co/ZWJ666/VideoMend/resolve/main/idea/README.md
- Command line
-
hf download hf://ZWJ666/VideoMend/idea/README.md
-
curl -L -o README.md https://huggingface.co/ZWJ666/VideoMend/resolve/main/idea/README.md
29.4 kB
| # VideoMend: Mending Temporal Continuity in Video Reasoning | |
| ## 核心 Idea 整理(对照论文 + 代码) | |
| > **论文**:VideoMend: Mending Temporal Continuity in Video Reasoning | |
| > **投稿**:NeurIPS 2026 | |
| > **核心范式转变**:`sample-then-understand` → `sample-then-reconstruct-then-understand` | |
| --- | |
| ## 目录 | |
| 1. [问题定义](#1-问题定义) | |
| 2. [核心洞见与范式转变](#2-核心洞见与范式转变) | |
| 3. [方法一:Ref-Delta Chain-of-Thought](#3-方法一ref-delta-chain-of-thought) | |
| 4. [方法二:数据构建(Data Construction)](#4-方法二数据构建data-construction) | |
| 5. [方法三:Delta-Mask GRPO(DM-GRPO)](#5-方法三delta-mask-grpodm-grpo) | |
| 6. [奖励函数完整设计](#6-奖励函数完整设计) | |
| 7. [训练全流程](#7-训练全流程) | |
| 8. [对比方法](#8-对比方法) | |
| 9. [评测结果](#9-评测结果) | |
| 10. [附录:核心符号速查](#10-附录核心符号速查) | |
| --- | |
| ## 1. 问题定义 | |
| ### 1.1 根本矛盾 | |
| > **video understanding semantically relies on temporal continuity, yet computational constraints mandate discrete sampling at the input.**(论文 §1) | |
| 由于计算开销,现有 Video LLM 一律采用**帧采样**(frame sampling):从连续视频 $\mathcal{V} = \{v(t)\}_{t=0}^T$ 中提取稀疏的 $N$ 帧作为输入: | |
| $$F = \{f_1, f_2, \ldots, f_N\}, \quad f_i = v(t_i), \quad 0 \leq t_1 < t_2 < \cdots < t_N \leq T$$ | |
| 这一设计在**输入层面**天然丢弃了帧间时序动态 $\delta_i$(即从 $v(t_i)$ 到 $v(t_{i+1})$ 的视觉变化),导致模型的推理空间仅覆盖 $N$ 个离散时间点的视觉内容,而 $\delta_i$ 在推理链 $z$ 中没有任何显式表示(论文 §3.1)。 | |
| ### 1.2 两类 Shortcut 行为 | |
| | Shortcut | 描述 | 典型例子 | | |
| |----------|------|---------| | |
| | **单帧偏差**(Single-frame Bias) | 从单帧显著物体推断答案 | 看到门 → 预测"开门",实际动作是"关门" | | |
| | **背景偏差**(Background Bias) | 推理锚定在静态场景背景上 | 看到厨房 → 预测"做饭",实际是"洗碗" | | |
| **三类帧间信息的丢失**(论文 §1): | |
| - 动作**方向性**(directionality):opening vs. closing | |
| - 运动**动态变化**(motion dynamics):accelerating vs. decelerating | |
| - 渐进式**状态转变**(gradual state transitions) | |
| --- | |
| ## 2. 核心洞见与范式转变 | |
| ### 2.1 关键问题 | |
| > **Can the reasoning structure itself reconstruct inter-frame temporal information, activating the model's ability to re-link discrete frames into a continuous temporal stream?**(论文 §1) | |
| 关键帧选取方法从**输入侧**优化,但无论如何选帧,模型收到的仍是离散快照,帧间变化在推理层仍是隐式的。 | |
| 大规模视频-文本预训练已经赋予模型丰富的时序先验,**问题不在于模型不具备这种能力,而在于当前的推理范式没有激活它**。 | |
| ### 2.2 解决思路 | |
| 不把采样帧当作独立快照处理,而是让模型在推理链中**主动选取关键时刻作为静态锚点(Reference),并对锚点之间的时间区间显式描述视觉变化(Delta)**,在推理层面弥补帧采样引入的信息缺口。Reference 和 Delta 的选定是灵活的,模型根据内容自主决定在哪些时刻落锚、哪些区间值得描述变化,而非机械地对每个采样帧逐一处理: | |
| ``` | |
| 旧范式:sample-then-understand | |
| ↓ | |
| 新范式:sample-then-reconstruct-then-understand | |
| ``` | |
| ### 2.3 三大贡献(论文 §1) | |
| 1. **Ref-Delta Chain-of-Thought**:在推理结构层面显式建模帧间时序变化,实现范式转变 | |
| 2. **时序流数据构建**:用语义反义对(方向感知)+ 对称速度构造(动态感知)提供定向训练信号 | |
| 3. **DM-GRPO**:通过帧掩码反事实验证 Delta 的视觉真实性,确保帧间变化建模来自视觉观察而非语言先验 | |
| --- | |
| ## 3. 方法一:Ref-Delta Chain-of-Thought | |
| ### 3.1 设计动机 | |
| 在当前范式下,$\delta_i$(采样帧间的时序动态)在推理链 $z$ 中没有任何显式表示。Ref-Delta CoT 的核心目标是:**将推理链结构本身改造为时序重建的载体**,使模型能在推理层面对帧间时序动态进行显式建模。 | |
| ### 3.2 推理结构 | |
| Ref-Delta CoT 将推理链 $z$ 组织为三类组件的交替结构(论文 §4.1): | |
| | 组件 | 内容 | 关键特性 | | |
| |------|------|---------| | |
| | **Reference** | 对某个时刻视觉内容的完整静态描述(主体位置/姿态/空间关系) | **灵活选取**:模型自主决定在哪些时刻落锚,无需覆盖每个采样帧 | | |
| | **Delta** | 对某段时间区间内视觉变化的显式描述(动作方向/运动速度/状态转换) | **灵活跨度**:时间区间可横跨多个采样帧,模型自主决定哪段区间值得描述 | | |
| | **Reasoning Summary** | 整合所有 Reference-Delta 对,推导最终答案 | 完整变化链的时序闭合 | | |
| **灵活性是关键**:Reference 的锚定时刻和 Delta 的时间区间由模型根据视频内容自主决定,而非强制映射到每个采样帧。这使模型能将注意力集中在语义变化显著的区间,对变化平缓的区段可以跳过或用 "Negligible change" 标注。 | |
| ### 3.3 格式规范(代码:`SFT/sft_video.py`) | |
| ``` | |
| <think> | |
| Reference frame at <time>HH:MM:SS.m</time>: [该帧完整静态描述,主体/姿态/空间关系] | |
| From <time_range>HH:MM:SS.m - HH:MM:SS.m</time_range>, | |
| <delta>[帧间视觉变化:动作方向/运动速度/状态转换,可标注 "Negligible change"]</delta> | |
| Reference frame at <time>HH:MM:SS.m</time>: [下一关键帧描述] | |
| From <time_range>HH:MM:SS.m - HH:MM:SS.m</time_range>, | |
| <delta>[...]</delta> | |
| ...(交替重复)... | |
| Reasoning Summary: [整合完整变化链,推导最终答案] | |
| </think> | |
| <answer>X</answer> | |
| ``` | |
| ### 3.4 论文完整示例(论文 Figure 1) | |
| **问题**:What happens to the door during the video? | |
| **Ground Truth**:The door is first closed, then opened again, and finally closed for a second time. | |
| ``` | |
| VideoMend: <think> | |
| Reference frame at <time>00:00:00.5</time>: A person stands inside a dimly lit | |
| entryway, silhouetted against the bright exterior visible through an open doorway. | |
| The door itself is swung wide open to the right, and the person is holding a | |
| long-handled tool near the threshold. | |
| From <time_range>00:00:00.5 - 00:00:12.9</time_range>, <delta>the person sweeps | |
| the floor area immediately inside the open doorway, moving the tool back and forth | |
| while the door remains in the fully open position</delta>. | |
| Reference frame at <time>00:00:12.9</time>: The person has finished sweeping near | |
| the threshold, stands upright, and begins to reach for the door handle with their | |
| left hand. The door is still wide open. | |
| From <time_range>00:00:12.9 - 00:00:15.9</time_range>, <delta>the person pulls | |
| the door inward, causing it to swing from the fully open position to a fully closed | |
| position, blocking the view of the outside street and car</delta>. | |
| ... | |
| Reasoning Summary: The video starts with the door open. The person closes it, | |
| sweeps, opens it again, sweeps, and finally closes a second time before leaving | |
| the area. The sequence is Open → Closed → Open → Closed. | |
| </think> | |
| <answer>During the video, the door is first closed, then opened again, and | |
| finally closed for a second time.</answer> | |
| ``` | |
| ### 3.5 核心价值 | |
| - **无 Delta 时**:模型只能感知每帧门的静态状态,无法捕捉多次开关门的完整时序过程 | |
| - **有 Delta 时**:完整状态链 Open→Closed→Open→Closed 从 Delta 中显式构建出来 | |
| 推理链 $z$ 从"仅含离散帧描述的序列"扩展为"显式包含帧间时序动态 $\delta_i$ 的结构化推理链"。 | |
| --- | |
| ## 4. 方法二:数据构建(Data Construction) | |
| ### 4.1 设计原则(论文 §4.2) | |
| Ref-Delta CoT 提供了时序流重建的推理结构,而这个流承载着**变化的方向(direction)**、**变化的节奏(dynamics/pace)**以及**渐进式状态转变**。忠实重建 $\delta_i$ 要求模型能准确感知方向和动态。 | |
| 大规模视频-文本预训练已赋予模型丰富的时序先验,SFT 的关键作用是通过**定向信号激活这些潜在能力**。 | |
| **数据组成**: | |
| - 基础训练数据:~10k 条真实视频 QA(Ref-Delta 格式标注)——足以教会推理结构,但缺乏方向/动态的定向信号 | |
| - 定向合成数据:~2k 条(约占 SFT 总数据的 **~17%**)——沿方向感知和动态感知两个维度构造 | |
| ### 4.2 方向感知数据(Direction Perception) | |
| **目标**:训练模型感知 $\delta_i$ 的变化方向,涵盖空间运动方向、状态转变方向、事件时序顺序(论文 §4.2.1)。 | |
| #### A. 语义反义对(Antonymous Semantic Pairs) | |
| **来源**:Chirality-in-Action 数据集(SSv2 / EPIC-Kitchens / Charades) | |
| **构造方式**: | |
| - 找到同一场景中方向相反的动作对(手性对),如: | |
| - `opening door` ↔ `closing door` | |
| - `picking up` ↔ `putting down` | |
| - `moving left` ↔ `moving right` | |
| - `filling` ↔ `emptying` | |
| - 两段视频**时间拼接**(temporal concatenation)或**空间拼接**(spatial concatenation),位置随机 | |
| **设计关键**:两段视频共享**完全相同的静态场景语义**,迫使模型依靠 Delta 中的方向信息而非 Reference 中的场景线索(论文 §4.2.1)。 | |
| **贡献**:~880 条 QA(代码:`data_preparation/make_chiral_pairs.py`) | |
| #### B. 正反向播放 QA(Forward/Reverse Playback) | |
| - 同一视频生成正向/反向播放对,1:1 平衡 | |
| - 覆盖**时序顺序**维度 | |
| - 直接考察模型对事件发展顺序的感知 | |
| ### 4.3 动态感知数据(Dynamics Perception) | |
| **目标**:训练模型感知 $\delta_i$ 的**变化节奏**(pace of change)(论文 §4.2.2)。 | |
| **核心设计:对称速度构造(Symmetric Speed Constructions)** | |
| | 视频类型 | 语义特征 | 速度变化 | 视频来源 | | |
| |---------|---------|---------|---------| | |
| | 短视频(简单语义) | 时长 3~15s,单一动作 | + **1/3× 减速** | STAR / Charades / perception_test | | |
| | 长视频(复杂语义) | 时长 10~60s,多步骤 | + **3× 加速** | ActivityNet / YouTube / YouCook / NextQA | | |
| **为什么要"对称构造"**(论文 §4.2.2): | |
| > 刻意打破**语义复杂度与速度之间的虚假相关性**,防止模型学到"复杂 = 慢,简单 = 快"的 shortcut。 | |
| - 简单动作减速:强制使相邻帧高度相似,直接对抗**特征平滑陷阱** | |
| - 复杂动作加速:强制使相邻帧跳跃较大,训练模型不依赖逐帧平滑推断 | |
| **拼接方式**:原速视频 + 速度变化视频,位置随机,要求模型判断哪个是原速。辅以单视频速度判断 QA 作为补充。 | |
| **贡献**:~800 条 QA(代码:`data_preparation/make_speed_pairs.py`) | |
| ### 4.4 时间戳叠加 | |
| 所有视频均叠加 `HH:MM:SS` 格式时间戳,与 Ref-Delta CoT 中的时序标注精度对齐(论文 §4.2.2)。 | |
| ### 4.5 GRPO 合并数据集 | |
| | 数据源 | 条数 | 来源 | | |
| |--------|------|------| | |
| | Video-R2 GRPO 全集 | ~4804 | Video-R2 GRPO dataset | | |
| | 手性动作对(方向感知) | ~880 | Chirality-in-Action | | |
| | 速度对比(动态感知) | ~800 | 自构建 | | |
| | SSv2 velocity_pair | ~1430 | Video-R1-260k 中提取 | | |
| | **合计** | **~7914** | `build_grpo_dataset.py` | | |
| --- | |
| ## 5. 方法三:Delta-Mask GRPO(DM-GRPO) | |
| ### 5.1 SFT 的根本局限(论文 §4.3) | |
| SFT 训练后,模型学会了输出 Ref-Delta 格式的推理链。然而: | |
| > SFT only teaches the model "how to write" through imitation, without guaranteeing that Deltas are grounded in visual observation. The model may exploit language priors, fabricating plausible-looking Deltas solely from the static scene descriptions in References. | |
| **"幻觉 Delta"的危险性**: | |
| - 格式正确(符合 Ref-Delta 规范) | |
| - 答案可能仍然正确(语言先验足够强) | |
| - **既无法被格式检查发现,也无法被标准 GRPO 的准确率奖励发现** | |
| ### 5.2 反事实帧掩码(Counterfactual Frame Masking) | |
| **核心思想**(论文 §4.3): | |
| > If a Delta genuinely reflects visual observation of $\delta_i$, then removing its corresponding frames should affect $\pi_\theta$'s reasoning performance. | |
| **具体操作**(论文 §4.3,代码:`RL/trainer/grpo_trainer.py`): | |
| 对每个训练样本 $(F, q)$,随机选取推理链 $z$ 中的**一个 Delta**,定位其时间区间 $[s_d, e_d]$ 内的采样帧索引: | |
| $$\mathcal{I}_d = \{k : \lfloor t_k \rfloor \in [\lfloor s_d \rfloor, \lfloor e_d \rfloor]\}$$ | |
| 对 $\{f_k\}_{k \in \mathcal{I}_d}$ **像素全部置零**,但**保留时间位置**,构造掩码视频 $\tilde{F}$。 | |
| **时间位置保留的重要性**:确保 $\pi_\theta$ 感知到"这里有一帧,但内容不可见",而非"这里没有帧"。 | |
| ```python | |
| # 代码实现(grpo_trainer.py) | |
| if self.delta_mask and inputs[0].get('mask_patterns'): | |
| pattern = random.choice(inputs[0]['mask_patterns']) | |
| masked_video = video_inputs[0].clone() | |
| for idx in pattern['zero_frame_indices']: | |
| if idx < masked_video.size(0): | |
| masked_video[idx] = 0 # 像素置零,保留时间位置 | |
| shuffled_video_inputs = [masked_video] | |
| ``` | |
| 将原始视频 $(F, q)$ 和掩码视频 $(\tilde{F}, q)$ 同时送入 $\pi_\theta$,采样两组回答: | |
| - **原始组**(origin group):$\{o_i\}_{i=1}^G$ | |
| - **掩码组**(delta-masked group):$\{\tilde{o}_i\}_{i=1}^{\tilde{G}}$ | |
| 通过比较两组推理性能,验证 Delta 的视觉真实性。 | |
| ### 5.3 关键 Delta 判定与 Oracle 预标注 | |
| **关键问题**:反事实对比并不总能产生有效信号(论文 §4.3): | |
| - 若被掩帧**不关键**:性能差距反映 $\pi_\theta$ 对这些帧的真实依赖程度 → **反事实检验有效** | |
| - 若被掩帧**关键**(对正确回答不可缺少):性能下降是信息缺失的必然结果,而非视觉依赖的证据 → **反事实检验无效** | |
| **解决方案:离线 Oracle 预标注流水线** | |
| 使用**显著强于** $\pi_\theta$ 的 Oracle 模型(如 Qwen2.5-VL-72B)对每条数据**预先标注**: | |
| ```json | |
| { | |
| "mask_patterns": [ | |
| { | |
| "zero_frame_indices": [3, 4, 5], | |
| "time_range": "0.3 - 0.6", | |
| "oracle_correct": true // Oracle 在掩码视频上仍能答对 → 非关键帧, c=1 | |
| }, | |
| { | |
| "zero_frame_indices": [8, 9], | |
| "time_range": "0.8 - 1.0", | |
| "oracle_correct": false // Oracle 也答错 → 关键帧, c=0 | |
| } | |
| ] | |
| } | |
| ``` | |
| | `oracle_correct` | 含义 | 帧的性质 | 检验有效性 | 标记 | | |
| |-----------------|------|---------|----------|------| | |
| | `True` | Oracle 在 $\tilde{F}$ 上仍答对 | **非关键帧**,答案可从其余帧推出 | **有效** | $c=1$ | | |
| | `False` | Oracle 在 $\tilde{F}$ 上也答错 | **关键帧**,这些帧对答案至关重要 | **无效** | $c=0$ | | |
| ### 5.4 奖励设计(论文 §4.3 公式(1)(2)) | |
| 设 $\tilde{p}$ 为掩码组中回答正确的比例,Delta-Mask 奖励 $r_{\text{dm}}$ 定义为: | |
| $$r_{\text{dm}} = \begin{cases} | |
| \alpha, & c=1 \text{ 且 } \tilde{p} \geq \tau \\ | |
| \alpha + \gamma, & c=1 \text{ 且 } \tilde{p} < \tau \\ | |
| 0, & c=0 | |
| \end{cases} \tag{1}$$ | |
| **$r_{\text{dm}}$ 仅施加于原始组中回答正确的回答**,每个 $o_i$ 的最终奖励为: | |
| $$R_i = \begin{cases} | |
| r_i + r_{\text{dm}}, & o_i \text{ 答对} \\ | |
| r_i, & \text{否则} | |
| \end{cases} \tag{2}$$ | |
| 基础奖励:$r_i = r_{\text{acc}} + \lambda \cdot r_{\text{ts}}$ | |
| **参数设置**(论文 §4.3):$\alpha = 0.3,\ \gamma = -0.2,\ \tau = 0.5,\ \lambda = 0.2$ | |
| **奖励直觉解释**: | |
| | 情况 | $r_{\text{dm}}$ | 直觉 | | |
| |------|----------------|------| | |
| | $c=1$,$\tilde{p} \geq \tau$(掩码后多数仍答对) | $+0.3$ | Delta 视觉真实,模型不过度依赖被掩帧,行为合理 | | |
| | $c=1$,$\tilde{p} < \tau$(掩码后多数答错) | $+0.1$($0.3-0.2$) | 仍有小奖励,但模型过度依赖了那些其实不必要的帧 | | |
| | $c=0$(被掩帧关键) | $0$ | 无法区分好坏,中性处理 | | |
| ### 5.5 优势计算与策略优化 | |
| 优势在**原始组内部**计算(论文 §4.3): | |
| $$A_i = \frac{R_i - \text{mean}(\{R_j\}_{j=1}^G)}{\text{std}(\{R_j\}_{j=1}^G)}$$ | |
| 策略优化遵循标准 GRPO,参考策略为 $\pi_{\text{ref}}$。 | |
| --- | |
| ## 6. 奖励函数完整设计 | |
| ### 6.1 总奖励组成 | |
| $$r_i = r_{\text{acc}} + \lambda \cdot r_{\text{ts}}, \quad \lambda = 0.2$$ | |
| | 组成 | 范围 | 说明 | | |
| |------|------|------| | |
| | $r_{\text{acc}}$ | $\{0, 1\}$ | 答案准确率(主奖励):多选题/数值/自由问答等 | | |
| | $r_{\text{ts}}$ | $[0, 1]$ | 时间戳物理合理性(门控项) | | |
| | $r_{\text{dm}}$ | $\{0, \alpha, \alpha+\gamma\}$ | Delta-Mask 奖励(核心创新,仅对答对回答施加) | | |
| ### 6.2 时间戳奖励 $r_{\text{ts}}$(代码:`RL/grpo.py`) | |
| 三项物理约束检查: | |
| - **可解析性**(parseability):时间戳格式正确、可解析 | |
| - **单调递增**(monotonic increase):后续时间戳不早于前面 | |
| - **时长约束**(duration bounds):不超过视频总时长 | |
| ### 6.3 格式奖励(`sf_format_reward`,代码:`RL/grpo.py`) | |
| Ref-Delta 结构完整性,五项子奖励: | |
| | 子项 | 检查内容 | 权重 | | |
| |------|---------|------| | |
| | F1 | `<think>...</think>` 结构存在 | 0.15 | | |
| | F2 | `<answer>...</answer>` 非空 | 0.15 | | |
| | F3 | 至少 1 个参考帧 `<time>` 标签 | 0.25 | | |
| | F4 | 至少 1 个 `<time_range>+<delta>` 配对 | 0.25 | | |
| | F5 | 末尾推理总结段存在 | 0.20 | | |
| **门控逻辑**:格式奖励 < 0.4 时,$r_{\text{ts}}$ 和 $r_{\text{dm}}$ 自动清零,防止格式混乱时的奖励噪声。 | |
| --- | |
| ## 7. 训练全流程 | |
| ``` | |
| ┌──────────────────────────────────────────────────────────────────┐ | |
| │ 数据构建阶段 │ | |
| ├──────────────────────────────────────────────────────────────────┤ | |
| │ 基础真实视频 QA(Ref-Delta 格式标注) ~10k 条 │ | |
| │ ├─ 方向感知:手性反义对 + 正反向播放 ~880 条 │ | |
| │ │ └─ make_chiral_pairs.py │ | |
| │ └─ 动态感知:对称速度构造(1/3×减速/3×加速) ~800 条 │ | |
| │ └─ make_speed_pairs.py │ | |
| │ 合计 SFT 数据:~12k,合成数据占比 ~17% │ | |
| │ │ | |
| │ GRPO 数据:Video-R2(4804) + 手性(880) + 速度(800) + SSv2(1430) │ | |
| │ └─ build_grpo_dataset.py → grpo_combined_dataset.json │ | |
| └──────────────────────────────────────────────────────────────────┘ | |
| ↓ | |
| ┌──────────────────────────────────────────────────────────────────┐ | |
| │ SFT 阶段 │ | |
| ├──────────────────────────────────────────────────────────────────┤ | |
| │ 基础模型:Qwen2.5-VL-7B-Instruct │ | |
| │ 版本 A(v9):SFT/sft_video.py,时间戳精度 0.1s(HH:MM:SS.m) │ | |
| │ 版本 B(v5e):SFT/sft_video_v5e.py,时间戳整秒精度 │ | |
| │ │ | |
| │ 学习目标:输出符合 Ref-Delta CoT 规范的推理链 │ | |
| │ ├─ Reference:静态锚点描述 │ | |
| │ ├─ Delta:帧间动态变化描述 │ | |
| │ └─ Reasoning Summary:推理总结 │ | |
| │ │ | |
| │ 输出:SFT-v5e-32f 或 SFT-v9-32f │ | |
| └──────────────────────────────────────────────────────────────────┘ | |
| ↓ | |
| ┌──────────────────────────────────────────────────────────────────┐ | |
| │ Oracle 预标注阶段 │ | |
| ├──────────────────────────────────────────────────────────────────┤ | |
| │ Oracle 模型(Qwen2.5-VL-72B)离线标注每条 GRPO 数据: │ | |
| │ ├─ 从推理链中随机选取 Delta,提取时间区间 [s_d, e_d] │ | |
| │ ├─ 定位帧索引 I_d,像素置零,构造掩码视频 F̃ │ | |
| │ ├─ Oracle 在 F̃ 上回答问题 │ | |
| │ └─ 记录 oracle_correct:True(c=1,非关键) / False(c=0,关键) │ | |
| └──────────────────────────────────────────────────────────────────┘ | |
| ↓ | |
| ┌──────────────────────────────────────────────────────────────────┐ | |
| │ DM-GRPO 阶段 │ | |
| ├──────────────────────────────────────────────────────────────────┤ | |
| │ 初始化:SFT 模型(πθ)+ 参考策略(πref) │ | |
| │ 脚本:RL/grpo.py(delta_mask=True) │ | |
| │ RL/trainer/grpo_trainer.py │ | |
| │ │ | |
| │ 每个训练步: │ | |
| │ 1. 原始视频 (F,q) → πθ 采样 G 个回答 {oi} │ | |
| │ 2. 随机选 mask_pattern,帧置零 → 掩码视频 F̃ │ | |
| │ 3. 掩码视频 (F̃,q) → πθ 采样 G̃ 个回答 {õi} │ | |
| │ 4. 计算 racc(原始组准确率)、rts(时间戳合理性) │ | |
| │ 5. 根据 oracle_correct 和 p̃ 计算 rdm │ | |
| │ 6. Ri = racc + 0.2*rts + rdm(仅对 oi 答对的回答施加 rdm) │ | |
| │ 7. Ai = (Ri - mean) / std,标准 GRPO 更新 │ | |
| │ │ | |
| │ 关键参数:α=0.3, γ=-0.2, τ=0.5, λ=0.2 │ | |
| │ 输出:DeltaMask-GRPO-v5e 模型 │ | |
| └──────────────────────────────────────────────────────────────────┘ | |
| ↓ | |
| ┌──────────────────────────────────────────────────────────────────┐ | |
| │ 评测阶段 │ | |
| ├──────────────────────────────────────────────────────────────────┤ | |
| │ 脚本:Eval/eval.py │ | |
| │ 基准:TempCompass + MVBench │ | |
| └──────────────────────────────────────────────────────────────────┘ | |
| ``` | |
| --- | |
| ## 8. 对比方法 | |
| ### 8.1 T-GRPO(Video-R1,NeurIPS 2025) | |
| - **时序扰动**:随机打乱帧序(Random Temporal Shuffling) | |
| - **奖励**:打乱视频上答对额外 $+0.3$,答错 $0$ | |
| - **局限**:随机打乱只是"破坏时序",不能针对性复现减速视频的特征平滑效应;且无格式约束和 Delta 真实性验证 | |
| ### 8.2 SF-GRPO(半融合 GRPO,本项目早期探索) | |
| - **时序扰动**:$\alpha$-blending 帧混合 | |
| $$\tilde{f}_i = \alpha \cdot f_i + (1-\alpha) \cdot \tilde{f}_{i-1}, \quad \alpha = 0.5$$ | |
| - **奖励**:三级一致性奖励(orig对+smooth对: +0.3,orig对+smooth错: +0.1,orig错: 0) | |
| - **优于 T-GRPO**:能精准复现减速视频的特征平滑效果 | |
| - **局限**:混合操作改变视频语义;同样无 Delta 真实性验证机制 | |
| ### 8.3 DM-GRPO 的进步 | |
| | 维度 | T-GRPO | SF-GRPO | **DM-GRPO** | | |
| |------|--------|---------|-------------| | |
| | 时序扰动方式 | 随机帧打乱 | 帧加权混合 | **目标帧置零(反事实)** | | |
| | 推理格式约束 | 无 | 无 | **Ref-Delta CoT** | | |
| | Delta 真实性验证 | 无 | 无 | **Oracle 反事实检验** | | |
| | 时间戳奖励 | 无 | 无 | **有($r_{\text{ts}}$)** | | |
| | 信号来源可解释性 | 低 | 中 | **高(可追溯到具体 Delta)** | | |
| 代码实现对比(`RL/trainer/grpo_trainer.py`): | |
| ```python | |
| if self.delta_mask and inputs[0].get('mask_patterns'): | |
| # DM-GRPO:Oracle预标注帧,像素置零,反事实验证 | |
| pattern = random.choice(inputs[0]['mask_patterns']) | |
| masked_video = video_inputs[0].clone() | |
| for idx in pattern['zero_frame_indices']: | |
| if idx < masked_video.size(0): | |
| masked_video[idx] = 0 | |
| shuffled_video_inputs = [masked_video] | |
| elif self.sf_temporal: | |
| # SF-GRPO:α-blending帧混合 | |
| video_tensor = video_inputs[0].clone() | |
| alpha = self.smoothing_alpha | |
| for i in range(1, video_tensor.size(0)): | |
| video_tensor[i] = alpha * video_tensor[i] + (1-alpha) * video_tensor[i-1] | |
| video_tensor = video_tensor.round() | |
| shuffled_video_inputs = [video_tensor] | |
| else: | |
| # T-GRPO:随机帧打乱 | |
| indices = torch.randperm(video_inputs[0].size(0)) | |
| shuffled_video_inputs = [video_inputs[0][indices]] | |
| ``` | |
| --- | |
| ## 9. 评测结果 | |
| ### 9.1 TempCompass(mean_acc) | |
| | 模型 | rep=1.0 | rep=1.1 | 备注 | | |
| |------|---------|---------|------| | |
| | Qwen2.5-VL-7B-Instruct(基础) | 0.7565 | 0.7566 | baseline | | |
| | SFT-v5e-32f(Ref-Delta SFT) | 0.7255 | 0.7194 | SFT 轻微下降 | | |
| | SFT-v5e-clean-32f | 0.7154 | 0.7103 | — | | |
| | SFT-v5e-format-fixed-32f | 0.7129 | 0.7134 | — | | |
| | DM-GRPO-v5e(RL,整秒) | 0.6554 | 0.7203 | rep=1.0 格式兼容问题 | | |
| | DM-GRPO-v5(SFT-v9,16帧) | — | 0.7290 | — | | |
| | **DM-GRPO-v4(SFT-v9,32帧)** | — | **0.7349** | **当前最好 RL 版本** | | |
| ### 9.2 关键观察 | |
| 1. **SFT 后轻微下降**:引入 Ref-Delta 格式后 TempCompass 约降 3pp(~75.6% → ~72.5%),可能因为格式约束限制了模型的自由推理 | |
| 2. **DM-GRPO 有效部分恢复**:RL 训练后 v4 回升至 73.49%,说明反事实奖励信号有正向作用 | |
| 3. **帧数影响明显**:32帧(v4: 73.49%)> 16帧(v5: 72.90%) | |
| 4. **rep 参数敏感性**:DM-GRPO-v5e 在 rep=1.0 时骤降至 65.5%,rep=1.1 回升到 72.0%,反映格式兼容性问题待解决 | |
| ### 9.3 待解决问题 | |
| - [ ] SFT 阶段 TempCompass 下降 3pp 的根因分析(格式约束 vs 数据分布) | |
| - [ ] DM-GRPO 在 MVBench 等其他基准上的表现 | |
| - [ ] rep 参数对格式兼容性的系统性测试 | |
| - [ ] Oracle 预标注质量评估(准确率/覆盖率) | |
| - [ ] DM-GRPO 与 Figure 1 所示完整推理链的质量分析 | |
| --- | |
| ## 10. 附录:核心符号速查 | |
| | 符号 | 定义 | | |
| |------|------| | |
| | $\mathcal{V} = \{v(t)\}_{t=0}^T$ | 连续视频 | | |
| | $F = \{f_1, \ldots, f_N\}$ | 采样帧集合 | | |
| | $\delta_i$ | 帧间时序动态($v(t_i) \to v(t_{i+1})$ 的视觉变化) | | |
| | $z$ | 推理链(chain of reasoning) | | |
| | $\pi_\theta$ | 训练模型 | | |
| | $\pi_{\text{ref}}$ | 参考策略(GRPO 基准) | | |
| | $\tilde{F}$ | 掩码视频(被掩帧像素置零,时间位置保留) | | |
| | $\mathcal{I}_d$ | Delta 时间区间 $[s_d, e_d]$ 内的采样帧索引集合 | | |
| | $c$ | Oracle 标注(1=非关键帧,0=关键帧) | | |
| | $\tilde{p}$ | 掩码组中回答正确的比例 | | |
| | $r_{\text{acc}}$ | 答案准确率奖励 $\in \{0,1\}$ | | |
| | $r_{\text{ts}}$ | 时间戳物理合理性奖励 $\in [0,1]$ | | |
| | $r_{\text{dm}}$ | Delta-Mask 奖励 $\in \{0, \alpha, \alpha+\gamma\}$ | | |
| | $\alpha=0.3,\ \gamma=-0.2,\ \tau=0.5,\ \lambda=0.2$ | DM-GRPO 超参数 | | |