Skip to content

Latest commit

 

History

History
161 lines (114 loc) · 7.2 KB

README.zh_CN.md

File metadata and controls

161 lines (114 loc) · 7.2 KB

EEG Motor Imagery Deep Learning

English 中文

关于深度学习方法在脑机接口中运动想象脑电数据分类的应用,包括脑电信号处理(可视化和分析)、领域论文整理和总结、深度学习模型复现和实验。

本仓库的实验基于 MNE-PythonMoabbBraindecodeSkorch

您可以通过以下部分找到此仓库的更多内容:

领域调研

领域调研目前包括论文以及公开数据集:

论文整理

2017 Schirrmeister et al. Deep learning with convolutional neural networks for EEG decoding and visualization [论文链接] [开源代码] [复现代码]

2018 Lawhern et al. EEGNet: a compact convolutional neural network for EEG-based brain–computer interfaces [论文链接] [开源代码] [复现代码1] [复现代码2]

2018 Sakhavi et al. Learning Temporal Information for Brain-Computer Interface Using Convolutional Neural Networks [论文链接]

2019 Dose et al. An end-to-end deep learning approach to MI-EEG signal classification for BCIs [论文链接] [开源代码]

2020 Wang et al. An Accurate EEGNet-based Motor-Imagery Brain Computer Interface for Low-Power Edge Computing [论文链接] [开源代码]

2020 Ingolfsson et al. EEG-TCNet: An Accurate Temporal Convolutional Network for Embedded Motor-Imagery Brain-Machine Interfaces [论文链接] [开源代码] [复现代码1]

2021 Mane et al. A Multi-view CNN with Novel Variance Layer for Motor Imagery Brain Computer Interface [论文链接] [开源代码]

公开数据集

论文中最常用的脑电运动想象公开数据集:

数据集描述: BCI Competition 2008 – Graz data set A 4类

下载链接: .gdf 格式 或者 .mat 格式

数据集描述:Physionet Database EEG Motor Movement/Imagery Dataset 2/3/4类

下载链接: .edf 格式

[图片参考]

为了快速下载和预处理数据集建议使用第三方库 Moabb dataset 或者 Braindecode dataset来做实验

脑电数据分析处理

  • 数据加载和分析

使用 MNE-Python 库和 Jupyter Notebook 分析BCI IV 2a的演示脑电图数据,包括加载数据、绘制信号、提取事件等等。

详细代码见data_load_visualization.ipynb, 更多示例见MNE-Python tutorials

  • 数据处理

使用 MNE-Python 库和 Jupyter Notebook 处理 BCI IV 2a 的演示脑电图数据,包括过滤、重采样、分割数据等等。

详细代码见data_processing.ipynb, 更多示例见 MNE-Python tutorials

实验

这个仓库基于Python 3.10,在运行这个仓库的实验之前,请先安装环境:

$ pip install -r requirements.txt

然后你可以使用-h来获取使用方法:

$ python .\main.py -h
usage: main.py [-h] [--dataset {bci2a,physionet}] [--model {EEGNet,EEGConformer,ATCNet,EEGInception,EEGITNet}] [--config CONFIG] [--strategy {cross-subject,within-subject}] [--save]

optional arguments:
  -h, --help            show this help message and exit
  --dataset {bci2a,physionet}
                        data set used of the experiments
  --model {EEGNet,EEGConformer,ATCNet,EEGInception,EEGITNet}
                        model used of the experiments
  --config CONFIG       config file name(.yaml format)
  --strategy {cross-subject,within-subject}
                        experiments strategy on subjects
  --save                save the pytorch model and history (follow skorch)

如果你在数据集BCI 2a上运行EEGNet模型的实验,只需运行:

$ python .\main.py --dataset bci2a --model EEGNet

它将使用bci2a_EEGNet_default.yaml中的默认配置和默认的within-subject策略,当然你可以使用--config来指定,然后你可以在./save文件夹中获取输出的准确率和result.log

[2024-07-30 17:30:51] Subject1 test accuracy: 70.4861%
[2024-07-30 17:32:17] Subject2 test accuracy: 53.8194%
[2024-07-30 17:33:40] Subject3 test accuracy: 79.1667%
[2024-07-30 17:35:02] Subject4 test accuracy: 62.8472%
[2024-07-30 17:36:24] Subject5 test accuracy: 68.4028%
[2024-07-30 17:39:13] Subject6 test accuracy: 50.6944%
[2024-07-30 17:40:35] Subject7 test accuracy: 72.2222%
[2024-07-30 17:42:00] Subject8 test accuracy: 64.5833%
[2024-07-30 17:43:23] Subject9 test accuracy: 70.1389%
[2024-07-30 17:43:23] Average test accuracy: 65.8179%

如果你在数据集 Physionet数据集上运行实验, 请使用cross-subject跨被试策略:

python .\main.py --dataset physionet --model EEGNet --strategy cross-subject

你也可以修改配置的 yaml 文件来调整参数或搭建你自己的模型来进行实验。