deepsleep2

😴 DeepSleep2 is a compact U-Net-inspired convolutional neural network with 740,551 parameters, designed to predict non-apnea sleep arousals from full-length multi-channel polysomnographic recordings at 5-millisecond resolution. Achieves similar performance to DeepSleep with lower computational cost.

https://github.com/rfonod/deepsleep2

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • â—‹
    CITATION.cff file
  • ✓
    codemeta.json file
    Found codemeta.json file
  • ✓
    .zenodo.json file
    Found .zenodo.json file
  • ✓
    DOI references
    Found 5 DOI reference(s) in README
  • ✓
    Academic publication links
    Links to: nature.com, mdpi.com, zenodo.org
  • â—‹
    Academic email domains
  • â—‹
    Institutional organization owner
  • â—‹
    JOSS paper metadata
  • â—‹
    Scientific vocabulary similarity
    Low similarity (14.4%) to scientific vocabulary

Keywords

cnn computational-efficiency convolutional-networks deep-learning encoder-decoder machine-learning medical-ai multichannel neural-networks physionet polysomnography pytorch segmentation sleep-analysis sleep-apnea sleep-arousals time-series u-net
Last synced: 6 months ago · JSON representation

Repository

😴 DeepSleep2 is a compact U-Net-inspired convolutional neural network with 740,551 parameters, designed to predict non-apnea sleep arousals from full-length multi-channel polysomnographic recordings at 5-millisecond resolution. Achieves similar performance to DeepSleep with lower computational cost.

Basic Info
Statistics
  • Stars: 17
  • Watchers: 1
  • Forks: 4
  • Open Issues: 0
  • Releases: 1
Topics
cnn computational-efficiency convolutional-networks deep-learning encoder-decoder machine-learning medical-ai multichannel neural-networks physionet polysomnography pytorch segmentation sleep-analysis sleep-apnea sleep-arousals time-series u-net
Created about 4 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

DOI GitHub Release License

Jupyter Notebook PyTorch

DeepSleep 2.0: Automated Sleep Arousal Segmentation via Deep Learning

A 300-second example of a 13-channel physiological recording and the corresponding sleep arousal prediction/target labels.

sample_300s_example_animation

Overview

DeepSleep 2.0 is a compact version of DeepSleep, a state-of-the-art, U-Net-inspired, fully convolutional deep neural network, which achieved the highest unofficial score in the 2018 PhysioNet Computing Challenge. The proposed network architecture has a compact encoder/decoder structure containing only 740,551 trainable parameters. The input to the network is a full-length multi-channel polysomnographic recording signal. The network has been designed and optimized to efficiently predict non-apnea sleep arousals on held-out test data at a 5-millisecond resolution level, while not compromising the prediction accuracy. When compared to DeepSleep, the obtained experimental results in terms of gross area under the precision-recall curve (AUPRC) and gross area under the receiver operating characteristic curve (AUROC) suggest that a lightweight architecture, which can achieve similar prediction performance at a lower computational cost, is realizable.

Requirements

It is assumed that you have the full or partial PhysioNet dataset (~135 GB of data per folder) on the disk. In ./data, you can find two bash scripts to download the PhysioNet dataset.

Running the code

Here are the essential steps to sucesfully run the main Jupyter notebook file (deep_sleep2.ipynb).

STEP 0: Clone the Repository

git clone https://github.com/rfonod/deepsleep2.git cd deepsleep2

STEP 1: Installation

  1. Install Python and PyTorch. Python 3.8 and PyTorch 1.8.1 were considered for the reported results in the DeepSleep 2.0 paper
  2. [OPTIONAL] Create a virtual environment with a specific version of Python
  3. Install Python dependencies listed in requirements.txt. You can run: pip3 install -r requirements.txt
  4. If you plan to use GPU computations (recommended), install CUDA

STEP 2: Hyperparameters

A correctly set up hyperparameters.txt file must be present in a subdirectory of ./models. The subdirectory name is specified in the MODEL_NAME variable.

