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:

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

Things I have done:

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

Things I have not done:

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.
thanks!

Gaeb6BT1106×400 91.9 KB

complete code, if someone can please have a look:

  
      gist.github.com
  
  
    https://gist.github.com/farazahmeds/0bddc1e5dd5f7cc501c12c51b84fc0ea 6
mriDsetTrain.py
import torch
import torch.nn as nn
import torch.optim as optim
import torch.utils
import torch.utils.data.dataset
import torch.utils.data.dataloader
from torch.optim import lr_scheduler
from torch import utils
import numpy as np
import torchvision
This file has been truncated. show original