EEG Facial Action Classifier | 1D-CNN for blink/frown/rest detection from raw signals
本项目是一个基于一维卷积神经网络(1D-CNN)的脑电信号动作分类器,支持识别三种基本动作:blink(眨眼)、frown(皱眉) 和 rest(静息状态)。项目完成了对脑电信号的预处理、特征提取与动作分类。
项目使用商用EEG采集设备采集原始脑电信号,原始数据存放于 raw_data/ 文件夹中每个 .txt 文件对应一个动作样本。原始数据以时间戳 (Time) 和原始值 (Raw) 两列保存,数据采样率约为 500Hz | Raw 值为 ADC 采样值,范围 -2048 ~ 2048 。
- 脚本路径:
GetDataSet.py - 每
128个连续数据点作为一个时间窗口,约覆盖0.25秒(窗口长度与采样率有关) - 根据文件名提取标签,转换为结构化数据
- 最终构建为标准训练集并保存为
data/eeg_data.csv,用于模型训练
模型定义在 Model.py,为一个轻量级的一维卷积神经网络,结构如下:
- 输入层:接收
[batch_size, 1, 128]的 EEG 序列片段 - 卷积层 + ReLU 激活 + 最大池化:提取时间序列中的局部特征
- 展平层(Flatten):将卷积提取的特征展平成一维向量
- 全连接层:进一步融合特征并输出分类向量
- 输出层(Softmax):生成三类动作的概率分布,用于预测
- 脚本路径:
TrainData.py - 数据划分比例:训练集 : 测试集 = 4 : 1
- 数据加载:使用
DataLoader加载Tensor格式数据 - 损失函数:交叉熵损失
(CrossEntropyLoss) - 优化器:
Adam - 可视化:训练过程中记录并保存损失变化曲线图
- 输出目录:训练完成的模型文件与可视化图像保存在
models_dict/文件夹中
最新修改发布在 dev/ 文件夹中,若使用稳定版本请忽略此文件夹。
如需运行、测试或修改此项目,请根据自身设备与数据采集方式调整对应参数和路径。
本项目基于 MIT License 开源。你可以自由地使用、修改、分发本项目代码,但请保留原始版权声明。