Mitchins's picture
Upload folder using huggingface_hub
4ee4910 verified
metadata
license: openrail
language: en
library_name: timm
tags:
  - image-classification
  - anime
  - real
  - rendered
  - 3d-graphics
datasets:
  - coco
  - custom-anime
  - steam-screenshots

EfficientNet-B0 - Anime/Real/Rendered Classifier

Fast, lightweight image classifier distinguishing photographs from anime and 3D rendered images.

Model Summary

  • Model Name: efficientnet_b0
  • Framework: PyTorch + TIMM
  • Input: 224×224 RGB images
  • Output: 3 classes (anime, real, rendered)
  • Parameters: 5.3M
  • Size: 16.2 MB

Intended Use

Classify images into three categories:

  • anime: Drawn 2D or cel-shaded animation
  • real: Photographs and real-world footage
  • rendered: 3D graphics (games, CGI, Pixar, etc.)

Performance

Validation Accuracy: 97.44%

Class Precision Recall F1-Score Support
anime 0.98 0.99 0.99 236
real 0.98 0.98 0.98 500
rendered 0.96 0.93 0.94 161
weighted avg 0.97 0.97 0.97 897

Training Data

  • Real images: 5,000 COCO 2017 validation set images
  • Anime images: 2,357 curated animation frames and key scenes
  • Rendered images: 1,549 AAA game screenshots (Metacritic ≥75) + 61 Pixar movie stills
  • Total: 8,967 images, 8,070 training, 897 validation (perceptually-hashed for diversity)

Training Details

  • Framework: PyTorch
  • Augmentation: Resize only (224×224)
  • Loss Function: CrossEntropyLoss with inverse frequency class weights
  • Optimizer: AdamW (lr=0.001)
  • Batch Size: 80
  • Epochs: 20
  • Hardware: NVIDIA RTX 3060 (12GB VRAM)
  • Training Time: ~20 minutes

Limitations

  1. Photorealistic video games sometimes classified as real (90% recall on rendered class)
  2. Cel-shaded games may score as anime rather than rendered
  3. Artistic 3D renders (Pixar, high-quality CGI) show mixed confidence
  4. Performance degrades on images <224×224

Recommendations

  • Use confidence threshold of ≥80% for reliable predictions
  • For critical applications, ensemble with tf_efficientnetv2_s
  • Check confusion patterns in own use cases
  • Manually review edge cases (game screenshots, stylized renders)

How to Use

from PIL import Image
import torch
from torchvision import transforms
import timm
from safetensors.torch import load_file

# Load
model = timm.create_model('efficientnet_b0', num_classes=3, pretrained=False)
state_dict = load_file('model.safetensors')
model.load_state_dict(state_dict)
model.eval()

# Prepare image
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
img = Image.open('image.jpg').convert('RGB')
x = transform(img).unsqueeze(0)

# Infer
with torch.no_grad():
    logits = model(x)
    probs = torch.softmax(logits, dim=1)
    pred = probs.argmax().item()

labels = ['anime', 'real', 'rendered']
print(f"{labels[pred]}: {probs[0, pred]:.1%}")

Benchmarks

Inference Speed (RTX 3060)

  • Single image: ~20ms
  • Batch of 32: ~150ms

Accuracy Comparison

Model Accuracy Speed Params
EfficientNet-B0 97.44% Fast 5.3M
TF-EfficientNetV2-S 97.55% Moderate 21.5M

Ethical Considerations

This model classifies images by visual style/source. Potential misuse:

  • Detecting deepfakes/AI-generated content (not designed for this)
  • Filtering user-generated content (may have cultural bias)
  • Surveillance or profiling

Recommendations:

  • Use with human review for content moderation
  • Test on your target domain before deployment
  • Don't rely solely on automatic classification for safety-critical decisions
  • Consider cultural representation in anime/rendered content

Contact

For questions or issues: [GitHub repo]

License

OpenRAIL (Open Responsible AI License) - free for research and commercial use with proper attribution