限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

设计脑机接口的实践指南

  • 2022-04-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-04-07 12:092127
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 572.4 次阅读, 收获喜欢 1980 次。

关注

评论

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

YashanDB知识库|服务端编码是 GBK,为什么升级失败了?这其实是个字符集对齐问题

数据库砖家

数据库·

YashanDB知识库|用 yasldr 导入 LOB 字段,有几种方式?lls 和 lobfile 怎么选?

数据库砖家

数据库·

YashanDB 知识库|如何远程连接 YashanDB 数据库?最全工具和方式合集!

数据库砖家

数据库·

最全面的采样器:Native Instruments Maschine 3

Rose

阿维塔或将首批搭载ADS4

科技热闻

YashanDB知识库|BeetISQL 批量插入时报 autoAssignKey 异常?可能是 rowid 惹的祸

数据库砖家

数据库·

分析型数据库与事务型数据库?核心差异与选型指南

镜舟科技

OLAP 分析型数据库 OLTP 事务型数据库 数据存储结构

YashanDB知识库|别名和变量同名就报错?这个“重名陷阱”得避开!

数据库砖家

数据库·

Easysearch 移除 Master 节点注意事项

极限实验室

数据库·

我们收到了数百份AI“生存提案”|72小时AI生存挑战招募中

声网

《Operating System Concepts》阅读笔记:p764-p766

codists

操作系统

YashanDB知识库|JDBC 和 OCI 驱动需要设置字符集吗?其实你可能多虑了!

数据库砖家

数据库·

YashanDB知识库|一个 SQL 多个执行计划?绑定参数背后的优化器逻辑别忽略

数据库砖家

数据库·

YashanDB|设置了归档日志上限,为什么磁盘还是被打爆了?

数据库砖家

数据库·

Arthas monitor(方法执行监控)

刘大猫

Java 监控 Monitor Arthas 方法执行监控

海外加速专线:解锁跨国视频会议,助您畅享畅聊体验

宽炜网络

海外网络专线

个人开发者如何发送短信?这个方案太香了!

外滩运维专家

短信验证码 短信验证 短信发送 个人短信 短信群发

Photoshop 2024 (PS2024中文激活补丁)直装绿色版

Rose

YashanDB知识库|Quartz调度写布尔值报错?问题关键在于 true/false 与 0/1 的差异

数据库砖家

数据库·

电信SD-WAN线路的有那些优势

宽炜网络

电信sd-wan

哈尔滨等保测评数据隐私与合规风险

黑龙江陆陆信息测评部

YashanDB知识库|集成 Druid 连接池时日志报 “token IDENTIFIER start”?问题虽小但有来头!

数据库砖家

数据库·

iVX:图形化编程语言 + IDE,而非传统 “代码平台”

代码制造者

无代码平台

AI在线生成组织架构图!办公效率原地起飞!

职场工具箱

AI 办公软件 AIGC 绘图软件 组织架构图

BOE(京东方)LTPO技术赋能vivo x200 Ultra 超低功耗解锁专业级影像新体验

爱极客侠

炸裂!推荐一款开源项目集成 Dify 到钉钉

柯杰

钉钉 dify

TiDB 社区第四届专栏征文大赛联合墨天轮火热开启,TiDB 业务场景实战、运维开发攻略两大赛道,BOSE 降噪耳机、大疆手持云台、投影仪、运动手环、礼品卡等重磅礼品等你来拿!

TiDB 社区干货传送门

数据库 运维 分布式数据库 征文大赛 TiDB

阶跃星辰发布端到端语音接口 Realtime API,理解情绪、随时打断;Dia TTS:生成语音可带笑声、咳嗽声、清嗓子丨日报

声网

虚拟云环境中的高性能块设备:直通方法比较

Sergey Platonov

Performance 虚拟化 高性能计算,

设计脑机接口的实践指南_AI&大模型_Victor Delvigne_InfoQ精选文章