Instructions to use Ghostraptor/efficientnet_pet_classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use Ghostraptor/efficientnet_pet_classifier with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://Ghostraptor/efficientnet_pet_classifier") - Notebooks
- Google Colab
- Kaggle
| 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" |