Releases: earthspecies/avex
Releases · earthspecies/avex
v1.0.0
Important
- Package renamed to
avex- The package is now available on PyPI asavex(previouslyrepresentation-learning) - Repository is now public at https://github.com/earthspecies/avex
- Install with
pip install avexoruv 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_datato allow standalone package usage
Bug Fixes
- Fix BEATs model: load config instead of default model
- Fix
transformers>=5compatibility 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
v0.4.3
Release 0.4.3
Important
- All official models have been renamed to use the
esp-aves2-prefix naming convention - All official models are now hosted on Hugging Face in safetensors format https://huggingface.co/collections/EarthSpeciesProject/esp-aves2
- After this release the package and the repo will be renamed to avex and will be made public
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:
v0.2.0
Version 0.2.0
⚙️ Improvements
return_features_onlynow returns unpooled features (preserving temporal/spatial information) in all modelforward()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()anddescribe_model()showing classifier head status - Simplified model loading API (removed
num_classes=Nonerequirement) - Updated esp-data to 1.3.0 (thanks, Gagan!)
- Renamed
load_class_mapping()toload_label_mapping() list_models()now always prints table and returns human-readable dictionaries (removedprint_tableandreturn_rawparameters)
📚 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