All Projects → johnmartinsson → bird-species-classification

johnmartinsson / bird-species-classification

Licence: MIT license
Using convolutional neural networks to build and train a bird species classifier on bird song data with corresponding species labels.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to bird-species-classification

coffee-time
Flutter application Coffee Time (Master Thesis)
Stars: ✭ 13 (-85.56%)
Mutual labels:  master-thesis
NTU MS Thesis
National Taiwan University Master's Thesis Template (Latex + Word)
Stars: ✭ 84 (-6.67%)
Mutual labels:  master-thesis
HKU-Thesis-Template
HKU Thesis Template
Stars: ✭ 36 (-60%)
Mutual labels:  master-thesis
ESC-CNN-microcontroller
Environmental Sound Classification on Microcontrollers using Convolutional Neural Networks
Stars: ✭ 85 (-5.56%)
Mutual labels:  master-thesis
Spec ResNet
Spectrogram is selected as preprocessing feature of audio clips and a feature representation method based on deep residual network (Spec-ResNet) is proposed to detect audio steganography.
Stars: ✭ 21 (-76.67%)
Mutual labels:  deep-residual-network
SJTU-thesis-template
上海交通大学研究生学位论文模板
Stars: ✭ 32 (-64.44%)
Mutual labels:  master-thesis
Yet-Another-LaTeX-Template-for-NPU-Thesis
西北工业大学硕博学位论文模版 | Yet Another Thesis Template for Northwestern Polytechnical University
Stars: ✭ 82 (-8.89%)
Mutual labels:  master-thesis
PCGML-Game-Mechanics
Master thesis: "Using Procedural Content Generation via Machine Learning as a Game Mechanic" with a prototype in Unreal Engine 4.22.
Stars: ✭ 43 (-52.22%)
Mutual labels:  master-thesis
AndroidApkAnalyzer
Android application for analyzing installed apps
Stars: ✭ 159 (+76.67%)
Mutual labels:  master-thesis
bird species classification
Supervised Classification of bird species 🐦 in high resolution images, especially for, Himalayan birds, having diverse species with fairly low amount of labelled data
Stars: ✭ 59 (-34.44%)
Mutual labels:  bird-species-classification

DISCLAIMER

This repository is not actively maintained. It is the result of a master's thesis and the code has been made available as a reference if anyone would like to reproduce the results of the thesis.

Bird Species Classification

These are the project files for a master's thesis carried out at Chalmers University of Technology. The aim of the project was to improve upon a state-of-the-art bird species classifier by using deep residual neural networks, multiple-width frequency-delta data augmentation, and meta-data fusion to build and train a bird species classifier on bird song data with corresponding species labels.

Please cite the master's thesis if this repository is useful for your research.

Setup

$ git clone https://github.com/johnmartinsson/bird-species-classification
$ virtualenv -p /usr/bin/python3.6 venv
$ source venv/bin/activate
(venv)$ pip install -r requirements.txt

# Ubuntu/Linux 64-bit, CPU only, Python 3.6
(venv)$ pip install --upgrade tensorflow
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.6
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Install from sources" below.
(venv)$ pip install --upgrade tensorflow-gpu

Usage Instructions

This section explains how to preprocess the birdCLEF2016 dataset, how to split the data set in to a training and validation set, how to train a model on the training data, and how to evaluate the model on the validation data.

Preprocess

First we need to down-sample the sound recordings.

$ # Resample to 22050 Hz (stand in wav directory)
$ for i in *; do sox $i -r 22050 tmp.wav; mv tmp.wav $i; done

Secondly, the signal parts, and the noise parts of the recordings are extracted and split into three second segments. The signal segments are put in different directories depending on the class given in the xml data, and all noise segments are put in a separate noise directory.

$ python preprocess_birdclef.py --xml_dir=<path-to-xml-dir> \
                                --wav_dir=<path-to-wav-dir> \
                                --output_dir=<path-to-output-dir>

Lastly, the data is split into a training set and a validation set:

$ python create_dataset.py --src_dir=<path-to-signal-dir> \
                           --dst_dir=<path-to-destination-dir> \
                           --subset_size=<subset-size> \
                           --valid_percentage=<validation-percentage>

where src points to the signal segments, dst is the destination, subset size is an optional argument which makes training and validation data a randomly chosen subset of bird species from the whole data set, and the valid percentage is how many percent of the data that should be in the validation set.

Train

$ python train.py --config_file=conf.ini

Run Predictions

$ python run_predictions.py --experiment_path=<path-to-experiment>

Evaluation

$ python evaluate.py --experiment_path=<path-to-results>

Models

In this project two different models have been used: a reimplementation of Elias Sprengels winning solution for the BirdCLEF 2016 challenge, and a Keras implementation of the deep residual neural network.

Libraries

The following libraries are used in this method:

Evaluation Methods

Challenges

This is a collection of bird species classification challenges that, has been, and are carried out around the world.

BirdCLEF: an audio record-based bird identification task

Solutions and Source Code

Bird Audio Detection Challenge

MLSP 2013 Bird Classification Challenge

Solutions and Source Code

Original compilation source: xuewei4d

Applications

This is a collection of applications which solve a similar problem.

Warbler

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].