当前位置: 首页 > news >正文

25、新加坡南洋理工、新加坡国立大学提出FBCNet:完美融合FBCSP的CNN,EEG解码SOTA水准![抱歉老师,我太想进步了!]

前言:

阴阳差错,因工作需要,需要查阅有关如何将FBCSP融入CNN中的文献,查阅全网,发现只此一篇文章,心中大喜,心想作者哪家单位,读之,原来是自己大导(新加坡工程院院士)目前任职的高校,心里斐然,平台在那,这实验室别人喝漏的矿泉水拿过来都能发个CVPR。院士资源,高山仰止。

论文:

《FBCNet: A Multi-view Convolutional Neural Network for Brain-Computer Interface》

2021年3月17日arXiv<Computer Science>

代码:

https://github.com/ravikiran-mane/FBCNet.

本文完美的将机器学习FBCSP与深度学习CNN相结合,性能超越了FBCSP达到了脑电解码的SOTA水准!

0、Abstract:

缺乏足够的训练样本和噪声高维特征是基于脑机接口(BCI)的运动图像(MI)解码算法面临的主要挑战。为了解决这些挑战,受脑梗死神经生理特征的启发,本文提出了一种新的用于脑梗死分类的Filter-Bank卷积网络(FBCNet)。FBCNet采用多视图数据表示和空间滤波来提取光谱空间判别特征。这种多阶段方法可以在训练数据有限的情况下有效地训练网络。更重要的是,在FBCNet中,我们提出了一种新的方差层,可以有效地聚合脑电时域信息。通过这种设计,我们将FBCNet与最先进的(SOTA) BCI算法在四个MI数据集上进行比较:BCI竞赛IV数据集2a (bbic -IV-2a)、OpenBMI数据集和两个来自慢性卒中患者的大型数据集。结果表明,FBCNet为bbic - iv -2a数据集建立了新的SOTA, 4类分类准确率达到76.20%。在其他三个数据集上,FBCNet的二值分类准确率提高了8%。此外,使用可解释的人工智能技术,我们提出了关于健康受试者和中风患者之间判别性脑电图特征差异的首批报告之一。

1、Introduction:

本文的主要贡献如下:

1.提出了一种紧凑且受神经生理学启发的CNN架构FBCNet,用于MI分类

2.为有效提取脑电图时间信息和减少参数,提出了一种新颖的方差层。

3.在慢性中风患者心肌梗死解码中首次将经典机器学习算法和深度学习构架进行了比较

4..我们的研究表明,对于中风患者,经典的机器学习方法可能优于通用的深度学习架构,但在FBCNet中所做的那样,仔细融合深度学习方法和MI的神经生理学知识,可以对健康受试者和中风患者实现最佳的分类精度。

2、Related Works:

许多经典的机器学习技术已经被提出用于EEG-MI分类,在[12]中可以找到它们的广泛总结。其中,FBCSP是最成功的算法之一[6],其设计理念与FBCNet相似。因此,我们直接比较FBCNet和FBCSP的结果。

近年来,许多深度学习架构也被提出用于EEG-BCI领域[7]-[10],[21]。其中,Deep ConvNet[7]和EEGNet[9]是在EEG社区中得到广泛应用的两种架构,并提供了开源代码实现。因此,我们使用这两种架构与FBCNet在所有评估数据集中进行比较。最后,我们根据BCI竞争IV-2a数据集上报告的准确性,将FBCNet与许多最新架构的性能进行了比较。

3、Method:

FBCNet的设计目的是有效地提取MI特征的光谱空间判别信息,同时避免小数据集存在的过拟合问题。FBCNet架构的核心由以下四个阶段组成:

1.多视角数据表示:通过多个窄的带通滤波器对原始脑电图进行频谱滤波,得到脑电数据的多视图表示。

2.空间转换学习:然使用深度卷积层学习每个视图的空间判别模式。

3.时间特征提取:在空间变换的基础上,采用一种新的方差层来有效地提取时间信息

FBCNet模型图

模型解析:

3.1 Spectral Localization by Multi-view Data Representation

其中,输入数据 Raw EEG:

标签y:

C:通道数;T:时间点,Nc:不同类别总数

