Alzheimer disease classification using deep learning

I am doctoral candidate and I am working on producing some publishable results to initiate research article writing, however I am unable to get publication worthy ACCURACY, AUC, F1 score.
I have used transfer learning with CNNs , converted images to N4 Bias and in my limited laptop configuration by working on colab pro but something sems amiss
How do I improve my results.
I am working on sagittal MRI images acquired from ADNI dataset.

Hi there!

I totally feel your pain on this one because I too am working on some articles wrt Alzheimer’s disease. Now, working with the ADNI dataset is notoriously tricky, and hitting a wall with your AUC and F1 scores is technically a rite of passage for neuroimaging classification (believe me when I say it’s pretty common). I might have a few solutions that could help case but I do apologize in advance if they don’t do the trick. I’d say usually, tweaking one or two of these might possibly get things moving again:

  1. I hope you’re not feeding it all the slices. MRI volumes mostly include the extreme left and right sides of the head (like the ears and cheekbones), which all in all have zero diagnostic value for dementia. If you’re passing those in, your model is probably drowning in noise. you could essentially try to filter your dataset to only use the middle 30-40 slices where necessary structures are actually visible.

  2. Make sure the train/test cases are split by a unique field (most probably a patient id) This is essentially the #1 killer of F1 scores on ADNI. If say, you extract 60 slices from Patient A, and 50 go to the training set while 10 go to the validation set, the model isn’t learning to detect Alzheimer’s and it will fail to generalize.

  3. Standard CNNs are trained on RGB photos of everyday objects, which serves as a huge domain gap from grayscale, MRIs. When I faced this exact issue, my supervisor asked me to fine-tune earlier convolutional blocks so that the model may learn medical textures. And to alternatively, look into loading RadImageNet weights instead of standard ImageNet weights.

That would be all I have learnt while working on this particular problem (it’s still a work in progress). But I hope that helps!

Happy to hear I am not alone on this.
The points appear workable, I think I have worked out with the points 1 and 2, ofcourse after tedious amount of hit and trial and how and whys.
The point 3 seems a new direction and hopefully a ray of hope which should improvise . Thank you i will get back on this .

1 Like