利用神经网络对脑电图(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 ...
随机推荐
- CenterNet:Corner-Center三元关键点,检测性能全面提升 | ICCV 2019
为了解决CornerNet缺乏目标内部信息的问题,提出了CenterNet使用三元组进行目标检测,包含一个中心关键点和两个角点.从实验结果来看,CenterNet相对于CornerNet只增加了少量推 ...
- Kingbase ES 函数返回-return语句
文章概要: 本文在https://www.cnblogs.com/kingbase/p/15703611.html 一文的基础上总结了Kingbase ES中函数能支持的return语句,整体上兼容o ...
- #Raney引理,圆排列#洛谷 6672 [清华集训2016] 你的生命已如风中残烛
题目 分析 转化一下条件,就是 \(\sum{w_i}\geq i\),将所有牌权值减一,那就是 \(\sum{w'_i}\geq 0\) 根据Raney引理,总和为 1 的数列,在循环移位时,只有一 ...
- #线段树分治,背包#CF601E A Museum Robbery
题目 有 \(n\) 个展品正在被展览,每一个展品都有一价值 \(v\) 个和一个混乱度 \(w\) ,现在有 \(m\) 次操作: 1 \(v\) \(w\) :加入一个新的展品,价值为\(v\), ...
- Prometheus Operator与kube-prometheus之二-如何监控1.23+ kubeadm集群
简介 系列文章: 标签 - Prometheus - 东风微鸣技术博客 (ewhisper.cn) Prometheus Operator 的上一篇: Prometheus Operator 与 ku ...
- HDC2021技术分论坛:HarmonyOS本地模拟器重磅来袭!
作者:longjiangyun,模拟器开发工程师 HarmonyOS模拟器是应用开发者使用IDE进行代码开发.调试.测试等活动中必不可少的工具,它分为本地模拟器和远程模拟器,其中远程模拟器又分为单设备 ...
- 应用可靠性与性能不给力?HarmonyOS HiViewDFX了解一下
原文链接:https://mp.weixin.qq.com/s/Y44jUEB3ttlijbMDPrBcNg,点击链接查看更多技术内容: 作为基础软件服务子系统的HarmonyOS HiViewD ...
- 收藏 | 超详细的Oracle19c安装步骤-CentOS Linux
ORACLE学习-DBA数据库工程师 收藏 | 超详细的Oracle19c安装步骤 挨踢-IT人加油 [微思网络]IT培训-思科/华为/红帽/ORACLE... 2 人赞同了该文章 DBA数据库管理必 ...
- 重新点亮shell————sed的替换[十]
前言 简单介绍一下sed 和 awk. 正文 这两个和vim的区别: vim 是交互式和 他们是非交互式 vim是文件操作模式与他们是行交互模式 sed sed 的 模式空间. sed的基本工作方式是 ...
- CTFshow命令执行29-123
命令执行 WEB29 eval是php中执行以PHP脚本执行的命令 PHP命令可以执行脚本命令 本题使用方法是先 system(cp f*.php 1.txt) 然后访问1.txt WEB30 在PH ...