Triple Tikitaka — BirdCLEF+ 2025 Species Classifier

An EfficientNet B0 model trained to classify birds, amphibians, mammals, and insects from 5-second audio chunks, using the BirdCLEF+ 2025 Kaggle competition dataset (recordings from the Middle Magdalena Valley, Colombia).

Full inference pipeline, FastAPI serving app, and an LLM-powered plausibility-checking agent live in the companion GitHub repo: BarnaP02/Triple_Tikitaka.

Results

Evaluated on a held-out split (test_manifest.csv), 205 species:

Metric Accuracy
Top-1 87.84%
Top-3 93.47%
Top-5 95.06%

Model details

  • Architecture: timm.create_model("efficientnet_b0", pretrained=True, num_classes=205), 3-channel input satisfied by repeating a single-channel mel spectrogram 3×.
  • Input: 5-second audio chunks (160,000 samples @ 32kHz) → mel spectrogram (n_fft=1024, hop_length=320, n_mels=128, f_min=50, f_max=16000) → dB scale → min-max normalized to [0, 1].
  • Loss: BCEWithLogitsLoss (multi-label formulation). Optimizer: AdamW + CosineAnnealingLR. Early stopping patience 7.
  • Best checkpoint: epoch 9, validation loss 0.0046.

Checkpoint format

best_model.pth is a raw PyTorch checkpoint dict, not a state_dict alone:

{
    "epoch": int,
    "model_state": state_dict,
    "optimizer_state": ...,
    "scheduler_state": ...,
    "val_loss": float,
    "label2idx": dict,       # species code -> class index, required for inference
    "mlflow_run_id": str,
}

Usage

import torch
import timm

checkpoint = torch.load("best_model.pth", map_location="cpu", weights_only=False)
label2idx = checkpoint["label2idx"]
idx2label = {v: k for k, v in label2idx.items()}

model = timm.create_model("efficientnet_b0", pretrained=False, num_classes=len(label2idx), in_chans=3)
model.load_state_dict(checkpoint["model_state"])
model.eval()

See the GitHub repo for the full mel spectrogram preprocessing pipeline and a ready-to-run FastAPI inference server.

Training data & license

Trained on the BirdCLEF+ 2025 dataset, licensed CC BY-NC-SA 4.0. As a derivative work of that data, this model is released under the same license — non-commercial use only, with attribution, and any redistribution of derivative models must use a compatible license.

Attribution: BirdCLEF+ 2025 (LifeCLEF / Xeno-canto contributors).

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support