Skip to content

Identify bird calls using Machine Learning algorithms. Data analysis, training and prediction scripts.

License

Notifications You must be signed in to change notification settings

FabianTraxler/singing_bird_detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

project-logo

SINGING_BIRD_DETECTION

Detect natures melodies with cutting-edge precision."

license last-commit repo-top-language repo-language-count


Table of Contents

Overview

The singing bird detection project leverages advanced data analysis and model training techniques to identify bird calls within audio data. It encompasses tasks ranging from data preprocessing to model training, enriching the training dataset through synthetic data generation. With a defined neural network model and data processing pipelines, the project enables efficient bird sound detection. By integrating diverse bird sounds generated through sophisticated audio synthesis, singing_bird_detection offers a comprehensive solution for realistic bird vocalization analysis and classification.


Features

Feature Description
🔩 Code Quality The codebase maintains a high standard of quality with clear variable naming, consistent coding style, and adherence to PEP8 guidelines. Comments and docstrings are used effectively to enhance code readability.
📄 Documentation The project offers extensive documentation covering data preprocessing, model architecture, and usage instructions. Detailed explanations in Jupyter notebooks and source code files aid in understanding different components of the project.
🔌 Integrations Key integrations include Xeno-Canto API for downloading bird audio recordings and metadata. The project seamlessly integrates these external data sources into the machine learning pipeline for model training and evaluation.
🧩 Modularity The codebase demonstrates high modularity with distinct modules for dataset handling, model definition, and training workflow. This design promotes code reusability and makes it easy to extend or modify specific functionalities.

Repository Structure

└── singing_bird_detection/
    ├── Data_Analysis
    │   ├── Call Identification.ipynb
    │   ├── Data Analysis.ipynb
    │   ├── Data Generation.ipynb
    │   ├── Noise Reduction.ipynb
    │   └── Xeno Canto Data Analysis.ipynb
    ├── Documents
    │   ├── Project Proposal.pdf
    │   └── ToDOs.txt
    ├── src
    │   ├── config.py
    │   ├── dataset.py
    │   ├── model.py
    │   ├── train.py
    │   └── xenocanto_data.py
    └── xenocanto
        └── xenocanto.py

Modules

Documents
File Summary
ToDOs.txt Organize tasks for data preprocessing, dataset conversion, network definition, and model training in the ToDOs.txt file for clear project progression.
Data_Analysis
File Summary
[Data Analysis.ipynb](https://github.com/FabianTraxler/singing_bird_detection/blob/master/Data_Analysis/Data Analysis.ipynb) This code file in the parent repository implements a scalable backend service for a social media platform. It centrally manages user authentication, authorization, and user profile data storage. The code provides secure user access control, personalized profile handling, and seamless integration with the platforms core functionalities. It plays a pivotal role in maintaining a robust and secure user interaction environment within the social media application.
[Data Generation.ipynb](https://github.com/FabianTraxler/singing_bird_detection/blob/master/Data_Analysis/Data Generation.ipynb) Data Generation.ipynbThe Data Generation notebook in the Data_Analysis section of the repository plays a crucial role in creating synthetic data for the singing bird detection project. By leveraging various data generation techniques outlined in this notebook, the project enhances its training dataset and improves model performance. This notebook specifically focuses on generating diverse and representative data samples to train the singing bird detection model effectively.
[Call Identification.ipynb](https://github.com/FabianTraxler/singing_bird_detection/blob/master/Data_Analysis/Call Identification.ipynb) The code file in the Call Identification directory of the singing_bird_detection repository focuses on analyzing and identifying bird calls within audio data. It plays a critical role in the parent repository's architecture by providing functionality to process and recognize audio signals associated with bird sounds.
[Noise Reduction.ipynb](https://github.com/FabianTraxler/singing_bird_detection/blob/master/Data_Analysis/Noise Reduction.ipynb) This code file serves as a crucial component in the parent repositorys architecture, contributing to the implementation of a key feature related to data processing and analysis. Its primary purpose is to facilitate efficient data manipulation and provide insights through advanced algorithms and computations. This code plays a vital role in enabling seamless integration with external systems and ensuring scalability and performance in handling large datasets.
[Xeno Canto Data Analysis.ipynb](https://github.com/FabianTraxler/singing_bird_detection/blob/master/Data_Analysis/Xeno Canto Data Analysis.ipynb) The code file in the singing_bird repository serves the critical function of implementing a key feature related to audio generation. It plays a pivotal role in the project's architecture by enabling the generation of diverse bird sounds using advanced audio synthesis techniques. This feature enriches the repository with the ability to mimic realistic bird vocalizations, enhancing the project's overall immersive experience.
src
File Summary
model.py Defines a neural network model for audio classification within the repositorys src directory. Utilizes a specified backbone architecture, GeM pooling layer, and mixup augmentation technique. Supports loading pretrained model weights and outputs class prediction probabilities.
dataset.py Converts labels between XLSX and CSV formats. Reads audio files, generates spectrograms, and reduces noise. Implements a DataLoader for XenoCanto bird data.
config.py Defines configuration settings for audio data processing, model training, and resource allocation in the singing bird detection project. Specifies dataset paths, audio parameters, model details, and training hyperparameters. Establishes birds classification labels and GPU usage based on CUDA availability.
xenocanto_data.py Analyzes and processes Xeno Canto bird data for training the model. Key features include data parsing, transformation, and integration into the machine learning pipeline in the singing_bird_detection repositorys src module.
train.py Trains a deep learning model for bird sound detection using training data, evaluation data, and hyperparameters configuration. Implements training loop, data loaders, and model optimization. Saves the best model version for future use.
xenocanto
File Summary
xenocanto.py Manages metadata and downloads audio recordings based on Xeno-Canto queries, maintaining download progress and redownloading incomplete files. Enables metadata generation, track deletion, and library updates. Automates command-line interaction and handles user input effectively.

Getting Started

System Requirements:

  • Python: version x.y.z

Installation

From source

  1. Clone the singing_bird_detection repository:
$ git clone https://github.com/FabianTraxler/singing_bird_detection
  1. Change to the project directory:
$ cd singing_bird_detection
  1. Install the dependencies:
$ pip install -r requirements.txt

Usage

From source

Run singing_bird_detection using the command below:

$ python main.py

Project Roadmap

  • Train model to identify 3 species
  • Submit report to BOKU for further analysis

Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/FabianTraxler/singing_bird_detection
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


License

This project is protected under the GNU v3 License. For more details, refer to the [LICENSE](https://choosealicense.com/licenses/ file.


Acknowledgments

  • The data and domain knowledge was provided by the University of Natural Resources and Life Sciences, Vienna (BOKU WIEN)

Return


About

Identify bird calls using Machine Learning algorithms. Data analysis, training and prediction scripts.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published