Video2GUI: Synthesizing Large-Scale Interaction Trajectories for Generalized GUI Agent Pretraining
Paper: arXiv:2605.14747 Code: WeiminXiong/Video2GUI(截至
main@58dbea4f主要是项目页与静态资源,README.md写明 WildGUI dataset will be released soon;未看到可执行的训练、抽取、评测实现代码) Code reference:main@58dbea4f(2026-05-15)
1. Motivation (研究动机)
GUI agent 的核心瓶颈不是单个 benchmark 上的 prompt engineering,而是缺少足够大、足够多样、又能落到可执行动作坐标的真实交互轨迹。已有数据主要来自人工标注、模拟环境或受限平台:人工轨迹质量高但成本极高,模拟环境覆盖面有限,网页/手机/桌面之间的界面结构和用户行为差异又很大,因此模型很容易只学到特定应用或特定布局的操作习惯。更重要的是,GUI agent 需要学习“为什么现在要点这个元素”和“点完后界面会发生什么”,这类长期交互知识很难靠静态 screenshot grounding 数据补足。
已有从互联网视频构造 GUI 数据的方向也没有完全解决问题。若只靠手工关键词检索视频,数据源会被检索词强行限制,容易偏向少数软件/平台;若只依赖短片段的视觉变化或 inverse dynamics,模型能捕捉 click/scroll 之类低层动作,却很难恢复跨分钟的任务意图、用户计划和动作理由。开放域视频还包含大量广告、讲解但不操作、低分辨率录屏、无旁白或外拍屏幕等噪声,直接拿来训练会把无效轨迹和错误坐标一起放大。即使 VLM 能理解视频语义,长视频输入通常会被压缩,GUI 小字、菜单项和按钮边界会变得模糊;因此数据构建还必须引入 high-resolution multi-frame grounding,把“视频里发生了什么动作”和“动作应该落到哪一个屏幕坐标”分开处理。
论文要解决的具体问题是:如何从未标注的互联网 GUI 教程视频中,自动筛出高质量软件操作视频,并把视频转换成可以用于 GUI agent pretraining 的 instruction–trajectory 数据。这里的 trajectory 不只是“看到某帧后点击某处”,还要包含任务指令、动作时间戳、动作类型、低层 grounding instruction、动作理由、动作参数,以及动作后的界面变化解释。换句话说,Video2GUI 同时处理三个子问题:internet-scale filtering、long-horizon trajectory extraction、pixel-level action grounding。
这个问题值得研究,因为互联网视频天然包含大量真实用户在真实软件、网页、移动 App 中完成任务的过程;如果能可靠地从中抽取监督信号,就可以把 GUI agent 的数据规模从几万/几十万条人工样本扩展到千万级轨迹。Video2GUI 最终构造的 WildGUI 声称包含 12.7M 轨迹、124.5M screenshots、1,500+ applications/websites,平均 9.7 turns,覆盖 website/mobile/desktop 三类平台。这类数据一旦成立,后续 UI-TARS、OpenCUA、OS-Atlas 等 agent 训练路线都可以把它当作大规模 pretraining substrate,而不是每个系统重新从小规模人工轨迹开始。
2. Idea (核心思想)
核心 insight 是:GUI 教程视频本身已经包含“人类如何操作界面”的 long-horizon demonstration;关键不是重新设计 agent architecture,而是把开放域视频先变成高质量、可定位、可训练的 GUI interaction trajectories。Video2GUI 用 coarse-to-fine filtering 降低互联网视频噪声,再用 VLM 做 trajectory extraction,最后用高分辨率 multi-frame grounding 修复视频压缩造成的坐标定位问题。
这篇论文的创新不是某个单独 loss,而是把原本不适合训练的 raw video 拆成一条数据工厂流水线:便宜的 metadata classifier 先解决“是否相关”,更贵的 omni video scorer 再解决“是否清晰、有讲解、能学习”,Gemini-3-Pro 再解决“这段视频对应什么任务和动作序列”,最后 grounding prompt 解决“这个动作到底点在屏幕哪里”。这种分层设计让每一步只处理自己擅长的问题,也让昂贵 VLM 调用只发生在经过筛选的候选视频上。
相对 TongUI / VideoAgentTrek 这类依赖关键词检索、短片段或低层视觉线索的做法,Video2GUI 的差异在于它把数据构建拆成可扩展流水线:metadata 先粗筛 500M YouTube metadata,content scorer 再细筛 20M 候选视频,Gemini-3-Pro 再在 4-minute sliding window + history context 中抽取跨片段任务,最后将动作绑定到高分辨率帧。相对 UI-TARS、OpenCUA、ARPO 等主要改 agent training / post-training / RL recipe 的工作,Video2GUI 更像底层数据扩容器:它不直接声称新的 policy architecture,而是证明大规模真实 GUI 视频轨迹可以作为 Qwen2.5-VL、Mimo-VL 等 VLM 的 continual pretraining data,并在 grounding、offline planning、online interaction 上带来一致收益。
3. Method (方法)
3.1 Overall framework:从 raw videos 到 grounded GUI trajectories
Figure 1 解读:这张图把 Video2GUI 分成三段。(A) 先用 metadata classifier 和 video quality scorer 从海量视频中筛掉无关/低质内容;(B) 对保留的视频做 trajectory extraction,把视频片段转成任务、计划、动作、理由、界面变化等结构化文本;(C) 再做 action spatial grounding,把低层动作定位到截图上的坐标或 box,最终得到可训练的 grounded trajectory。图中的关键设计是“先便宜筛、再昂贵标注”:如果直接让 VLM 处理所有原始视频,存储和推理成本都会失控。
形式化地,论文把 GUI agent 写成 POMDP: 其中 是用户高级指令, 是 GUI 环境状态, 是原子动作空间, 是截图等 multimodal observation, 描述动作导致的界面状态变化。第 步 agent 根据历史 选择动作 。每个动作写成 ,其中 是动作类型(click/type/scroll 等), 是坐标、目标元素或输入文本等参数。完整 trajectory 为
3.2 Coarse-to-Fine Video Filtering
Meta Info Filtering. 输入是从 500M+ YouTube videos 收集的 metadata,包括 title、author、upload timestamp、keywords、description 等。直接下载/处理几亿视频会带来百 PB 级存储与大量无效推理,因此第一阶段只看 metadata。作者用 DeepSeek-V3 为 10K samples 标注“是否为 GUI operation tutorial”的二分类标签,并为每条样本生成 reasoning;训练时则给 Qwen2.5-7B 加轻量 classification head,只用最小 prompt “Classify based on the following content”,用 cross-entropy 优化: \mathcal{L}_{ ext{CE}} = -rac{1}{N}\sum_{i=1}^N \left[y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i) ight]. 其中 是真实标签, 是模型判断该视频为 GUI tutorial 的概率。附录说明 10K 标注样本中约 400 条 positive、9K+ negative;作者对 positive upsampling 以平衡训练集,Qwen2.5-7B classifier 训练 3 epochs,learning rate 为 。该粗筛把 500M metadata 缩小到约 20M candidate videos。
Video Quality Scoring. Metadata 只能判断“像不像软件教程”,不能保证视频真的清晰、完整、有可学习操作。第二阶段输入视频前 1 分钟(若视频更短则输入全视频),用 topic relevance、instruction clarity、recording quality 三个维度打 1–5 分。作者先用 Gemini-3-Pro 标注约 200 小时视频,再 fine-tune Qwen2.5-Omni,给最终 hidden layer 接三个 regression heads,用 MSE 优化: \mathcal{L}_{ ext{MSE}} = rac{1}{N} \sum_{i=1}^N\sum_{j=1}^3 (y_{ij}-\hat{y}_{ij})^2. Qwen2.5-Omni scorer 同样训练 3 epochs,learning rate 为 ;测试集是 100 videos。人工校准后,三个维度都必须达到至少 4.2 才保留。对 20M 粗筛视频应用 scorer 后,保留 4.16M videos,约 300K hours 高质量 GUI instructional content。
Figure 5 解读:这张图对应附录的 video scoring model test set,比较模型在 topic relevance、instruction clarity、recording quality 三个维度上与标注分数的一致性。它的作用不是证明最终 agent 性能,而是验证筛选器能把“看起来相关但无操作/低清/无讲解”的视频排除掉;如果没有这一层,后续 trajectory extraction 会被广告、软件介绍、低分辨率录屏和无旁白视频污染。
3.3 Trajectory Extraction:把视频片段转成 instruction–trajectory pairs
经过筛选的视频仍然只是 unstructured video。Video2GUI 对每个视频 抽取任务集合: 其中 是第 个独立任务的自然语言 instruction, 是对应 action trajectory,并且每个 action step 都带 timestamp。
作者直接用 Gemini-3-Pro 作为 annotation model。因为长视频会超出上下文窗口,论文采用 4-minute clip 的 sliding-window 策略:超过 4 分钟的视频被切成 ,处理 时把前面片段的抽取结果 作为 textual context 给模型。这一点很重要:GUI 教程常常在前几分钟创建文件、登录、打开页面,后续动作依赖之前状态;只看短片段会丢失高层任务意图。
附录中 trajectory annotation 要求输出:(1) User Task Instruction,(2) Dense Caption,(3) Task Plan,(4) Platform,(5) Application Type,(6) Website Name,(7) Action Trajectory。每个 action 还要包含 timestamp、action type、low-level grounding instruction、action rationale、action parameters,以及动作导致的 interface changes 与原因。这使数据不只是行为 cloning,而是同时给模型 world-model-like supervision:看到当前截图和 action 后,学习界面会如何变化。
3.4 Action Spatial Grounding:修复视频压缩与时间错位
Trajectory extraction 的视频输入为了长上下文会被压缩,无法直接提供精确 pixel-level localization。因此对每个时间戳 的动作,Video2GUI 从原始视频取三帧高分辨率截图: 然后让 Gemini-3-Pro 根据 low-level instruction 和 action type 判断当前帧是否可以定位动作;若可以,输出坐标或 bounding box;若不可以,继续看下一帧;三帧都失败则丢弃该 action。论文写成: 这里 0.5 秒 offset 是经验设定,接近单个 GUI action 的平均持续时间。手工抽查 200 个随机 actions 后,作者报告超过 95% 的 action parameters 准确。这个阶段的直觉是把“理解长视频”和“精确点哪里”解耦:前者需要压缩长上下文,后者需要高分辨率截图;如果强行在压缩视频里定位坐标,会把时间错位和低分辨率错误直接写入训练数据。
3.5 WildGUI dataset statistics and examples
Figure 6 解读:这张图展示 WildGUI 在平台、软件类别、网站类别上的分布。论文强调它同时覆盖 website、mobile、desktop,而不是只做 Android 或 web navigation;这正是 WildGUI 相对 AndroidControl、MIND2WEB、GUI-360 等单平台/小规模数据的主要差异。
Figure 7 解读:这张图补充视频时长、trajectory step 数和 desktop/mobile action type 分布。它说明 WildGUI 不只是把视频切成单步 grounding 样本,还保留了多步 trajectory;这对 long-horizon GUI planning 和历史状态建模更有价值。

