Back to Feed
Multimodal / Benchmarks & Evals

Evaluating Image Captions with Dense Question Answering

Original: CapProbe: Evaluating Detailed Image Captions via Full-Scene Dense Question Answering

Listen to the summary

Uses a voice available on your device

Audio options
On this page 5 sections
Related concepts 1 concepts

Key Takeaways

  • CapProbe evaluates image captions against a dataset of 346 images, 1,868 regions, and 25,650 verified QA pairs.
  • Gemini-3.1-Pro currently leads the benchmark with an Overall Accuracy of 68.72% and Coverage of 73.68%.
  • The dataset creation process used hierarchical deduplication to reduce raw QA pairs from 50,902 down to 39,127.
  • The benchmark offers denser evaluation than prior standards, averaging 74 QA pairs per image.

Summary & Methodology Analysis

CapProbe approaches caption evaluation as a dense, region-grounded factual verification task. The methodology involves decomposing images into semantic regions using YOLOv26-seg for object segmentation and SAM3 for background context. Once segmented, the system generates structured metadata for every region, which serves as the foundation for creating dense, multiple-choice questions. This process creates a specialized taxonomy spanning 37 L1 domains and 219 L2 sub-domains, selected from LVIS, Places365, and OpenImagesV7, to ensure broad visual coverage. The authors emphasize that while this approach aims for full-scene coverage, it does not guarantee exhaustive instance labeling for every object in an image.

Interactive System Flowchart

Click diagram to expand and zoom

Illustrative Implementation

A short sketch of the paper's core idea, not the authors' own code.

# Illustrative sketch (not from the paper)
import torch
from pathlib import Path

# 1. Load curated image list (346 images spanning 37 L1 / 219 L2 domains)
image_paths = list(Path('capprobe_images').glob('*.jpg'))  # placeholder

# 2. Segment each image into objects (YOLOv26‑seg) and stuff (SAM3)
seg_model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # stand‑in for YOLOv26‑seg

def segment_image(img_path):
    # returns list of masks (region_id, mask_tensor)
    # actual implementation uses YOLOv26‑seg + SAM3
    return [(i, torch.randn(1, 224, 224)) for i in range(5)]  # mock 5 regions

# 3. Generate structured metadata per region via Gemini‑3.1‑Pro

def gen_metadata(region_mask, img_path):
    # placeholder call to Gemini‑3.1‑Pro conditioned on image+mask
    return {"attributes": "..."}

# 4. Create dense MCQs (10 semantic categories) using Gemini‑3.1‑Pro & GPT‑5.5

def gen_mcqs(metadata):
    # returns list of {question, options, answer}
    return [{"q": "...", "opts": ["A","B","C","Uncertain"], "ans": "A"}]

# 5. Deduplicate questions (cross‑region & intra‑region) via embedding similarity

def dedup_questions(all_qs):
    # mock deduplication reduces count (23.2% reduction reported)
    return all_qs[:int(len(all_qs)*0.768)]

# 6. Evaluate a caption by answering MCQs using a language judge

def judge_caption(caption, questions):
    # placeholder language model answering
    correct = sum(1 for q in questions if q["ans"] == "A")  # mock count
    return {"overall_acc": correct/len(questions), "coverage": len(questions)/74}  # 74≈avg QA per image

# Main workflow (illustrative)
all_questions = []
for img_path in image_paths:
    regions = segment_image(img_path)
    for _, mask in regions:
        meta = gen_metadata(mask, img_path)
        all_questions.extend(gen_mcqs(meta))

unique_qs = dedup_questions(all_questions)
metrics = judge_caption("sample caption", unique_qs)
print(metrics)  # e.g., Overall Accuracy ~68.7%, Coverage ~73.7% as reported

Cross-Examination & FAQs

A deeper dive clarifying mechanics, constraints, and baseline evaluations.

Q1. What is the primary purpose of CapProbe?

CapProbe is a full-scene dense question answering benchmark designed to evaluate the accuracy and detail of image captions.

Q2. How does CapProbe evaluate a caption?

The system evaluates captions by having a language judge answer multiple-choice questions about specific image regions based solely on the provided caption.

Q3. Does this benchmark represent real-world visual distribution?

No, the benchmark is curated for taxonomic diversity and does not claim to represent the statistical distribution of real-world imagery.

Q4. How were the QA pairs refined for quality?

The authors reduced the raw count of 50,902 QA pairs to 39,127 by removing 3,268 cross-region duplicates and 8,507 intra-region duplicates.

Q5. How does the density of CapProbe compare to CaptionQA?

CapProbe provides 74 QA pairs per image, which is higher than the 50.3 pairs per image found in CaptionQA.

Q6. Which model currently performs best on the benchmark?

Gemini-3.1-Pro achieves the highest performance with an Overall Accuracy of 68.72% and Coverage of 73.68%.

Q7. What are the limitations of the accuracy metrics?

The scores are reader-dependent and vary based on the language judge's propensity to guess or select the Uncertain option.

Q8. What tools were used for region segmentation?

The paper uses YOLOv26-seg for object segmentation and SAM3 for background/stuff regions.

Q9. Are all objects in an image covered by the benchmark?

No, the design goal is full-scene coverage, but the benchmark does not guarantee exhaustive instance coverage of all objects in an image.

Flag an issue

What is wrong with this summary?

What is wrong?