No clue on improving the F1 Scores with 3D Medical Images

Hello there,

I am working with multiclass n_class=3 classification problem on a 3D Dataset input shape as such (10,1,41,256,265) [batch_size, channels, depth, height, width]. But I am always getting lower validation scores, here are the knows issues:

  1. The dataset is small, 41 volumes each of 51 Slice Images (each volume as a whole is input to the network).
  2. The classes are unbalanced (c1 = 21 samples, c2 = 12 samples, c3 = 8 samples)
  3. Dataset is a little noisy

Things I have done:

  1. Assign different weights to each classes (c1 getting the lowest)
  2. Histogram Equalization on images a preprocessing step.
  3. Shuffling the train/val dataloader
  4. Random train/val split.
  5. Increasing batch size
  6. Using different cost functions
  7. Regularization (adding more dropout layers)
  8. Reduce no of learning parameters
  9. Change models (Pretrained resnet 3D to more simpler models)

Things I have not done:

  1. Augmentation: I’m not exactly sure how to proceed with augmentation on Volume data, and which ones to specifically use for medical images.

I am training and testing within the same iteration, this is the kind of result i’m usually getting, this is a simpler model though, with Resnet3D and Resnet (2+1)D usually the results are much worse.


complete code, if someone can please have a look:

Hi, @Faraz. You can use TorchIO for that:

Thanks Fernando, I posted this some time and right after this I ran into TorchIO and I was able to get the desired F1 scores. The problem had to do with the preprocessing of the images all along.

Of course! We discussed slices visualization, I remember you now. I’m glad it worked! Preprocessing is key. I discuss that in the notebook and in my submission to the MICCAI educational challenge:

1 Like