首页> 中国专利> 一种大规模脑-机接口算法实时测评系统

一种大规模脑-机接口算法实时测评系统

摘要

本发明公开了一种大规模脑‑机接口算法实时测评系统,涉及脑机接口系统开发技术领域,包括中央控制子系统、持久化子系统、数据采集子系统、刺激子系统、任务子系统、算法子系统及结果呈现子系统,各子系统之间通过Kafka消息中间件完成通信平台的搭建,实现各子系统之间的数据和指令交互;本发明通过提供通信组件、远程过程调用组件、循环数据池组件、Trigger控制组件和心跳组件帮助用户应用或扩展系统,通过提供权限控制和代码上传等辅助系统帮助提升系统的易用性,兼容多种编程语言编写的算法,通过纵向切分架构、模块化功能组件,打破了传统封闭式系统限制,保证代码的复用性,基于发布‑订阅模式子系统完全解耦,保证平台稳定性和可扩展性。

著录项

  • 公开/公告号CN116680163A

    专利类型发明专利

  • 公开/公告日2023-09-01

    原文格式PDF

  • 申请/专利权人 北京邮电大学;

    申请/专利号CN202310412146.6

  • 申请日2023-04-18

  • 分类号G06F11/36(2006.01);G06F8/60(2018.01);

  • 代理机构北京圣州专利代理事务所(普通合伙) 11818;

  • 代理人李春

  • 地址 100876 北京市海淀区西土城路10号

  • 入库时间 2024-01-17 01:27:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-19

    实质审查的生效 IPC(主分类):G06F11/36 专利申请号:2023104121466 申请日:20230418

    实质审查的生效

  • 2023-09-01

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及脑机接口系统开发技术领域,具体涉及一种大规模脑-机接口算法实时测评系统。

背景技术

近年来,得益于计算机技术飞速发展,脑-机接口作为一种全新的人-机接口技术已引起广泛关注。截至目前,国内外有很多的实验室都在对不同范式的脑-机接口算法展开了深入研究,在整个算法研究过程中,算法研究人员需要通过在线实验不断对算法进行测评和验证,并根据测评结果对算法进行优化,对于主流脑-机接口实验范式而言,完成一次实时脑电数据处理,至少需要两个过程,即脑电数据采集过程与脑电数据处理过程。对于稳态视觉诱发电位、快速序列视觉呈现任务等依赖视觉刺激的范式而言,刺激呈现过程也必不可少。这需要算法研究人员搭建自己的算法测评系统,然而这部分的工作往往是重复且无关于算法性能提升的,如何客观、高效地实现各类算法对比测评,如何可靠、公正地完成系统评估验证则成为一道摆在学术界面前的难题。

因此,有必要提供一种大规模脑-机接口算法实时测评系统,来解决上述问题。

发明内容

本发明目的是提供一种大规模脑-机接口算法实时测评系统,实时在线的方式对不同范式的脑机接口多套算法分别对应多被试的脑电数据同步进行测评,确保公平与规范。

为实现上述目的,本发明提供了一种大规模脑-机接口算法实时测评系统,包括中央控制子系统、持久化子系统、数据采集子系统、刺激子系统、任务子系统、算法子系统及结果呈现子系统,各个子系统之间通过Kafka消息中间件完成通信平台的搭建,实现各个子系统之间的数据和指令交互。

优选的,各个子系统之间的数据和指令交互包括以下步骤:

S1:刺激子系统刺激产生脑电数据;

S2:数据采集子系统从采集软件接收数据并发到通信平台指定topic;

S3:持久化子系统从该topic获取数据进行持久化存储,任务子系统从该topic获取数据并对数据进行缓存;

S4:算法子系统通过RPC远程调用从任务子系统获取经过预处理的数据进行分析处理,并通过RPC远程调用反馈判别结果到任务子系统;

S5:任务子系统将算法子系统反馈的结果封装成要呈现的结果发送到通信平台指定topic;

