32导联 博睿康_赛题详情(Competition Details)-运动想象无训练数据集

32导联 博睿康_赛题详情(Competition Details)-运动想象无训练数据集实验范式简介 本实验原始 EEG 数据由博睿康 64 导联设备采集 仅包含 59 个导联的脑电数据 60 64 导联无效 采样率为 1000Hz 一次完整实验为一个 record 一名被试分 3 天完成多个 record 实验数据以 record 为单位 每个 record 中均为连续采集 EEG 数据 每个 record 包含前静息态 睁眼 1min

大家好,我是讯享网,很高兴认识大家。

实验范式简介

本实验原始EEG数据由博睿康64导联设备采集(仅包含59个导联的脑电数据,60-64导联无效),采样率为1000Hz。一次完整实验为一个record,一名被试分3天完成多个record;实验数据以record为单位,每个record中均为连续采集EEG数据。每个record包含前静息态(睁眼1min、闭眼1min)和5个block,block与block之间不少于1.5分钟的休息时间;每个block包括20*N个trial(每类运动想象任务20个trial,N:运动想象任务类别数,如N为2表示任务为左手运动想象和右手运动想象两类,如N为3表示任务为左手运动想象、右手运动想象、双脚运动想象三类),每个record过程如图1所示。

每个trial包含1.5s提示、4s运动想象任务、2s休息,事件标签开始于0时刻,如图2所示。以上不同任务相对应的标签信息如表1所示。


讯享网

图1  record过程

图2 单个trial运动想象流程图

表1 标签信息

比赛数据集简介

对实验范式获得的数据降频到250Hz,并将每个block中的运动想象任务阶段数据单独保存成一个*.mat文件(*代表block1~block5)。处理后具体数据格式见运动想象数据格式说明文档。

无训练赛题共挑选三位被试的运动想象数据,每位被试的block4、block5作为测试数据,经系统框架的数据模型封装后,由参赛者通过框架接口调取。无训练运动想象赛题,一次getData()获取0.1s数据。直到检测到结束标志为止,最终系统根据评分准则综合评分。

无训练运动想象数据集被试ID数据文件夹编号训练数据测试数据1测试数据2

1S1无block4block5

2S2无block4block5

3S3无block4block5

数据调用方法

测试数据:直接调用getData()获取0.1s的测试集数据,对于每个trial,参赛者最多只能通过getData()获取4s的数据长度就必须要调用report()返回计算结果,否则将按照超时由系统自动判为结果错误。参赛算法检测到finishedFlag为1后,需要自行结束run()方法执行。

数据导联编号表(博睿康64)

通道序号

导联名称'Fpz''Fp1''Fp2''AF3''AF4''AF7''AF8''Fz''F1''F2'

通道序号

导联名称'F3''F4''F5''F6''F7''F8''FCz''FC1''FC2''FC3'

通道序号

导联名称'FC4''FC5''FC6''FT7''FT8''Cz''C1''C2''C3''C4'

通道序号

导联名称'C5''C6''T7''T8''CP1''CP2''CP3''CP4''CP5''CP6'

通道序号

导联名称'TP7''TP8''Pz''P3''P4''P5''P6''P7''P8''POz'

通道序号

导联名称'PO3''PO4''PO5''PO6''PO7''PO8''Oz''O1''O2''ECG'

通道序号

导联名称HEORHEOLVEOUVEOL

反馈结果对照表

算法规范

参赛算法调用数据读取方法获取脑电数据。数据读取方法被调用一次,比赛系统会返回一个新数据包,参赛算法可以对新数据包进行处理,并调用反馈方法向比赛系统报告识别结果。

参赛算法需要同时满足以下几个约束条件:

1) 汇报起止约束:

参赛算法必须在接收到下一测试集之前报告当前测试集结果。否则,报告结果将被错判为后续测试集的识别结果。

2) 算法终止约束

当接收到数据包中finishedFlag = 1时,意味着所有实验数据均已发送完毕,参赛算法需要停止处理并自行退出。

评分指标

a) 综合考察目标识别准确率和单次目标选择时间

b)

对每个block求取一次ITR,依据所有测试数据的平均ITR得分作为参赛者最终得分进行排名。其中,Q表示目标个数,P表示识别正确率,T表示平均试次时长。ITR的单位是bits/min。

结果反馈异常处理

1) 重复多次报告

在一个试次时间内,参赛算法多次反馈结果,则仅按照第一次反馈的时间及结果进行记录。

2) 结果未反馈

若在一个试次时间内,参赛算法未反馈结果,结果将被记录为误判。

3) 算法执行超时

为满足脑-机接口系统实时处理需求,本项目同时对参赛算法的计算复杂度有一定要求。本比赛项目将会根据比赛数据量大小确定一个计算时间。若算法复杂度过高导致系统运行超时,则该算法比赛成绩将被视为无效。

参赛者用例

主体框架设计

接口函数

(1) ProblemInterface

比赛题目接口。包括数据获取方法及结果反馈方法。算法执行过程中,可以调用该接口获取数据,并通过结果反馈方法报告识别结果。

1) function dataModel = getData(obj)

输入参数:无

输出参数:DataModel类型对象

实现功能:获取下一分段实验数据。

2) function report(obj,reportModel)

输入参数:ReportModel类型对象

输出参数:无

实现功能:反馈识别结果。

(2) AlgorithmInterface

参赛算法接口。参赛者需要实现该接口,并将程序运行过程填入run()函数中。在算法执行过程中,通过ProblemInterface接口getData()方法获取DataModel类型数据,并通过report()方法返回ReportModel类型结果。当通过getData()获取的DataModel数据中finishedFlag为true时,意味着数据处理完毕,该函数需要自行退出运行。

1) function initial(obj)

输入参数:无

输出参数:无

实现功能:算法初始化参数

2) function run(obj)

输入参数:无

输出参数:无

实现功能:算法分析过程。

数据模型

(1) DataModel参赛者数据模型

1)

data:double类型矩阵,分段数据,例如包含有3导EEG数据在250Hz采样率下,以100ms对数据分段,则单次获取的data为3*25个点。

2) startPosition: double类型标量,当前分段数据起始时刻相对于该block数据起始时刻的索引位置

3) personID:double类型标量,当前数据来源受试者序号(有训练预留,在无训练条件下该值始终不变。)

4) finishedFlag:boolean类型标量,测试结束标志。

(2) ReportModel结果反馈模型

resultType: double类型标量,参赛者返回的识别结果。

开发示例

参见配套参考代码。

训练测试数据说明

每个被试共做了5个block数据,每个block包含40个trial(20个左手20个右手),每个trial包含4s的运动想象数据。本次大赛有训练赛题将提供前3个block作为训练数据,后2个block作为测试数据。

每个.mat文件中存放的数据如下图所示,前59个通道为被试进行运动想象任务时采集的脑电数据,60-64通道为空采数据(无用),第65个通道为标签。

标签说明:

Block开始:252

Trial开始:1(代表左手)或者2(代表右手)

Trial结束:251

Block结束:253

数据统一进行了250Hz的降频处理。

使用Matlab(matlab版本2019b)编写代码算法提交流程

参赛者代码提交格式,以有训练为例(无训练相同)。

在7z软件中选中自己的算法实现文件和config.toml文件,点击提取,压缩成.tar格式,再将生成的.tar文件压缩成.gz格式。

config.toml中内容如下图

参赛者定义计算单元及代码提交步骤见:https://dev.oneuro.cn/n/index.html#/anonguide/doc2

使用Python(python版本3.7)编写代码算法提交流程:

config.toml和pythonpath.sh文件内容如下图

将下图红色标记的三个文件同时打包

matlab调用python环境配置以及调用方法

#测试环境为python3.6.8,matlab2018b,win10

一、

进入系统的环境变量中,在系统变量中新建名为PYTHONPATH的变量,并将其值设置为python所需运行文件的路径。也可使用已生成的脚本工具一键导入路径(链接:

https://pan.baidu.com/s/1oFQOFBrtgNB6WvuyneWSwQ 提取码: g5uf )

注:该步骤仅针对需要调用自己编写的.py程序的情况,其余如调用numpy,scipy等官方库皆可跳过此步。

二、

调用格式为py.包名.函数名。如果全需导入可使用*代替

剩下的按照matlab的调用方式调用即可

注意,调用python的传入数据以及返回数据matlab有对应的转换关系,具体转换规则可查看matlab文档(https://ww2.mathworks.cn/help/matlab/python-data-types.html)

我这边需要的是返回的int64类型数据,则需要使用显式转换ans.int64

这时数据才可被matlab使用。

python离线库导出教程

本文将介绍如何将本地python库与其离线包批量导出以及python第三方库快速批量安装

一、 本地python库列表导出

先使用cd path进入到你需要保存列表文件的路径,path为所需路径

使用pip freeze > requirement.txt 导出文件requirement.txt

打开即可见本机已安装离线库列表

二、 离线库导出

pip download -d DIR -r LIST

其中,DIR为离线库导出路径,LIST为离线库列表路径

打开导出路径即可看到导出离线包文件

注意事项:

如遇到上图下载失败的情况,可先去requirement.txt中将报错对应包的那行删除,手动使用pip download -d DIR

ADDRESS下载,其中DIR为下载路径,ADDRESS为库的下载路径,下载后别忘记恢复删除的那行,不然安装的时候就少了那个包

三、 离线库快速安装

使用pip install --no-index --find-links=DIR -r

PATH,其中DIR为离线库文件夹路径,PATH为离线库列表文件路径

回车之后即可安装完成所有列表中的库(下图因为本机已有这个库,所以显示会有所差异)

注意事项:之前下载失败删除的库的那一行别忘了补回来

小讯
上一篇 2025-01-14 20:20
下一篇 2025-03-06 11:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28368.html