This repository contains a Jupyter Notebook that implements a deep learning pipeline to classify retinal fundus images into four categories: Cataract, Diabetic Retinopathy, Glaucoma, and Normal.
fundus-disease-classification/
├── notebook.ipynb         # Main Jupyter Notebook
├── requirements.txt       # Python dependencies
├── .gitignore             # Files to ignore in Git
└── split/                 # Dataset folder (download manually)
    ├── train/             # Training images
    ├── val/               # Validation images
    └── test/              # Test images
- 
Download the dataset from:
https://www.kaggle.com/datasets/drskprabhakar/cataract-dr-normal-glaucoma-fundus-images-dataset
 - 
Unzip or extract so that the top-level folder is named
split, containingtrain/,val/, andtest/subfolders. - 
Place the entire
split/folder at the root of this repository, alongsidenotebook.ipynb. 
- 
Clone this repository
git clone https://github.com/Amaan-developpeur/fundus-disease-classification.git cd fundus-disease-classification - 
Create a virtual environment (optional but recommended)
python -m venv venv source venv/bin/activate # macOS/Linux venv\Scripts\activate # Windows
 - 
Install dependencies
pip install -r requirements.txt
 - 
Verify dataset placement Ensure the
split/folder (withtrain/,val/,test/) lives here:ls # you should see: # notebook.ipynb requirements.txt split/
 
- 
Launch Jupyter Lab or Notebook:
jupyter notebook
 - 
Open
notebook.ipynband run cells from top to bottom. 
- Step 1: Data Setup — Verify folder structure and list classes.
 - Step 2: Data Inspection — Image counts, sample viewing, blur & quality checks.
 - Step 3: Data Generators — Define 
ImageDataGeneratorfor train/val/test. - Step 4: Baseline CNN — Build & train a custom CNN from scratch.
 - Step 5: Transfer Learning — Feature extraction and fine-tuning with MobileNetV2.
 - Step 6: Logistic Regression Head — Frozen backbone + logistic classifier.
 - Step 7: Evaluation & Interpretation — Confusion matrices, classification reports, Grad-CAM.
 - Step 8: Conclusion & Future Work
 
Contents of requirements.txt:
tensorflow>=2.10
keras
numpy
pandas
matplotlib
scikit-learn
opencv-python
Pillow
(Adjust versions as needed.)
This notebook and the resulting model are for academic and research purposes only.This is a prototype model to assist the domain experts but not diagnostic tool.