脑电数据中与心肌梗死相关的信息存在于mu (8- 12hz)和beta (12-32Hz)频段,所以为了定位到这种判别信息,使用多视角数据表示:其中每一个视图代表一个不同频段的滤波器。

多视图表示为:

其中,原始EEG信号=x(上面已提到),滤波器组为:

滤波器组F由Nb个时间滤波器构成,对原始脑电信号x进行滤波操作,沿着XFB的第三维度——时间序列变化进行频谱局域化,即:

其中,

是带通滤波

问题:对于每个滤波器截止频段的设计,论文指出:

1.滤波器组F本可以由任意数量的截止频率不同的滤波器组成

2.但本模型使用Nb=9个滤波器组成滤波器组,每个频带4hz,从4-40hz,每4hz一段(4- 8,8 -12,…), 36-40赫兹)

3.滤波使用切比雪夫II型滤波器过渡带宽为=2Hz阻带纹波为=-30dB

以上这种滤波器组的选择源于FBCSP算法中提出的传统脑电图神经学显著谱带划分,该划分方法已被证明实现了良好的分类精度。

3.2 Spatial Localization by CNN

使用空间卷积块实现EEG信号的空间定位:

Spatial Convolution Block(SCB) = Depth_Conv2d+BN+Swish,kernel_size=(C,1)

注意:

1.深度卷积的使用导致每个滤波器只与一个频带EEG相关联,深度参数m控制每个频带的空间滤波器的数量。

2.卷积核(C,1)可以跨越所有通道,有效地充当空间过滤器

3.在每个卷积核的权重上使用最大范数=2来正则化每个卷积核

此时,之前滤波器组输出为

SCB输出:

所以,SCB输出的时间序列为:

其中,m=32

3.3 Temporal Feature Extraction by Variance Layer

原始EEG数据通常沿时间维度包含大量特征,这些特征表现出最大的类内方差和高噪声含量。因此,为了避免分类模型的过拟合,有必要通过有效提取最相关的时间信息来降低时间维特征。最大池化或平均池化策略是用于降低特征维数的最常用技术。然而,考虑到不同类型的MI的频谱功率(ERD/ERS)不同,方差运算代表给定时间序列的频谱功率成为EEG时间表征更合适的选择。因此,为了有效地提取时间判别信息,我们提出了一种新的方差层,该层通过计算时间序列的方差来表征时间序列。在正向传递中,对于任意时变信号g(t)方差层的输出为:

其中,T=时间总点数;u是g(t)的平均值

在神经网络学习阶段(反向传播阶段),方差层对脑电数据的影响更为显著。对于任意一个神经网络,如果:

方差层的输入损失,那么这一层对输入g(t)的反向传播损失Lg(t):

看出:

方差层的反向传播损耗ug(t)以及信号均值的偏差成正比。

所以:

方差层通过为这些点分配更高比例的输入梯度,为远离均值的信号点提供了更多的重要性。

并且:

这也与脑电图的特征相一致,其中以ERD或ERS的形式偏离平均值是心肌梗死的明显特征。

最后:

SCB的输出被传递到方差层,它计算大小为w的非重叠窗口中单个时间序列的时间方差,整个时间范围内应用方差层将特征的数量从:

减少到:

从而实现了高度的特征减少。窗口长度w=15

3.4 Classification

方差层提取的特征通激活,然后送给FC层。然后将FC的输出传递给softmax层,以获得每个类的输出概率。使用最大范数=0.5对FC层权值进行正则化:

4、Datasets

  1. BCIC-IV-2A Data: A 4 class MI data from BCI Competition IV Dataset 2A [26].

  2. OpenMBI Data: A 2 class MI data from Korea University EEG dataset [27].

  3. Stroke Data: A: A 2 class MI vs rest dataset [4].

  4. Stroke Data: B: A 2 class MI vs rest dataset [28].

5、 Experiments

10折交叉验证:9训练,1测试

Adam,Lr=0.001,betas=0.9,0.999

对数交叉熵损失

早停法,连续epoch=200停

6、Results

FBCNet在2a数据中Average_acc= 79%

7、Academician Dog Egg Black

