DeepSleepNet
基于原始单通道脑电图的自动睡眠分期深度学习模型。
我们已发布了一个更高效的深度学习模型TinySleepNet,该模型更小巧且可以实现更好的分期性能。
TinySleepNet:基于原始单通道脑电图的高效睡眠分期深度学习模型,由玛希隆大学信息通信技术学院的Akara Supratak和伦敦帝国理工学院的Yike Guo共同开发。[论文][GitHub]
这是伦敦帝国理工学院数据科学研究所Akara Supratak、Hao Dong、Chao Wu和Yike Guo发表的论文《DeepSleepNet:基于原始单通道脑电图的自动睡眠分期模型》中模型的代码。
本研究已被IEEE神经系统与康复工程汇刊接受发表。
您也可以在arXiv上找到我们发表前的接受版本。
DeepSleepNet的架构: 注:Fs是输入脑电信号的采样率
此图展示了模型中一个可解释的LSTM单元,它学会追踪每个受试者何时清醒(即处于W期):
环境
复现此研究使用了以下设置:
- Ubuntu 18.04 / Windows 10 1903 x64
- CUDA工具包10.0和CuDNN v7.6.4
- Python 3.5.4 x64
- tensorflow-gpu (1.15.2)
- matplotlib (1.5.3)
- scikit-learn (0.19.1)
- scipy (1.4.1)
- numpy (1.18.2)
- pandas (0.25.3)
- mne (0.20.0)
- tensorlayer (可选)
- MongoDB (可选)
- eAE (可选)
准备数据集
我们使用MASS和Sleep-EDF数据集评估了DeepSleepNet。
对于MASS数据集,您需要申请访问权限。 对于Sleep-EDF数据集,您可以运行以下脚本下载SC受试者数据。
cd data
chmod +x download_physionet.sh
./download_physionet.sh
然后运行以下脚本提取指定的脑电通道及其对应的睡眠阶段。
python prepare_physionet.py --data_dir data --output_dir data/eeg_fpz_cz --select_ch 'EEG Fpz-Cz'
python prepare_physionet.py --data_dir data --output_dir data/eeg_pz_oz --select_ch 'EEG Pz-Oz'
训练模型
运行此脚本为20折交叉验证的第一折训练DeepSleepNet模型。
python train.py --data_dir data/eeg_fpz_cz --output_dir output --n_folds 20 --fold_idx 0 --pretrain_epochs 100 --finetune_epochs 200 --resume False
您需要为每一折训练DeepSleep模型(即fold_idx=0...19
)才能评估性能。您可以使用以下脚本进行批量训练
chmod +x batch_train.sh
./batch_train.sh data/eeg_fpz_cz/ output 20 0 19 0
评分睡眠阶段
运行此脚本为每个交叉验证折的保留受试者确定睡眠阶段。
python predict.py --data_dir data/eeg_fpz_cz --model_dir output --output_dir output
输出将存储在numpy文件中。
获取摘要
运行此脚本显示我们的DeepSleepNet与最先进的人工特征工程方法相比的性能摘要。性能指标包括总体准确率、每类F1分数和宏F1分数。
python summary.py --data_dir output
将任务提交到配备TensorLayer的eAE集群
- 设置eAE集群(按照此链接中的说明操作)
- 设置MongoDB
- 在
deepsleep/trainer.py
中更改MongoDB的位置 - 修改
submit_eAE.py
- 运行
python submit_eAE.py
待办事项
- 发布不依赖MongoDB和Tensorlayer的版本(更易安装,但训练时间可能更长)。
引用
如果您觉得本研究有用,请按以下方式引用我们的工作:
@article{Supratak2017,
title = {DeepSleepNet: a Model for Automatic Sleep Stage Scoring based on Raw Single-Channel EEG},
author = {Supratak, Akara and Dong, Hao and Wu, Chao and Guo, Yike},
journal = {IEEE Transactions on Neural Systems and Rehabilitation Engineering},
year = {2017},
month = {Nov},
volume = {25},
number = {11},
pages = {1998-2008},
doi = {10.1109/TNSRE.2017.2721116},
ISSN = {1534-4320},
}
许可证
- 仅供学术和非商业用途
- Apache许可证2.0版