HongxinLi/GoClick-Base

Model

1

stars

3

commits

1

linked in READMEs

May 10, 2026

updated

Agent
custom_code
endpoints_compatible
florence2
GUI
GUI-Grounding
image-text-to-text
pytorch
safetensors
transformers
VLM

README

🎯 GoClick-Large: Super Fast Lightweight GUI Grounding Expert

GitHub Paper GoClickLarge GoClickBase SFTData SFTZipData

GoClick is a state-of-the-art two-stage framework for precise UI element grounding. Built on the Florence-2 architecture, it bridges the gap between high-level intent and low-level pixel coordinates by separating the Planning and Grounding tasks.

πŸ—οΈ Agent Architecture Overview

  1. Stage 1 (Planning): Analyze UI screenshot + Goal -> Output Function Description.
  2. Stage 2 (Grounding): Screenshot + Function Description -> Output Precise Coordinates.Note: This model is the specialized Stage 2 Grounder, fine-tuned for extreme precision in locating elements based on their described functionality.

πŸš€ Quick Start (Inference of The Model)

Prerequisites

pip install transformers==4.45.0 timm

Note: The version of Transformers should not be too high. Adjust the version if model loading fails.

Usage Example

from transformers import AutoModelForCausalLM, AutoProcessor
from PIL import Image


def postprocess(text: str, image_size: tuple[int]):
    """Function that decodes model's generation into action json.

    Args:
        text: single generated sample
        image_size: corresponding image size
    """
    point_pattern = r"<loc_(\d+)>,<loc_(\d+)>"

    try:
        location = re.findall(point_pattern, text)[0]
        if len(location) > 0:
            point = [int(loc) for loc in location]

    except Exception:
        point = (0, 0)

    return point

# Load model and processor
model = AutoModelForCausalLM.from_pretrained("HongxinLi/GoClick-Base", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("HongxinLi/GoClick-Base", trust_remote_code=True)

# Load UI screenshot
image = Image.open("ui_screenshot.png")

# Stage 1: Planning

# Functionality Grounding (For AutoGUI FuncPred Benchmark)
planning_prompt = f"Locate the element according to its detailed functionality description. {goal_info} (Output the center coordinates of the target)"

# Intent Grounding (For RefExp, MOTIF, and VisualWebBench Action Grounding)
planning_prompt = f"I want to {goal_info}. Please locate the target element I should interact with. (Output the center coordinates of the target)"

# Description Grounding (For ScreenSpot/v2 and VisualWebBench Element Grounding))
planning_prompt = f"Where is the {goal_info} element? (Output the center coordinates of the target)"


inputs = processor(
    images=image,
    text=prompt,
    return_tensors="pt",
    do_resize=True,
).to(model.device, dtype=model.dtype)

outputs = model.generate(
            **inputs,
            do_sample= False,
            max_new_tokens=max_new_tokens,
            use_cache=True
        )

text_output = processor.tokenizer.batch_decode(outputs, skip_special_tokens=False)[0]
text_output = postprocess(text_output, img_size)

πŸ“Š Benchmarks

GoClick-Base also achieves a good tradeoff between GUI element grounding accuracy and inference latency:

ModelSizeTTFT ↓ (ms)TPOT ↓ (ms/token)FuncPred (F; M, W)ScreenSpot (B; M, W, D)ScreenSpot-v2 (B; M, W, D)MOTIF (I; M)RefExp (I; M)VWB EG (T; W)VWB AG (I; W)
GPT-4o---9.817.820.430.521.85.66.8
Qwen2VL-7B8B118.921.238.766.466.975.164.855.962.1
CogAgent18B1253.2208.829.347.449.246.735.055.759.2
SeeClick10B160.4184.419.853.454.011.158.139.227.2
Ferret-UI8B152.522.91.27.17.815.95.53.91.9
UGround7B1034.627.948.874.876.572.473.685.263.1
OS-ATLAS-8B8B137.519.952.182.584.178.866.582.669.9
Aguvis8B119.721.252.083.885.673.880.991.368.0
Qwen2-VL2B58.816.47.117.918.628.829.217.917.5
OS-ATLAS-4B4B137.331.444.666.868.775.477.147.758.3
Ferret-UI3B69.59.81.32.11.95.51.10.71.0
ShowUI2B79.714.739.976.177.472.358.464.255.3
GoClick-L (ours)0.8B91.18.369.578.581.180.478.290.368.0
GoClick-B (ours)0.2B37.74.164.474.175.276.871.990.361.2

πŸ“ Citation

If you use GoClick in your research, please cite our paper:

@misc{li2026goclicklightweightelementgrounding,
      title={GoClick: Lightweight Element Grounding Model for Autonomous GUI Interaction}, 
      author={Hongxin Li and Yuntao Chen and Zhaoxiang Zhang},
      year={2026},
      eprint={2604.23941},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2604.23941}, 
}

Contributors

HongxinLi

3 commits

