Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BioDCASE 2026 Task 2 — DeepVoice submission code

Detection of Antarctic blue & fin whale calls in long passive-acoustic recordings (BioDCASE 2026 Task 2). This repository contains the code for the four systems DeepVoice submitted, with from-scratch reproduction instructions for both detector families.

License: MIT © 2026 DeepVoice Foundation.

The four submitted systems

ID System Approach Val F1
task2_1 YOLO (single) One YOLOv11m detector on grayscale spectrograms 0.612
task2_2 YOLO-3× (fusion, primary) Three YOLOv11m on complementary spectrogram representations, per-class routing 0.635
task2_3 YOLO+ViT task2_2 + recall-only ViT gap-fill 0.598
task2_4 ViT MAE-pretrained ViT frame-level detector 0.538

(Validation F1 = the official challenge metric: F1 of class-averaged precision/recall, pooled over the three validation deployments.)

Two independent detector families produce these:

  • yolo/ — spectrogram object detection (YOLOv11m). Underlies task2_1 and task2_2.
  • vit/ — a ViT frame-level detector, MAE-pretrained on in-domain audio. Underlies task2_4 and the gap-fill in task2_3.
  • ensemble/ — merges the two for task2_3.

Repository layout

yolo/               YOLO pipeline (flat scripts) + classes.py: preprocess → train → infer → fuse → score
vit/                ViT detector (flat scripts): model + train_vit.py + 16 s dataset/augmentation,
                    plus the eval-inference + decode glue → task2_4 CSV
pretraining/        MAE model (mae, dataset, spectrogram) + train_mae.py for ViT pretraining
configs/            MAE pretraining config
ensemble/           task2_3 YOLO+ViT gap-fill merge
data/               how to obtain the dataset (not included)
docs/               technical report (PDF) + experiment logs
eda/                exploratory analysis: annotation stats, spectrogram-config report,
                    Streamlit FFT explorer (generated figures not included — rerun to produce)

The ViT and YOLO code are both flat sets of scripts that import each other by module name (e.g. vit/ has train_vit.py importing vit_detector_v2/detection_dataset_16s; yolo/ has fast_score/infer_opt/build_submissions + a local classes). Run a script directly (python vit/train_vit.py …) — that puts its own directory on the path. The ViT decode glue also needs yolo/ on PYTHONPATH (it reuses fast_score/classes).

See yolo/README.md and vit/README.md for the per-family step-by-step.

Setup

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

Python 3.10; the YOLO pipeline was run with ultralytics==8.4.60.

Environment & paths — read before running

Every script takes its inputs and outputs as command-line arguments (run any with --help); no machine-specific paths are baked in. You only need to set PYTHONPATH so the flat sibling modules and the official baseline resolve, and (optionally) OFFICIAL_REPO if the baseline isn't at its default location:

export REPO=$(pwd)                       # this repository
export OFFICIAL_REPO=$REPO/external/task2_2025_2026   # vendored official baseline (default)
export WORK=/path/to/scratch             # where derived datasets / predictions are written
# $REPO       → `import pretraining` (MAE); also lets `python vit/<script>.py` find the repo
# $REPO/yolo  → the flat YOLO modules (`fast_score`, `infer_opt`, `build_submissions`, `classes`)
# $REPO/vit   → the flat ViT modules (`vit_detector_v2`, `detection_dataset_16s`, …)
# the official baseline supplies `preprocess_data` (preprocessors) and `evaluation_submissions` (scorer)
export PYTHONPATH=$REPO:$REPO/yolo:$REPO/vit:$OFFICIAL_REPO/baselines/yolo:$OFFICIAL_REPO/evaluation

The official challenge baseline is a required dependency (not redistributed here — external/ is gitignored). Clone the official Task 2 repository and either place it at external/task2_2025_2026 (the default $OFFICIAL_REPO the YOLO preprocess scripts look for) or point $OFFICIAL_REPO at your clone. The YOLO preprocessors use its preprocess_data.YOLODataset; the scorers use its evaluation_submissions / evaluation.py.

torchaudio: the official preprocess_data.py calls torchaudio.info and the file-path form of torchaudio.load, both removed in newer torchaudio (≥ ~2.10). Run the YOLO preprocessing step with a torchaudio < 2.10 + matching torch; everything else (ViT/MAE training, YOLO training/inference) runs on current torch.

Train each model

Model Entry point Per-family guide
YOLO (task2_1/task2_2) yolo/preprocess_*.pyyolo/make_lists.pyyolo/train_yolo.py yolo/README.md
MAE pretraining python -m pretraining.train_mae --config configs/mae_spec_250hz.yaml vit/README.md §1
ViT detector (task2_4) python vit/train_vit.py … (optionally --mae-checkpoint) vit/README.md §2

Get the data first (data/README.md — Zenodo download + expected layout).

Data

Not included. The development set (8 train + 3 validation deployments, ~1,880 h, 250 Hz) is on Zenodo: https://zenodo.org/records/18832958. The evaluation set is released without public annotations. See data/README.md for the expected layout and the 7→3 class joining.

Weights

Not distributed. This is a code-only release; reproduce by training from scratch following the per-family READMEs. Scripts that consume a checkpoint take its path as a CLI argument (--weights / --checkpoint / --ckpts-dir) — point them at your own trained weights.

Authors

Michael Moshe Michelashvili, Danielle Hausler, Amit Galor, Shai Nahum Gefen, Tomer Nachshon, Yuval Mendelson, Naama Yochai (corresponding) — DeepVoice Foundation.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages