利用神经网络对脑电图(EEG)降噪------开源的、低成本、低功耗微处理器神经网络模型解决方案
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能
这个示例展示了如何使用EEGdenoiseNet基准数据集[1]和深度学习回归去除脑电图(EEG)信号中的眼电图(EOG)噪声。EEGdenoiseNet数据集包含4514个干净的EEG片段和3400个眼部伪迹片段,这些片段可以用来合成带有真实干净EEG的噪声EEG片段
这个示例使用干净和受EOG污染的EEG信号来训练一个长短期记忆(LSTM)模型以去除EOG伪迹。首先,将在原始输入信号上训练模型。然后,引入短时傅里叶变换(STFT)层,使模型在原始输入上提取时频特征进行训练。逆STFT层从去噪的STFT重构结果。使用时频特征特别是在信噪比(SNR)较低时可以提高性能。
EEGdeniseNet数据集包含4514个干净的EEG片段和3400个EOG片段,可用于生成三个数据集,用于训练、验证和测试深度学习模型。所有信号段的采样率为256Hz。实例为MATLAB语言。
% Download the data
datasetZipFile = matlab.internal.examples.downloadSupportFile("SPT","data/EEGEOGDenoisingData.zip");
datasetFolder = fullfile(fileparts(datasetZipFile),"EEG_EOG_Denoising_Dataset");
if ~exist(datasetFolder,"dir")
unzip(datasetZipFile,fileparts(datasetZipFile));
end
下载数据后,datasetFolder中的位置包含两个MAT文件:
EEG_all_epochs.mat 干净EEG数据
EOG_all_epochs.mat (EOG)数据
将干净的EEG和EOG信号相结合,生成具有不同信噪比(SNR)的有噪声EEG数据与干净的EEG数据构成训练数据,并且分成训练、验证和测试数据集。
绘制有噪声EEG数据与干净的EEG数据

显然,传统的任何算法很难将EEG数据从噪声中滤出来。
定义神经网络结构,之所以选择长短期记忆(LSTM)架构,是因为它能够从时间序列中学习特征。
numFeatures = 1;
numHiddenUnits = 100;
layers = [
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits)
dropoutLayer(0.2)
fullyConnectedLayer(numFeatures)
];
设置训练参数
maxEpochs = 5;
miniBatchSize = 150;
options = trainingOptions("adam", ...
Metrics="rmse", ...
MaxEpochs=maxEpochs, ...
MiniBatchSize=miniBatchSize, ...
InitialLearnRate=0.005, ...
GradientThreshold=1, ...
Plots="training-progress", ...
Shuffle="every-epoch", ...
Verbose=false, ...
ValidationData=ds_Validate_T, ...
ValidationFrequency=100, ...
OutputNetwork="best-validation-loss");

模型执行的效果

提高深度学习模型性能的常用方法是使用输入信号数据的特征进行训练。这些特征提供了输入数据的表示,这使得网络更容易学习信号的最重要方面。
选择窗口长度为64个样本、重叠长度为63个样本的短时傅立叶变换(STFT)。这种转换将有效地创建33个复杂特征,每个特征的长度为449个样本。
winLength = 64;
overlapLength = 63;
data = preview(ds_Train_T);
plotSTFT(data,winLength,overlapLength)

定义神经网络
minLen=512; % signal length
numFeatures=66; % number of features
win=rectwin(winLength); % analysis window
layers = [
sequenceInputLayer(1,MinLength=minLen)
stftLayer(Window=win,OverlapLength=overlapLength,transform="realimag")
lstmLayer(numHiddenUnits)
dropoutLayer(0.2)
fullyConnectedLayer(numFeatures)
istftLayer(Window=win,OverlapLength=overlapLength)
];
训练网络
if trainingFlag == "Train networks"
stftNet = trainnet(ds_Train_T,layers,"mse",options);end
网络性能


