BraTS Segmentation Using 3D U-Net

🔗 View Full Project on GitHub

📁 Dataset Info

The dataset used is the BraTS 2020 multimodal brain tumor segmentation dataset, available on Kaggle:
https://www.kaggle.com/datasets/awsaf49/brats20-dataset-training-validation

⚙️ Tools & Libraries Used

🧠 Segmentation Pipeline

  1. Step 1: Data Preparation
    • Loaded MRI modalities using nibabel
    • Normalized volume values using MinMaxScaler
    • Cropped original shape 240×240×155 to 128×128×128 for uniform training
    • Filtered out samples where tumor covered < 1% of the brain volume
    • Split data into 75% training and 25% validation using splitfolders
  2. Step 2: Custom Data Generator
    • Keras' ImageDataGenerator doesn't support .npy files
    • Created a generator that:
      • Loads preprocessed data from disk
      • Applies shuffling and batch generation
      • Returns 3D MRI volume and corresponding mask
  3. Step 3: Define the 3D U-Net Model
    • Extended standard 2D U-Net to 3D using:
      • Conv3D, MaxPooling3D, and UpSampling3D
  4. Step 4: Training and Prediction
    • Trained using the custom data generator
    • Used Dice coefficient and Categorical Focal Loss
    • Visualized predictions using matplotlib (random 2D slices)

📊 Results : 6GB rtx 3050 - 10 Epochs

Training Loss

Dice Loss Graph

Mean IoU: 61.34 (10 Epochs)

Prediction Samples

Predicted Tumor Predicted Tumor 2

Training vs Validation Loss

Loss Comparison

Training vs Validation Accuracy

Accuracy Comparison

📌 Future Improvements

🔗 References