癫痫预测研究是利用脑电信号对癫痫发病过程做出及时的预测以促进癫痫发病的防治,这一研究的重点在于充分利用癫痫发生前后人体大脑产生的脑电信号。但截至上世纪九十年代初期,医学工作者及相关领域的专家们仍然相信癫痫病的发生过程是一种突发的、毫无规律可言的随机活动。所以关于癫痫预测的研究始终是大脑病理研究工作中的一个难点课题。不过随着脑电研究的开展,如今在癫痫预测研究方面已经取得了一定的进展,但更多的学者却指出癫痫发生的过程实际上是一种随着时间而发展的活动,也就是说随着时间变化癫痫脑电信号的性质也是不同的。癫痫发病前后的大脑电信号对于预防和预测癫痫是至关重要的,所以如果能利用脑电技术辨识出癫痫发病前的情况,则有较大的可能性预知癫痫的发生,从而起到对癫痫病人的保护作用。
目前为止,尽管已有大量的癫痫发作预测算法被研究出来,但是在实际应用中,尚未出现能够有效地用于诊断和治疗的技术。而导致这个问题的原因也有许多,首先就研究中使用的癫痫脑电信号自身来说,由于目前用到的信息大部分都来自于头皮脑电信号,而脑电信号弱且不稳定的缺点,在采集时极易遭到影响。这都为数据处理增添了困难;其次,癫痫发生的机制往往是很复杂多变乃至不确定的,各种类型的病人,各种大脑部位,并且各种类型的病灶种类都会导致不同的发病机理,所以就必须针对不同的情况而采用相对应的癫痫发作预测方案。目前随着国内有关癫痫发作预测研究的逐步增加,一些脑电信号处理方法都已逐步被用来评估癫痫脑电信号并获得了一定成效。但癫痫发作的预测算法则大部分是基于时域和频域的信号分析算法,虽然时域和频域分析技术都在预估癫痫发生领域上都获得了一些研究成果,但都有一定的局限性。
提出一种基于LSTM模型的癫痫发作检测方法,算法程序运行环境为MATLAB R2021b,执行基于深度学习(LSTM)的癫痫发作自动检测,程序运行需要GPU,需要一定内存,部分代码如下:
clc;clear all;close all
% Load in data
load('0190_channel2_input(1) (1).mat')
load('0190_channel2_output(1) (1).mat')
Seizure_points=sum(channel2_output==1);
channel2_section=channel2;
channel2_output_section=channel2_output;
% Convert Time for x_axis
timepoint = 285.2/855605;
time = [timepoint:timepoint:timepoint*855605];
% Create Plot with Seizures highlighted
plot(time, channel2_section, 'b')
hold on
plot(time(channel2_output_section==1),channel2_section(channel2_output_section==1), 'r')
xlabel('Time (ms)')
ylabel('Signal')
title('Local field potential with seizure events')
% Define Model
numFeatures=1;
numHiddenUnits=200;
numClasses=2;
layers = [...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits, 'OutputMode','sequence')
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
options =trainingOptions("adam",...
"MaxEpochs",45,...
"GradientThreshold", 2,...
"Verbose",0,...
"Plots",'training-progress')
出图如下:
完整代码:MATLAB环境下基于LSTM模型的癫痫发作检测方法
工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。