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:
- Blaumeise (Blue Tit) - Cyanistes caeruleus
- Grünling (European Greenfinch) - Chloris chloris
- Haussperling (House Sparrow) - Passer domesticus
- Kernbeißer (Hawfinch) - Coccothraustes coccothraustes
- Kleiber (Eurasian Nuthatch) - Sitta europaea
- Kohlmeise (Great Tit) - Parus major
- Rotkehlchen (European Robin) - Erithacus rubecula
- 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
- Training Toolkit: vogel-model-trainer on GitHub
- PyPI Package: vogel-model-trainer
- Model Repository: kamera-linux/german-bird-classifier
License
Apache 2.0 - See LICENSE file for details.
Acknowledgments
Built with:
- Downloads last month
- 1,292
Evaluation results
- Test Accuracyself-reported100.000