E. S. Mason, H. N. Mhaskar, A. Guo (2022)
doi.org/10.1016/j.neunet.2022.04.024
We use the DopNet radar dataset, which can be found on their GitHub repository.
- Download data from persons A to F (
Data_Per_PersonData_Training_Person_{A-F}.mat
) and put those six files into thedata/dopnet/
directory - Install required Python libraries (e.g. in a Conda environment):
pip install -r requirements.txt
- Install PyTorch
- Generate
.npy
files:python export_data.py
- The
example_usage.py
script demonstrates how to import and preprocess the dataset as well as run the models. The script itself can be run:python example_usage.py
To run the experiments presented in the paper: cd tests
and python experiments.py
. The following
five experiments are available:
- Unused (replaced by experiment 3)
- Evaluate each model by training on 5 subjects' data and testing on the last subject's data
- Evaluate each model on different train/test split ratios
- Evaluate PCA-based models across PCA dimensions
- Plot singular values of spectrograms
The models used are referred to by the following names, corresponding to Tables 3 and 4 of the paper:
- SVD-based models: Gaussian SVD SVM, Grassmann SVD SVM, Laplace SVD SVM
- PCA-based models: PCA KNN, PCA LocSVM16, PCA LocSVM64
- CNN models: CNN1, CNN2
For reference, the experiments were run on Arch Linux (kernel 5.x) using an AMD Ryzen 5 5600X with 32GB of memory. An NVIDIA GTX 1060 6GB was used to accelerate PyTorch for CNN training and inference. The experiments may need modifications to run on less than 32GB of memory or without an NVIDIA GPU.
src/manifold_svm.py
- Contains all the classification code. Classifiers inherit from
sklearn.SVM.SVC
, and only change the kernel function
- Contains all the classification code. Classifiers inherit from
src/preprocessing.py
- Contains a number of preprocessing classes designed to be used in
sklearn.Pipeline
- Only
Threshold
is used, which implements scaling to binary/[-1, 0] interval and Otsu/Yen thresholding
- Contains a number of preprocessing classes designed to be used in
export_data.py
- Run this to read and export DopNet data
- Put all the
Data_Per_PersonData....mat
files intodata/dopnet/
tests/dopnet.py
- Contains wrapper functions for import/exporting data and running trials
- Trials are outdated, mostly replaced by
tests/experiments.py
tests/experiments.py
- Contains all experiments run for this paper with helper functions for exporting test results
tests/models.py
- Contains modeling code, repackaged from
src/manifold_svm.py
for ease of use in experiments
- Contains modeling code, repackaged from
tests/plotting.py
- Contains helper code for plotting experimental results