暑假的校园安静得不像话,实验室里只有空调压缩机的嗡鸣声和脑电放大器的规律滴答。
这周开始正式采集 SSVEP 数据。说起来简单——给人贴电极、让他看闪烁的图案、记录信号——但实际上每一步都有坑。
贴电极这件事看起来最没技术含量,但问题最多。导电膏涂少了阻抗下不来,涂多了相邻电极之间短路。第一次贴完 16 个湿电极花了 40 分钟,被试都快睡着了。后来熟练了一点,能压缩到 25 分钟,但手上永远有一股导电膏的咸味。
实验设计参考了清华 SSVEP Benchmark 的做法:40 个目标频率,范围从 8Hz 到 15.8Hz,间隔 0.2Hz。每个 trial 被试注视指定频率的闪烁方块 4 秒,中间有 1 秒的休息。做完一轮大约需要一个半小时,中间必须不停地和被试确认没有视觉疲劳。
数据拿回来之后,才是真正的痛苦——人工标注。40 个频率 × 每个频率 6 次重复 × 6 个被试,文件命名规则稍微一乱就全乱了。我用 Python 写了一个自动校验脚本,根据文件名和实验 log 交叉比对,发现有三个被试的 trial 顺序乱了。还好发现得早,赶紧纠正了标注文件。
最让我兴奋的是跑 FBCCA 的时候。之前只在公开数据集上跑过,这次是自己的数据,心里完全没底。第一个被试跑完,8 个电极、4 秒窗口,准确率 78%。不高,但已经远超显著性水平(1/40 = 2.5%)。调优之后——改用枕叶区域的 6 个电极、应用了独立成分分析、交叉验证微调了滤波器组参数——准确率最终稳定在 91%。
那天晚上我截了张分类结果的混淆矩阵,发了条朋友圈:“自己的脑电数据跑通了 FBCCA,成就感拉满。”
朋友在底下评论:“你是真的科幻起来了。”
我笑了笑,心想:这才哪到哪呢。下个目标是把这个算法嵌入到实时系统里,做成一个真正的在线 SSVEP-BCI。最好能用在自己的项目里——让渐冻症患者通过注视闪烁按钮来和外界沟通。
至于这个项目叫什么名字,我暂时还没想好。但理念已经在脑子里成型了。
