VISTA-4B 是基于 Qwen3.5 4B 主干网络、采用 VISTA(面向 GUI 定位的视图一致自验证训练方法)训练而成的 GUI 定位视觉语言模型。
模型描述
VISTA-4B 是一个 GUI 定位模型,能够将截图和自然语言指令映射到归一化 0-1000 图像坐标系中的点击坐标。
- 视图一致的 GRPO 训练。VISTA 从同一 GUI 实例的、保留目标的视图中构建每个 GRPO 对比组,并在裁剪后的视图间进行精确的坐标重映射。这使得模型能够在语义等价但几何形状不同的截图下暴露其定位行为。
- 自验证跨视图锚定。训练目标仅在模型生成的 rollout 已经产生最大奖励预测时,才添加一个 oracle 格式的中心点锚点,从而在不对所有失败组进行无条件模仿的情况下,稳定短坐标的生成。
评估
报告的是 GUI 定位的准确率。模型预测 0-1000 坐标系内的归一化坐标,若预测点落在目标元素内部,则判定为正确。所有报告结果均采用温度为 0 的确定性解码和单视图推理。
GUI 定位基准测试结果
| 模型 | SSPro | SSV2 | OSWorld-G | OSWorld-G-R |
|---|---|---|---|---|
| Qwen3.5-4B | 60.3 | 90.4 | 54.4 | 66.8 |
| GRPO-4B | 62.2 | 94.2 | 59.9 | 69.2 |
| VISTA-4B | 64.2 | 93.8 | 61.2 | 69.7 |
| Δ | +2.0 | -0.4 | +1.3 | +0.5 |
| Qwen3.5-9B | 65.2 | 91.9 | 63.1 | 74.6 |
| GRPO-9B | 68.3 | 95.2 | 67.5 | 75.2 |
| VISTA-9B | 69.2 | 95.8 | 68.1 | 75.5 |
| Δ | +0.9 | +0.6 | +0.6 | +0.3 |
| Qwen3.5-35B-A3B | 68.6 | 93.8 | 65.8 | 72.5 |
| GRPO-35B-A3B | 71.7 | 95.7 | 70.4 | 74.3 |
| VISTA-35B-A3B | 72.9 | 95.8 | 71.5 | 75.3 |
| Δ | +1.2 | +0.1 | +1.1 | +1.0 |
快速开始
使用与底层 Qwen3.5 视觉语言模型相同的图像聊天界面。推荐的提示词为:
Output the center point of the position corresponding to the instruction: {instruction}. The output should just be the coordinates of a point, in the format [x,y].
示例:
import torch
from PIL import Image
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "inclusionAI/VISTA-4B"
model = AutoModelForImageTextToText.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
image = Image.open("screenshot.png").convert("RGB")
instruction = "Click the search button"
prompt = (
"Output the center point of the position corresponding to the instruction: "
f"{instruction}. The output should just be the coordinates of a point, "
"in the format [x,y]."
)
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": prompt},
],
}
]
text = processor.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = processor(
text=[text],
images=[image],
padding=True,
return_tensors="pt",
).to(model.device)
generated = model.generate(
**inputs,
max_new_tokens=32,
do_sample=False,
)
new_tokens = generated[:, inputs.input_ids.shape[1]:]
response = processor.batch_decode(new_tokens, skip_special_tokens=True)[0].strip()
print(response) # e.g. [512,384]
引用
如果您认为我们的工作有用,请考虑引用:
@misc{qiu2026vista,
title={VISTA: View-Consistent Self-Verified Training for GUI Grounding},
author={Xinyu Qiu, Yunzhu Zhang, Heng Jia, Shuheng Shen, Changhua Meng, Linchao Zhu},
year={2026},
eprint={2606.14579},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2606.14579},
}
5B 参数