GMTC北京站优惠购票最后一周!13个热点专题,50+大厂案例,这里一览 了解详情
写点什么

设计脑机接口的实践指南

  • 2022 年 4 月 07 日
  • 本文字数:2302 字

    阅读完需:约 8 分钟

设计脑机接口的实践指南

背景:BCI 是什么意思?

脑机接口(BCI)指的是将大脑与计算机连接起来的工具。过去十年间,业界对 BCI 的关注度迅速增长——一个典型例子就是,埃隆·马斯克名下主要研发脑机接口技术的初创企业 Neuralink 每次开新发布会都会引发舆论热议[1]。Neuralink 可以在大脑中植入人造物来完成多种任务,诸如用思维来控制动作或直接在大脑中播放音乐等。


你会感到恐惧吗?没关系,这是很正常的。但在这篇文章中,我们将只关注一个简单的 BCI 实现,具体来说是用一个娱乐设备[2]记录脑电波活动,即脑电图(EEG)。这个实现不需要对人体做任何手术(也不会有疼痛或死亡风险)。虽然你(很遗憾)不能用它来收听你最喜欢的乐曲列表,但可以实时观看 BCI 佩戴者的情绪波动(只不过是以代码的形式)。

一个用例:用 EEG Unicorn 估测情绪

如前所述,在本教程中我们将从想法一路走到具体的实现,完成所有必要的步骤来设计一个处理具体任务的 BCI。作为示例,我们要做的 BCI 属于情绪估测领域。这个应用旨在估计参与者的情绪状态。



情绪 BCI 图解。


如图所示,这个管道的目的是将参与者的 EEG 信号作为输入,并返回相应的 V-A 情感坐标图。V-A 图是一种应用于生物心理学的情绪坐标,其中 Valence(横轴)代表愉快和不愉快(即积极和消极)的程度,而 Arousal(纵轴)代表兴奋和平静的水平。基于这种表示,任何情感状态均可表示为 VA 坐标平面上的一个点。

设计情绪识别 BCI 的关键步骤

具体而言,为设计和部署 BCI,我们必须遵循几个关键步骤。

范式定义和信号记录

首先我们要定义 BCI 的范式:我想对什么事物建模?或者想要估计哪些信息?我的应用程序的目的是什么?我是否想通过 BCI 来控制机械手/脚?我是要评估驾驶任务中驾驶员/成员的警觉性吗?是要预测疾病的发作几率?还是检测癫痫发作状态?科学界对一些可以插入 BCI 的研究项目存在巨大兴趣。


在本文的案例中,我们决定关注之前的一项研究工作,就是估计参与者观看一些视频时的情绪状态[3]。这篇论文还提出了一个可以促进特定情绪状态的视频列表(我们对此非常感兴趣!)。这些视频的列表和对应的情绪都可以在 youtube 上找到,并列在注[4]中。


因此我们设计了一个实验基准测试,包括在参与者观看宣传特定情绪的视频时记录他们的 EEG 信号。在我们的存储库中,脚本registration_pipeline.py给出了一段完成这一任务的代码,用户只需将他想要处理的视频放在专用目录中(或改变路径)即可。

概要分析

有了上述基准测试,我们就可以完成脑电波信号的记录工作了。这些信号最后将构成训练 ML 模型(甚至是 DL)所必要的数据集。


我们来做这个模型吧......等一下!在建成一个能够从 EEG 信号中估计情绪的管道之前,我们必须提取信息来帮助模型处理数据。如果你有大量信号和/或可用的计算资源,跳过这一步也是可以的。但为了保持简洁,我们考虑采用更自然简单的模型来简化复杂性。一种可能的提取信息的方法是基于脑电图信号的频率特性,也就是说“这个脑电图片段是在高频率还是低频率范围内振荡?”。过去,科学家们发现,一些脑电图信号是由几个频段组成的,每个频段在特定的任务或行为中都会增强/减弱[4]。


  • δ为深度睡眠,[0-4Hz]。

  • θ表示昏昏欲睡,[4-7Hz]。

  • α代表放松和闭目思考,[8-15Hz]。

  • β代表积极思考和与专注相关的状态[16-31Hz]。

  • γ代表感受到更多压力的状态[32-50Hz]。特征提取的图示。



按照这个过程,我们从每个 EEG 片段中提取了一个信息向量。这个过程的目的是提取信息,以便更好地处理生物医学信号。这个步骤可以使用脚本outline_analysis.py的第一部分来处理。


最后(如果你还跟得上的话),你应该知道剩下的步骤是创建一个模型,用它从上面预计算的特征向量中估计情绪状态(是快乐还是悲伤?)。这里为了让我们的方法简单易懂,我们考虑一个由决策树组成的简单模型。这种简单方法背后的想法是寻找动态阈值来区分信息向量,例如第 i 个电极的高α贡献对应于低 arousal,第 j 个电极的中等γ贡献对应于高 valence,等等。


给出特征向量 X 和它的标签 y,就可以创建一个名为 clf 的分类器(对应于决策树)。该分类器可以通过以下几行代码轻松训练。


from sklearn import treeclf = tree.DecisionTreeClassifier() # definition of the modelclf.fit(X, y) # training of the model...
复制代码


在 outline_analysis.py 的第二部分给出了一个更完整的解释,包括整个模型描述和训练。训练完这个简单的决策树后,可以用 joblib 库来保存它。


...from joblib import dumpdump(clf, 'classifier_file_name')
复制代码

实时实现

在训练和保存模型之后,剩下的步骤是将各个部分合并在一起。


两个联合脚本必须并行工作:第一个脚本旨在记录、处理和估计来自 EEG 的情绪状态pylsl_emotion.py;第二个脚本会在图形上显示相应的情绪和对应的笑脸,如play_emotion.py所述。

尝试一下

最后提一句:自己尝试一下吧!上述代码和自述文件都放到了Github上。你可以自己尝试,或者为不同的模型或 EEG 耳机改编代码。


以上就是全部内容了,感谢大家阅读!我并没有说我的代码是完美的,但如果你有意见、问题或想了解更多内容,请不要犹豫,立刻与我联系吧!😊

参考文献

[1] Rolfe Winkler:埃隆·马斯克创办了,旨在将人脑与计算机连接起来。华尔街日报,2017(链接


[2] Unicorn Hybrid Black——脑机接口(链接


[3] Katsigiannis, S 和 Ramzan, N:通过无线低成本货架设备收集到的 EEG 与 ECG 信号情感识别数据库。IEEE 生物医学和健康信息学(2017——链接)。


[4] Gabert-Quillen, Crystal A:情感视频片段打分。行为研究方法(2015——链接)。


[5] William O Tatum:Ellen R.Grass Lecture: extraordinary EEG。2014(链接)。


原文链接:https://towardsdatascience.com/hands-on-guide-to-design-brain-computer-interface-b99bcc198428

2022 年 4 月 07 日 12:091074
用户头像
刘燕 InfoQ 编辑

发布了 883 篇内容, 共 305.0 次阅读, 收获喜欢 1667 次。

关注

评论

发布
暂无评论
发现更多内容

[架构师训练营第 1 期] 第三周学习总结

猫切切切切切

极客大学架构师训练营

周练习3

何毅曦

架构师训练营 1 期 -- 第三周总结

曾彪彪

极客大学架构师训练营

第三周作业

Meow

极客时间

第三周 代码重构 作业一

应鹏

极客大学架构师训练营

第三周作业

追风

极客大学架构师训练营

架构师训练营 - week03 - 学习总结

lucian

极客大学架构师训练营

【译文】Rust futures: async fn中的thread::sleep和阻塞调用

袁承兴

rust 并发 异步

架构训练营-week3-作业

于成龙

设计模式 架构训练营

week3

张兵

极客大学架构师训练营

架构师训练营第 3 周学习总结

netspecial

极客大学架构师训练营

架构师训练营第 1 期第 3 周作业

好吃不贵

极客大学架构师训练营

架构师训练营 1 期第 3 周:代码重构 - 作业

灵霄

极客大学架构师训练营

架构师训练营 - week03 - 作业1

lucian

极客大学架构师训练营

深入理解Java虚拟机1——内存区域

超超不会飞

Java JVM

深入理解Java虚拟机2——对象探秘

超超不会飞

Java JVM

架构师训练营第 1 期第 3 周作业

du tiezheng

极客大学架构师训练营 组合模式 Go 语言

架構師訓練營 week3 作業

ilake

极客大学架构师训练营

架构训练营-week3-学习总结

于成龙

架构 作业 架构训练

第三周总结

睁眼看世界

极客大学架构师训练营

第 3 周 代码重构 80!80!80!

Pyr0man1ac

架构师训练营第三次作业

月殇

极客大学架构师训练营

Week 3 作业 01

Croesus

架构师训练营第三周作业

我是谁

极客大学架构师训练营

单例模式-第三周作业

睁眼看世界

设计模式 极客大学架构师训练营

架构师训练营第三周学习总结

尹斌

架构师训练营第二周作业

尹斌

我导师推荐的经典之作——《数学之美》第二版-吴军

计算机与AI

架構師訓練營 week3 總結

ilake

深入理解Java虚拟机3——垃圾回收

超超不会飞

Java JVM

第 3 周 作业

Pyr0man1ac

设计脑机接口的实践指南_AI_Victor Delvigne_InfoQ精选文章