# WorldVQA


## Overview

WorldVQA is a benchmark designed to evaluate the atomic visual world knowledge of Multimodal Large Language Models (MLLMs). It measures models' ability to ground and name visual entities across a stratified taxonomy, spanning from common head-class objects to long-tail rarities.

## Task Description

- **Task Type**: Visual Entity Recognition / Knowledge QA
- **Input**: Image + question asking to identify a visual entity
- **Output**: Free-form text answer (specific entity name)
- **Domain**: Nature, architecture, culture, products, transportation, entertainment, brands, sports

## Key Features

- 3000 VQA pairs across 8 semantic categories
- Bilingual: English (non-zh) and Chinese (zh)
- Three difficulty levels: easy, medium, hard
- Tests atomic visual knowledge decoupled from reasoning
- Requires precise entity identification (e.g., specific breed, not generic "dog")

## Evaluation Notes

- Default configuration uses **0-shot** evaluation
- Evaluates on **train** split (the benchmark data split)
- Primary metric: **Accuracy** via LLM-as-judge
- Supports LLM judge for semantic equivalence checking
- Results reported per category and overall


## Properties

| Property | Value |
|----------|-------|
| **Benchmark Name** | `world_vqa` |
| **Dataset ID** | [evalscope/WorldVQA](https://modelscope.cn/datasets/evalscope/WorldVQA/summary) |
| **Paper** | N/A |
| **Tags** | `Knowledge`, `MultiModal`, `QA` |
| **Metrics** | `acc` |
| **Default Shots** | 0-shot |
| **Evaluation Split** | `train` |


## Data Statistics

| Metric | Value |
|--------|-------|
| Total Samples | 3,000 |
| Prompt Length (Mean) | 38.4 chars |
| Prompt Length (Min/Max) | 5 / 182 chars |

**Per-Subset Statistics:**

| Subset | Samples | Prompt Mean | Prompt Min | Prompt Max |
|--------|---------|-------------|------------|------------|
| `Nature & Environment` | 326 | 33.9 | 7 | 83 |
| `Locations & Architecture` | 512 | 42.03 | 9 | 122 |
| `Culture, Arts & Crafts` | 506 | 33.71 | 7 | 112 |
| `Objects & Products` | 437 | 55.97 | 9 | 182 |
| `Vehicles, Craft & Transportation` | 306 | 30.67 | 8 | 114 |
| `Entertainment, Media & Gaming` | 511 | 30.5 | 5 | 83 |
| `Brands, Logos & Graphic Design` | 260 | 39.1 | 6 | 83 |
| `Sports, Gear & Venues` | 142 | 41.99 | 9 | 100 |

**Image Statistics:**

| Metric | Value |
|--------|-------|
| Total Images | 3,000 |
| Images per Sample | min: 1, max: 1, mean: 1 |
| Resolution Range | 33x65 - 3840x3840 |
| Formats | gif, jpeg, png, webp |


## Sample Example

**Subset**: `Nature & Environment`

```json
{
  "input": [
    {
      "id": "0c08c4e2",
      "content": [
        {
          "text": "What breed of dog is in the picture?"
        },
        {
          "image": "[BASE64_IMAGE: png, ~392.9KB]"
        }
      ]
    }
  ],
  "target": "Greek Hound",
  "id": 0,
  "group_id": 0,
  "subset_key": "Nature & Environment",
  "metadata": {
    "index": 0,
    "category": "Nature & Environment",
    "language": "non-zh",
    "difficulty": "medium"
  }
}
```

## Prompt Template

**Prompt Template:**
```text
{question}
```

## Usage

### Using CLI

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

### Using Python

```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=['world_vqa'],
    dataset_args={
        'world_vqa': {
            # subset_list: ['Nature & Environment', 'Locations & Architecture', 'Culture, Arts & Crafts']  # optional, evaluate specific subsets
        }
    },
    limit=10,  # Remove this line for formal evaluation
)

run_task(task_cfg=task_cfg)
```


