Recent Releases of AVEX

AVEX - v1.1.1

Improvements

  • Cache downloaded remote checkpoints under a local Hugging Face-style cache — fewer repeat downloads (#172)
  • Add regression coverage for official model outputs — fingerprints / tests for stable inference behavior (#164, #166)
  • Strengthen integration testing around real-model behavior — extends fixes for reported load/inference issues (#161, #165)
  • Add CODEOWNERS for PR review routing — aligns with team ownership expectations (#158)

Bug fixes

  • Fix BEATs checkpoint loading — correct config-driven load path (#162)
  • Fix EAT when checkpoints are backbone-only — sensible fallback instead of broken classifier assumptions (#167)

Dependencies

  • Lock dev stack to newer esp-data — >=1.8.0 in optional dev and project-dev groups (see uv.lock)

Full Changelog: https://github.com/earthspecies/avex/compare/v1.0.0...v1.1.0

Acknowledgements

Thanks to everyone who opened issues, reviewed pull requests, and contributed commits that made this release possible.

Issue reports: @inesnolas, @GaganNarula, @ilyassmoummad, @sodaJar

Code & commits: @nkundiushuti, @david-rx, @GaganNarula

Reviews & discussion: @GaganNarula, @mil-ad, @EklavyaFCB

We are grateful for your time and feedback.

Biosphere - Bioacoustics and Acoustic Data Analysis - Python
Published by nkundiushuti about 2 months ago

AVEX - v1.1.0

Improvements

  • Cache downloaded remote checkpoints under a local Hugging Face-style cache — fewer repeat downloads (#172)
  • Add regression coverage for official model outputs — fingerprints / tests for stable inference behavior (#164, #166)
  • Strengthen integration testing around real-model behavior — extends fixes for reported load/inference issues (#161, #165)
  • Add CODEOWNERS for PR review routing — aligns with team ownership expectations (#158)

Bug fixes

  • Fix BEATs checkpoint loading — correct config-driven load path (#162)
  • Fix EAT when checkpoints are backbone-only — sensible fallback instead of broken classifier assumptions (#167)

Dependencies

  • Lock dev stack to newer esp-data — >=1.8.0 in optional dev and project-dev groups (see uv.lock)

Full Changelog: https://github.com/earthspecies/avex/compare/v1.0.0...v1.1.0

Acknowledgements

Thanks to everyone who opened issues, reviewed pull requests, and contributed commits that made this release possible.

Issue reports: @inesnolas, @GaganNarula, @ilyassmoummad, @sodaJar

Code & commits: @nkundiushuti, @david-rx, @GaganNarula

Reviews & discussion: @GaganNarula, @mil-ad, @EklavyaFCB

We are grateful for your time and feedback.

Biosphere - Bioacoustics and Acoustic Data Analysis - Python
Published by nkundiushuti 2 months ago

AVEX - v1.0.0

Important

  • Package renamed to avex - The package is now available on PyPI as avex (previously representation-learning)
  • Repository is now public at https://github.com/earthspecies/avex
  • Install with pip install avex or uv add avex

Improvements

  • Improve documentation structure and clarity - streamlined README, consolidated detailed docs in docs/index.md
  • Add CODEOWNERS for PR approval requirements
  • Update GitHub workflows for build and publish with trusted publishing
  • Skip tests requiring esp_data to allow standalone package usage

Bug Fixes

  • Fix BEATs model: load config instead of default model
  • Fix transformers>=5 compatibility for EAT model

Documentation

  • Streamlined README.md to focus on quick start and essential info
  • Consolidated detailed documentation in docs/index.md
  • Updated CONTRIBUTING.md with clearer guidelines
  • Added list of official models to documentation

Biosphere - Bioacoustics and Acoustic Data Analysis - Python
Published by nkundiushuti 4 months ago

AVEX - v0.4.3

Release 0.4.3

Important

Improvements

  • Add Hugging Face Hub integration for model hosting and downloading
  • Add Safetensor support for model weights
  • Add probing API to the library for training and evaluating probes
  • Add GCS support for YAML config file loading
  • Relax numpy, tensorflow, and torch version requirements for better compatibility
  • Add extra_config workaround to allow for outside-of-pydantic configuration
  • Update to esp-data 1.5.0

Bug Fixes

  • Fix EfficientNet float32 dtype mismatch in process_audio (auto-converts float64 input)
  • EfficientNet.forward now accepts optional padding_mask consistent with other models
  • Fix BirdNet/birdnetlib tensorflow embedding extraction returning constant embeddings
  • Fix classifier head loading issue
  • Fix EfficientNet checkpoint loading
  • Fix: don't create classification head when return_features_only=True (TensorFlow and PyTorch models)
  • Fix beats_naturelm model name reference to official esp_aves2_naturelm_audio_v1_beats

Documentation & Examples

  • Shift docs from README.md to docs
  • Improve documentation across modules
  • Update official models to use safetensors format hosted on Hugging Face
  • Fix example_05 to load EAT with return_features_only=True for embedding demo
  • Add fully fine-tuning results and plots
  • Fix and prune integration tests

Acknowledgements

Thanks to all the contributors who made this release possible:

  • @benjaminsshoffman
  • @david-rx
  • @GaganNarula
  • @inesnolas
  • @mil-ad

Biosphere - Bioacoustics and Acoustic Data Analysis - Python
Published by nkundiushuti 5 months ago

AVEX - v0.2.0

Version 0.2.0

⚙️ Improvements

  • return_features_only now returns unpooled features (preserving temporal/spatial information) in all model forward() methods
  • Separated API and development dependencies, making the package installable without esp-data for basic API usage
  • Created internal IO module to replace esp-data.io dependencies for API-only usage
  • Optimized test suite by using class-scoped fixtures to load models once, significantly reducing test execution time
  • Added deterministic embedding regression tests for BEATs, EAT-HF, EfficientNet, and AVES models
  • Fixed deprecated warnings: replaced torchvision 'pretrained' with weights parameter, updated TypedStorage usage, replaced weight_norm with parametrizations
  • Force torch and CUDA initialization to prevent CUDA becoming unavailable during model loading

🐛 Bug Fixes

  • Fixed operator precedence issue in test_beats_model.py where assert not sample_audio.grad is not None was changed to assert sample_audio.grad is None
  • Fixed model state isolation in test_base_model.py by resetting the model to eval mode after gradient propagation tests using try/finally block
  • Added missing .eval() calls in BEATs and EAT-HF deterministic regression tests to ensure models are in evaluation mode
  • Fixed BirdNet model shape conversion and tensor handling issues
  • Fixed sklearn metrics warnings by adding warning filter for "No positive class found"
  • Fixed torch.load weights_only warning by adding explicit weights_only=False parameter

📚 Documentation & Examples

  • Completely rewrote installation section in README with clear separation between API Usage and Development Usage
  • Updated examples to detect and display 3D/4D output shapes for unpooled features
  • Added detailed shape breakdowns and explanatory text about temporal/spatial information preservation

🧪 Testing

  • Optimized all model tests (BEATs, AVES, EAT-HF, EfficientNet, base model, probes) by using class-scoped fixtures, reducing test count by ~60% while maintaining coverage
  • Consolidated overlapping test files: merged probe, embedding, and projector tests into unified test suites
  • Pruned API integration tests from 12 to 3 tests (75% reduction) while maintaining coverage
  • Added autouse cleanup fixtures and setup_and_cleanup_hooks pattern for proper test isolation
  • Fixed PytestReturnNotNoneWarning by replacing return True/False with pytest.fail()

Version 0.1.1

⚙️ Improvements

  • Human-readable output for list_models() and describe_model() showing classifier head status
  • Simplified model loading API (removed num_classes=None requirement)
  • Updated esp-data to 1.3.0 (thanks, Gagan!)
  • Renamed load_class_mapping() to load_label_mapping()
  • list_models() now always prints table and returns human-readable dictionaries (removed print_table and return_raw parameters)

📚 Documentation & Examples

  • New Google Colab demo notebook (examples/colab_sl_beats_demo.ipynb)
  • Installation instructions for internal PyPI (esp-pypi) using uv
  • YAML configuration examples for custom ModelSpec definitions
  • Updated README with current API and file paths
  • Updated all example scripts to new API conventions

Biosphere - Bioacoustics and Acoustic Data Analysis - Python
Published by nkundiushuti 6 months ago