不是,咱就是说你每天别光睡觉,睡起来就玩小球和逗猫棒,有点远大的抱负好不,比如通过你自己的努力,选上了工程院院士,我也好沾沾狗蛋你的光!

狗蛋:我就是一只小猫咪,我睡会觉咋了?

相关文章:

25、新加坡南洋理工、新加坡国立大学提出FBCNet:完美融合FBCSP的CNN,EEG解码SOTA水准![抱歉老师,我太想进步了!]

前言&#xff1a; 阴阳差错&#xff0c;因工作需要&#xff0c;需要查阅有关如何将FBCSP融入CNN中的文献&#xff0c;查阅全网&#xff0c;发现只此一篇文章&#xff0c;心中大喜&#xff0c;心想作者哪家单位&#xff0c;读之&#xff0c;原来是自己大导&#xff08;新加坡工…...

单调栈分类、封装和总结

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 通过枚举最小&#xff08;最大&#xff09;值不重复、不遗漏枚举所有子数组 C算法&#xff1a;美丽塔O(n)解法单调栈左右寻找第一个小于maxHeight[i]的left,right&#xff0c;[left,right]直接的高度都是maxHeight[i] 可以…...

【Amazon 实验①】使用 Amazon CloudFront加速Web内容分发

文章目录 实验架构图1. 准备实验环境2. 创建CloudFront分配、配置动、静态资源分发2.1 创建CloudFront分配&#xff0c;添加S3作为静态资源源站2.2 为CloudFront分配添加动态源站 在本实验——使用CloudFront进行全站加速中&#xff0c;将了解与学习Amazon CloudFront服务&…...

<math.h> 头文件:C语言数学库函数

文章目录 概述基本算术运算sqrt()fabs()pow() 三角函数sin()cos() 对数函数log()log10() 指数函数exp() 其他函数ceil()floor() 结语 概述 math.h 是C语言标准库中的头文件&#xff0c;提供了许多与数学运算相关的函数。在本文中&#xff0c;我们将深入讨论一些 math.h 中常用…...

1.CentOS7网络配置

CentOS7网络配置 查看网络配置信息 ip addr 或者 ifconfig 修改网卡配置信息 vim /etc/sysconfig/network-scripts/ifcfg-ens192 设备类型&#xff1a;TYPEEthernet地址分配模式&#xff1a;BOOTPROTOstatic网卡名称&#xff1a;NAMEens192是否启动&#xff1a;ONBOOTye…...

Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术

Hertz A, Mokady R, Tenenbaum J, et al. Prompt-to-prompt image editing with cross attention control[J]. arXiv preprint arXiv:2208.01626, 2022. Prompt-to-Prompt 是 Google 提出的一种全新的图像编辑方法&#xff0c;不同于任何传统方法需要用户指定编辑区域&#xff…...

搭载紫光展锐芯的移远通信RedCap模组顺利通过中国联通OPENLAB实验室认证

近日&#xff0c;移远通信联合紫光展锐在中国联通5G物联网OPENLAB开放实验室&#xff0c;完成了RedCap模组RG207U-CN端到端测试验收&#xff0c;并获颁认证证书。移远通信RG207U-CN成为业内率先通过联通OPENLAB认证的紫光展锐RedCap芯片平台的模组。 本次测试基于联通OPENLAB实…...

16-高并发-队列术

队列&#xff0c;在数据结构中是一种线性表&#xff0c;从一端插入数据&#xff0c;然后从另一端删除数据。 在我们的系统中&#xff0c;不是所有的处理都必须实时处理&#xff0c;不是所有的请求都必须实时反馈结果给用户&#xff0c;不是所有的请求都必须100%一次性处理成功…...

【设计模式-2.5】创建型——建造者模式

说明&#xff1a;本文介绍设计模式中&#xff0c;创建型设计模式中的最后一个&#xff0c;建造者模式&#xff1b; 入学报道 创建型模式&#xff0c;关注于对象的创建&#xff0c;建造者模式也不例外。假设现在有一个场景&#xff0c;高校开学&#xff0c;学生、教师、职工都…...

VideoPoet: Google的一种用于零样本视频生成的大型语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

pytest常用命令行参数

