Data for: PerchPicker classifier model v7: A catalog of American silver perch (Bairdiella chrysoura) calls for machine learning
Cite this dataset
Bohnenstiehl, DelWayne (2023). Data for: PerchPicker classifier model v7: A catalog of American silver perch (Bairdiella chrysoura) calls for machine learning [Dataset]. Dryad. https://doi.org/10.5061/dryad.4qrfj6qf0
Abstract
This data repository contains labeled passive underwater acoustic data used to train and test the machine-learning model of Bohnenstiehl (in prep - 2023), Automated cataloging of American silver perch (Bairdiella chrysoura) calls using machine learning. The software accompanying this paper is known as PerchPicker (GitHub - drbohnen/PerchPicker), and the classifier model presented in the paper is v7. It consists of more than 6000 labeled perch and 6000 labeled other signals. Labeled scalogram images are provided, along with pressure-corrected waveforms (micro-Pascals) sampled at 24 kHz. Each waveform sample is 90 ms long. The center 30 ms of these waveform segments represent the portion of the signal used in training and testing the classifier model. Waveform data are provided in multiple formats: 1) MATLAB (.mat) files containing the 'perch' and 'other' waveforms stored in column format, and 2) individual .wav files, each containing a labeled waveform example. Codes are provided to demonstrate how these .wav files can be read into MATLAB and PYTHON. These labeled data can be used to re-train the PerchPicker model or develop alternative classifiers.
Methods
Labeled signals were extracted from passive acoustic data collected at eight sites within southwestern Pamlico Sound near its confluence with the Pamlico and Neuse River estuaries. As part of a larger effort to monitor the evolution of these reef habitats, each site was outfitted with a SoundTrap 300 hydrophone affixed ~0.5 m above the seabed a the top of a metal stake anchored with a concrete block. Monitoring extended from the fall of 2016 through the fall of 2017, and from the Spring of 2018 through the Fall of 2018. Over most of the monitoring period, the recorders were programmed to capture a 2-minute-duration recording every 20 minutes. Acoustic data were collected at a rate of 96,000 samples/second. They were subsequently resampled to a rate of 24 kHz with the application of an anti-aliasing filter.
PerchPicker's kurtosis-SNR detector was deployed on hundreds of randomly selected files over the 2+ year monitoring period and from all eight sites. This approach ensured that the training and test datasets captured calls from estuarine soundscapes across various seasons and with varying anthropogenic, geophysical (wind, waves, rain) and biological noise. A spectrogram, filter waveform and scalogram image were displayed for each detection, and signals labeled as ‘perch’ or ‘other’ scalogram images were retained for training and testing purposes. The final labeled catalog consisted of more than 6000 signals within the ‘perch’ class and more than 6000 signals within the ‘other’ class.
For each detection, a 30-ms-duration sample, beginning 3 ms before the detection time, is extracted from the unfiltered waveform data. A scalogram is made using the symmetric (gamm=3) Morse wavelet with 16 wavelet bandpass filters (voices) per octave and a time-bandwidth product of 120. The frequency range of the scalogram is set to between 1 and 12 kHz, and the amplitude information is rescaled using the range of values in the 2.0-3.5 kHz and 0-20 ms region of the scalogram. Each scalogram is converted to an RGB image and resized to 224-by-224 pixels. These scalogram images are stored './perch' and './other' folders in the compressed folder perchpicker_training_scalograms.zip.
Waveform data snippets are also provided for these labeled signals. Each snippet is 90 ms long, with the training and test data (used in generating the scalograms) representing the center 30 ms of data (points 721 through 1440) These waveforms are unfiltered, pressure corrected and sampled at 24 kHz. These waveform snippets are provided in two formats. For those working in MATLAB, two .mat files are included (perch_wavefrom_database_v7.mat and other_wavefrom_database_v7.mat). Each contains a 2161 x N matrix with the snippets stored in columns, and variables indicating station names, UTC times, sample rate and a time vector for plotting. For those working in other software, these snippets are also saved as individual wavfiles stored in './perch' and './other' folders within the perchpicker_training_wavclips.zip file. Scripts for reading these wavfiles in MATLAB and PYTHON are provided.
The MATLAB-based PerchPicker software is available here: GitHub - drbohnen/PerchPicker.
Usage notes
To read the pre-made scalogram images
For each detection, a 30-ms-duration sample is extracted from the unfiltered waveform data. A scalogram is made using the symmetric (gamm=3) Morse wavelet with 16 wavelet bandpass filters (voices) per octave and a time-bandwidth product of 120. The frequency range of the scalogram is set to between 1 and 12 kHz, and the amplitude information is rescaled using the range of values in the 2.0-3.5 kHz and 0-20 ms region of the scalogram. Each scalogram is converted to an RGB image and resized to 224-by-224 pixels.
For example:
Unzip the perchpicker_training_scalograms_v7.zip file
Images are stored in perch and other folders. They can be read into MATLAB as:
>> im=imread('p_DB_335589429.180508212002_078.7066250.jpg');
>> figure; imshow(im)
To read the waveform snippets into MATLAB:
Waveform data snippets are also provided for these labeled signals. Each snippet is 90 ms long, with the training and test data (used in generating the scalograms) representing the center 30 ms of data (points 721 through 1440) These waveforms are unfiltered, pressure corrected and sampled at 24 kHz.
For example:
>> load perch_wavefrom_database_v7.mat
>> whos
fs 1x1 8 double % sample rate = 24,000 Hz
perchcalls 2161x6009 103883592 double % each column is a call example
station 6009x1 649846 cell % name of stations
t 2161x1 17288 double % time vector for plotting
utc 6009x1 96144 datetime % approximate UTC time
Station names and locations are given below:
Site | Full Site Name | Latitude | Longitude | Water depth (m) |
BB | Bonner Bay | 35.15680 | -76.59548 | 1.75 |
CB | Caffee Bay | 35.36784 | -76.30710 | 1.75 |
DB | Deep Bay | 35.37786 | -76.41677 | 2.75 |
JB | Jones Bay | 35.23139 | -76.53770 | 1.25 |
DC | Jones Bay, Ditch Creek | 35.21988 | -76.55731 | 1.25 |
RB | Rose Bay | 35.39286 | -76.38895 | 2.50 |
U1 | Unstructured Site 1 | 35.36726 | -76.35072 | 2.25 |
U2 | Unstructured Site 2 | 35.19028 | -76.54290 | 1.80 |
>> figure; plot(t,perchcalls(:,1); % show first waveform
>> figure; plot(t(721:1440), perchcalls(721:1440,1)); % show portion used in scalogram generation
To recreate the scalograms, use the function provided as part of PerchPicker
>> ppMakescalo(perchcall(721:1140,1));
loading 'other_waveform_database_v7.mat will similarly load the other signal class.
To access the waveform snippets in wavfile format:
The snippets are also saved as individual (32-bit) wavfiles. Each file contains 90 ms of data, with the training and test data representing the center 30 ms of data (points 721 through 1440 within each column). These waveforms are unfiltered, pressure corrected and sampled at 24 kHz.
For example:
Unzip the perchpicker_training_wavclips.zip file to reveal './perch and './other' folders.
The readwavfiles.mlx (MATLAB) and readwavfiles.ipynb (PYTHON) scripts demonstrate how to load the data. If using MATLAB audioread function, specify 'native' format.
Funding
North Carolina Department of Marine Fisheries