S6:结果呈现子系统从该topic获取结果进行呈现,中央控制子系统从该topic获取结果,将其中作为刺激反馈算法汇报的结果发送给刺激子系统;

S7:刺激子系统呈现中央控制子系统的反馈。

优选的,所述刺激子系统包括刺激应用程序、刺激子系统框架和刺激子系统功能模块,所述刺激子系统功能模块包括刺激控制模块、通信模块和日志模块,所述刺激控制模块包括刺激生成、刺激范式、Trigger控制和反馈呈现;刺激控制模块控制刺激的运行流程,刺激子系统将刺激流程划分为六个状态,分别为:刺激初始化状态、block准备状态、trial准备状态、刺激状态、trial结束状态、block结束状态;

刺激初始化状态,进行实验前的准备工作,创建刺激窗口,加载刺激资源、呈现实验说明;

block准备状态,进行刺激序列生成,绘制初始界面及倒计时提示,发送block开始trigger操作;

trial准备状态,进行刺激目标确定,绘制刺激提示,发送trial开始trigger;

刺激状态,呈现具体的范式刺激,SSVEP的目标闪烁;

trial结束状态,进行trial结束trigger的发送,等待反馈结果并呈现,系统根据block准备阶段确定的Trial数量决定继续下一个Trial或是结束当前block;

block结束状态,进行block结束trigger的发送,绘制本组实验结束提示语,等待被试休息。

优选的,所述数据采集子系统包括数据采集应用程序、数据采集子系统框架和数据采集子系统功能模块,所述数据采集子系统功能模块包括数据接收模块、数据解析模块、数据封装模块、日志模块和通信模块;

数据接收模块通过TCP/IP的方式与厂商软件建立连接,数据接收模块获取包含脑电数据和Trigger数据在内的原始数据,并将原始的二进制数据传递给数据解析模块进行解析;

数据解析模块按照不同的传输协议将二进制原始数据转换为矩阵数据,包含若干导联的脑电数据及一导联Trigger数据,通过裁剪或拼接的方式将数据包统一为标准大小;

数据封装模块根据统一数据结构对解析后的数据包进行封装,封装后的数据经过通信模块提供的生产者接口发送至通信平台。

优选的,持久化子系统提供通用的存储和查询接口,持久化子系统基于MVC模式对外暴露查询接口,该接口由用户调用将存储数据发送至通信平台固定的Topic,持久化子系统持续订阅该Topic以实时获取数据;

所述持久化子系统包括持久化应用程序、持久化子系统框架、数据库服务和持久化子系统功能模块,所述持久化子系统功能模块包括持久化模块、通信模块、日志模块和心跳模块,所述持久化模块包括测试结果存储和数据存储;

数据解析模块将接收的结构化数据转换为标准数据实体并调用数据库访问接口将数据存储至数据库,非结构化数据系统以字节流的形式存储在磁盘。

优选的,所述算法子系统包括算法应用程序、算法子系统框架、算法子系统功能模块,所述算法子系统功能模块包括通信模块、算法实现模块和日志模块,所述通信模块包括获取数据和反馈结果;

算法实现模块依赖通信代理对象,调用通信代理对象提供的get_data方法获取数据以及report方法汇报结果,通信代理对象依赖RPC代理对象,RPC代理对象实现远程调用逻辑,算法实现模块调用方法接口时,RPC代理对象会先封装请求对象,调用RPCStub提供的请求方法向服务端发送请求,RPCStub对象返回cid作为本次RPC调用的唯一标识,RPC代理对象同步等待远程调用结果,以cid为查询条件从RPCStub对象中获取远程调用结果并返回给算法实现模块,RPCStub对象独立线程运行。

