CoolFace
Modelpublic

Yuqi-Zhou/GUI-G1-3B-v1

sourceHugging Facemitupdated 1y agoView on Hugging Face
2likes20downloads
Model Card

This repository contains the model presented in GUI-G1: Understanding r1-zero-like training for visual grounding in gui agents.

Project page: https://github.com/Yuqi-Zhou/GUI-G1

Benchmark 1: ScreenSpotV2

ScreenSpotV2inference modeMobile-TMobile-IDesktop-TDesktop-IWeb-TWeb-IAvg
OS-ATLAS-7Bw/o thinking95.275.890.763.690.677.384.1
UI-TARS-7Bw/o thinking95.279.190.768.690.678.384.7
UI-R1-3B (v1)w/ thinking96.284.392.363.689.275.485.4
GUI-R1-3Bw/ thinking97.678.294.364.391.072.485.0
UI-R1-3B (v2)w/ thinking97.679.692.367.988.977.885.8
UI-R1-E-3Bw/o thinking98.283.994.875.093.283.789.5
GUI-G1-3B-v1w/o thinking98.393.3692.880.088.579.389.8

Benchmark 2: ScreenSpot-Pro

ScreenSpot-Proinference modeAverage Accuracy↑
UGround-7Bw/o thinking16.5
OS-ATLAS-7Bw/o thinking18.9
UI-R1-3B (v1)w/ thinking17.8
GUI-R1-3Bw/ thinking26.6
UI-R1-3B (v2)w/ thinking29.8
UI-R1-E-3Bw/o thinking33.5
GUI-G1-3B-v1w/o thinking37.1

Evaluation Code for GUI Grounding

Here we show a code snippet to show you how to use the chat model with transformers and qwen_vl_utils:

python
from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
# default: Load the model on the available device(s)
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    "Yuqi-Zhou/GUI-G1-3B-v1", torch_dtype="auto", device_map="auto"
)
# We recommend enabling flash_attention_2 for better acceleration and memory saving, especially in multi-image and video scenarios.
# model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
#     "Yuqi-Zhou/GUI-G1-3B-v1",
#     torch_dtype=torch.bfloat16,
#     attn_implementation="flash_attention_2",
#     device_map="auto",
# )

# default processer
processor = AutoProcessor.from_pretrained("Yuqi-Zhou/GUI-G1-3B-0.1K")

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
            },
            {"type": "text", "text": "Grounding instruction is:{Question}. Help to locate and output its bbox coordinates using JSON format::\n```json\n[\n{{"point_2d": [x, y], "label": "object name/description"}}\n]```"},
        ],
    }
]
# Preparation for inference
text = processor.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = inputs.to("cuda")
# Inference: Generation of the output
generated_ids = model.generate(**inputs, max_new_tokens=128, use_cache=True)
generated_ids_trimmed = [
    out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)

Citation

If you find our work helpful, feel free to give us a cite.

@article{zhou2025gui,
  title={GUI-G1: Understanding r1-zero-like training for visual grounding in gui agents},
  author={Zhou, Yuqi and Dai, Sunhao and Wang, Shuai and Zhou, Kaiwen and Jia, Qinglin and Xu, Jun},
  journal={arXiv preprint arXiv:2505.15810},
  year={2025}
}