EEG-Conformer 情绪识别实战:SEED 数据集 5 折交叉验证训练全流程

📅 发布时间:2026/8/18 15:38:22
EEG-Conformer 情绪识别实战:SEED 数据集 5 折交叉验证训练全流程
EEG-Conformer 情绪识别实战SEED 数据集 5 折交叉验证训练全流程【免费下载链接】EEG-Conformer[TNSRE 23] EEG Transformer 2.0. i. Convolutional Transformer for EEG Decoding. ii. Novel visualization - Class Activation Topography.项目地址: https://gitcode.com/gh_mirrors/ee/EEG-Conformer想用深度学习做脑电情绪识别却不知道从哪下手本文以开源项目EEG-Conformer为例带你完整跑通基于SEED 数据集的5 折交叉验证训练全流程。EEG-Conformer 是发表于 TNSRE 2023 的EEG Transformer 2.0实现将卷积与自注意力巧妙结合在 SEED 数据集上 5 折交叉验证平均准确率高达95.30%并配套类激活地形图Class Activation Topography可视化方案。全文面向新手尽量少贴代码帮你快速理解从数据预处理到模型训练、结果可视化的每一步。一、EEG-Conformer 是什么卷积 Transformer 的脑电解码方案EEG-Conformer 的核心思想非常简洁时空卷积 池化 自注意力。它用卷积模块提取脑电信号的局部时空特征再用自注意力模块捕捉全局依赖关系最后通过全连接分类头输出情绪类别。相比纯 CNN 或纯 Transformer这种卷积打底 Transformer 强化的结构在脑电分类任务上表现出色。上图就是官方提供的网络架构图输入 62 通道脑电信号后先经过时间卷积、空间卷积与平均池化得到 Token 序列再送入多层自注意力模块含线性变换、缩放、Softmax 与前馈网络最后经全连接层输出分类结果。二、为什么选择 SEED 数据集做情绪识别实验SEEDSJTU Emotion EEG Dataset是情绪识别领域最常用的公开数据集之一特点鲜明15 名受试者每人 3 个 session、15 个 trial62 通道脑电信号采样率200 Hz3 类情绪标签负向-1、中性0、正向1代码中转换为 0、1、2数据经过 4–47 Hz 带通滤波与标准化质量较高。在官方 README 中EEG-Conformer 在 SEED 上的 5 折交叉验证准确率达到95.30%是验证模型性能的理想基线。项目结构也很清晰预处理脚本在preprocessing/目录训练脚本为conformer_seed_1s_5fold.py可视化脚本在visualization/目录。三、环境准备与依赖安装EEG-Conformer 基于 PyTorch 实现官方要求如下Python 3.10PyTorch 1.12其他常用库numpy、scipy、matplotlib、scikit-learn、einops、PIL、torchvision获取代码后将项目克隆到本地仓库地址https://gitcode.com/gh_mirrors/ee/EEG-Conformer确认 GPU 环境可用即可。训练脚本顶部会通过CUDA_VISIBLE_DEVICES指定 GPU 编号单卡用户记得改成自己的显卡编号。四、SEED 数据预处理从原始 .mat 到可训练样本官方在preprocessing/seed.m中提供了完整的 MATLAB 预处理示例核心步骤包括读取文件列表从preprocessing/seed_file/下的namefile_list.mat、short_name.mat、label.mat加载受试者文件与标签带通滤波使用 Chebyshev II 滤波器阶数 6阻带衰减 60dB保留4–47 Hz频段标准化对每个 trial 按通道做均值方差标准化保存结果按S{i}_{j}_{k}.mat格式保存每个受试者、每个 session、每个 trial 的数据。处理完成后还需将数据整理成训练脚本要求的格式每个受试者的.npy文件与对应标签文件并按 1 秒窗口切片——这正是conformer_seed_1s_5fold.py名称中 1s 的由来。五、5 折交叉验证训练流程详解1. 严格 5 折划分保证公平对比conformer_seed_1s_5fold.py实现了严格strict5 折交叉验证每个受试者的数据按 trial 顺序均分为 5 份依次取其中 1 份做测试、其余 4 份训练循环 5 次。这种严格体现在划分遵循固定规则避免随机划分造成的数据泄漏使结果可复现、可公平对比。2. 模型结构与关键超参数训练脚本中的 ViT 结构由三部分组成PatchEmbedding卷积嵌入、TransformerEncoder6 层自注意力编码器、ClassificationHead分类头。关键超参数如下嵌入维度 emb_size40Transformer 深度 depth6注意力头数5训练轮数 n_epochs600batch_size200学习率 lr0.0002Adam 优化器3. 数据增强与标准化脚本内置interaug数据增强策略对每个类别分别采样、按时间块拼接生成新样本有效扩充训练数据。训练前还会对全量数据做均值方差标准化用训练集统计量归一化测试集避免信息泄漏这也是脑电深度学习的关键实践。4. 训练与评估流程每个 fold 的训练逻辑为加载该 fold 的训练/测试数据构建 DataLoader每个 epoch 前向传播计算交叉熵损失反向传播更新参数每轮结束后在测试集上评估准确率记录最佳模型输出该 fold 的平均准确率与最佳准确率。所有 15 名受试者各跑完 5 折后脚本会汇总输出每个受试者的平均/最佳准确率以及全部受试者的最终平均结果。六、训练结果解读95.30% 是怎么来的脚本运行结束后每个 fold 的结果会写入日志文件sub_result.txt包含每个 fold 的最佳准确率Best acc与平均准确率Aver acc每个受试者 5 折平均后的最佳准确率15 名受试者的总体最佳准确率与平均准确率。官方报告 SEED 数据集 5 折交叉验证最佳准确率95.30%。建议新手重点关注平均准确率而非单次最佳值因为平均值更能反映模型的泛化能力。若你的结果偏低优先检查数据切分是否严格一致、标准化统计量是否来自训练集、随机种子是否固定。七、可视化进阶看懂模型学到了什么EEG-Conformer 的另一大亮点是配套的可视化工具全部位于visualization/目录CAT.py类激活地形图Class Activation Topography将类激活映射投影到脑地形图上直观展示模型关注哪些脑区topography.py基于 MNE 绘制 62 通道的脑电地形图可观察不同情绪类别下的空间分布差异tSNE.py用 t-SNE 对模型提取的特征降维可视化观察不同情绪类别的聚类效果utils.py提供 Grad-CAM 等激活与梯度提取工具是 CAM/CAT 的底层支撑。建议训练完成后先跑 t-SNE 看特征可分性再用 CAT 分析情绪相关的脑区激活模式配合论文中的可视化结果相互印证会让你的实验报告更有说服力。八、新手避坑指南3 个最容易踩的坑路径问题脚本中大量路径是作者本机的绝对路径如/Data/SEED/...务必全部替换成你自己的数据目录否则会直接报错GPU 设置gpus [1]指的是物理 GPU 编号单卡环境请改为[0]并确保显存充足随机种子脚本为每个受试者随机生成种子若想复现论文结果可固定random.seed、np.random.seed、torch.manual_seed为同一数值。九、总结与下一步建议通过本文你应该已经掌握了EEG-Conformer 情绪识别从 SEED 数据预处理、严格 5 折交叉验证训练到结果解读与可视化的完整流程。这套流程不仅适用于 SEED稍加改造即可迁移到其他脑电分类任务如运动想象、睡眠分期。下一步可以尝试调整 Transformer 深度与嵌入维度观察精度变化、替换数据增强策略、或结合visualization/工具深入分析模型的可解释性。祝你的脑电情绪识别实验一次跑通准确率再创新高【免费下载链接】EEG-Conformer[TNSRE 23] EEG Transformer 2.0. i. Convolutional Transformer for EEG Decoding. ii. Novel visualization - Class Activation Topography.项目地址: https://gitcode.com/gh_mirrors/ee/EEG-Conformer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考