HongxinLi/GoClick-Base

Model

1

stars

3

commits

1

linked in READMEs

May 10, 2026

updated

Agent
custom_code
endpoints_compatible
florence2
GUI
GUI-Grounding
image-text-to-text
pytorch
safetensors
transformers
VLM

README

🎯 GoClick-Large: Super Fast Lightweight GUI Grounding Expert

GitHub Paper GoClickLarge GoClickBase SFTData SFTZipData

GoClick is a state-of-the-art two-stage framework for precise UI element grounding. Built on the Florence-2 architecture, it bridges the gap between high-level intent and low-level pixel coordinates by separating the Planning and Grounding tasks.

πŸ—οΈ Agent Architecture Overview

  1. Stage 1 (Planning): Analyze UI screenshot + Goal -> Output Function Description.
  2. Stage 2 (Grounding): Screenshot + Function Description -> Output Precise Coordinates.Note: This model is the specialized Stage 2 Grounder, fine-tuned for extreme precision in locating elements based on their described functionality.

πŸš€ Quick Start (Inference of The Model)

Prerequisites

pip install transformers==4.45.0 timm

Note: The version of Transformers should not be too high. Adjust the version if model loading fails.

Usage Example

from transformers import AutoModelForCausalLM, AutoProcessor
from PIL import Image


def postprocess(text: str, image_size: tuple[int]):
    """Function that decodes model's generation into action json.

    Args:
        text: single generated sample
        image_size: corresponding image size
    """
    point_pattern = r"<loc_(\d+)>,<loc_(\d+)>"

    try:
        location = re.findall(point_pattern, text)[0]
        if len(location) > 0:
            point = [int(loc) for loc in location]

    except Exception:
        point = (0, 0)

    return point

# Load model and processor
model = AutoModelForCausalLM.from_pretrained("HongxinLi/GoClick-Base", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("HongxinLi/GoClick-Base", trust_remote_code=True)

# Load UI screenshot
image = Image.open("ui_screenshot.png")

# Stage 1: Planning

# Functionality Grounding (For AutoGUI FuncPred Benchmark)
planning_prompt = f"Locate the element according to its detailed functionality description. {goal_info} (Output the center coordinates of the target)"

# Intent Grounding (For RefExp, MOTIF, and VisualWebBench Action Grounding)
planning_prompt = f"I want to {goal_info}. Please locate the target element I should interact with. (Output the center coordinates of the target)"

# Description Grounding (For ScreenSpot/v2 and VisualWebBench Element Grounding))
planning_prompt = f"Where is the {goal_info} element? (Output the center coordinates of the target)"


inputs = processor(
    images=image,
    text=prompt,
    return_tensors="pt",
    do_resize=True,
).to(model.device, dtype=model.dtype)

outputs = model.generate(
            **inputs,
            do_sample= False,
            max_new_tokens=max_new_tokens,
            use_cache=True
        )

text_output = processor.tokenizer.batch_decode(outputs, skip_special_tokens=False)[0]
text_output = postprocess(text_output, img_size)

πŸ“Š Benchmarks

GoClick-Base also achieves a good tradeoff between GUI element grounding accuracy and inference latency:

ModelSizeTTFT ↓ (ms)TPOT ↓ (ms/token)FuncPred (F; M, W)ScreenSpot (B; M, W, D)ScreenSpot-v2 (B; M, W, D)MOTIF (I; M)RefExp (I; M)VWB EG (T; W)VWB AG (I; W)
GPT-4o---9.817.820.430.521.85.66.8
Qwen2VL-7B8B118.921.238.766.466.975.164.855.962.1
CogAgent18B1253.2208.829.347.449.246.735.055.759.2
SeeClick10B160.4184.419.853.454.011.158.139.227.2
Ferret-UI8B152.522.91.27.17.815.95.53.91.9
UGround7B1034.627.948.874.876.572.473.685.263.1
OS-ATLAS-8B8B137.519.952.182.584.178.866.582.669.9
Aguvis8B119.721.252.083.885.673.880.991.368.0
Qwen2-VL2B58.816.47.117.918.628.829.217.917.5
OS-ATLAS-4B4B137.331.444.666.868.775.477.147.758.3
Ferret-UI3B69.59.81.32.11.95.51.10.71.0
ShowUI2B79.714.739.976.177.472.358.464.255.3
GoClick-L (ours)0.8B91.18.369.578.581.180.478.290.368.0
GoClick-B (ours)0.2B37.74.164.474.175.276.871.990.361.2

πŸ“ Citation

If you use GoClick in your research, please cite our paper:

@misc{li2026goclicklightweightelementgrounding,
      title={GoClick: Lightweight Element Grounding Model for Autonomous GUI Interaction}, 
      author={Hongxin Li and Yuntao Chen and Zhaoxiang Zhang},
      year={2026},
      eprint={2604.23941},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2604.23941}, 
}

Contributors

HongxinLi

3 commits