Skip to content

Repository files navigation

ODELIA Challenge - Team BCN-AIM

This repository contains our team's submission to the ODELIA Challenge, where our method got 🥈2nd place out of 8 submission in the final phase.

📌 Overview

  • Challenge Goal: Classification of breast MRI scans on a highly heterogeneous dataset into normal (or no lesion), benign and malignant categories.
  • Result: Finished 2nd place 🎉
  • Leaderboard Score: 0.86 AUC

Important Links

📊 Problem Statement

ODELIA challenge required participants to obtain a generalizable algorithm for detecting malignancies in breast MRIs. Each MRI study is assigned two labels, one for the left breast and one for the right breast. Each breast must be categorized into one of three classes/labels: “no lesion,” “benign lesion” or “malignant lesion.” The dataset has 511 breast MRI studies curated from six European centres, covering multiple vendors at both 1.5 and 3 T. Each MRI study contains a T2-weighted acquisition alongside a DCE acquisition with one pre-contrast phase and between 2 and 7 post-contrast phases. The evaluation metrics for challenge evaluation were micro AUC, Sensitivity at 90% Specificity and Specificity at 90% Sensitivity.

🌳 Working Tree

bcnaim-odelia-challenge/
│
├── Classification/                      # Breast MRI classification framework
│   ├── dataloading/                     # Data loading utilities
│   │   ├── collate_function.py          # Custom collate function for batching 2D slices
│   │   └── dataloader2D.py              # PyTorch dataset & dataloader for 2D classification
│   ├── models/
│   │   └── swinunetr.py                 # SwinUNETR backbone with classification head
│   ├── config2d.yaml                    # Classification config (hyperparameters, paths, channels)
│   ├── inference.py                     # Run inference on classification model(s)
│   └── train.py                         # Training script & logging
│
├── Segmentation/                        # Breast mask segmentation framework
│   ├── dataloading/                     
│   │   ├── dataloader.py                # PyTorch dataset & dataloader for segmentation
│   │   └── dataloader_testing.py        # Dataloader for test/eval segmentation
│   ├── config2d.yaml                    # Segmentation config
│   ├── inference.py                     # Run inference on segmentation model
│   ├── inference_save_predictions.py    # Inference script with option to save predicted masks
│   └── train.py                         # Training script for breast mask segmentation
│
├── challenge_submissions/               # Submission files for ODELIA challenge
│   ├──submission_final                  # Final Submission
|
├── csvs/                                # Pre-generated dataset splits
│   ├── breast_mask_segmentation_splits/ # Segmentation training/validation splits
│   └── crossval_splits/                 # Classification cross-validation splits
│
├── prepare_and_preprocess/              # Data preparation utilities
│   ├── cross_validation_split.py        # Script to create stratified 5-fold CV splits
│   ├── mips_odelia_default.py           # Generate MIPs from ODELIA MRI dataset
│   └── preprocess.py                    # Preprocessing pipeline (resizing, normalization, etc.)
│
├── .gitignore                           # Ignore build artifacts, logs, checkpoints
└── README.md                            # Project documentation

📦 Checkpoints

Download the segmentation model and classification models' checkpoints from here: https://drive.google.com/drive/folders/1aQGZk_JhqtFVfiZKVdSlgPU0xr0pHvjp?usp=sharing!

🐣 How to Run

  1. ✨ Preprocess the data

    Create Maximum Intensity Projections (MIPs) from the default challenge dataset:

    python prepare_and_preprocess/mips_odelia_default.py
  2. 🚀 Train the model

    Start training (most parameters are loaded from the config file, though a few are still hardcoded 👀 - TO DO):

    python Classification/train.py

Acknowledgements

This repository was developed at the BCN-AIM, Universitat de Barcelona, Spain.

We gratefully acknowledge support from RadioVal (European research and innovation programme grant agreement No 101057699).

bcn-aim radioval ub

About

Official repository of Team BCN-AIM to MICCAI 2025 ODELIA-Challenge.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages