File size: 1,455 Bytes
f0aa662 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | ---
license: cc-by-4.0
tags:
- audio
- bird-sound
- wildlife
- bioacoustics
- multi-label-classification
- birdclef
---
# BirdCLEF+ 2026 — ECA-NFNet-L0 Wildlife Classifier
Fine-tuned ECA-NFNet-L0 for multi-label wildlife species identification from soundscape recordings in Brazil's Pantanal wetlands.
## Model Details
- **Architecture**: ECA-NFNet-L0 (22.4M parameters), pretrained on ImageNet
- **Task**: Multi-label classification — 234 wildlife species
- **Input**: Log-mel spectrogram (128 bins, 32 kHz, 5-second windows, 128x128 px)
- **Output**: Sigmoid scores per species per 5-second window
- **Val AUC**: 0.9603 | **Kaggle Public AUC**: 0.865 (Rank 38/500)
- **Training**: 34 epochs, Focal-BCE loss, EMA decay=0.9997, Mixup + SpecAugment
## Live Demo
Try the interactive demo: [jingxizhang/birdclef2026-demo](https://huggingface.co/spaces/jingxizhang/birdclef2026-demo)
## Usage
```python
import torch, timm
from huggingface_hub import hf_hub_download
path = hf_hub_download(repo_id="jingxizhang/birdclef2026-model", filename="best_model.pth")
ckpt = torch.load(path, map_location="cpu", weights_only=False)
model = timm.create_model(
ckpt["cfg"]["model_name"], pretrained=False,
num_classes=len(ckpt["species_list"])
)
model.load_state_dict(ckpt["model_state_dict"])
model.eval()
print("Species:", ckpt["species_list"][:5])
```
## Competition
[BirdCLEF+ 2026 on Kaggle](https://www.kaggle.com/competitions/birdclef-2026)
|