Adaptive Evidence Weighting for Audio-Spatiotemporal Fusion
Paper β’ 2602.03817 β’ Published
YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
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.
| Model | Backbone | Params | Role | Ensemble Weight |
|---|---|---|---|---|
| Bird-MAE-Large | ViT-L/16 (SSL on 1.7M Xeno-Canto) | 302M | Primary | 60% |
| EfficientNet-B1 | EfficientNet (ImageNet) | 19M | Diversity | 40% |
| Technique | Probability | Source Paper | Impact |
|---|---|---|---|
| Waveform mixup (up to 3 sources) | 0.9 | Bird-MAE (2504.12880) | +29pp mAP |
| Background noise injection | 0.5 | Bird-MAE | Simulates PAM conditions |
| Colored noise | 0.2 | Bird-MAE | Different mic responses |
| Cyclic rolling | 1.0 | Bird-MAE | Removes position bias |
| Gain adjustment | 0.2 | Bird-MAE | Recording distance variation |
| SpecAugment (freq=50, time=100) | 0.3 | Bird-MAE | Regularization |
| Technique | Source | Why |
|---|---|---|
| Asymmetric Loss (Ξ³_neg=4, Ξ³_pos=0, clip=0.05) | ASL (2009.14119) | Down-weights easy negatives from missing background labels |
| Energy-peak window selection | Perch 2.0 (2508.04665) | Selects windows with actual bird vocalizations |
| Technique | Why |
|---|---|
| Weighted random sampling | Equal species exposure regardless of sample count |
| cmAP-aware design | Every class matters equally in the evaluation metric |
| Technique | Value | Source |
|---|---|---|
| Layer-wise LR decay | 0.75 | Bird-MAE Table 10 |
| 2-stage training | 2 epochs frozen β 28 full | sl-BEATs (2508.11845) |
| Gradient clipping | 2.0 | Bird-MAE |
| Warmup | 3 epochs | Standard |
| Cosine annealing | Full schedule | Standard |
# 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
| Model | GPU | VRAM | Time/fold |
|---|---|---|---|
| Bird-MAE-Large | A100 80GB | ~40GB | ~6-8h |
| EfficientNet-B1 | A10G 24GB | ~8GB | ~3-4h |
torch>=2.0
torchaudio>=2.0
transformers>=4.45,<5
librosa
scikit-learn
pandas
numpy
soundfile
trackio
huggingface_hub
hf_transfer