Figure 8 解读:示例展示了从真实教程视频中抽出的多步任务,包含截图序列、动作描述和任务上下文;读者可以看到 Video2GUI 的输出接近 GUI agent 训练所需的 (instruction, observation, action) 格式,而不是孤立截图分类。

Figure 9 解读:这个例子强调跨应用/跨网页的 diversity。论文希望模型通过这些样本学习真实软件中的菜单、按钮、输入框和状态变化,而不是只记住 benchmark 中固定模板。

Figure 10 解读:该例子体现 action trajectory 中的低层动作与高层任务之间的绑定:同样是 click/input/scroll,放在不同软件和任务阶段中会对应不同的目标元素与操作理由。

Figure 11 解读:这类长竖图可以理解为 WildGUI 样本的可视化审计:如果视频筛选或 grounding 错误,通常会在步骤连续性、目标坐标或界面变化解释中暴露出来。
3.6 Agent Training:三任务 pretraining + curated post-training
作者采用两阶段训练。Stage 1 在 WildGUI 上 continual pretraining 1 epoch,约 200B tokens,设计三类任务:
- GUI grounding:输入 screenshot 与 grounding instruction,预测坐标或 bounding box,加强 UI element localization。
- GUI action prediction:给定单张截图 和 task instruction ,预测当前 GUI action,缓解多图训练中视觉压缩导致的单步执行能力损失。
- GUI trajectory modeling:把多步截图和交互历史按时间排列,autoregressively 预测 actions/textual annotations,loss 只算 text tokens,用来学习历史状态、目标进展和多步依赖。
总目标为: Stage 2 在 curated open-source GUI datasets 上 post-training 3 epochs,约 15B tokens,目的是用更干净的人类监督巩固 instruction following 和 domain-specific execution。附录列出的 post-training datasets 包括 Rico、SeeClickWeb、WebUI、OS-Atlas、AITW、AITZ、AndroidControl、AMEX、GUI-Odyssey。
3.7 Paper-derived pseudocode(官方 repo 未发布实现代码)
论文公式与 released code 实现差异:截至 main@58dbea4f,官方 GitHub 仓库只包含 README.md、index.html 和 static/images/* 项目页资源,没有发现 pipeline/training/evaluation 的 Python 实现、launch scripts 或 config files。因此下面伪代码是基于论文与附录流程的 faithful reconstruction,而不是可与 released code 逐行对齐的实现;训练配置数字也只能引用论文 §4 / Appendix,而不能引用实际 launch config。
import torch
import torch.nn.functional as F
def train_metadata_classifier(qwen25_7b, labeled_meta_loader, optimizer):
"""Paper-derived: Qwen2.5-7B + classification head for GUI tutorial metadata filtering."""
qwen25_7b.train()
for batch in labeled_meta_loader:
# batch fields: title, description, keywords, channel, category, subtitles, binary label
prompt = "Classify based on the following content"
hidden = qwen25_7b.encode_text(prompt, batch["metadata_text"])
prob = qwen25_7b.classification_head(hidden[:, -1]).sigmoid().squeeze(-1)
loss = F.binary_cross_entropy(prob, batch["is_gui_tutorial"].float())
optimizer.zero_grad()
loss.backward()
optimizer.step()def train_video_quality_scorer(qwen25_omni, scored_video_loader, optimizer):
"""Paper-derived: Qwen2.5-Omni with 3 regression heads for video quality scoring."""
qwen25_omni.train()
for batch in scored_video_loader:
# labels are topic_relevance, instruction_clarity, recording_quality in [1, 5]
prompt = "Classify based on the following video"
video_clip = batch["first_minute_or_full_video"]
hidden = qwen25_omni.encode_multimodal(prompt=prompt, video=video_clip, audio=batch.get("audio"))
pred_scores = qwen25_omni.regression_heads(hidden[:, -1]) # [B, 3]
loss = F.mse_loss(pred_scores, batch["quality_scores"].float())
optimizer.zero_grad()
loss.backward()
optimizer.step()def extract_trajectories(video, gemini_annotator, max_segment_minutes=4):
"""Paper-derived: sliding-window trajectory extraction with history memory."""
segments = split_video(video, minutes=max_segment_minutes)
history = []
all_tasks = []
for segment in segments:
response = gemini_annotator.annotate(
video_segment=segment,
previous_analysis=history,
output_schema=[
"user_task_instruction", "dense_caption", "task_plan", "platform",
"application_type", "website_name", "action_trajectory",
],
)
tasks = parse_json_tasks(response)
all_tasks.extend(tasks)
history.append(summarize_for_next_segment(tasks))
return all_tasksdef spatially_ground_action(raw_video, action, gemini_grounder):
"""Paper-derived: try t-0.5s, t, t+0.5s high-resolution frames and discard ungroundable actions."""
t = action["timestamp"]
frames = [raw_video.frame_at(t - 0.5), raw_video.frame_at(t), raw_video.frame_at(t + 0.5)]
for frame in frames:
result = gemini_grounder.ground(
image=frame,
low_level_instruction=action["grounding_instruction"],
action_type=action["action_type"],
)
if result["feasible"]:
action["parameters"] = result["point_or_bbox"]
return action
return Nonedef pretrain_gui_agent(model, batch, optimizer):
"""Paper-derived mixed objective for WildGUI continual pretraining."""
ground_loss = model.grounding_loss(batch["screenshots"], batch["grounding_instructions"], batch["targets"])
action_loss = model.action_prediction_loss(batch["single_screenshot"], batch["task_instruction"], batch["action"])
traj_loss = model.trajectory_modeling_loss(
screenshots=batch["trajectory_screenshots"],
history=batch["interaction_history"],
labels=batch["text_tokens_only"],
)
loss = ground_loss + action_loss + traj_loss
optimizer.zero_grad()
loss.backward()
optimizer.step()
return {"loss": loss.item(), "ground": ground_loss.item(), "action": action_loss.item(), "traj": traj_loss.item()}Code reference:
main@58dbea4f(2026-05-15) — official repository inspected; no executable implementation files were present, so mapping below records release status rather than code-level implementation anchors.
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| Project/paper landing page | index.html | Static project page links arXiv, GitHub, figures, dataset placeholder |
| Release status | README.md | States repository is for the paper and “WildGUI dataset will be released soon” |
| Method / result figures mirrored on project page | static/images/method_diagram.png, static/images/main_results.png, static/images/figure3_scaling.png | Static assets only |
| Video2GUI pipeline implementation | Not present at main@58dbea4f | No extraction/training/evaluation code found |
| Training configs / launch scripts | Not present at main@58dbea4f | Training numbers must be sourced from paper, not code |
4. Experimental Setup (实验设置)
4.1 Datasets and scale
- WildGUI (ours):从 500M YouTube video metadata 出发,metadata classifier 粗筛到约 20M videos,再由 video scorer 保留 4.16M videos / 300K hours;最终构造 12.7M GUI trajectories、124.5M screenshots、1,500+ environments/applications/websites,平均 9.7 turns,覆盖 website/mobile/desktop。
- Stage 2 curated datasets:Rico、SeeClickWeb、WebUI、OS-Atlas、AITW、AITZ、AndroidControl、AMEX、GUI-Odyssey。
- Evaluation datasets:ScreenSpot-Pro(1,581 expert-annotated tasks,23 professional applications,three operating systems)、OSWorld-G(564 samples)、AndroidControl(Low/High 两种粒度)、CAGUI(中文界面 agent benchmark)、OSWorld(369 real-world desktop/web/OS tasks)、AndroidWorld(116 programmatic tasks across 20 real-world apps)。
4.2 Baselines
GUI grounding baselines 包括 Gemini-2.5-Pro、Seed1.5-VL、Qwen3-VL-2B/8B/32B、GTA1-7B、UI-Venus-7B、OpenCUA-7B、GUI-Owl-7B、UI-TARS-72B。Offline agent evaluation baselines 包括 GPT-4o、OS-Genesis-7B、OS-Atlas-7B、Aguvis-7B、UI-TARS-7B。论文重点比较 Qwen2.5-VL-7B 与 Mimo-VL-7B 在加 WildGUI pretraining 前后的变化。
4.3 Metrics
- ScreenSpot-Pro / OSWorld-G:center accuracy / grounding accuracy;OSWorld-G 分 Text Matching、Element Recognition、Layout Understanding、Fine-grained Manipulation 四类。
- AndroidControl / CAGUI:Type Accuracy 衡量 action type 是否预测正确;Step Success Rate (Step SR) 衡量单步执行是否成功。
- OSWorld / AndroidWorld:online success rate,评估 agent 在交互环境中完成任务的比例。
- Human data-quality study:5 名有 GUI agent 经验的 CS master/PhD evaluator,对 300 samples 打 1–5 分;资格测试要求 20-sample accuracy ,inter-rater agreement 为 Krippendorff’s lpha=0.84。
4.4 Training config
论文给出的训练实现基于 Megatron framework,AdamW optimizer,weight decay ,cosine learning rate schedule,maximum input visual tokens 为 4,096,maximum sequence length 为 32,768。Stage 1 continual pretraining 24,000 steps / 1 epoch / 约 200B tokens;language model learning rate 从 线性衰减到 ,vision encoder 固定 learning rate 。Stage 2 post-training 3 epochs / 2,000 steps / 约 15B tokens;language model learning rate 从 衰减到 ,vision encoder learning rate 从 衰减到 。所有实验在 160 CPU cores、512 GB system memory、256 NVIDIA GPUs 的集群上完成。
需要注意:官方 repo main@58dbea4f 没有发布训练 config/launch script,因此这些训练数值只能来自论文 §4 Experiment Setup 与附录,而不是 released code override。
5. Experimental Results (实验结果)
5.1 Dataset scale comparison
| Dataset | Website | Mobile | Desktop | Environments | Instructions / Trajectories | Images | Turns | Instruction Level |
|---|---|---|---|---|---|---|---|---|
| MiniWoB++ | ✓ | ✓ | ✗ | 114 | 100 | 17,971 | 3.6 | Low-level |
| MIND2WEB | ✓ | ✗ | ✗ | 137 | 2,350 | 2,350 | 7.3 | High-level |
| AITW | ✗ | ✓ | ✗ | 357 | 30,378 | 715,142 | 6.5 | High & low |
| GUI-Net | ✓ | ✓ | ✓ | 280 | 1M | 1M | 4.7 | High-level |
| GUI-360 | ✗ | ✗ | ✓ | 3 | 13,750 | 105,368 | 7.6 | High-level |
| WildGUI (Ours) | ✓ | ✓ | ✓ | 1,500+ | 12.7M | 124.5M | 9.7 | High & low |
WildGUI 在规模和平台覆盖上明显高于现有开源 GUI 数据集,尤其是同时覆盖 website/mobile/desktop,并且包含 high-level 与 low-level supervision。
5.2 GUI grounding results
| Model | ScreenSpot-Pro Avg | OSWorld-G Avg | Main observation |
|---|---|---|---|
| Gemini-2.5-Pro | 11.4 | 45.2 | Proprietary baseline |
| Seed1.5-VL | 60.9 | 62.9 | Strong proprietary baseline |
| Qwen3-VL-32B | 54.9 | 60.6 | Best listed open-source baseline before ours |
| Qwen2.5-VL-7B | 26.8 | 27.3 | Base model |
| Qwen2.5-VL-7B + WildGUI | 41.9 (+15.1) | 53.7 (+26.4) | WildGUI substantially improves small base model |
| Mimo-VL-7B | 41.2 | 54.7 | Base model |
| Mimo-VL-7B + WildGUI | 56.9 (+15.7) | 67.6 (+12.9) | Best OSWorld-G result in table, above Seed1.5-VL 62.9 and Qwen3-VL-32B 60.6 |
5.3 Offline and online GUI agent results
| Model | AndroidControl-Low Type / Step SR | AndroidControl-High Type / Step SR | CAGUI Type / Step SR |
|---|---|---|---|
| GPT-4o | 74.3 / 19.4 | 66.3 / 20.8 | 3.7 / 3.7 |
| OS-Genesis-7B | 90.7 / 74.2 | 65.9 / 44.4 | 38.1 / 14.5 |
| UI-TARS-7B | 98.0 / 90.8 | 83.7 / 72.5 | 88.6 / 70.3 |
| Qwen2.5-VL-7B | 94.1 / 85.0 | 75.1 / 62.9 | 74.2 / 55.2 |
| Qwen2.5-VL-7B + WildGUI | 94.9 (+0.8) / 90.3 (+5.3) | 74.6 / 64.5 (+1.6) | 88.3 (+14.1) / 65.4 (+10.2) |
| Mimo-VL-7B | 92.9 / 87.9 | 76.3 / 65.6 | 82.2 / 63.4 |
| Mimo-VL-7B + WildGUI | 95.5 (+2.6) / 91.8 (+3.9) | 80.6 (+4.3) / 71.4 (+5.8) | 90.3 (+8.1) / 71.0 (+7.6) |
Figure 2 解读:在线环境中,Mimo-VL-7B 的 full Stage1+Stage2 pipeline 在 AndroidWorld 达到 31.9%,高于 base 16.4% 与 Stage2-only 23.3%;在 OSWorld 达到 12.3%,高于 Stage2-only 10.4%。这说明 WildGUI 虽然来自 offline videos,仍能给 online dynamic GUI tasks 提供泛化收益。
5.4 Scaling effects
Figure 3 解读:作者把 pretraining tokens 从 0 扩到 200B,比较 ScreenSpot-Pro 与 OSWorld-G。ScreenSpot-Pro 从约 41% 提升到 56.9%,OSWorld-G 从约 55% 提升到 67.6%;OSWorld-G 大约在 50B tokens 附近超过 Stage2-only baseline,且到 200B 仍未明显饱和。结论是 GUI agent pretraining 对大规模、多样化视频轨迹仍有 scaling benefit。
5.5 Ablations
| Setting | ScreenSpot-Pro | CAGUI | AndroidWorld |
|---|---|---|---|
| Ours | 56.9 | 71.0 | 31.9 |
| w/o | 49.8 | 69.8 | 28.4 |
| w/o | 50.5 | 65.3 | 27.6 |
| w/o | 54.6 | 70.2 | 24.1 |
| w/o Stage 1 | 49.3 | 64.2 | 23.3 |
| w/o Stage 2 | 28.2 | 45.7 | 6.0 |
消融说明三类 supervision 的作用不同:去掉 主要伤害 ScreenSpot-Pro(56.9 → 49.8),说明显式 grounding 对元素定位必要;去掉 对 AndroidWorld 影响最大(31.9 → 24.1),说明 trajectory modeling 对 long-horizon planning 更关键;去掉 Stage 2 会导致 AndroidWorld 掉到 6.0,表明大规模预训练提供广泛 GUI knowledge,但仍需要干净 post-training 数据做 instruction-following alignment。
5.6 Data quality user study
Figure 4 解读:五名 evaluator 对 300 samples 打分。Video quality 经过 pipeline 逐级提升:无过滤为 1.22,metadata filtering 后为 2.12,video scoring 后为 4.45。Trajectory quality 上,WildGUI 总分 4.62,高于 TongUI 的 3.35 和 VideoAgentTrek 的 4.05;评审一致性 Krippendorff’s lpha=0.84。这支持作者的核心主张:不是所有互联网视频都有用,关键是高质量筛选和 grounding。
5.7 Limitations and caveats
作者没有单独列出 Limitations section,但从论文与 released repo 可见几个实际 caveat。第一,数据构建依赖 Gemini-3-Pro 作为默认 annotator;附录称开源替代 Qwen3.5-397B-A17B 可用但 annotation quality 低 15–20%,主要体现在 temporal alignment 与 spatial grounding。第二,pipeline 成本不低:trajectory extraction 每样本约 15,908 input tokens、1,338 output tokens、1,452 thinking tokens,约 0.011,总计约 $0.0763/sample。第三,官方 GitHub 截至 main@58dbea4f 尚未发布可执行 pipeline/dataset/training code,因此复现者目前无法从 released code 验证 training configs、prompt orchestration、filter thresholds 的全部细节。
总体结论:Video2GUI 证明了“互联网教程视频 → 大规模 GUI trajectory pretraining data”这条路线可行,并且 WildGUI 对 grounding、offline agent evaluation 与 online interaction benchmarks 都有一致收益;它的主要价值在数据规模、跨平台 diversity、以及从视频中恢复 grounded trajectories 的自动化流程。