Skip to content

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

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages