nsr51324's picture
Create README.md
6b57d5f verified
|
Raw
History Blame
4.83 kB
---
license: mit
language:
- en
library_name: pytorch
pipeline_tag: image-classification
datasets:
- nsr51324/Oral_Diseases
metrics:
- accuracy
- precision
- recall
- f1
base_model:
- resnet50
tags:
- image-classification
- computer-vision
- medical-imaging
- dentistry
- oral-health
- resnet50
- transfer-learning
- pytorch
- deep-learning
---
# 🦷 Oral Diseases Image Classification
A **ResNet50-based deep learning model** fine-tuned to classify **six common oral diseases** from intraoral images. This repository contains the best-performing model from a benchmark of four convolutional neural network architectures trained and evaluated under identical conditions.
🏆 **Best Model:** ResNet50
**Accuracy:** **94.77%**
🎯 **Macro F1-Score:** **0.9411**
🧠 **Framework:** PyTorch
---
# Model Overview
The model classifies the following six oral conditions:
- Calculus
- Caries
- Gingivitis
- Ulcers
- Tooth Discoloration
- Hypodontia
The final model was obtained using **transfer learning** with an ImageNet-pretrained ResNet50 and fine-tuned using a two-stage training strategy.
---
# Benchmark Results
| Rank | Model | Trainable Parameters | Accuracy | Macro F1 |
|------|--------|--------------------:|---------:|----------:|
| 🥇 | ResNet50 | 23,520,326 | **94.77%** | **0.9411** |
| 🥈 | DenseNet121 | 6,960,006 | 94.51% | 0.9351 |
| 🥉 | EfficientNet-B0 | 4,015,234 | 94.17% | 0.9335 |
| 4 | Scratch CNN | 11,179,590 | 83.45% | 0.8236 |
---
# Repository Structure
```
checkpoints/
│── best_model.pth
notebooks/
│── oral-disseases-image-classification.ipynb
outputs/
│── models_comparison.csv
│── resnet50_confusion_matrix.png
│── resnet50_history.png
│── densenet121_confusion_matrix.png
│── densenet121_history.png
│── efficientnet_b0_confusion_matrix.png
│── efficientnet_b0_history.png
│── scratch_cnn_confusion_matrix.png
│── scratch_cnn_history.png
Gradio.py
README.md
```
---
# Download
## Model Weights
The trained checkpoint is available in:
```
checkpoints/best_model.pth
```
or can be downloaded directly from this repository.
---
## Dataset
Training dataset:
https://huggingface.co/datasets/nsr51324/Oral_Diseases
Original source:
Oral Diseases Dataset (Kaggle)
---
# How to Load the Model
```python
from huggingface_hub import hf_hub_download
import torch
weights_path = hf_hub_download(
repo_id="nsr51324/Oral_Diseases_Image_Classification",
filename="checkpoints/best_model.pth"
)
checkpoint = torch.load(weights_path, map_location="cpu")
class_names = checkpoint["class_names"]
```
---
# Inference
```python
import torch
import torch.nn as nn
from torchvision.models import resnet50
from torchvision import transforms
from PIL import Image
model = resnet50(weights=None)
model.fc = nn.Sequential(
nn.Dropout(0.3),
nn.Linear(model.fc.in_features, len(class_names))
)
model.load_state_dict(checkpoint["state_dict"])
model.eval()
transform = transforms.Compose([
transforms.Resize((224,224)),
transforms.ToTensor(),
transforms.Normalize(
[0.485,0.456,0.406],
[0.229,0.224,0.225]
)
])
image = Image.open("sample.jpg").convert("RGB")
tensor = transform(image).unsqueeze(0)
with torch.no_grad():
probabilities = torch.softmax(model(tensor), dim=1)[0]
prediction = class_names[probabilities.argmax().item()]
print(prediction)
```
---
# Interactive Demo
A standalone Gradio application is included.
Run:
```bash
pip install torch torchvision gradio pillow huggingface_hub
python Gradio.py
```
---
# Training Details
| Item | Value |
|------|-------|
| Image Size | 224 × 224 |
| Batch Size | 32 |
| Epochs | Up to 30 |
| Optimizer | Adam |
| Early Stopping | Yes |
| Weight Decay | 1e-4 |
| Label Smoothing | 0.1 |
| Dropout | 0.4 |
Training consisted of two stages:
1. Freeze the ResNet50 backbone and train the classifier head.
2. Unfreeze the backbone and fine-tune the entire network.
---
# Data Augmentation
The following augmentations were applied during training:
- Random Resized Crop
- Horizontal Flip
- Rotation
- Color Jitter
- Random Erasing
---
# Evaluation
The repository includes:
- Confusion matrices
- Training history
- Classification metrics
- Model comparison
- CSV benchmark results
See the **outputs/** directory for complete evaluation results.
---
# Intended Use
This model is intended for **research, educational purposes, and AI experimentation**.
It is **not** a certified medical device and **must not** be used as a substitute for professional clinical diagnosis.
---
# License
This project is released under the **MIT License**.
Please refer to the dataset license before commercial use.
---
# Author
**Nasr Mohamed**
AI Engineer
🤗 https://huggingface.co/nsr51324