| ---
|
| language: en
|
| license: mit
|
| library_name: pytorch
|
| tags:
|
| - image-classification
|
| - computer-vision
|
| - transfer-learning
|
| - pokemon
|
| - resnet18
|
| metrics:
|
| - accuracy
|
| model-index:
|
| - name: pokemon-resnet18-transfer-learning
|
| results:
|
| - task:
|
| type: image-classification
|
| name: Image Classification
|
| dataset:
|
| name: Custom Pokemon Dataset (course week 8 style)
|
| type: imagefolder
|
| metrics:
|
| - type: accuracy
|
| value: 0.80
|
| name: test_accuracy
|
| ---
|
|
|
| # Pokemon ResNet18 Transfer Learning Classifier
|
|
|
| ## Model Description
|
|
|
| This model is a transfer-learning image classifier based on ResNet18, fine-tuned on a custom Pokemon image dataset with 6 classes:
|
|
|
| - charizard
|
| - charmander
|
| - charmeleon
|
| - ditto
|
| - eevee
|
| - ekans
|
|
|
| The model was trained for the mandatory exercise "Computer Vision Classification & Model Comparison" and is intended to be compared against:
|
|
|
| - an open-source zero-shot model (CLIP)
|
| - a closed-source vision model (OpenAI)
|
|
|
| ## Model Details
|
|
|
| - Architecture: ResNet18 (`torchvision.models.resnet18`)
|
| - Framework: PyTorch
|
| - Input size: 224 x 224 RGB
|
| - Output classes: 6
|
| - Checkpoint format: `.pth` (`state_dict` + metadata)
|
|
|
| ## Training Data
|
|
|
| Dataset structure:
|
|
|
| - `data/pokemon/train/`
|
| - `data/pokemon/test/`
|
|
|
| Classes:
|
|
|
| - `charizard`, `charmander`, `charmeleon`, `ditto`, `eevee`, `ekans`
|
|
|
| ## Preprocessing
|
|
|
| Training transforms:
|
|
|
| - `RandomResizedCrop(224)`
|
| - `RandomHorizontalFlip()`
|
| - `ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2)`
|
| - `Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])`
|
|
|
| Evaluation transforms:
|
|
|
| - `Resize(256)`
|
| - `CenterCrop(224)`
|
| - `Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])`
|
|
|
| ## Training Procedure
|
|
|
| - Loss: CrossEntropyLoss
|
| - Optimizer: Adam
|
| - Learning rate: `1e-4`
|
| - Weight decay: `1e-4`
|
| - Batch size: `16`
|
| - Epochs: `4`
|
| - Device: CPU
|
|
|
| ## Evaluation Results
|
|
|
| Final performance from project reports:
|
|
|
| - Best validation accuracy: `0.83784`
|
| - Test accuracy: `0.80`
|
|
|
| Class-level behavior (high-level):
|
|
|
| - Strong performance on `ditto`, `charmander`, `ekans`
|
| - Main confusion observed between `charizard`, `charmeleon`, and `eevee` on some samples
|
|
|
| ## Intended Use
|
|
|
| This model is intended for:
|
|
|
| - educational experiments in transfer learning
|
| - small-scale Pokemon image classification demos
|
| - model-comparison workflows against CLIP/OpenAI vision systems
|
|
|
| It is not intended for production or safety-critical applications.
|
|
|
| ## Limitations
|
|
|
| - Small custom dataset
|
| - Limited class coverage (only 6 classes)
|
| - Sensitivity to style/domain shift (sprites vs photos, color variants, edited images)
|
|
|
| ## Ethical Considerations
|
|
|
| This is a toy educational classifier trained on non-sensitive image categories. No personal or biometric data is used.
|
|
|
| ## How to Use
|
|
|
| Load checkpoint contents:
|
|
|
| - `state_dict`: model weights
|
| - `labels`: class names
|
| - `image_size`: expected size
|
| - `architecture`: model family
|
|
|
| For complete inference logic and app integration, see the project source implementation.
|
|
|
| ## Reproducibility Artifacts
|
|
|
| - Model checkpoint: `custom_resnet18.pth`
|
| - Project metrics files:
|
| - `custom_model_metrics.json`
|
| - `model_comparison.json`
|
|
|
| ## Links
|
|
|
| - Hugging Face Space: `https://huggingface.co/spaces/kukalend/computer-Vision-classification`
|
| - Hugging Face model repo: `https://huggingface.co/kukalend/pokemon-transfer-resnet18`
|
|
|