merci1ess/birdclef2026-solution
0
🐦 BirdCLEF 2026 — Improved Solution for Production Robustness
Problem: Model performs well on training data but fails in production (passive acoustic monitoring).
Root cause: Focal → soundscape domain shift (6 identified causes).
Solution: Bird-MAE-Large backbone + EfficientNet-B1 ensemble with aggressive domain adaptation.
Architecture
Key Anti-Overfitting Techniques
Addressing Domain Shift (focal → soundscape)
Addressing Noisy/Weak Labels
Addressing Class Imbalance
Training Stability
Post-Processing (Inference)
- No-call detection (suppress low-confidence segments)
- Probability thresholding (0.01)
- Multi-fold ensemble (5-fold CV × 2 architectures = 10 models)
- Test-time augmentation (time-reversal + gain)
Quick Start
# 1. Download BirdCLEF 2026 data from Kaggle
kaggle competitions download -c birdclef-2026 -p ./data
unzip ./data/birdclef-2026.zip -d ./data/birdclef2026
# 2. Train Bird-MAE-Large (all 5 folds)
for fold in 0 1 2 3 4; do
python train_birdmae.py \
--data_dir ./data/birdclef2026/train_audio \
--metadata ./data/birdclef2026/train_metadata.csv \
--taxonomy ./data/birdclef2026/taxonomy.csv \
--output_dir ./outputs/birdmae \
--hub_model_id YOUR_USER/birdclef2026-birdmae \
--fold $fold --epochs 30 --batch_size 32
done
# 3. Train EfficientNet-B1 (all 5 folds)
for fold in 0 1 2 3 4; do
python train_effnet.py \
--data_dir ./data/birdclef2026/train_audio \
--metadata ./data/birdclef2026/train_metadata.csv \
--taxonomy ./data/birdclef2026/taxonomy.csv \
--output_dir ./outputs/effnet \
--hub_model_id YOUR_USER/birdclef2026-effnet \
--fold $fold --epochs 50 --batch_size 64
done
# 4. Inference + Ensemble
python inference.py --test_dir ./data/test_soundscapes --model_dir ./outputs/birdmae --output sub_mae.csv --tta
python inference.py --test_dir ./data/test_soundscapes --model_dir ./outputs/effnet --output sub_effnet.csv --tta
python ensemble.py --submissions sub_mae.csv sub_effnet.csv --weights 0.6 0.4 --output final.csvHardware Requirements
Dependencies
torch>=2.0
torchaudio>=2.0
transformers>=4.45,<5
librosa
scikit-learn
pandas
numpy
soundfile
trackio
huggingface_hub
hf_transferReferences
- Bird-MAE: 2504.12880 — SSL pretraining, augmentations (+29pp mAP)
- sl-BEATs-all: 2508.11845 — Best OOD generalization (0.01 AUROC drop focal→soundscape)
- Perch 2.0: 2508.04665 — Energy-peak selection, self-distillation
- Asymmetric Loss: 2009.14119 — Handles noisy multi-label
- BirdSet: 2403.10380 — Multi-task benchmark
- FINCH: 2602.03817 — Spatiotemporal fusion
