BioAnalyst: A Foundation Model for Biodiversity
Paper
• 2507.09080 • Published
Finetuned version of the BioAnalyst Foundation Model (BFM) Large (702M params) on GeoLifeCLEF 2024 species distribution data (500 species).
The finetuning uses the BFMRaw wrapper from the BFM paper (arXiv:2507.09080v2):
nn.Identity()TemporalSpatialEncoder projects species tensor to backbone token spaceTemporalSpatialDecoder reconstructs species predictions| Metric | Finetuned | Paper Reference |
|---|---|---|
| F1 (Eq.20) | 0.8950 | 0.9964 |
| Mean Species MAE (norm) | 0.0216 | 0.0836 |
import torch
from bfm_model.bfm.model import BFM
from bfm_finetune.bfm_mod import BFMRaw
# 1. Build base model
base_model = BFM(
embed_dim=512, depth=10, patch_size=8,
swin_backbone_size="large", perceiver_latents=16100,
# ... (see finetune_large_geolifeclef.py for full config)
)
# 2. Load pretrained weights
from safetensors.torch import load_file
state = load_file("bfm-pretrain-large.safetensors", device="cpu")
base_model.load_state_dict(state, strict=False)
# 3. Wrap with BFMRaw and load finetuned weights
model = BFMRaw(base_model=base_model, n_species=500, mode="eval")
ckpt = torch.load("best_checkpoint.pth", map_location="cpu")
model.load_state_dict(ckpt["model_state_dict"], strict=False)
model.eval()
best_checkpoint.pth - Finetuned model checkpoint (epoch 100)bfm_finetuned_eval_large_results.json - Full evaluation resultsfinetune_large_geolifeclef.py - Finetuning scripteval_finetuned_large.py - Evaluation script@article{foerster2025bfm,
title={A Foundation Model for Forecasting Biodiversity Dynamics},
author={Foerster et al.},
journal={arXiv preprint arXiv:2507.09080v2},
year={2025}
}