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>
4.5 KiB
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
directand chain-of-thought (cot) prompt modes - Uses the dataset's single
trainsplit as the evaluation split
Evaluation Notes
- Reports official
Acc@0.5,Acc@0.75, andAcc@0.9metrics from the IoU of the first parsed box - Also reports
Acc@0.5for the official distractor-count bins2-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_formattoabs_xyxyfor Qwen2.5-VL and tonorm_1000_xyxyfor Qwen3-VL/Qwen3.5;norm_1_xyxyis 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)