Evolutionary Spectrogram Optimisation : optimise the selection and size of frequency bands of spectrograms to maximise deep learning classification accuracy while minimising the model's size using genetic algorithms
Project description
ESO: Evolutionary Spectrogram Optimisation 🧬🔊
Optimising spectrogram inputs for efficient passive acoustic monitoring using genetic algorithms. Based on our paper presented at the ICLR 2024 ML4RS Workshop.The Challenge 🤔
Traditional bioacoustic monitoring with Convolutional Neural Networks (CNNs) often requires:
- Large, complex models.
- Computationally expensive preprocessing (like filtering and downsampling).
- This makes real-time analysis on low-resource edge devices difficult. 🐢⏳
Our Solution: ESO ✨
ESO (Evolutionary Spectrogram Optimisation) tackles this by using a Genetic Algorithm (GA) to intelligently select the most informative frequency bands directly from the original spectrogram.
Instead of processing the entire spectrogram, ESO:
- 🧬 Encodes horizontal spectrogram bands (defined by position
Pₜand heighth) as "genes". - 📜 Combines genes into "chromosomes", representing a specific selection of bands.
- 💪 Evolves a population of chromosomes using selection, crossover, and mutation.
- 📈 Optimizes for a fitness function balancing classification performance (F1-score) and model simplicity (trainable parameters).
- 📉 Outputs the best chromosome, which defines narrow bands to be extracted and stacked, creating a highly compressed input for a much simpler CNN.
Concept from Figure 1: Genes define bands, chromosomes collect genes, bands are stacked for the CNN.
Key Benefits & Features 🚀
- ✅ Drastically Reduced Model Size: ~91% fewer trainable parameters compared to the baseline.
- ✅ Faster Inference: ~70% reduction in processing time for raw audio.
- ✅ Efficient: Minimizes need for heavy preprocessing like downsampling.
- ✅ Effective: Achieves comparable performance with only a minor (~4%) trade-off in F1-score.
- 🐍 Usable as a Python package.
- 🖥️ Includes an easy-to-use Graphical User Interface (GUI).
- 📊 TensorBoard integration for monitoring training progress.
Getting Started 🛠️
-
Clone the repository
git clone https://github.com/ufuk-cakir/ESO.git cd ESO
-
Set up a virtual environment (recommended)
python -m venv venv # On Linux/macOS source venv/bin/activate # On Windows venv\Scripts\activate
-
Install PyTorch based on your system configuration
(see PyTorch to choose the correct version for your machine)pip install torch --index-url https://download.pytorch.org/whl/cu126
-
Install other dependencies
pip install -r requirements.txt
Running ESO 🏃
-
Using the GUI:
python path/to/your/repository/eso_app.py
The GUI provides options to select data, configure hyperparameters, run ESO, and monitor progress (including TensorBoard).
-
As a Python Package: Import the necessary modules from the
esopackage in your Python scripts. (Refer to the documentation or example scripts within the repository for specific usage details).
Citation ✍️
If you use ESO in your research or work, please cite our paper:
@inproceedings{cakir2024eso,
title={{ESO: Evolutionary Spectrogram Optimisation for Passive Acoustic Monitoring}},
author={Ufuk {\c{C}}ak{\i}r and Lor{\`e}ne Jeantet and Joel Lontsi and Emmanuel Dufourq},
booktitle={ICLR 2024 Machine Learning for Remote Sensing (ML4RS) Workshop},
year={2024},
url={https://ml-for-rs.github.io/iclr2024/camera_ready/papers/51.pdf}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eso-0.1.0.dev50.tar.gz.
File metadata
- Download URL: eso-0.1.0.dev50.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63538053fbdc754021d3ff4245c89cba99328b52687c3f8b69481007ce4ca80b
|
|
| MD5 |
178693d824c2f966e5d6fede1da51b96
|
|
| BLAKE2b-256 |
fe9e4c39d27494ddda0f1b602ebf385e6ed8d761c22ae36cf12601a8c15d81bc
|
File details
Details for the file eso-0.1.0.dev50-py3-none-any.whl.
File metadata
- Download URL: eso-0.1.0.dev50-py3-none-any.whl
- Upload date:
- Size: 56.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cb73f0fdf4b2f0d22951694db47e0cb69d9d77dd6a504e64d83a079049dac9b
|
|
| MD5 |
b5353346c58d828e1578791fa0378343
|
|
| BLAKE2b-256 |
f38c5a6412caaa9a14606fb2fe6f0fd418b78f05f43061ad147bba3f567538dd
|