sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 07:30:48 +00:00

4.5 KiB

Ref-Adv-s

Overview

Ref-Adv-s is the public 1,142-case subset of Ref-Adv, a referring expression comprehension benchmark designed to test whether multimodal large language models can distinguish a target from hard same-category visual distractors instead of relying on grounding shortcuts.

Task Description

  • Task Type: Referring expression comprehension / visual grounding
  • Input: One image and an English referring expression
  • Output: One or more bounding boxes in JSON, with the first box used for scoring
  • Domain: COCO and OpenImages scenes containing hard same-category distractors

Key Features

  • Contains 1,142 public cases sampled from the 5,000-case Ref-Adv benchmark
  • Includes human-authored and model-assisted expressions, explicit negation, and at least two distractors per case
  • Preserves the official direct and chain-of-thought (cot) prompt modes
  • Uses the dataset's single train split as the evaluation split

Evaluation Notes

  • Reports official Acc@0.5, Acc@0.75, and Acc@0.9 metrics from the IoU of the first parsed box
  • Also reports Acc@0.5 for the official distractor-count bins 2-3, 4-6, and >=7
  • Parses the last valid fenced JSON object, or an unfenced JSON value that ends the response, using the official key search order
  • A failed first parse triggers the official one-turn format-repair prompt; a second failure receives zero accuracy
  • Set pred_box_format to abs_xyxy for Qwen2.5-VL and to norm_1000_xyxy for Qwen3-VL/Qwen3.5; norm_1_xyxy is also supported by the official evaluator
  • Paper | GitHub

Properties

Property Value
Benchmark Name ref_adv_s
Dataset ID evalscope/ref-adv-s
Paper Paper
Tags Grounding, MultiModal, Reasoning
Metrics ACC@0.5, ACC@0.75, ACC@0.9, 2-3/ACC@0.5, 4-6/ACC@0.5, >=7/ACC@0.5
Default Shots 0-shot
Evaluation Split train

Data Statistics

Metric Value
Total Samples 1,142
Prompt Length (Mean) 177.67 chars
Prompt Length (Min/Max) 136 / 282 chars

Image Statistics:

Metric Value
Total Images 1,142
Images per Sample min: 1, max: 1, mean: 1
Resolution Range 240x320 - 1024x1024
Formats jpeg

Sample Example

Subset: default

{
  "input": [
    {
      "id": "d3a7e578",
      "content": [
        {
          "text": "<image>\nLocate every object that matches the description \"the computer screen that is in the middle vertically of the three stacks\" in the image. Report bbox coordinates in JSON format."
        },
        {
          "image": "[BASE64_IMAGE: jpeg, ~118.1KB]"
        }
      ]
    }
  ],
  "target": "[297.0, 345.0, 427.0, 440.0]",
  "id": 0,
  "group_id": 0,
  "metadata": {
    "row_idx": 0,
    "file_name": "000000547144.jpg",
    "image_source": "coco_val2017",
    "human_authored": true,
    "use_negation": false,
    "distractor_count": 5,
    "target_box_normalized": [
      0.4640625,
      0.71875,
      0.6671875,
      0.9166666666666666
    ],
    "sent_size": [
      640,
      480
    ],
    "retry_followup_used": false
  }
}

Prompt Template

Prompt Template:

<image>
Locate every object that matches the description "{ref_sentence}" in the image. Report bbox coordinates in JSON format.

Extra Parameters

Parameter Type Default Description
prompt_mode str direct Official prompt mode. Choices: ['direct', 'cot']
pred_box_format str norm_1000_xyxy Coordinate format emitted by the evaluated model. Choices: ['abs_xyxy', 'norm_1000_xyxy', 'norm_1_xyxy']

Usage

Using CLI

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets ref_adv_s \
    --limit 10  # Remove this line for formal evaluation

Using Python

from evalscope import run_task
from evalscope.config import TaskConfig

task_cfg = TaskConfig(
    model='YOUR_MODEL',
    api_url='OPENAI_API_COMPAT_URL',
    api_key='EMPTY_TOKEN',
    datasets=['ref_adv_s'],
    dataset_args={
        'ref_adv_s': {
            # extra_params: {}  # uses default extra parameters
        }
    },
    limit=10,  # Remove this line for formal evaluation
)

run_task(task_cfg=task_cfg)