CoolFace
Modelpublic

merci1ess/birdclef2026-solution

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
Model Card

🐦 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

ModelBackboneParamsRoleEnsemble Weight
Bird-MAE-LargeViT-L/16 (SSL on 1.7M Xeno-Canto)302MPrimary60%
EfficientNet-B1EfficientNet (ImageNet)19MDiversity40%

Key Anti-Overfitting Techniques

Addressing Domain Shift (focal → soundscape)

TechniqueProbabilitySource PaperImpact
Waveform mixup (up to 3 sources)0.9Bird-MAE (2504.12880)+29pp mAP
Background noise injection0.5Bird-MAESimulates PAM conditions
Colored noise0.2Bird-MAEDifferent mic responses
Cyclic rolling1.0Bird-MAERemoves position bias
Gain adjustment0.2Bird-MAERecording distance variation
SpecAugment (freq=50, time=100)0.3Bird-MAERegularization

Addressing Noisy/Weak Labels

TechniqueSourceWhy
Asymmetric Loss (γneg=4, γpos=0, clip=0.05)ASL (2009.14119)Down-weights easy negatives from missing background labels
Energy-peak window selectionPerch 2.0 (2508.04665)Selects windows with actual bird vocalizations

Addressing Class Imbalance

TechniqueWhy
Weighted random samplingEqual species exposure regardless of sample count
cmAP-aware designEvery class matters equally in the evaluation metric

Training Stability

TechniqueValueSource
Layer-wise LR decay0.75Bird-MAE Table 10
2-stage training2 epochs frozen → 28 fullsl-BEATs (2508.11845)
Gradient clipping2.0Bird-MAE
Warmup3 epochsStandard
Cosine annealingFull scheduleStandard

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

bash
# 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.csv

Hardware Requirements

ModelGPUVRAMTime/fold
Bird-MAE-LargeA100 80GB~40GB~6-8h
EfficientNet-B1A10G 24GB~8GB~3-4h

Dependencies

torch>=2.0
torchaudio>=2.0
transformers>=4.45,<5
librosa
scikit-learn
pandas
numpy
soundfile
trackio
huggingface_hub
hf_transfer

References

  1. 1.Bird-MAE: 2504.12880 — SSL pretraining, augmentations (+29pp mAP)
  2. 2.sl-BEATs-all: 2508.11845 — Best OOD generalization (0.01 AUROC drop focal→soundscape)
  3. 3.Perch 2.0: 2508.04665 — Energy-peak selection, self-distillation
  4. 4.Asymmetric Loss: 2009.14119 — Handles noisy multi-label
  5. 5.BirdSet: 2403.10380 — Multi-task benchmark
  6. 6.FINCH: 2602.03817 — Spatiotemporal fusion