| # Fine-Tuning ResNet50 for Alzheimer's MRI Classification | |
| This repository contains a Jupyter Notebook for fine-tuning a ResNet50 model to classify Alzheimer's disease stages from MRI images. The notebook uses PyTorch and the dataset is loaded from the Hugging Face Datasets library. | |
| ## Table of Contents | |
| - [Introduction](#introduction) | |
| - [Dataset](#dataset) | |
| - [Model Architecture](#model-architecture) | |
| - [Setup](#setup) | |
| - [Training](#training) | |
| - [Evaluation](#evaluation) | |
| - [Usage](#usage) | |
| - [Results](#results) | |
| - [Contributing](#contributing) | |
| - [License](#license) | |
| ## Introduction | |
| This notebook fine-tunes a pre-trained ResNet50 model to classify MRI images into one of four stages of Alzheimer's disease: | |
| - Mild Demented | |
| - Moderate Demented | |
| - Non-Demented | |
| - Very Mild Demented | |
| ## Dataset | |
| The dataset used is [Falah/Alzheimer_MRI](https://huggingface.co/datasets/Falah/Alzheimer_MRI) from the Hugging Face Datasets library. It consists of MRI images categorized into the four stages of Alzheimer's disease. | |
| ## Model Architecture | |
| The model architecture is based on ResNet50. The final fully connected layer is modified to output predictions for 4 classes. | |
| ## Setup | |
| To run the notebook locally, follow these steps: | |
| 1. Clone the repository: | |
| ```bash | |
| git clone https://github.com/your_username/alzheimer_mri_classification.git | |
| cd alzheimer_mri_classification | |
| ``` | |
| 2. Install the required dependencies: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. Open the notebook: | |
| ```bash | |
| jupyter notebook fine-tuning.ipynb | |
| ``` | |
| ## Training | |
| The notebook includes sections for: | |
| - Loading and preprocessing the dataset | |
| - Defining the model architecture | |
| - Setting up the training loop with a learning rate scheduler and optimizer | |
| - Training the model for a specified number of epochs | |
| - Saving the trained model weights | |
| ## Evaluation | |
| The notebook includes a section for evaluating the trained model on the validation set. It calculates and prints the validation loss and accuracy. | |
| ## Usage | |
| Once trained, the model can be saved and used for inference on new MRI images. The trained model weights are saved as alzheimer_model_resnet50.pth. | |
| ## Load the model architecture and weights | |
| ```python | |
| model = models.resnet50(weights=None) | |
| model.fc = nn.Linear(model.fc.in_features, 4) | |
| model.load_state_dict(torch.load("alzheimer_model_resnet50.pth", map_location=torch.device('cpu'))) | |
| model.eval() | |
| ``` | |
| ## Results | |
| The model achieved an accuracy of 95.9375% on the validation set. | |
| ## Contributing | |
| Contributions are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or submit a pull request. |