Skip to content

Negidamd/CNN-PD-3D

Repository files navigation

CNN-PD-3D

MATLAB License Deep Learning

Convolutional Neural Network for Automated Parkinson's Disease Detection from Structural 3D MRI

A MATLAB-based deep learning toolbox that uses 3D ResNet-18 transfer learning for binary classification of Parkinson's disease (PD) vs. healthy controls from structural MRI scans.


πŸ“‹ Table of Contents


🎯 Overview

CNN-PD-3D is a deep learning framework designed for automated detection of Parkinson's disease from structural 3D MRI brain scans. The tool leverages transfer learning from a pre-trained 3D ResNet-18 architecture, adapted for volumetric neuroimaging data.

Key Contributions

  • 3D Transfer Learning: Adapts 2D ResNet-18 weights for 3D volumetric MRI analysis
  • Data Augmentation: Implements 3D spatial transformations (rotation, scaling, translation) for robust training
  • User-Friendly GUI: Provides an intuitive graphical interface for clinical use
  • Two-Stage Training: Supports iterative training to improve model accuracy

✨ Features

  • 🧠 3D Convolutional Neural Network based on ResNet-18 architecture
  • πŸ“Š Transfer Learning from pre-trained ImageNet weights adapted for 3D
  • πŸ”„ Data Augmentation Pipeline with randomized 3D affine transformations
  • πŸ–₯️ MATLAB GUI for easy clinical deployment
  • πŸ“ˆ GPU Acceleration for faster training and inference
  • πŸ“ NIfTI Support for standard neuroimaging file formats

πŸ’» Requirements

Software

  • MATLAB R2020b or later
  • Deep Learning Toolbox
  • Image Processing Toolbox
  • Computer Vision Toolbox (optional, for some augmentations)

Hardware

  • RAM: Minimum 16 GB (32 GB recommended)
  • GPU: NVIDIA GPU with CUDA support (recommended for training)
  • Storage: ~5 GB for model weights and sample data

MATLAB Toolboxes

% Check required toolboxes
ver('nnet')           % Deep Learning Toolbox
ver('images')         % Image Processing Toolbox

πŸ“₯ Installation

  1. Clone the repository

    git clone https://github.com/yourusername/CNN-PD-3D.git
    cd CNN-PD-3D
  2. Download pre-trained weights

    • Ensure params.mat (pre-trained 3D ResNet-18 weights) is in the root directory
    • The trained PD model 3DPretrainedModel.mat will be generated after training
  3. Add to MATLAB path

    addpath(genpath('CNN-PD-3D'));

πŸš€ Usage

GUI Application

Launch the graphical user interface for single-subject inference:

CNN_3D_PD
  1. Click the Load Image button
  2. Select a NIfTI (.nii) file containing the 3D MRI scan
  3. View the probability of Parkinson's disease

Training Pipeline

First-Time Training

For initial model training with your dataset:

% Run the first training pipeline
run('Pipeline3D_for1stTimeONLY_Training.m')

This script will:

  • Load MRI data from Dataset_Updated/Processed images - 1st session/
  • Initialize 3D ResNet-18 with transfer learning
  • Train with data augmentation
  • Save the model as 3DPretrainedModel.mat

Iterative Training (Fine-tuning)

To improve accuracy with additional data sessions:

% Run 2-3 times for improved accuracy
run('Pipeline3D_forREST_Training.m')

Training Options

Parameter Default Description
initLearnRate 0.001 Initial learning rate
maxEpochs 15 Maximum training epochs
miniBatchSize Auto Calculated based on dataset size
valFrequency 4 Validation frequency per epoch

Inference

For programmatic inference on new data:

% Load trained model
load('3DPretrainedModel.mat');

% Set up datastore for test image
inputSize = mriNet.Layers(1).InputSize;
imds = imageDatastore('path/to/image.nii', ...
    'FileExtensions', '.nii', ...
    'ReadFcn', @niftiread, ...
    'ReadSize', 10);

% Preprocess and classify
augimdsTest = transform(imds, @(data)classification3DAugmentationPipeline1(data, inputSize, 'test'));
[label, probs] = classify(mriNet, augimdsTest);

% Display result
fprintf('PD Probability: %.2f%%\n', 100*probs(2));

πŸ“ Data Format

Expected Directory Structure

Dataset_Updated/
β”œβ”€β”€ Processed images - 1st session/
β”‚   β”œβ”€β”€ Subject001_Healthy.nii
β”‚   β”œβ”€β”€ Subject002_Healthy.nii
β”‚   β”œβ”€β”€ ...
β”‚   β”œβ”€β”€ Subject026_Parkinson.nii
β”‚   └── Subject027_Parkinson.nii
└── Processed images - 2nd session/
    └── [Same structure]

Input Specifications

Specification Value
File Format NIfTI (.nii)
Input Size 224 Γ— 224 Γ— 224 Γ— 1
Preprocessing Z-score normalization
Cropping Region [7, 6, 6] to [94, 78, 78]

πŸ—οΈ Model Architecture

3D ResNet-18 Structure

Input Layer (224Γ—224Γ—224Γ—1)
    β”‚
    β–Ό
Conv3D (7Γ—7Γ—7, 64) β†’ BN β†’ ReLU β†’ MaxPool3D
    β”‚
    β–Ό
[ResBlock Γ— 2] (64 filters)
    β”‚
    β–Ό
[ResBlock Γ— 2] (128 filters)
    β”‚
    β–Ό
[ResBlock Γ— 2] (256 filters)
    β”‚
    β–Ό
[ResBlock Γ— 2] (512 filters)
    β”‚
    β–Ό
Global Average Pooling 3D
    β”‚
    β–Ό
Fully Connected (2 classes)
    β”‚
    β–Ό
Softmax β†’ Classification Output

Data Augmentation (Training)

  • Rotation: Β±15Β°
  • Scaling: 0.85Γ— to 1.15Γ—
  • Translation: Β±15 voxels (X, Y, Z)

πŸ“„ File Descriptions

File Description
CNN_3D_PD.m Main GUI application for PD classification
CNN_3D_PD.fig MATLAB GUI layout file
Pipeline3D_for1stTimeONLY_Training.m Initial training pipeline script
Pipeline3D_forREST_Training.m Iterative fine-tuning pipeline
classification3DAugmentationPipeline.m Data augmentation for train/val/test
classification3DAugmentationPipeline1.m Simplified preprocessing for inference
resnet18TL3Dfunction.m 3D ResNet-18 architecture definition
params.mat Pre-trained 3D ResNet-18 weights
3DPretrainedModel.mat Trained PD classification model

πŸ“š Citation

If you use this tool in your research, please cite:

@software{cnn_pd_3d,
  author = {Negida, Ahmed},
  title = {CNN-PD-3D: Convolutional Neural Network for Automated Parkinson's Disease Detection from Structural 3D MRI},
  year = {2026},
  url = {https://github.com/yourusername/CNN-PD-3D}
}

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ“§ Contact

Ahmed Negida, MD, PhD


πŸ™ Acknowledgments

  • MATLAB Deep Learning Toolbox team for the transfer learning framework
  • Contributors to the original ResNet architecture

Advancing precision medicine in Parkinson's disease through computational neuroscience

About

Convolutional neural network for automated Parkinson's disease detection from structural 3D MRI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages