Skip to main content

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 logo

ESO: Evolutionary Spectrogram Optimisation 🧬🔊

License: MIT GitHub Workflow Status Documentation Status codecov

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:

  1. 🧬 Encodes horizontal spectrogram bands (defined by position Pₜ and height h) as "genes".
  2. 📜 Combines genes into "chromosomes", representing a specific selection of bands.
  3. 💪 Evolves a population of chromosomes using selection, crossover, and mutation.
  4. 📈 Optimizes for a fitness function balancing classification performance (F1-score) and model simplicity (trainable parameters).
  5. 📉 Outputs the best chromosome, which defines narrow bands to be extracted and stacked, creating a highly compressed input for a much simpler CNN.

Figure 1 from paper showing ESO concept
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 🛠️

  1. Clone the repository

    git clone https://github.com/ufuk-cakir/ESO.git
    cd ESO
    
  2. Set up a virtual environment (recommended)

    python -m venv venv
    # On Linux/macOS
    source venv/bin/activate
    # On Windows
    venv\Scripts\activate
    
  3. 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
    
  4. 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 eso package 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eso-0.1.0.dev50.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eso-0.1.0.dev50-py3-none-any.whl (56.0 kB view details)

Uploaded Python 3

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

Hashes for eso-0.1.0.dev50.tar.gz
Algorithm Hash digest
SHA256 63538053fbdc754021d3ff4245c89cba99328b52687c3f8b69481007ce4ca80b
MD5 178693d824c2f966e5d6fede1da51b96
BLAKE2b-256 fe9e4c39d27494ddda0f1b602ebf385e6ed8d761c22ae36cf12601a8c15d81bc

See more details on using hashes here.

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

Hashes for eso-0.1.0.dev50-py3-none-any.whl
Algorithm Hash digest
SHA256 7cb73f0fdf4b2f0d22951694db47e0cb69d9d77dd6a504e64d83a079049dac9b
MD5 b5353346c58d828e1578791fa0378343
BLAKE2b-256 f38c5a6412caaa9a14606fb2fe6f0fd418b78f05f43061ad147bba3f567538dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page