优选的,算法子系统通过RPC的方式与任务子系统交互,实现算法子系统和任务子系统之间的解耦,所述任务子系统包括任务应用程序、任务子系统框架、任务子系统功能模块,所述任务子系统功能模块包括具体任务模块、任务管理模块、通信模块、日志模块和心跳模块,所述具体任务模块包括数据预处理和评分,所述任务管理模块包括状态维护、算法请求处理和数据缓冲池,所述通信模块包括注册连接和事件读取;

算法子系统作为RPC的客户端向任务子系统发送连接请求,任务子系统的Reactor对象接收算法子系统连接并为该连接绑定数据读取事件,算法子系统发送数据时会触发任务子系统的数据读取事件,服务端将该事件解析并封装为请求对象传递给任务管理模块,任务管理模块完成对算法子系统的状态维护和请求处理,任务管理模块要处理的算法请求包括为获取数据请求和为结果汇报请求。

优选的,中央控制器子系统提供微服务架构中注册中心的功能,所述中央控制子系统包括中央控制应用程序、中央控制子系统框架、中央控制子系统功能模块,所述中央控制子系统功能模块包括服务注册模块、服务发现模块、心跳检测模块、通信模块、日志模块和多级事件处理模块,所述多级事件处理模块包括事件分组和事件处理;

服务注册模块,帮助服务以临时实例的形式将其服务名称和IP地址信息注册到中央控制器;

服务发现模块,帮助服务调用者通过信息获取所需服务的IP地址,通过RPC的方式向服务端发起远程调用;

心跳检测模块,对已完成注册的服务进行健康检测,对不健康的实例进行过滤;中央控制器暴露标准Rest风格的HTTP接口。

优选的,结果呈现子系统由线下结果呈现子系统和线上结果呈现子系统组成,线下结果呈现子系统基于PyQT编写,以trial为单位实时展示单被试下所有运行算法的计算结果;线上结果呈现子系统基于JavaWeb技术编写,以block为单位展示平台当前所有范式任务下所有被试对应的所有算法的计算成绩。

因此,本发明采用上述一种大规模脑-机接口算法实时测评系统,具备以下有益效果;

(1)本发明支持分布式部署,这决定了刺激子系统可单独部署于独立计算机上,以获取独享的中央处理器和显卡资源,更有利于保障刺激稳定性。

(2)本发明可以通过新增子系统接入通信平台快速融入整个系统,无需影响原本其他子系统,系统优化也可以只针对于对应子系统完成,大大降低了整个系统的升级维护成本。

(3)本发明各子系统之间完全通过通信平台进行交互,业务功能完全解耦。

(4)本发明系统搭建无需组装大量的硬件资源,打破了脑-机接口应用的地域限制,提升了脑-机接口系统应用的便携性。

(5)本发明各子系统及其运行所需环境封装成docker镜像,彼此独立互不影响,用户直接通过镜像运行容器即可完成子系统的部署,同时算法子系统的容器启动脚本也预留了安装额外依赖的命令,可以轻松完成不同算法所需环境的搭建。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1是本发明一种大规模脑-机接口算法实时测评系统的结构设计图;

图2是本发明的刺激状态转移图;

图3是本发明的数据采集子系统与其他相关的子系统连接关系图;

图4是本发明的算法子系统接入整个测评系统的过程图;

图5是本发明的RPCStub对象运行流程图;

图6为本发明的任务子系统单Reactor多线程模式图;

图7为本发明的中央控制器作为注册中心的功能图;

图8为本发明的持久化系统的数据接收和查询过程图;

图9为本发明的消息中间件的消息流向图;

图10为本发明的脑-机接口算法测评系统本地部署图;

图11为本发明的云端部署方案图;

具体实施方式

以下通过附图和实施例对本发明的技术方案作进一步说明。

除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

实施例

在本实施案例中,一种大规模脑-机接口算法实时测评系统,如图1所示,包括中央控制子系统、持久化子系统、数据采集子系统、刺激子系统、任务子系统、算法子系统及结果呈现子系统,各个子系统之间通过Kafka消息中间件完成通信平台的搭建,实现各个子系统之间的数据和指令交互。

