KMH158/brats2020_shagufta
BraTS 2020 - Brain Tumor Radiology Report Generation Dataset Dataset Description This dataset contains paired brain MRI scans and radiology reports for training image-to-text models for automated radiology report generation. Dataset Summary Total Patients: 166 Total Images: 2080 Modalities: T1, T1ce, T2, FLAIR (4 modalities per frame) Frames per Patient: 10 (optimal slice ± neighbors) Image Size: 224x224 Source: BraTS 2020 Challenge… See the full description on the dataset page: https://huggingface.co/datasets/KMH158/brats2020_shagufta.
BraTS 2020 - Brain Tumor Radiology Report Generation Dataset
Dataset Description
This dataset contains paired brain MRI scans and radiology reports for training image-to-text models for automated radiology report generation.
Dataset Summary
- Total Patients: 166
- Total Images: 2080
- Modalities: T1, T1ce, T2, FLAIR (4 modalities per frame)
- Frames per Patient: 10 (optimal slice ± neighbors)
- Image Size: 224x224
- Source: BraTS 2020 Challenge
Splits
Dataset Structure
Data Fields
patient_id(int): Unique patient identifierreport_number(str): Original report number (TR001, TR002, etc.)report(str): Full radiology report textslice_index(int): Axial slice index in the MRI volumeframe_index(int): Frame number (0-9, where frame ~5 is optimal)is_optimal(bool): Whether this is the optimal slice for this patientoptimal_slice(int): The optimal slice index for this patientimage_t1(Image): T1-weighted MRI imageimage_t1ce(Image): T1 contrast-enhanced MRI imageimage_t2(Image): T2-weighted MRI imageimage_flair(Image): FLAIR MRI image
Data Sample
from datasets import load_dataset
dataset = load_dataset("KMH158/brats2020_shagufta")
# Access a sample
sample = dataset['train'][0]
print("Patient ID:", sample['patient_id'])
print("Report:", sample['report'][:200])
print("Modalities available:", ['t1', 't1ce', 't2', 'flair'])
# Display images
from PIL import Image
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 4, figsize=(16, 4))
for idx, modality in enumerate(['t1', 't1ce', 't2', 'flair']):
axes[idx].imshow(sample[f'image_{modality}'], cmap='gray')
axes[idx].set_title(modality.upper())
axes[idx].axis('off')
plt.show()Methodology
Slice Selection
The optimal slice for each patient was determined using a trained regression model that:
- Predicts tumor burden based on image features
- Uses weighted scoring: 3×Necrotic + 2×Edema + 1×Enhancing
- Selects the slice with maximum tumor burden
Then, 5 slices before and 4 slices after the optimal slice are extracted for data augmentation.
Image Preprocessing
- Normalization: Global min-max normalization to [0, 255]
- CLAHE: Contrast Limited Adaptive Histogram Equalization
- Resizing: Bicubic interpolation to 224x224
- Format: RGB (3-channel grayscale)
Report Mapping
Reports were mapped from the original CSV using the "Number" column (TR001, TR002, etc.) to BraTS patient IDs.
Intended Use
Primary Use Case
Training vision-language models for:
- Automated radiology report generation
- Medical image captioning
- Clinical decision support
Example Models
- BLIP (Salesforce/blip-image-captioning-base)
- GIT (microsoft/git-base)
- ViT + GPT-2
- Custom vision-language architectures
Example Training Code
from datasets import load_dataset
from transformers import BlipProcessor, BlipForConditionalGeneration
from torch.utils.data import DataLoader
# Load dataset
dataset = load_dataset("KMH158/brats2020_shagufta")
# Initialize model
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
# Create dataloader
def collate_fn(batch):
# Use T1ce modality (or any other)
images = [item['image_t1ce'] for item in batch]
texts = [item['report'] for item in batch]
return processor(images=images, text=texts, return_tensors="pt", padding=True)
train_loader = DataLoader(dataset['train'], batch_size=8, collate_fn=collate_fn)
# Training loop
for batch in train_loader:
outputs = model(**batch, labels=batch['input_ids'])
loss = outputs.loss
# ... training codeMulti-Modal Usage
This dataset includes all 4 MRI modalities. You can:
- Single modality: Use T1ce (shows enhancement best)
- Multi-modal: Concatenate or ensemble all 4 modalities
- Modality-specific: Train separate models per modality
# Example: Multi-modal input
sample = dataset['train'][0]
# Stack all modalities
import numpy as np
multi_modal = np.stack([
np.array(sample['image_t1']),
np.array(sample['image_t1ce']),
np.array(sample['image_t2']),
np.array(sample['image_flair'])
], axis=-1) # Shape: (224, 224, 12) - 4 modalities × 3 RGB channelsLimitations
- Dataset size: 166 patients (relatively small for deep learning)
- Single institution/protocol
- Expert annotations needed for validation
- Bias towards GBM cases in BraTS dataset
- English reports only
Citation
If you use this dataset, please cite:
@dataset{brats_radiology_reports_2024,
title={BraTS 2020 Radiology Report Generation Dataset},
author={Your Name},
year={2024},
publisher={HuggingFace},
howpublished={\url{https://huggingface.co/datasets/KMH158/brats2020_shagufta}}
}
@article{menze2015multimodal,
title={The multimodal brain tumor image segmentation benchmark (BRATS)},
author={Menze, Bjoern H and Jakab, Andras and Bauer, Stefan and others},
journal={IEEE transactions on medical imaging},
volume={34},
number={10},
pages={1993--2024},
year={2015},
publisher={IEEE}
}License
CC-BY-NC 4.0 (Non-commercial use only)
Acknowledgments
- BraTS Challenge organizers
- Original report annotators
- HuggingFace for dataset hosting
