Instructions to use starpreeda/BrainTumorTest with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use starpreeda/BrainTumorTest with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://starpreeda/BrainTumorTest") - Notebooks
- Google Colab
- Kaggle
🧠 Brain Tumor MRI Classification Model (โมเดล AI ตรวจวิเคราะห์และแยกแยะประเภทเนื้องอกในสมองจากภาพสแกน MRI)
This Artificial Intelligence (AI) model is fine-tuned to analyze brain MRI scans and classify them into 4 distinct categories:
Glioma Tumor (เนื้องอกในสมองชนิดกลิโอมา)— A type of tumor that occurs in the brain and spinal cord.
Meningioma Tumor (เนื้องอกเยื่อหุ้มสมอง) — A tumor that arises from the meninges (membranes surrounding the brain).
Pituitary Tumor (เนื้องอกต่อมใต้สมอง) — An abnormal growth that develops in the pituitary gland.
No Tumor (สมองปกติ ไม่พบเนื้องอก) — Healthy brain scan with no detected tumors.
💡 In Short: An AI-powered image classification model designed to assist in detecting and identifying brain tumor types from MRI scans.
📋 Model Overview
- Base Architecture: EfficientNetB0 (Pre-trained on ImageNet)
- Task: Multi-class Image Classification (4 Classes)
- Input Image Size: 224 x 224 x 3
- Framework: TensorFlow 2.x / Keras
🏷️ Target Classes
- Glioma Tumor
- Meningioma Tumor
- No Tumor
- Pituitary Tumor
🛠️ 1. Prerequisites & Installation
Before using, you need to install the required basic libraries using this command in your Terminal or Command Prompt: ก่อนเริ่มใช้งาน คุณจำเป็นต้องติดตั้งไลบรารีพื้นฐาน
pip install tensorflow pillow requests numpy
import os
import urllib.request
import numpy as np
import tensorflow as tf
from PIL import Image
from tensorflow.keras.applications import EfficientNetB0
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D, Dropout, BatchNormalization
from tensorflow.keras.models import Model
model_url = "[https://huggingface.co/starpreeda/BrainTumorTest/resolve/main/efficientnetb0_finetuned_brain_mri.keras](https://huggingface.co/starpreeda/BrainTumorTest/resolve/main/efficientnetb0_finetuned_brain_mri.keras)"
weights_path = "model_weights.keras"
if not os.path.exists(weights_path):
print("Downloading model weights...")
urllib.request.urlretrieve(model_url, weights_path)
print("Download completed!")
base_model = EfficientNetB0(weights=None, include_top=False, input_shape=(224, 224, 3))
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = BatchNormalization()(x)
x = Dense(256, activation='relu')(x)
x = Dropout(0.4)(x)
outputs = Dense(4, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=outputs)
model.load_weights(weights_path)
print("✅ Model is ready to use!")
class_names = ['Glioma', 'Meningioma', 'No Tumor', 'Pituitary']
def predict_mri(image_path):
img = Image.open(image_path).convert('RGB')
img = img.resize((224, 224))
img_array = np.array(img, dtype=np.float32)
img_array = np.expand_dims(img_array, axis=0)
predictions = model.predict(img_array)
predicted_class = class_names[np.argmax(predictions[0])]
confidence = np.max(predictions[0]) * 100
return predicted_class, confidence
# class_label, conf = predict_mri("path/to/your/mri_scan.jpg")
# print(f"Result: {class_label} ({conf:.2f}%)")
## ⚙️ Training Details & Hyperparameters
- **Optimizer:** Adam (Learning Rate = `1e-4`)
- **Loss Function:** Categorical Crossentropy
- **Batch Size:** 16
- **Data Augmentation:**
- Rotation Range: 15°
- Width & Height Shift: 10%
- Zoom Range: 15%
- Horizontal Flip: True
- **Fine-Tuning Strategy:** Unfroze top 40 layers of EfficientNetB0 for fine-tuning.
## 📊 Model Architecture Summary
```text
Input (224, 224, 3)
↳ EfficientNetB0 Base (Top 40 layers unfrozen)
↳ GlobalAveragePooling2D
↳ BatchNormalization
↳ Dense(256, activation='relu')
↳ Dropout(0.4)
↳ Dense(4, activation='softmax')
---
🚀 How to Load and Use
import os
import urllib.request
import numpy as np
import tensorflow as tf
from PIL import Image
from tensorflow.keras.applications import EfficientNetB0
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D, Dropout, BatchNormalization
from tensorflow.keras.models import Model
model_url = "[https://huggingface.co/starpreeda/BrainTumorTest/resolve/main/efficientnetb0_finetuned_brain_mri.keras](https://huggingface.co/starpreeda/BrainTumorTest/resolve/main/efficientnetb0_finetuned_brain_mri.keras)"
weights_path = "model_weights.keras"
if not os.path.exists(weights_path):
print("Downloading model weights...")
urllib.request.urlretrieve(model_url, weights_path)
print("Download completed!")
base_model = EfficientNetB0(weights=None, include_top=False, input_shape=(224, 224, 3))
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = BatchNormalization()(x)
x = Dense(256, activation='relu')(x)
x = Dropout(0.4)(x)
outputs = Dense(4, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=outputs)
model.load_weights(weights_path)
print("Model is ready for use!")
📊 Dataset & Training Data
Source: Brain Tumor MRI Dataset (Kaggle)
Data Distribution:
Training Set: MRI images augmented with rotation, shift, zoom, and horizontal flips.
Testing Set: Independent brain MRI scans for evaluation.
Classes: 4 categories (Glioma, Meningioma, No Tumor, Pituitary).
Confusion Matrix & Training Performance
- Downloads last month
- -
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support
Model tree for starpreeda/BrainTumorTest
Base model
google/efficientnet-b0
