German Bird Classifier 🐦

A fine-tuned EfficientNet-B0 model for classifying 8 common German garden bird species with 100% validation accuracy.

Model Description

This model was trained using vogel-model-trainer, a toolkit for creating bird classification models from video footage.

Base Model: google/efficientnet-b0 (8.5M parameters)
Fine-tuned for: German garden birds classification
Training Framework: PyTorch + Hugging Face Transformers

Supported Species

The model can classify the following 8 bird species:

  1. Blaumeise (Blue Tit) - Cyanistes caeruleus
  2. Grünling (European Greenfinch) - Chloris chloris
  3. Haussperling (House Sparrow) - Passer domesticus
  4. Kernbeißer (Hawfinch) - Coccothraustes coccothraustes
  5. Kleiber (Eurasian Nuthatch) - Sitta europaea
  6. Kohlmeise (Great Tit) - Parus major
  7. Rotkehlchen (European Robin) - Erithacus rubecula
  8. Sumpfmeise (Marsh Tit) - Poecile palustris

Performance

Species Validation Accuracy Samples
Blaumeise 100.0% 5
Grünling 100.0% 5
Haussperling 100.0% 5
Kernbeißer 100.0% 5
Kleiber 100.0% 5
Kohlmeise 100.0% 5
Rotkehlchen 100.0% 5
Sumpfmeise 100.0% 5
Overall 100.0% 40

Usage

With vogel-model-trainer

# Install the toolkit
pip install vogel-model-trainer

# Extract birds from video using this classifier
vogel-trainer extract --folder ~/bird-data \
  --species-model kamera-linux/german-bird-classifier \
  --sample-rate 20 --skip-blurry --deduplicate \
  video.mp4

With Python

from transformers import AutoImageProcessor, AutoModelForImageClassification
from PIL import Image
import torch

# Load model and processor
model = AutoModelForImageClassification.from_pretrained("kamera-linux/german-bird-classifier")
processor = AutoImageProcessor.from_pretrained("kamera-linux/german-bird-classifier")

# Load and preprocess image
image = Image.open("bird.jpg")
inputs = processor(images=image, return_tensors="pt")

# Predict
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    predicted_class = logits.argmax(-1).item()

# Get species name
species = model.config.id2label[predicted_class]
print(f"Predicted species: {species}")

Training Details

  • Training Date: November 13, 2025
  • Optimizer: AdamW with cosine LR schedule
  • Augmentation: Random rotation, affine, color jitter, gaussian blur
  • Regularization: Weight decay 0.01, label smoothing 0.1
  • Early Stopping: 7 epochs patience
  • Input Size: 224x224 pixels
  • Batch Size: 32
  • Learning Rate: 2e-5

Dataset

The model was trained on custom-collected video footage of German garden birds using the vogel-model-trainer toolkit:

  • Video sources: Garden bird feeders in Germany
  • Extraction method: YOLO-based bird detection + quality filtering
  • Data split: 80% training / 20% validation
  • Preprocessing: Blur detection, deduplication, class balancing

Limitations

  • Trained specifically on German garden birds - may not generalize to other species or regions
  • Best performance on clear, well-lit images similar to training data
  • May struggle with:
    • Juvenile birds with different plumage
    • Birds in flight or unusual poses
    • Heavy occlusion or poor lighting
    • Species not in the 8 training classes

Ethical Considerations

This model is intended for:

  • Wildlife monitoring and conservation
  • Educational purposes
  • Citizen science projects
  • Automated bird feeder cameras

Not recommended for:

  • Commercial wildlife tracking without proper permits
  • Any use that could harm bird populations

Citation

If you use this model, please cite:

@software{german_bird_classifier_2025,
  author = {Kamera Linux},
  title = {German Bird Classifier},
  year = {2025},
  url = {https://huggingface.co/kamera-linux/german-bird-classifier},
  note = {Trained with vogel-model-trainer: https://github.com/kamera-linux/vogel-model-trainer}
}

Links

License

Apache 2.0 - See LICENSE file for details.

Acknowledgments

Built with:

Downloads last month
1,292
Safetensors
Model size
4.06M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support