Submitted by Apurv Sanjay Deshpande (apurvsd@vt.edu) and Hari Makarand Sumant (harisumant@vt.edu)
This project focuses on detecting EEG sleep spindles using neural networks and improving the training and evaluation times through parallel processing techniques. The approach includes preprocessing EEG and EOG datasets, training a Time-Series Autoencoder, and evaluating performance using both sequential and parallel implementations.
The project directory is structured as follows:
- EDA and Preprocessing.ipynb # Jupyter notebook for dataset exploration and preprocessing
- eval_bench.py # Benchmark evaluation for sequential and parallel methods
- eval_parallel.py # Evaluation script for parallel implementation
- eval_sequential.py # Evaluation script for sequential implementation
- run_memory_tests.py # Script for monitoring memory usage during execution
- training_bench.py # Benchmark training for sequential and parallel methods
- training_parallel.py # Parallel training implementation
- training_sequential.py # Sequential training implementation
- datasets/
- extrait_wSleepPage01.csv # Raw spindle dataset 1
- final_dataset.csv # Final combined and preprocessed dataset
- spindles.csv # Raw spindle dataset 2
- models/
- timeseries_autoencoder_par.pth # Trained model from parallel execution
- timeseries_autoencoder.pth # Trained model from sequential execution
- plots/ Contains plots obtained by running all the benchmarks
- Python 3.8+
- Libraries:
torchpandasscikit-learnpsutil
-
Preprocessing:
- Use
EDA and Preprocessing.ipynbto preprocess the datasets.
- Use
-
Training:
- Run
training_sequential.pyfor sequential training. - Run
training_parallel.pyfor parallel training.
- Run
-
Evaluation:
- Use
eval_sequential.pyoreval_parallel.pyto evaluate the models.
- Use
-
Memory Testing:
- Run
run_memory_tests.pyto monitor memory usage during execution.
- Run
-
Benchmarking:
- Use
training_bench.pyandeval_bench.pyto benchmark sequential vs. parallel performance.
- Use