Ghostraptor's picture
Created Model Card
23222af verified
---
language: en
license: apache-2.0
library_name: keras
tags:
- image-classification
- tensorflow
- efficientnet
- computer-vision
- cats-vs-dogs
metrics:
- accuracy
- auc
- precision
- recall
- f1
pipeline_tag: image-classification
---
# Pet Classification with EfficientNetB0
This repository contains a high-performance deep learning model designed to classify images into two categories: **Cats** and **Dogs**. The model leverages the **EfficientNetB0** architecture, utilizing Transfer Learning and specialized Fine-Tuning to achieve professional-grade metrics.
## Model Performance
Evaluated on a balanced test set of **5,000 images**, the model demonstrates exceptional stability and discriminative power:
| Metric | Score |
| :--- | :--- |
| **Test Accuracy** | **97.48%** |
| **AUC Score** | **0.9974** |
| **Precision** | **96.77%** |
| **Recall** | **0.9824** |
| **F1-Score** | **0.9750** |
### Confusion Matrix Highlights
* **Total Correct:** 4,874 / 5,000 images.
* **Sensitivity:** High recall for 'Dog' class (0.9824), ensuring minimal false negatives.
* **Confidence:** Average Loss of **0.0651**, indicating high certainty in classifications.
## Architecture & Training Strategy
The model uses a multi-stage training pipeline to maximize the features learned from the ImageNet-pre-trained EfficientNetB0 base.
### 1. Model Structure
* **Base:** EfficientNetB0 (Functional)
* **Pooling:** GlobalAveragePooling2D
* **Normalization:** BatchNormalization for training stability.
* **Dense Layers:** 256 units (ReLU) followed by a 2-unit Softmax output.
* **Regularization:** Dropout (0.4) to ensure high generalization and prevent overfitting.
### 2. Training Phases
* **Phase 1 (Transfer Learning):** The base model was frozen, and only the custom classification head was trained (Learning Rate: 1e-3).
* **Phase 2 (Fine-Tuning):** The top 40 layers of the EfficientNet base were unfrozen and trained with a reduced learning rate (1e-4) to refine high-level feature detection.
## How to Use
To use this model locally with the `.keras` file:
```python
import tensorflow as tf
from tensorflow.keras.applications.efficientnet import preprocess_input
import cv2
import numpy as np
# Load model
model = tf.keras.models.load_model('efficientnetb0_pet_classifier_finetuned.keras')
def predict(img_path):
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (224, 224))
img = preprocess_input(np.expand_dims(img, axis=0))
preds = model.predict(img)
return "Dog" if np.argmax(preds) == 1 else "Cat"