利用神经网络对脑电图(EEG)降噪------开源的、低成本、低功耗微处理器神经网络模型解决方案的更多相关文章
- 利用神经网络算法的C#手写数字识别(二)
利用神经网络算法的C#手写数字识别(二) 本篇主要内容: 让项目编译通过,并能打开图片进行识别. 1. 从上一篇<利用神经网络算法的C#手写数字识别>中的源码地址下载源码与资源, ...
- 利用神经网络算法的C#手写数字识别(一)
利用神经网络算法的C#手写数字识别 转发来自云加社区,用于学习机器学习与神经网络 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwri ...
- 利用Tensorflow实现卷积神经网络模型
首先看一下卷积神经网络模型,如下图: 卷积神经网络(CNN)由输入层.卷积层.激活函数.池化层.全连接层组成,即INPUT-CONV-RELU-POOL-FC池化层:为了减少运算量和数据维度而设置的一 ...
- 利用Tensorflow实现神经网络模型
首先看一下神经网络模型,一个比较简单的两层神经. 代码如下: # 定义参数 n_hidden_1 = 256 #第一层神经元 n_hidden_2 = 128 #第二层神经元 n_input = 78 ...
- 【TensorFlow/简单网络】MNIST数据集-softmax、全连接神经网络,卷积神经网络模型
初学tensorflow,参考了以下几篇博客: soft模型 tensorflow构建全连接神经网络 tensorflow构建卷积神经网络 tensorflow构建卷积神经网络 tensorflow构 ...
- SAP开源的持续集成-持续交付的解决方案
SAP开源的持续集成/持续交付的解决方案: (1) 一个叫做piper的github项目,包含一个针对Jenkins的共享库和一个方便大家快速搭建CI/CD环境的Docker镜像: (2) 一套SAP ...
- 利用神经网络算法的C#手写数字识别
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...
- 利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型
国外的文献汇总: <Network Traffic Classification via Neural Networks>使用的是全连接网络,传统机器学习特征工程的技术.top10特征如下 ...
- 如何利用神经网络和Python生成指定模式的密码
今天给大家介绍的是Github上一个名叫PyMLProjects的项目,这个项目的目的是为了训练AI来学习人类构造密码的模式,然后我们就可以用AI来生成大量同一模式或种类的密码了.这种方法也许可以用来 ...
- Fragment利用ViewPager实现左右滑动--第三方开源--SlidingTabLayout和SlidingTabStrip实现
MainActivity: package com.zzw.fragmentteb; import java.util.ArrayList; import android.graphics.Color ...
随机推荐
- 【VMware vSAN】创建vSAN Max集群并配置挂载远程数据存储。
VMware Explore 2023大会上,VMware正式发布了vSAN Max,这是VMware的一种全新分解存储架构,可以为vSphere集群提供PB级分解存储.vSAN Max是基于vSAN ...
- #范德蒙德卷积,第二类斯特林数,NTT#洛谷 2791 幼儿园篮球题
题目 \(T(T\leq 200)\)组数据求 \[\frac{1}{C(n,k)}\sum_{i=0}^kC(m,i)C(n-m,k-i)i^L \] 对于所有数据满足 \(n,m,k\leq 2* ...
- #笛卡尔树,构造#洛谷 7726 天体探测仪(Astral Detector)
题目传送门 分析 考虑每个数字一定会影响一定的范围, 那么可以记录每个数影响的最长区间和产生的个数, 那么通过这个可以解方程求出对于这个最长区间这个数的所在位置, 可以发现它可以满足一个树形结构,直接 ...
- 网站优化之robots.txt
本文于2015年底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 在查询favicon.ico相关的资料时,无间中看到了robots.tx ...
- 新版本NOI Linux发布,支持VSCode,Code::Blocks开发C++!!!,内附下载地址。
注意VSCODE 虽然有C艹插件,但是在第一次编译的时候必须要有网络,否则用不了 我推荐还是用CODE::BLOCKS 作者10月8日补充 有些省份已经开始强制在NOIP的比赛里使用NOI Linux ...
- 预约直播|3月30日下周四,应用促活大揭秘,快速提升DAU
[导读] 日常运营过程中,消息推送是App触达用户的常用手段,无论是新功能的通知,还是活动的提醒,都可以通过推送告知用户.千人千面的个性化推送,对于提升用户粘性.用户转化等指标都具有明显正向效果.越来 ...
- 探索“智”感生活,HMS Core线上Codelabs挑战赛第4期开始!
HMS Core线上Codelabs挑战赛第4期正式开始!我们向所有实践力超强.创新力满满的开发者发出邀请,用你的超级"码"力,解锁更多应用价值! 生活里,我们被手机"秒 ...
- openGauss支持国密SM3和SM4算法
国密算法介绍 国密即国家密码局认定的国产密码算法,主要有 SM1,SM2,SM3,SM4.密钥长度和分组长度均为 128 位.针对银行客户对数据库安全能力的诉求以及提高产品安全竞争力的要求,进行数据库 ...
- 第十七篇:Django入门
一.模板 二.BootStrap使用 三.web框架简绍 四.Django使用 五.创建APP 六.APP各目录功能 七.静态文件处理 八.模板语言 九.请求过程
- k8s 深入篇———— 编排[八]
前言 简单整理一下编排. 正文 一个deployment 例子: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployme ...