For installation instructions, usage examples, GUI guidance, and API reference, see the full documentation:
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. 🐢⏳
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.
- ✅ 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.
-
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
-
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).
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}
}