清明假期三天,朋友圈里全是踏青的照片——樱花、油菜花、风筝。我在家写了三天代码。
倒也不是不想出门,只是最近有个 EEG 信号处理的练习做了一半,心里老惦记着。数据集是公开的 PhysioNet EEG Motor Movement/Imagery Dataset,目标是区分左右手运动想象时的脑电信号。上周用简单的 FFT + SVM 勉强跑通了,但准确率只有 62%,太低了。
这两天尝试了几个改进方向:先用带通滤波器(8-30Hz)滤掉肌电和眼电伪迹,然后试了 ICA(独立成分分析)去除眨眼带来的干扰。预处理完之后,信号肉眼看着就干净多了。接着换了 CSP(共空间模式)做特征提取,准确率一下子飙到了 78%。
下午泡了一杯乌龙茶,然后写代码入迷了,发现一口没喝——已经凉透了。
傍晚给一个朋友发了条消息显摆准确率,他回了一句:“你能不能拿这个给我的右手装个义肢?“我笑出了声。比起义肢,我更感兴趣的是用脑电信号来控制外部设备——也就是 BCI(脑机接口)的核心思路。虽然我现在做的只是分类左右手运动想象,和真正的 BCI 差了十万八千里,但每次看到分类图上的两个簇被清晰分开,都有一种微妙的成就感。
晚上把代码推到了 GitHub,然后在 README 里加了一个 TODO list:提升准确率到 85%+,尝试用深度学习(EEGNet、DeepConvNet),最后做成一个实时的脑电控制 demo。
标题放在那了,不知道能不能做完,但至少有了个方向。