各个子系统之间的数据和指令交互包括以下步骤:

S1:刺激子系统刺激产生脑电数据;

S2:数据采集子系统从采集软件接收数据并发到通信平台指定topic;

S3:持久化子系统从该topic获取数据进行持久化存储,任务子系统从该topic获取数据并对数据进行缓存;

S4:算法子系统通过RPC远程调用从任务子系统获取经过预处理的数据进行分析处理,并通过RPC远程调用反馈判别结果到任务子系统;

S5:任务子系统将算法子系统反馈的结果封装成要呈现的结果发送到通信平台指定topic;

S6:结果呈现子系统从该topic获取结果进行呈现,中央控制子系统从该topic获取结果,将其中作为刺激反馈算法汇报的结果发送给刺激子系统;

S7:刺激子系统呈现中央控制子系统的反馈。

如图2所示,刺激子系统包括刺激应用程序、刺激子系统框架和刺激子系统功能模块,刺激子系统功能模块包括刺激控制模块、通信模块和日志模块,刺激控制模块包括刺激生成、刺激范式、Trigger控制和反馈呈现;刺激控制模块控制刺激的运行流程,刺激子系统将刺激流程划分为六个状态,分别为:刺激初始化状态、block准备状态、trial准备状态、刺激状态、trial结束状态、block结束状态。

刺激模式统一使用block-trial刺激模式,trial作为一个单独的实验事件,是实验的基本单位也是算法反馈的基本单位。一个trial通常包括呈现某种刺激,如一次SSVEP实验的闪烁或一次左手的运动想象,block作为一组独立的实验的集合存在,block之间相互独立,一个block通常包含多个trial,这些trial一般采用相同的实验设计,但呈现不同的刺激目标。

通常情况下,系统会以block为单位评价算法的性能、准确率等指标。

刺激初始化状态,进行实验前的准备工作,创建刺激窗口,加载刺激资源、呈现实验说明。

block准备状态,进行刺激序列生成,绘制初始界面及倒计时提示,发送block开始trigger操作。

trial准备状态,进行刺激目标确定,绘制刺激提示,发送trial开始trigger。

刺激状态,呈现具体的范式刺激,SSVEP的目标闪烁。

trial结束状态,进行trial结束trigger的发送,等待反馈结果并呈现,系统根据block准备阶段确定的Trial数量决定继续下一个Trial或是结束当前block。

block结束状态,进行block结束trigger的发送,绘制本组实验结束提示语,等待被试休息。根据配置文件中设定的block数量决定继续进行下一个block实验或是结束实验。该发明提出的系统支持分布式部署,这决定了刺激子系统可单独部署于独立计算机上,以获取独享的中央处理器和显卡资源,更有利于保障刺激稳定性。

数据采集子系统包括数据采集应用程序、数据采集子系统框架和数据采集子系统功能模块,数据采集子系统功能模块包括数据接收模块、数据解析模块、数据封装模块、日志模块和通信模块。

如图3所示,数据接收模块通过TCP/IP的方式与厂商软件建立连接,数据接收模块获取包含脑电数据和Trigger数据在内的原始数据,并将原始的二进制数据传递给数据解析模块进行解析。

数据解析模块按照不同的传输协议将二进制原始数据转换为矩阵数据,包含若干导联的脑电数据及一导联Trigger数据,通过裁剪或拼接的方式将数据包统一为标准大小。

数据封装模块根据统一数据结构对解析后的数据包进行封装,封装后的数据经过通信模块提供的生产者接口发送至通信平台。

如图8所示,持久化子系统提供通用的存储和查询接口,持久化子系统基于MVC模式对外暴露查询接口,该接口由用户调用将存储数据发送至通信平台固定的Topic,持久化子系统持续订阅该Topic以实时获取数据。