STEP 3: Notebook File

Run the cells of deep_sleep2.ipynb in a sequential order. Consider the description of the Main Switches section.

Citation

If you use this code in your research, please cite the following publication:

@Article{Fon22a, author = {Fonod, Robert}, title = {{DeepSleep 2.0: Automated Sleep Arousal Segmentation via Deep Learning}}, journal = {AI}, year = {2022}, volume = {3}, number = {1}, pages = {164-179}, doi = {https://doi.org/10.3390/ai3010010}, publisher = {MDPI}, }

Consider also citing the original DeepSleep paper.

Owner

  • Name: Robert Fonod
  • Login: rfonod
  • Kind: user

GitHub Events

Total
  • Release event: 1
  • Watch event: 4
  • Push event: 4
  • Fork event: 1
  • Create event: 1
Last Year
  • Release event: 1
  • Watch event: 4
  • Push event: 4
  • Fork event: 1
  • Create event: 1

Dependencies

requirements.txt pypi
  • Cython ==0.29.23
  • Jinja2 ==3.0.1
  • MarkupSafe ==2.0.1
  • Pillow ==8.2.0
  • Pygments ==2.9.0
  • QtPy ==1.9.0
  • Send2Trash ==1.5.0
  • appnope ==0.1.2
  • argon2-cffi ==20.1.0
  • astroid ==2.5.6
  • async-generator ==1.10
  • attrs ==21.2.0
  • backcall ==0.2.0
  • bleach ==3.3.0
  • certifi ==2021.5.30
  • cffi ==1.14.5
  • cycler ==0.10.0
  • decorator ==5.0.9
  • defusedxml ==0.7.1
  • entrypoints ==0.3
  • h5py ==3.2.1
  • ipykernel ==5.5.5
  • ipython ==7.24.1
  • ipython-genutils ==0.2.0
  • ipywidgets ==7.6.3
  • isort ==5.8.0
  • jedi ==0.18.0
  • joblib ==1.0.1
  • jsonschema ==3.2.0
  • jupyter ==1.0.0
  • jupyter-client ==6.1.12
  • jupyter-console ==6.4.0
  • jupyter-core ==4.7.1
  • jupyterlab-pygments ==0.1.2
  • jupyterlab-widgets ==1.0.0
  • kiwisolver ==1.3.1
  • lazy-object-proxy ==1.6.0
  • matplotlib ==3.4.2
  • matplotlib-inline ==0.1.2
  • mccabe ==0.6.1
  • mistune ==0.8.4
  • nbclient ==0.5.3
  • nbconvert ==6.0.7
  • nbformat ==5.1.3
  • nest-asyncio ==1.5.1
  • notebook ==6.4.0
  • numpy ==1.20.3
  • packaging ==20.9
  • pandas ==1.2.4
  • pandocfilters ==1.4.3
  • parso ==0.8.2
  • pexpect ==4.8.0
  • pickleshare ==0.7.5
  • prometheus-client ==0.11.0
  • prompt-toolkit ==3.0.19
  • ptyprocess ==0.7.0
  • pycparser ==2.20
  • pylint ==2.8.3
  • pyparsing ==2.4.7
  • pyrsistent ==0.17.3
  • python-dateutil ==2.8.1
  • pytz ==2021.1
  • pyzmq ==22.1.0
  • qtconsole ==5.1.0
  • scikit-learn ==0.24.2
  • scipy ==1.6.3
  • seaborn ==0.11.1
  • six ==1.16.0
  • sklearn ==0.0
  • terminado ==0.10.1
  • testpath ==0.5.0
  • threadpoolctl ==2.1.0
  • toml ==0.10.2
  • torch ==1.9.0
  • torchsummary ==1.5.1
  • tornado ==6.1
  • tqdm ==4.61.1
  • traitlets ==5.0.5
  • typing-extensions ==3.10.0.0
  • wcwidth ==0.2.5
  • webencodings ==0.5.1
  • widgetsnbextension ==3.5.1
  • wrapt ==1.12.1