This project focuses on classifying brain tumors using MRI images. It categorizes MRI scans into four distinct classes:
- Glioma
- Meningioma
- Pituitary
- No Tumor
We utilize the EfficientNetB1 model (pre-trained on ImageNet) and fine-tune it for this classification task. The dataset is sourced from Kaggle and contains labeled MRI scans for training and testing.
- Data Preprocessing: Includes cropping MRI images to focus on the tumor area, resizing to a uniform size, and applying data augmentation techniques.
- Model Architecture: Utilizes
EfficientNetB1
as a feature extractor followed by custom layers for classification. - Training Enhancements:
- Early Stopping
- ReduceLROnPlateau for learning rate adjustment
- Model Checkpointing to save the best model
- Visualization: Displays training/validation accuracy and loss graphs, confusion matrix, and classification reports for evaluation.
-
Clone Repository & Install Dependencies:
!pip install opendatasets !pip install tensorflow !pip install imutils !pip install opencv-python !pip install matplotlib seaborn scikit-learn
-
Download Dataset:
import opendatasets as od od.download("https://www.kaggle.com/datasets/masoudnickparvar/brain-tumor-mri-dataset/data")
- Data Exploration & Visualization
- Image Cropping Function: Focus on brain area by removing extra background.
- Preprocessing & Saving Cropped Images for each class.
- Image Augmentation using
ImageDataGenerator
(Rotation, Shift, Flip). - Model Building: Fine-tuning EfficientNetB1 with additional layers.
- Training with Early Stopping and LR Scheduler.
- Evaluation: Accuracy, Loss plots, Confusion Matrix, and Classification Report.
- Evaluation Metrics:
- Training Accuracy & Loss
- Validation Accuracy & Loss
- Confusion Matrix
- Classification Report
Graphs and metrics help in understanding the model's learning and generalization capabilities.
Highly Recommended:
For better GPU performance and faster training, it's advised to run the notebook on Google Colab.
You can upload your notebook to Google Colab and select GPU Runtime:
├── brain-tumor-mri-dataset/
│ ├── Training/
│ └── Testing/
├── Cropped_img/
│ ├── Train_Data/
│ └── Test_Data/
├── model.keras
├── README.md
└── brain_tumor_classification.ipynb
- TensorFlow
- OpenCV
- Matplotlib
- Seaborn
- Imutils
- Scikit-learn
- NumPy
- Pandas
The model achieves excellent classification accuracy on both training and testing datasets, providing a robust solution for brain tumor detection from MRI images.
- Implement transfer learning with deeper EfficientNet variants.
- Integrate attention mechanisms for better focus on tumor regions.
- Hyperparameter tuning for improved performance.
- Deployment of the model as a web application.