持久化子系统包括持久化应用程序、持久化子系统框架、数据库服务和持久化子系统功能模块,持久化子系统功能模块包括持久化模块、通信模块、日志模块和心跳模块,持久化模块包括测试结果存储和数据存储。

数据解析模块将接收的结构化数据转换为标准数据实体并调用数据库访问接口将数据存储至数据库,非结构化数据系统以字节流的形式存储在磁盘。

算法子系统包括算法应用程序、算法子系统框架、算法子系统功能模块,算法子系统功能模块包括通信模块、算法实现模块和日志模块,通信模块包括获取数据和反馈结果。

如图4-图5所示,算法实现模块依赖通信代理对象,调用通信代理对象提供的get_data方法获取数据以及report方法汇报结果,通信代理对象依赖RPC代理对象,RPC代理对象实现远程调用逻辑,算法实现模块调用方法接口时,RPC代理对象会先封装请求对象,调用RPCStub提供的请求方法向服务端发送请求,RPCStub对象返回cid作为本次RPC调用的唯一标识,RPC代理对象同步等待远程调用结果,以cid为查询条件从RPCStub对象中获取远程调用结果并返回给算法实现模块,RPCStub对象独立线程运行。

在算法子系统初始化阶段,RPCStub对象会通过socket对象尝试连接服务器,如果连接失败则会继续尝试连接,连接成功后,RPCStub对象开始从服务端接收数据,基于本系统制定的RPC传输协议,如果接收数据不完整则会继续接收并拼接服务端发送的二进制数据。当数据完整时,进行数据解码并将结果保存在结果集当中供RPCProxy对象获取。对于每次RPC调用,其返回结果只能被使用一次,当RPCProxy对象取走结果后,RPCStub对象会删除本次调用返回的结果,防止内存溢出。如果算法模块未运行结束,RPCStub线程会一直监听服务端回传数据,直到算法实现模块运行结束,该线程停止运行。

算法子系统通过RPC的方式与任务子系统交互,实现算法子系统和任务子系统之间的解耦,任务子系统包括任务应用程序、任务子系统框架、任务子系统功能模块,任务子系统功能模块包括具体任务模块、任务管理模块、通信模块、日志模块和心跳模块,具体任务模块包括数据预处理和评分,任务管理模块包括状态维护、算法请求处理和数据缓冲池,通信模块包括注册连接和事件读取。

如图6所示,算法子系统作为RPC的客户端向任务子系统发送连接请求,任务子系统的Reactor对象接收算法子系统连接并为该连接绑定数据读取事件,算法子系统发送数据时会触发任务子系统的数据读取事件,服务端将该事件解析并封装为请求对象传递给任务管理模块,任务管理模块完成对算法子系统的状态维护和请求处理,任务管理模块要处理的算法请求包括为获取数据请求和为结果汇报请求。

在处理获取数据请求时,任务管理模块会维护相应的状态信息,当前实验的trial信息、数据读取信息等。对于trial信息,任务管理模块会记录当前trial的Trigger事件以及算法端已读取的数据长度等信息。对于数据读取信息,任务管理模块会维护一个数据读指针,该指针用于在接收到获取数据请求后返回具体数据给算法客户端。

如图7所示,中央控制器子系统提供微服务架构中注册中心的功能,中央控制子系统包括中央控制应用程序、中央控制子系统框架、中央控制子系统功能模块,中央控制子系统功能模块包括服务注册模块、服务发现模块、心跳检测模块、通信模块、日志模块和多级事件处理模块,多级事件处理模块包括事件分组和事件处理。

服务注册模块,帮助服务以临时实例的形式将其服务名称和IP地址信息注册到中央控制器。

服务发现模块,帮助服务调用者通过信息获取所需服务的IP地址,通过RPC的方式向服务端发起远程调用。

心跳检测模块,对已完成注册的服务进行健康检测,对不健康的实例进行过滤;中央控制器暴露标准Rest风格的HTTP接口。

结果呈现子系统由线下结果呈现子系统和线上结果呈现子系统组成,线下结果呈现子系统基于PyQT编写,以trial为单位实时展示单被试下所有运行算法的计算结果;包括本次trial的正确结果、所有算法计算的结果、所有算法的计算用时等信息。线上结果呈现子系统基于JavaWeb技术编写,以block为单位展示平台当前所有范式任务下所有被试对应的所有算法的计算成绩,包括算法的成绩、排名等信息。

线下结果呈现子系统会显示范式信息、被试信息、block信息、trial信息以及参与本次算法测试的用户名称和头像,同时展示所有算法在当前trial的得分柱状图和所有算法本次trial所用的计算时间、相关日志输出信息。

线上结果呈现子系统,用户可以选择查看被试测评信息或是算法测评信息。针对被试测评信息,系统将综合被试在所有范式任务下所有算法的得分情况给出被试排名。针对算法测评信息,用户可以选择某一范式任务下的某一算法,查看该算法某个block对应的不同被试的得分情况;用户也可以选择某一被试的某一block,查看该被试的该block下,所有算法的得分和排名情况。

如图9所示,通信平台的设计:Kafka消息中间件具有顺序写入、内存文件映射(MemoryMappedFiles,MMFile)以及零拷贝技术实现等特性,可以保证高数据吞吐量以及高速率数据传输,即使数据量过于庞大,也可以通过部署集群的方式来解决。如图9所示,各个子系统通过在消息中间件中创建并订阅Topic来进行通信。生产者将消息发送至消息中间件对应的Topic,消息会被保存在该Topic对应的消息队列当中,消费者通过订阅该Topic从消息队列中拉取并消费消息。消息中间件会为每个订阅该Topic的消费者维护一个索引值,索引值指向该消费者下一次需要消费的消息,以此来实现一对多的广播模式。

如图10-图11所示,本发明提出的一种大规模脑-机接口算法实时测评系统支持全本地化部署和本地、云端联合部署,使用者可以结合实际应用场景选择合适的部署方式。

实施例一:

本地部署:各个子系统以独立进程的方式运行,只要位于同一局域网内,各子系统即可访问中央通信平台完成与其他子系统的内部通信。硬件部分包括脑电放大器和trigger设备,被试者需要佩戴脑电放大器与采集子系统所在的计算机建立有线或者无线连接,trigger设备通过通用串行总线、并口或者光闪方式与刺激子系统所在的计算机相连并通过路由器与脑电放大器建立连接。在同步脑-机接口系统中,使用者可以直接调用我们提供的trigger模块向脑电数据中打入trigger事件,该trigger模块可以支持刺激应用开发者使用Python、Matlab或者C#等语言开发刺激范式。本地部署方式主要面向单被试小规模的应用。上述设备中刺激子系统、采集子系统和脑电放大器、trigger等脑电采集设备应该与被试者处在同一空间中,如果计算机性能较高或者刺激应用对计算机性能的要求较低,将这些组件部署在同一台计算机上。如果单机性能不足以满足系统性能需求时,建议子系统分布式部署,然后通过网络设备将所有子系统接入同一局域网内,即可组成脑-机接口算法测评系统。

实施例二:

云端部署:将算法子系统、任务子系统、持久化子系统作为数据处理单元部署在云服务器上,线上结果呈现子系统作为单独应用部署在云服务器上,方便用户直接通过外网进行访问,中央控制器子系统作为独立微服务通过高可用的方式部署在云服务器上稳定提供服务,同时通过云端Kafka搭建的通信平台与部署在本地的刺激子系统和采集子系统进行数据和指令的交互。该部署方式充分利用云平台庞大的计算资源,为复杂脑-机接口算法以及大规模的脑-机接口算法测评提供强大算力保证。

因此,本发明采用上述提出一种大规模脑-机接口算法实时测评系统,实时在线的方式对不同范式的脑机接口多套算法分别对应多被试的脑电数据同步进行测评,确保公平与规范。

最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号