CoolFace
Datasetpublic

Mashrafi2827/CT-SpatialVQA

CT-SpatialVQA CT-SpatialVQA is a benchmark for evaluating semantic-spatial reasoning in 3D CT, derived from the CT-RATE dataset. Stat Value CT volumes 1,601 (CT-RATE validation split) QA pairs 9,077 Spatial Categories Questions are designed to require explicit spatial grounding across six categories: Laterality & Bilateral Symmetry — left vs. right, bilateral involvement Longitudinal (Vertical) Position — superior/inferior, upper/middle/lower… See the full description on the dataset page: https://huggingface.co/datasets/Mashrafi2827/CT-SpatialVQA.

sourceHugging Facecc-by-4.0updated 12d agoView on Hugging Face
0likes113downloads
Dataset Card

CT-SpatialVQA

CT-SpatialVQA is a benchmark for evaluating semantic-spatial reasoning in 3D CT, derived from the CT-RATE dataset.

StatValue
CT volumes1,601 (CT-RATE validation split)
QA pairs9,077

Spatial Categories

Questions are designed to require explicit spatial grounding across six categories:

  • Laterality & Bilateral Symmetry — left vs. right, bilateral involvement
  • Longitudinal (Vertical) Position — superior/inferior, upper/middle/lower zones
  • Anterior-Posterior (Depth) Relations — anterior vs. posterior structures
  • Medial-Lateral Orientation — central, peripheral, medial, lateral
  • Adjacency & Containment — what is adjacent to or within a structure
  • Spatial Extent & Boundaries — size, borders, distribution

CT Volume Previews

CT volumes are sourced from CT-RATE and are not distributed here. Previews below show axial / coronal / sagittal center slices for a few cases.

<!-- Preview images are uploaded via generatepreviewimages.py --> <!-- Replace the lines below with actual uploaded preview filenames --> <!-- [image] [image] [image] -->

Dataset Schema

Each row is one QA pair:

FieldTypeDescription
case_idstringCT-RATE volume filename, e.g. valid_1000_a_1.nii.gz
ctrate_pathstringPath within the CT-RATE repo, e.g. dataset/valid_fixed/valid_1000/valid_1000_a/valid_1000_a_1.nii.gz
questionstringSpatially grounded question about the CT
answerstringReference answer

Loading the Dataset

python
from datasets import load_dataset

ds = load_dataset("Mash27/CT-SpatialVQA", split="test")
print(ds[0])
# {
#   'case_id': 'valid_1000_a_1.nii.gz',
#   'ctrate_path': 'dataset/valid_fixed/valid_1000/valid_1000_a/valid_1000_a_1.nii.gz',
#   'question': 'Are there any pathologically enlarged lymph nodes ...',
#   'answer': 'No pathologically enlarged lymph nodes were detected ...'
# }

Resolving CT Volumes

CT volumes come from ibrahimhamamci/CT-RATE (gated — requires acceptance of their terms).

python
from pathlib import Path
from huggingface_hub import hf_hub_download
from datasets import load_dataset

ds = load_dataset("Mash27/CT-SpatialVQA", split="test")

# deduplicate — multiple QA pairs share the same volume
unique_paths = {row["ctrate_path"] for row in ds}

for ctrate_path in unique_paths:
    p = Path(ctrate_path)
    hf_hub_download(
        repo_id="ibrahimhamamci/CT-RATE",
        repo_type="dataset",
        subfolder=str(p.parent),
        filename=p.name,
        token="YOUR_HF_TOKEN",
        local_dir="./ct_volumes",
        local_dir_use_symlinks=False,
    )

# 1,601 volumes saved to ./ct_volumes/<ctrate_path>

This downloads all 1,601 CT volumes used in this benchmark (the full CT-RATE validation split). Each volume will be at ./ct_volumes/<ctrate_path>, matching the ctrate_path field directly.

Running Evaluation

Once volumes are downloaded, iterate over QA pairs and load each volume by its ctrate_path:

python
import nibabel as nib
import numpy as np
from pathlib import Path
from datasets import load_dataset

ds = load_dataset("Mash27/CT-SpatialVQA", split="test")
volumes_root = Path("./ct_volumes")

for row in ds:
    volume_path = volumes_root / row["ctrate_path"]
    ct = nib.load(volume_path).get_fdata()  # shape: (H, W, D)

    question = row["question"]
    reference_answer = row["answer"]

    # pass ct + question to your model, compare output to reference_answer
    predicted_answer = your_model(ct, question)

Citation

If you use CT-SpatialVQA, please cite our paper and also cite CT-RATE:

bibtex
@article{monon2026ctspatialvqa,
  title={Lost in Volume: The CT-SpatialVQA Benchmark for Evaluating Semantic-Spatial Understanding of 3D Medical Vision-Language Models},
  author={Monon, Mashrafi and Rahman, Umaima and Hanif, Asif and Saeed, Numan and Yaqub, Mohammad},
  journal={arXiv preprint arXiv:2605.08787},
  year={2026}
}

@article{ct-rate,
  title={Generalist foundation models from a multimodal dataset for 3D computed tomography},
  author={Hamamci, Ibrahim Ethem and Er, Sezgin and Wang, Chenyu and others},
  journal={Nature Biomedical Engineering},
  year={2026}
}