/underwater_snd

Official implementation of the paper "An Investigation of Preprocessing Filters and Deep Learning Methods for Vessel Type Classification With Underwater Acoustic Data"

Primary LanguagePythonMIT LicenseMIT

Nauta Project

This repository contains a pipeline for classifying underwater acoustic data using Deep Learning methods. This code currently supports ResNet, a VGG-based net, and a Feed-Forward network to classify the data.

Environment Setup

There is a Dockerfile available to facilitate the use of Docker to development.

Alternativelly, as this repository is entirely based on python, you can make use of venv. To install the requirements.txt, run the following command:

pip install -r requirements.txt
pip install -r requirements-dev.txt

Also, this project was made as a python package, so after the dependencies install, run the following command to install the nauta package:

pip install .

Dataset Preparation

First it is important to have the VTUAD Dataset files available. For more information of this dataset generation, see the ONC Dataset Generation Pipeline repository.

Once you have the data, there are two ways of running this code:

  1. Running using the WAV files and processing on each iteration.

  2. Running from a preprocessed version of the data.

For the first option, just the dataset download will be sufficient. For the second option, the user must generate the preprocessed version of the dataset first.

Preprocessing the data

If you want to run directly from WAV files, ignore this section To preprocess the data, run the preprocessing_generator.py file. The only needed argument is the path to the VTUAD data from the needed scenario:

python preprocessing_generator.py -d <DATASET_ROOT_DIR>/inclusion_2000_exclusion_4000/

This will produce the folders mel, cqt, and gammatone under the scenario folder.

How to execute

Create a config file containing the hyperparameters and paths to the training execution. An example of running from WAV files can be found on vtuad.yaml. An example of running from preprocessed files can be found on vtuadfeature.yaml

With the config file updated, run the following command:

python ./nauta/train.py <path to config file>

The training session can be followed using Tensorboard. The logs are saved on the output_dir indicated on the config file.

After the execution, an inference (using the test dataset) can be performed to evaluate the results. To perform an inference, just run the following command:

python ./src/inference.py <path to config file>

The best weights saved by the training session will be considered on the execution.

Reference

The results from this work were published at IEEE Access, at the following reference:

An Investigation of Preprocessing Filters and Deep Learning Methods for Vessel Type Classification With Underwater Acoustic Data

@article{domingos2022investigation,
  author={Domingos, Lucas C. F. and Santos, Paulo E. and Skelton, Phillip S. M. and Brinkworth, Russell S. A. and Sammut, Karl},
  journal={IEEE Access}, 
  title={An Investigation of Preprocessing Filters and Deep Learning Methods for Vessel Type Classification With Underwater Acoustic Data}, 
  year={2022},
  volume={10},
  number={},
  pages={117582-117596},
  doi={10.1109/ACCESS.2022.3220265}}

A complete literature review containing the background knowledge of this work is available on the following reference:

A Survey of Underwater Acoustic Data Classification Methods Using Deep Learning for Shoreline Surveillance

@article{domingos2022survey,
  author={Domingos, Lucas C. F. and Santos, Paulo E. and Skelton, Phillip S. M. and Brinkworth, Russell S. A. and Sammut, Karl},
  title={A Survey of Underwater Acoustic Data Classification Methods Using Deep Learning for Shoreline Surveillance},
  volume={22},
  ISSN={1424-8220},
  url={http://dx.doi.org/10.3390/s22062181},
  DOI={10.3390/s22062181},
  number={6},
  publisher={MDPI AG},
  journal={Sensors},
  year={2022},
  month={Mar},
  pages={2181}
}