Brain tumors are among the most critical health issues worldwide, requiring early and accurate diagnosis to improve patient outcomes. This project focuses on automatic brain tumor detection from MRI scans using a deep learning approach.
The model is based on a Convolutional Neural Network (CNN) architecture (Xception-based), trained to classify MRI images into tumor or non-tumor categories. The goal is to provide a reliable, fast, and scalable solution to assist radiologists and healthcare professionals.
Our trained model achieves:
- ~98% training accuracy
- ~96% validation accuracy
- ~95% test accuracy
- ROC-AUC: 0.97–0.99 across classes
Install the following packages before running the project:
- Python 3.x
- TensorFlow
- Keras
- NumPy
- Pandas
- Matplotlib
- Scikit-learn
We used publicly available MRI brain tumor datasets containing labeled images for classification.
Classes: Tumor, Non-Tumor
Data Split: 70% training, 15% validation, 15% testing
Images were preprocessed (resizing, normalization, augmentation) to improve model performance.
Sample MRI images:
The preprocessing pipeline includes:
Resizing images to uniform dimensions
Normalizing pixel values
Data augmentation (rotation, flip, zoom)
We implemented a CNN model with transfer learning (Xception).
Key layers include:
Convolutional layers with ReLU activation
MaxPooling for feature extraction
Dropout for regularization
Fully connected dense layers
Softmax activation for classification
Libraries used import numpy as np import pandas as pd import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout from sklearn.metrics import classification_report, confusion_matrix import matplotlib.pyplot as plt
Confusion Matrix & Classification Report confirm strong performance across both classes.
Training & Validation Accuracy/Loss curves
ROC curves for classification
Example predictions with MRI scan input vs. predicted label