文章目录 一、前置说明二、操作步骤1. 命令行中执行:pytest2. 命令行中执行:pytest - v3. 命令行中执行:pytest -s4. 命令行中执行:pytest -k test_addition5. 命令行中执行:pytest -k test_pytest_command_params.py6. 命令行中执行:pytest -v -s -k test_pytest_comman…...

05. Springboot admin集成Actuator(一)

目录 1、前言 2、Actuator监控端点 2.1、健康检查 2.2、信息端点 2.3、环境信息 2.4、度量指标 2.5、日志文件查看 2.6、追踪信息 2.7、Beans信息 2.8、Mappings信息 3、快速使用 2.1、添加依赖 2.2、添加配置文件 2.3、启动程序 4、自定义端点Endpoint 5、自定…...

AI生成SolidUI-新版本架构调试Debug

背景 SolidUI 0.5.0 版本重构全新版本架构。 dev-python 新架构临时分支&#xff0c;架构调整完后&#xff0c;所有代码合并到dev分支 https://github.com/CloudOrc/SolidUI 使用 设置参数 FLASK_DEBUG 设置 在开发过程中&#xff0c;Web框架的服务器通常会监视代码的变…...

ctfshow sql 195-200

195 堆叠注入 十六进制 if(preg_match(/ |\*|\x09|\x0a|\x0b|\x0c|\x0d|\xa0|\x00|\#|\x23|\|\"|select|union|or|and|\x26|\x7c|file|into/i, $username)){$ret[msg]用户名非法;die(json_encode($ret));}可以看到没被过滤&#xff0c;select 空格 被过滤了&#xff0c;可…...

微信小程序实现地图功能(腾讯地图)

微信小程序实现地图功能(腾讯地图) 主要功能 通过微信 API 获取用户当前位置信息 使用腾讯地图 API 将经纬度转换为地址信息 显示当前位置信息以及周围的 POI&#xff08;兴趣点&#xff09; 代码实现 index.wxml <!-- index.wxml --> <view class"container&…...

Vue如何请求接口——axios请求

1、安装axios 在cmd或powershell打开文件后&#xff0c;输入下面的命令 npm install axios 可在项目框架中的package.json中查看是否&#xff1a; 二、引用axios import axios from axios 在需要使用的页面中引用 三、get方式使用 get请求使用params传参,本文只列举常用参数…...

【数据结构一】初始Java集合框架(前置知识)

Java中的数据结构 Java语言在设计之初有一个非常重要的理念便是&#xff1a;write once&#xff0c;run anywhere&#xff01;所以Java中的数据结构是已经被设计者封装好的了&#xff0c;我们只需要实例化出想使用的对象&#xff0c;便可以操作相应的数据结构了&#xff0c;本篇…...

直接将第三方数据插入到 Redis 中

Redis 是一个内存数据库&#xff0c;可以用于缓存和持久化数据。虽然常见的使用场景是将数据从关系型数据库&#xff08;如MySQL&#xff09;同步到 Redis 中进行缓存&#xff0c;但也可以直接将第三方数据插入到 Redis 中。 你可以通过编程语言的 Redis 客户端库&#xff08;…...

【重点】【DP】322.零钱兑换

题目 法1&#xff1a;动态规划 // 时间复杂度&#xff1a;O(kN) class Solution {public int coinChange(int[] coins, int amount) {int[] dp new int[amount 1];Arrays.fill(dp, amount 1);dp[0] 0;for (int i 1; i < dp.length; i) {for (int coin : coins) {if (…...

Python入门学习篇(六)——for循环while循环

1 for循环 1.1 常规for循环 1.1.1 语法结构 for 变量名 in 可迭代对象:# 遍历对象时执行的代码 else:# 当for循环全部正常运行完(没有报错和执行break)后执行的代码1.1.2 示例代码 print("----->学生检查系统<------") student_lists["张三",&qu…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

Python的__call__ 方法

在 Python 中&#xff0c;__call__ 是一个特殊的魔术方法&#xff08;magic method&#xff09;&#xff0c;它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时&#xff08;例如 obj()&#xff09;&#xff0c;Python 会自动调用该对象的 __call__ 方法…...