UITARS-1.5B-7B Grounding error and Screenspot pro score reproduction · Issue #215 · bytedance/UI-TARS · GitHub
Skip to content

UITARS-1.5B-7B Grounding error and Screenspot pro score reproduction #215

Open

Description

@tcnguyen

Hi team, we tried to reproduce the reported ScreenSpot Pro score (48) without success, we used the suggested prompt template and postprocessing, got only around 40.

Also we saw some grounding failure on some simple examples, mostly on predicted X value. This are some examples

  1. Click the Open button
Image
  1. Click the "Absence" app
Image

Could you please test on your side as well? Thank you.

Activity

  1. JjjFangg commented on Sep 9, 2025

    @JjjFangg
    Collaborator

    Thanks for your feedback!

    To reproduce the reported ScreenSpot Pro score (48), please make sure the following settings are applied:

    ✅ Use the official prompt template we provided

    ✅ Set inference to greedy decoding
    temperature = 0
    top_p = 1

    ✅ Set Max pixel to 16384 during inference

    Let us know if you're still seeing discrepancies after applying them.

  2. tcnguyen commented on Sep 15, 2025

    @tcnguyen
    Author

    @JjjFangg Hi, thanks for your reply. Did you mean max pixel = 163842828, which is the default value for Qwen2.5VL?

  3. Cece1031 commented on Oct 21, 2025

    @Cece1031

    @JjjFangg Hi, thanks for your reply. Did you mean max pixel = 16384_28_28, which is the default value for Qwen2.5VL?

    Hi, I want to know if you can reproduce 48 in the end? I came across this problem too.

  4. gaolongxi commented on Oct 23, 2025

    @gaolongxi

    Thanks for your feedback!

    To reproduce the reported ScreenSpot Pro score (48), please make sure the following settings are applied:

    ✅ Use the official prompt template we provided

    ✅ Set inference to greedy decoding temperature = 0 top_p = 1

    ✅ Set Max pixel to 16384 during inference

    Let us know if you're still seeing discrepancies after applying them.

    Hi, thank you for your excellent work!

    I met a similar issue when trying to reproduce the reported accuracy on ScreenSpot-v2 and ScreenSpot-Pro.
    I followed the recommended evaluation settings, but I noticed that UI-TARS-1.5-7B occasionally produces outputs that do not strictly follow the expected format click(point='(x, y)'). To handle this, I additionally support the regex pattern click\(start_box='(x, y)').

    However, even with these adjustments, my best results are 89.0 on ScreenSpot-v2 and 41.6 on ScreenSpot-Pro.

    Below is the relevant code snippet I used for evaluation. I would greatly appreciate any insights or clarifications that could help reproduce the reported results.

    prompt = """You are a GUI agent. You are given a task and your action history, with screenshots. You need to perform the next action to complete the task. \n\n## Output Format\n\nAction: ...\n\n\n## Action Space\nclick(point='<point>x1 y1</point>')\n\n## User Instruction "{instruction}" """
    
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "type": "image", 
                    "image": image_path,
                    "min_pixels": self.processor.image_processor.min_pixels,
                    "max_pixels": self.processor.image_processor.max_pixels
                },
                {"type": "text", "text": full_prompt},
            ],
        }
    ]
    print("self.processor.image_processor.min_pixels:", self.processor.image_processor.min_pixels) #3136
    print("self.processor.image_processor.max_pixels:", self.processor.image_processor.max_pixels) #128450546=16384x28x28
    
    self.generation_params = {'do_sample': False, 'temperature': 0.0, 'use_cache': True, 'top_p': 1.0, 'max_new_tokens': 2048}
    generated_ids = self.model.generate(**inputs, **self.generation_params)
    generated_ids_trimmed = [out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)]
    
    output_text = self.processor.batch_decode(generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False)
    
    input_height = inputs['image_grid_thw'][0][1]*14
    input_width = inputs['image_grid_thw'][0][2]*14
    
    point = [0,0]
    try:
        match = re.search(r"click\(point='\((\d+),\s*(\d+)\)'\)", output_text[0])
        # "raw_response": "Action: click(value=
        if match:
            x, y = float(match.group(1)), float(match.group(2))
            point = [float(x/input_width),float(y/input_height)]
        else:
            match = re.search(r"click\(start_box='\((\d+),\s*(\d+)\)'\)", output_text[0])
            if match:
                x, y = float(match.group(1)), float(match.group(2))
                point = [float(x/input_width),float(y/input_height)]
    except Exception as e:
        print(e)
    
  5. Mr-Bigworth commented on Dec 13, 2025

    @Mr-Bigworth

    You are a GUI agent.

    我也是41.7左右,请问老哥解决了不

  6. gaolongxi commented on Dec 14, 2025

    @gaolongxi

    You are a GUI agent.

    我也是41.7左右,请问老哥解决了不

    我还没解决 :)

  7. Mr-Bigworth commented on Dec 14, 2025

    @Mr-Bigworth

    You are a GUI agent.

    我也是41.7左右,请问老哥解决了不

    我还没解决 :)

    啊 那确实了 我现在在试试 UI-Venus 好像相对好一点

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions