实验范式简介
本实验原始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为离线库列表文件路径

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

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