基于GRU神经网络和ECG信号的疲劳检测方法转让专利

申请号 : CN202211219067.5

文献号 : CN115281676B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕国华宋文廓池强程嘉玟王美慧

申请人 : 齐鲁工业大学

摘要 :

本发明提供了一种基于GRU神经网络和ECG信号的疲劳检测方法,涉及新一代信息技术领域。本发明包括以下步骤:S1:获取训练数据集T和测试数据集S;S2:从训练集T中分别提取时域特征t、频域特征f和非线性特征n,t、f和n组合,形成特征向量;S3:构建GRU神经网络:构建GRU神经网络,GRU神经网络包括input层、嵌入层、GRU层、线性分类层和输出层;S4:将t、f和n送入GRU神经网络训练得综合损失L,并更新GRU神经网络参数;S5:利用训练集T对GRU神经网络进行训练,然后利用测试集S对经训练得到的神经网络模型进行测试,输出最终GRU神经网络模型。本发明平均绝对值误差MAE小。

权利要求 :

1.一种基于GRU神经网络和ECG信号的疲劳检测方法,其特征在于:包括以下步骤:S1:通过心电传感器收集原始心电信号数据并将数据标注标签信息,得到样本标签;而后将收集到的原始心电数据进行HHT变换得到预处理心电信号数据;而后将得到的预处理心电信号数据按照70%训练集和30%测试集进行随机划分,得训练数据集T和测试数据集S;

步骤S1的具体步骤为:

(1)将原始心电数据进行经验模态分解,获得分解后的IMF分量;

(2)将分解后的每个IMF分量通过希尔伯特变换变换得到IMF分量的瞬时幅值与瞬时频率;

(3)使用自适应差分阈值法确定原始心电数据的R波,而后将原始心电信号数据进行多次分段,即得到预处理心电信号数据;

(4)将预处理心电信号数据按照70%训练集和30%测试集进行随机划分,获得训练数据集T和测试数据集S;

步骤(1)的具体步骤为:

①找出原始心电信号中所有局部变量的极大值并使用三次样条函数连接形成上包络,同理,利用原始心电信号中所有局部变量的极小值并用三次样条函数连接形成下包络;

②.求出上、下包络的包络均值m1,并求原始心电信号数据与包络均值之间的差值h1, m1通过式(1)进行计算,h1通过式(2)进行计算:(1)

其中,式(1)中emax(t)为上包络线,emin(t)为下包络线;

(2)

其中,式(2)中,S(t)是指原始心电信号函数;

③.如果m1满足IMF条件,那么m1就是求得的第一个IMF分量,否则将h1作为原始心电信号返回进行步骤②,直到迭代第K次得到的差值h1,k(t)满足终止准则SD的条件停止,此时,迭代第K次得到的差值h1,k(t)成为第一个IMF分量c1(t),c1(t)代表S(t)最高频率的分量,c1(t)与差值h1,k(t)的关系,如式(3)所示:         (3)

经过K次使迭代之后的终止准则SD,满足如下条件,如式(4)所示:       (4)

其中,式(4)中,SD指的是标准差,SD位于0.2‑0.3之间;

④从原始心电信号函数S(t)中分离c1(t),得到第一阶剩余信号r1(t),如式(5)所示:   (5)

而后将第一阶剩余信号r1(t)作为原始心电信号进行重复上述过程,得到原始心电信号函数S(t)的第二个IMF分量c2,一直重复上述过程n次,就得到了n个IMF分量,如式(6)所示:       (6)

当第N阶剩余信号 是单调函数或者一个极小的常量时,无法再提取IMF分量,停止分解过程,得式(7):         (7)

其中,式(7)中, 是残余函数, 是S(t)的平均趋势,IMF分量c1,…,cn(t)分别包含信号不同时间特征尺度大小的成分,尺度依次由小到大,因此,各分量也就相应地包含从高到低的不同频率段的成分;每个频段所包含的频率成分是不相同的,并且随着原始心电信号函数S(t)的变化而变化;

S2:从训练集T中分别提取时域特征t、频域特征f和非线性特征n,时域特征t、频域特征f和非线性特征n组合,形成特征向量;具体来说,步骤(2)中,将经过EMD处理完后得到的IMF分量通过式(8)进行希尔伯特变换: (8)

式(8)中, 为解析信号实质也是一种复信号, 为复信号 的实部, 被称为复信号 的虚部, 为瞬时幅值函数, 为瞬时频率函数,j表示虚部;而 则是通过式(9)计算得到的,(9)

式(9)中,x(t)为原始心电信号数据,x(T)在本申请中被定义为原始心电信号的函数,T为积分变量,T的取值范围为﹣∞~+∞,t为时间;

由得到的IMF分量的瞬时频率和瞬时幅值对解析信号 进行表示,如式(10)所示:(10)

式(10)中,n表示IMF分量的阶数,Re表示取 复数的实部,j表示虚部, 为瞬时幅值的函数,i表示第i阶IMF分量, 为瞬时频率的函数;

其中,第i阶IMF分量的瞬时幅值 为将第i阶IMF分量送入公式(11)得到的:        (11)

由于解析信号x(t)可写成 ,因此,相位函数 可用公式(12)进行计算:

             (12)

而瞬时频率 则可通过公式(13)计算获得:

              (13)

而步骤S2具体步骤为:

S2‑1:从训练集T中提取时域特征t:对训练集T中训练集样本数据的平均值MEAN、序列标准差SDNN以及相邻均方根差RMSSD进行的提取,MEAN通过式(14)计算:  (14)

式(14)中,RR表示R‑R间期序列,R表示心电图QRS波群中的R波,N表示R‑R间期序列的总数;

序列标准差SDNN评估的是整个R‑R间期序列的标准差,SDNN通过公式(15)计算:  (15)

相邻均方根差RMSSD通过计算两相邻R‑R间期序列之差的均方根得到,RMSSD的计算公式,如式(16)所示: (16)

S2‑2:从训练集T中提取频域特征f:从训练集样本中提取高频分量HF、低频分量LF以及归一化低频分量LFnorm;

首先,利用快速傅里叶变换对心电信号进行功率谱函数估计,其中,快速傅里叶积分函数计算公式,如式(17)所示: (17)

式(17)中,s(t)为原始心电信号的函数,i虚数单位,w为频率,t为时间;

而后,对R‑R间期序列进行功率谱计算,提取高频分量HF、低频分量LF以及归一化低频分量LFnorm;

S2‑3:从训练集T中提取非线性特征n,即从训练集样本中提取样本熵SimpleEn和 复杂度;具体步骤如下:S2‑3‑1:样本熵的计算:

对包含n个点的R‑R间期的时间序列 计算样本熵,样本熵的计算公式如式(19)所示:

 (19)

式(19)中,函数指的是从训练集样本中随意选取长度为a的序列,这里的序列在时间上连续,意义为任意两个连续序列的距离都小于b的概率;函数通过式(20)进行计算: (20)

式(20)中,n是序列总长度,a是选取序列长度,函数C是通过式(21)计算得到的:(21)

式(21)中,  表示从时间序列  中取m个数组成的向量;  为距离函数,距离函数d的计算式如式(22)所示:   (22)

式(22)中,m是从 中选取数的个数,k是从0到m‑1随机选取一个数值,本申请中选取m=

1,阈值b=0.1;

S2‑3‑2: 复杂度的计算

先对R‑R间期的时间序列用 表示,经过式(4)所示的快速傅里叶积分函数得到频域序列 ;而后,再通过式(23)计算序列能量的总均方根 ;

(23)

式(23)中,N为划分的时间序列的总个数;

而后,将能量小于 的部分叫做规则部分 ,其余部分能量称为混沌部分 ,将分量置零,将 再次进行傅里叶逆变换得到序列 ; 复杂度通过式(24)计算得到:(24);

S3:构建GRU神经网络:在深度学习框架Pytorch中构建GRU神经网络,所述GRU神经网络包括input层、嵌入层、GRU层、线性分类层和输出层,其中嵌入层由二维卷积神经网络和批归一化层构成;

其中,input层,用于将特征向量输入至嵌入层中;

嵌入层用于将input层输入的特征向量转换为低维稠密向量;

GRU层用于对嵌入层输出的特征数据进行更高维度的抽线,使得得到的特征更具判别性;

线性分类层对GRU层输出的特征信息进行分类,并输出样本的分类预测结果;S4:将时域特征t、频域特征f和非线性特征n送入GRU神经网络训练得综合损失L,并更新GRU神经网络参数;

S5:利用训练集T对GRU神经网络进行训练,然后利用测试集S对经训练得到的神经网络模型进行测试,输出最终GRU神经网络模型;

步骤S5的具体步骤为:每次完成一个训练段后,将测试集样本送入嵌入层映射,完成嵌入映射后,将映射结果送入GRU神经网络提取特征,而后将特征送入线性分类层中实现分类,得到预测的分类结果;而后将分类结果与该测试集样本对应的样本标签对比得出测试精度;保持利用训练集样本对GRU神经网络训练后得到的GRU神经网络的GRU神经网络参数不变,利用该GRU神经网络对测试集样本进行测试,测试中总迭代次数设置为10000,每个训练段长度epoch为1000,若当前训练段的测试精度大于上一个训练段的测试精度,则保存当前GRU神经网络参数数据,输出GRU神经网络分类模型;若当前训练段测试精度小于上一训练段的测试精度,则不保存当前网络参数,并继续进行下一个训练段的训练,当训练次数达到预设的总迭代次数时结束训练,输出GRU神经网络分类模型。

2.根据权利要求1所述的基于GRU神经网络和ECG信号的疲劳检测方法,其特征在于:步骤S2‑2中,R‑R间期序列进行功率谱计算,提取高频分量HF、低频分量LF以及归一化低频分量LFnorm的具体步骤为:首先,选择去趋势运算之后的R‑R间期序列,通过三次样条插值,然后,再重采样得到采样率为4Hz的离散R‑R间期序列;

而后,将离散R‑R间期序列样本进行重叠50%的处理方式,并将结果等分3份得到3组数据,时间窗设置为5分钟,总长度为300秒,以每组150秒长度相互重叠75秒得到3组数据;

而后,将得到的3组数据加汉明窗并分别补零到2048点,通过进行2048点快速傅里叶变换得到0.002Hz频率的频谱信号;最后将得到的3组频谱信号取平均值,得心电信号的功率谱估计,而后,从其中提取功率谱频率0.15‑0.4Hz范围内的能量作为高频分量,从中提取

0.04‑0.15Hz的能量作为低频分量;

而后,利用高频分量和低频分量计算归一化低频分量LFnorm,LFnorm的计算公式,如式(18)所示:               (18)

式(18)中,HF为高频分量,LF为低频分量,LFnorm为归一化低频分量。

3.根据权利要求1所述的基于GRU神经网络和ECG信号的疲劳检测方法,其特征在于:步骤S3中,通过二维卷积神经网络将将input层输入的特征向量数据映射到100维,而后通过批归一化层进一步使映射后的数据限定在维度为0到1之间。

4.根据权利要求1所述的基于GRU神经网络和ECG信号的疲劳检测方法,其特征在于:步骤S4的具体步骤为:将每个训练集样本的时域特征t、频域特征f和非线性特征n送入GRU神经网络进行训练,线性分类层会输出分类预测结果,将预测结果与该训练集样本的样本标签做交叉熵,作为综合损失L,综合损失L的计算公式,如式(25)所示:               (25)

式(25)中,P和Lable分别表示网络预测输出和样本标签。

说明书 :

基于GRU神经网络和ECG信号的疲劳检测方法

技术领域

[0001] 本发明属于新一代信息技术领域,具体涉及一种基于GRU神经网络和ECG信号的疲劳检测方法。

背景技术

[0002] 当下现有的疲劳检测技术中,可以分为两大类,分别为基于面部状态分析疲劳状态、基于脑电(EEG)信号或者心电图(ECG)信号指标分析疲劳状态。在上述这些检测方法中,由于心电提供的信号在采集过中程具有无创,且易于携带和便于采集相关指标的特点,使得利用心电信号来判断疲劳的应用越来越广泛。同时随着现代机器学习和深度学习方法的兴起,使得通过以上技术和心电信号相结合来监测人体疲劳状态成为了可能。现有基于心电信号的疲劳检测技术,一部分是基于传统的检测方法,比如KNN(最近邻方法),这些检测方法检测精度不高,且计算量比较大;另一部分虽基于深度学习模型,例如LSTM(长短期记忆法),但是模型结构较为复杂,效率不高,运算时间长。为此,本发明提出了一种基于GRU神经网络和ECG信号的疲劳检测方法。

发明内容

[0003] 为了解决上述技术问题,本发明提供一种基于GRU神经网络和ECG信号的疲劳检测方法。
[0004] 一种基于GRU神经网络和ECG信号的疲劳检测方法,包括以下步骤:
[0005] S1:通过心电传感器收集原始心电信号数据并将数据标注标签信息,得到样本标签;而后将收集到的原始心电数据进行HHT变换得到预处理心电信号数据;而后将得到的预处理心电信号数据按照70%训练集和30%测试集进行随机划分,得训练数据集T和测试数据集S;
[0006] S2:从训练集T中分别提取时域特征t、频域特征f和非线性特征n,时域特征t、频域特征f和非线性特征n组合,形成特征向量;
[0007] S3:构建GRU神经网络:在深度学习框架Pytorch中构建GRU神经网络,所述GRU神经网络包括input层、嵌入层、GRU层、线性分类层和输出层,其中嵌入层由二维卷积神经网络和批归一化层构成;
[0008] 其中,input层,用于将特征向量输入至嵌入层中;
[0009] 嵌入层用于将input层输入的特征向量转换为低维稠密向量;
[0010] GRU层用于对嵌入层输出的特征数据进行更高维度的抽线,使得得到的特征更具判别性,其中GRU层中包括更新门和重置门,更新门用于控制有多少前一时间步的信息和当前时间步的信息可以被传递到未来,重置门用于控制要遗忘多少过去的信息;
[0011] 线性分类层对GRU层输出的特征信息进行分类,并输出样本的分类预测结果,本申请将人体疲劳程度定义为10级,这里分类预测输出10类,每一类代表不同的疲劳程度。
[0012] S4:将时域特征t、频域特征f和非线性特征n送入GRU神经网络训练得综合损失L,并更新GRU神经网络参数;
[0013] S5:利用训练集T对GRU神经网络进行训练,然后利用测试集S对经训练得到的神经网络模型进行测试,输出最终GRU神经网络模型。
[0014] 优选地,步骤S1中,对原始心电信号数据进行HHT变换,本申请中HHT变换包括对原始心电数据进行的经验模态分解EMD过程以及对由经验模态分解EMD后得到的IMF分量进行HT变换的过程。
[0015] 优选地,对原始心电信号数据进行HHT变换,本申请中HHT变换包括对原始心电数据进行的经验模态分解EMD以及对由经验模态分解EMD后得到的IMF分量进行HT变换的具体步骤为:
[0016] (1)将原始心电数据进行经验模态分解(Empirical Mode Decomposition,EMD),获得分解后的IMF分量(将有具体物理解释的单分量信号称为固有模态函数,IMF);
[0017] (2)将分解后的每个IMF分量通过希尔伯特变换(Hilbert Transform, HT)变换得到IMF分量的瞬时幅值与瞬时频率;
[0018] (3)使用自适应差分阈值法确定原始心电数据R波,将原始心电信号数据进行多次分段,即得到预处理心电信号数据;
[0019] (4)将预处理心电信号数据按照70%训练集和30%测试集进行随机划分,最终获得训练数据集T和测试数据集S。
[0020] 优选地,步骤(1)的具体步骤为:
[0021] ①找出原始心电信号中所有局部变量的极大值并使用三次样条函数连接形成上包络,同理,利用原始心电信号中所有局部变量的极小值并用三次样条函数连接形成下包络;
[0022] ②.求出上、下包络的包络均值m1,并求原始心电信号数据与包络均值之间的差值h1, m1通过式(1)进行计算,h1通过式(2)进行计算;
[0023] (1)
[0024] 其中,式(1)中emax(t)为上包络线,emin(t)为下包络线。
[0025]    (2)
[0026] 其中,式(2)中,S(t)是指原始心电信号函数;
[0027] ③.如果m1满足IMF条件(IMF条件是指:1、在整个数据集中,局部极大值与局部极小值数目之和必须与过零点的数目相等或至多相差一个;2、在任意时间点,局部极大值所定义的上包络线与局部极小值所定义的下包络线均值为零。),那么m1就是求得的第一个IMF分量,否则将h1作为原始心电信号返回进行步骤②,直到迭代第K次得到的差值h1,k(t)满足终止准则SD的条件停止,此时,迭代第K次得到的差值h1,k(t)成为第一个IMF分量c1(t),c1(t)代表S(t)最高频率的分量,c1(t)与差值h1,k(t)的关系,如式(3)所示:
[0028]          (3)
[0029] 经过K次使迭代之后的终止准则SD,满足如下条件,如式(4)所示:
[0030]        (4)
[0031] 其中,式(4)中,SD指的是标准差,SD位于0.2‑0.3之间;
[0032] ④从S(t)中分离c1(t),得到第一阶剩余信号r1(t),如式(5)所示:
[0033]    (5)
[0034] 而后将第一阶剩余信号r1(t)作为原始心电信号进行重复上述过程,得到原始心电信号函数S(t)的第二个IMF分量c2,一直重复上述过程n次,就得到了n个IMF分量,如式(6)所示:
[0035]        (6)
[0036] 当第N阶剩余信号 是单调函数或者一个极小的常量时,无法再提取IMF分量,停止分解过程,得式(7):
[0037]     (7)
[0038] 其中,式(7)中, 是残余函数, 是S(t)的平均趋势,IMF分量c1,…,cn(t)分别包含信号不同时间特征尺度大小的成分,尺度依次由小到大,因此,各分量也就相应地包含从高到低的不同频率段的成分;每个频段所包含的频率成分是不相同的,并且随着原始心电信号函数S(t)的变化而变化。
[0039] 优选地,步骤(2)中,步骤(2)中,将经过EMD处理完后得到的IMF分量通过式(8)进行希尔伯特变换:
[0040]  (8)
[0041] 式(8)中, 为解析信号实质也是一种复信号, 为复信号 的实部,被称为复信号 的虚部, 为瞬时幅值函数, 为瞬时频率函数,j表示虚部。而 则是通过式(9)计算得到的,
[0042] (9)
[0043] 式(9)中,x(t)为原始心电信号数据,x(T)在本申请中被定义为原始心电信号的函数,T为积分变量,T的取值范围为﹣∞~+∞,t为时间;
[0044] 由得到的IMF分量的瞬时频率和瞬时幅值对解析信号 进行表示,如式(10)所示:
[0045] (10)
[0046] 式(10)中,n表示IMF分量的阶数,Re表示取 复数的实部,j表示虚部, 为瞬时幅值的函数,i表示第i阶IMF分量, 为瞬时频率的函数;
[0047] 其中,第i阶IMF分量的瞬时幅值 为将第i阶IMF分量送入公式(11)得到的:
[0048]         (11)
[0049] 由于解析信号x(t)可写成 ,因此,相位函数 可用公式(12)进行计算:
[0050]              (12)
[0051] 而瞬时频率 则可通过公式(13)计算获得:
[0052]               (13)
[0053] 经过HHT变换后心电信号的时序特征变得较为明显,便于后续的时域特征t、频域特征f和非线性特征n的特征提取。
[0054] 优选地,步骤 S2的具体步骤为:
[0055] S2‑1:从训练集T中提取时域特征t:对训练集T中训练集样本数据的平均值(MEAN)、序列标准差(SDNN)以及相邻均方根差(RMSSD)进行提取,通过式(14)计算MEAN:
[0056]   (14)
[0057] 式(14)中,RR表示R‑R间期序列,R表示心电图QRS波群中的R波,N表示R‑R间期序列的总数;
[0058] 序列标准差(SDNN)评估的是整个R‑R间期序列的标准差,SDNN通过公式(15)计算:
[0059]   (15)
[0060] 相邻均方根差(RMSSD)通过计算两相邻R‑R间期序列之差的均方根得到,RMSSD的计算公式,如式(16)所示:
[0061]  (16)
[0062] S2‑2:从训练集T中提取频域特征f:从训练集样本中提取高频分量(HF)、低频分量(LF)以及归一化低频分量(LFnorm)。
[0063] 首先,利用快速傅里叶变换对心电信号进行功率谱函数估计,其中,快速傅里叶积分函数计算公式,如式(17)所示:
[0064]  (17)
[0065] 式(17)中,s(t)为原始心电信号的函数,i虚数单位,w为频率,t为时间;
[0066] 而后,对R‑R间期序列进行功率谱计算,提取高频分量(HF)、低频分量(LF)以及归一化低频分量(LFnorm)。
[0067] 优选地,对R‑R间期序列进行功率谱计算,提取高频分量(HF)、低频分量(LF)以及归一化低频分量(LFnorm)的具体步骤如下:
[0068] 选择去趋势运算之后的R‑R间期序列,通过三次样条插值,然后,再重采样得到采样率为4Hz的离散R‑R间期序列;
[0069] 而后,将离散R‑R间期序列样本进行重叠50%的处理方式,并将结果等分3份得到3组数据,时间窗设置为5分钟,总长度为300秒,以每组150秒长度相互重叠75秒得到3组数据;
[0070] 而后,将得到的3组数据加汉明窗并分别补零到2048点,通过进行2048点快速傅里叶变换得到0.002Hz频率的频谱信号;最后将得到的3组频谱信号取平均值,得心电信号的功率谱估计,而后,从其中提取功率谱频率0.15‑0.4Hz范围内的能量作为高频分量(HF),从中提取0.04‑0.15Hz的能量作为低频分量(LF)。
[0071] 归一化低频分量(Low Frequency Norm,LFnorm)利用高频分量(HF)和低频分量(LF)进行计算,LFnorm的计算公式,如式(18)所示:
[0072]  (18)
[0073] 式(18)中,HF为高频分量,LF为低频分量,LFnorm为归一化低频分量。
[0074] S2‑3:从训练集T中提取非线性特征n,具体来说就是,从训练集样本中提取样本熵(SimpleEn)和 复杂度,具体步骤如下:
[0075] S2‑3‑1:样本熵的计算:
[0076] 对包含n个点的R‑R间期的时间序列 计算样本熵,样本熵的计算公式如式(19)所示:
[0077]  (19)
[0078] 式(19)中,函数指的是从训练集样本中随意选取长度为a的序列,这里的序列在时间上连续,意义为任意两个连续序列的距离都小于b的概率。函数通过式(20)进行计算:
[0079]  (20)
[0080] 式(20)中,n是序列总长度,a是选取序列长度,函数C是通过式(21)计算得到的:
[0081] (21)
[0082] 式(21)中, 表示从时间序列  中取m个数组成的向量。 为距离函数,距离函数d的计算式如式(22)所示:
[0083]    (22)
[0084] 式(22)中,m是从  中选取数的个数,k是从0到m‑1随机选取一个数值,本申请中选取m=1,阈值b=0.1。
[0085] S2‑3‑2:  复杂度的计算:
[0086] 为了计算 复杂度,本申请中先对R‑R间期的时间序列用  表示,经过式(4)所示的快速傅里叶积分函数得到频域序列  ;而后,再通过式(23)计算序列能量的总均方根 。
[0087] (23)
[0088] 式(23)中,N为划分的时间序列的总个数。
[0089] 而后,将能量小于 的部分叫做规则部分 ,其余部分能量称为混沌部分。将 分量置零,将 再次进行傅里叶逆变换得到序列 。 复杂度通过式(24)计算得到:
[0090]  (24)
[0091] 优选地,步骤S3中,通过二维卷积神经网络将将input层输入的特征向量数据映射到100维,而后通过批归一化层进一步使映射后的数据限定在维度为0到1之间。
[0092] 优选地,S4的具体步骤为:将每个训练集样本的时域特征t、频域特征f和非线性特征n送入GRU神经网络进行训练,线性分类层会输出分类预测结果,将预测结果与该训练集样本的样本标签做交叉熵,作为综合损失L,综合损失L的计算公式,如式(25)所示:
[0093]  (25)
[0094] 式(25)中,P和Lable分别表示网络预测输出和样本标签;
[0095] 优选地,步骤S4中,迭代次数设置为10000,训练段长度设置为1000;训练数据为训练数据集中的所有样本数据。
[0096] 优选地,步骤S5的具体步骤为:利用训练集T对GRU神经网络进行训练,然后利用测试集S对经训练得到的神经网络模型进行测试,输出最终GRU神经网络模型。具体来说:每次完成一个训练段后,将测试集样本送入嵌入层映射,完成嵌入映射后,将映射结果送入GRU神经网络提取特征,而后将特征送入线性分类层中实现分类,得到预测的分类结果;而后将分类结果与该测试集样本对应的样本标签对比得出测试精度;保持利用训练集样本对GRU神经网络训练后得到的GRU神经网络的GRU神经网络参数不变,利用该GRU神经网络对测试集样本进行测试,测试中总迭代次数设置为10000,每个训练段长度(epoch)为1000,若当前训练段的测试精度大于上一个训练段的测试精度,则保存当前GRU神经网络参数数据,输出GRU神经网络分类模型;若当前训练段测试精度小于上一训练段的测试精度,则不保存当前网络参数,并继续进行下一个训练段的训练,当训练次数达到预设的总迭代次数时结束训练,输出GRU神经网络分类模型。
[0097] 与现有技术相比,本发明的有益效果如下:
[0098] 本发明对ECG信号进行去噪预处理,相对于原始ECG信号,本申请得到的数据更有利于学习ECG信号中包含的信息,另外通过从ECG中提取时域、频域和非线性特征信息,从多个角度提取出了和使用者目前身体状况想匹配的信息,并结合GRU神经网络可以精准地对疲劳状况进行检测,而且,本申请中GRU神经网络分类模型相较于LSTM及LSTM改进方法(即LSTM‑SA方法和LSTM‑CSA方法),平均绝对值误差MAE明显降低。

附图说明

[0099] 图1 是本发明的总体流程图;
[0100] 图2是本发明的GRU神经网络结构示意图;
[0101] 图3为本发明测试阶段的流程图;
[0102] 图4为本发明对GRU神经网络分类模型、LSTM及LSTM改进方法基于同一训练集和测试集进行测试,得到的平均绝对值误差MAE测试结果图。

具体实施方式

[0103] 本发明中术语解释:
[0104] GRU:Gated Recurrent Unit,门控循环单元,是标准循环神经网络的改进版。
[0105] SimpleEn:Simple Entropy,样本熵,是在近似熵算法基础上的改进版,改进近似熵对固有的自匹配向量的计算偏差问题。
[0106] 本实施例提供的一种基于GRU神经网络和ECG信号的疲劳检测方法,其总体流程图如图1所示,具体包括以下步骤:
[0107] S1:通过心电传感器(购买自深圳市汇顶科技股份有限公司,型号为GH3220)收集原始心电信号数据并将数据标注标签信息,得到样本标签;而后将收集到的原始心电数据进行HHT变换得到预处理心电信号数据;而后将得到的预处理心电信号数据按照70%训练集和30%测试集进行随机划分,最终获得140个训练样本(构成训练数据集T)和60个测试样本(构成测试数据集S);
[0108] 步骤S1中,对原始心电信号数据进行HHT变换,本申请中HHT变换包括对原始心电数据进行的经验模态分解EMD过程以及对由经验模态分解EMD后得到的IMF分量进行HT变换的过程,具体步骤为:
[0109] (1)将原始心电数据进行经验模态分解(Empirical Mode Decomposition,EMD),获得分解后的IMF分量(将有具体物理解释的单分量信号称为固有模态函数,IMF);
[0110] 具体步骤为:
[0111] ①找出原始心电信号中所有局部变量的极大值并使用三次样条函数连接形成上包络,同理,利用原始心电信号中所有局部变量的极小值并用三次样条函数连接形成下包络。
[0112] ②.求出上、下包络的包络均值m1,并求原始心电信号数据与包络均值之间的差值h1, m1通过式(1)进行计算,h1通过式(2)进行计算。
[0113] (1)
[0114] 其中,式(1)中emax(t)为上包络线,emin(t)为下包络线。
[0115]    (2)
[0116] 其中,式(2)中,S(t)是指原始心电信号函数。
[0117] ③.如果m1满足IMF条件(IMF条件是指:1、在整个数据集中,局部极大值与局部极小值数目之和必须与过零点的数目相等或至多相差一个;2、在任意时间点,局部极大值所定义的上包络线与局部极小值所定义的下包络线均值为零。),那么m1就是求得的第一个IMF分量,否则将h1作为原始心电信号返回进行步骤②,直到迭代第K次得到的差值h1,k(t)满足终止准则SD的条件停止,此时,迭代第K次得到的差值h1,k(t)成为第一个IMF分量c1(t),c1(t)代表S(t)最高频率的分量,c1(t)与差值h1,k(t)的关系,如式(3)所示:
[0118]          (3)
[0119] 经过K次使迭代之后的终止准则SD,满足如下条件,如式(4)所示:
[0120]        (4)
[0121] 其中,式(4)中,SD指的是标准差,SD位于0.2‑0.3之间。
[0122] ④从S(t)中分离c1(t),得到第一阶剩余信号r1(t),如式(5)所示:
[0123]    (5)
[0124] 而后将第一阶剩余信号r1(t)作为原始心电信号进行重复上述过程,得到原始心电信号函数S(t)的第二个IMF分量c2,一直重复上述过程n次,就得到了n个IMF分量,如式(6)所示:
[0125]          (6)
[0126] 当第N阶剩余信号 是单调函数或者一个极小的常量时,无法再提取IMF分量,停止分解过程,得式(7):
[0127]            (7)
[0128] 其中,式(7)中, 是残余函数, 是S(t)的平均趋势,IMF分量c1,…,cn(t)分别包含信号不同时间特征尺度大小的成分,尺度依次由小到大,因此,各分量也就相应地包含从高到低的不同频率段的成分;每个频段所包含的频率成分是不相同的,并且随着原始心电信号函数S(t)的变化而变化。
[0129] (2)将分解后的每个IMF分量通过希尔伯特变换(Hilbert Transform, HT)变换得到IMF分量的瞬时幅值与瞬时频率。
[0130] 本申请中,EMD处理完之后得到的IMF分量,具有窄带信号、非复杂信号和平稳信号的特点。本申请中希尔伯特变换把经EMD处理完之后得到的信号的所有频率的IMF分量的相位推迟90度。步骤(2)的具体步骤为:步骤(2)中,将经过EMD处理完后得到的IMF分量通过式(8)进行希尔伯特变换:
[0131]  (8)
[0132] 式(8)中, 为解析信号实质也是一种复信号, 为复信号 的实部,被称为复信号 的虚部, 为瞬时幅值函数, 为瞬时频率函数,j表示虚部。而则是通过式(9)计算得到的,
[0133] (9)
[0134] 式(9)中,x(t)为原始心电信号数据,x(T)在本申请中被定义为原始心电信号的函数,T为积分变量,T的取值范围为﹣∞~+∞,t为时间;
[0135] 由得到的IMF分量的瞬时频率和瞬时幅值对解析信号 进行表示,如式(10)所示:
[0136] (10)
[0137] 式(10)中,n表示IMF分量的阶数,Re表示取 复数的实部,j表示虚部, 为瞬时幅值的函数,i表示第i阶IMF分量, 为瞬时频率的函数;
[0138] 其中,第i阶IMF分量的瞬时幅值 为将第i阶IMF分量送入公式(11)得到的:
[0139]         (11)
[0140] 由于解析信号x(t)可写成 ,因此,相位函数 可用公式(12)进行计算:
[0141]              (12)
[0142] 而瞬时频率 则可通过公式(13)计算获得:
[0143]               (13)
[0144] 经过HHT变换后心电信号的时序特征变得较为明显,便于后续的时域特征t、频域特征f和非线性特征n的特征提取。
[0145] (3)使用自适应差分阈值法确定R波,将原始心电信号数据进行多次分段,即得到预处理心电信号数据,其中,每段都是一个R‑R(指两个完整波形之间的时间间隔)周期,便于后续步骤S2的域特征t、频域特征f和非线性特征n的特征提取。
[0146] (4)将预处理心电信号数据按照70%训练集和30%测试集进行随机划分,最终获得140个训练样本(构成训练数据集T)和60个测试样本(构成测试数据集S)
[0147] S2:从训练集T中分别提取时域特征t、频域特征f和非线性特征n,这些特征最后组合在一起形成特征向量。其具体步骤为:
[0148] S2‑1:从训练集T中提取时域特征t:由于时域特征最具代表性的特征是:平均值(MEAN)、序列标准差(SDNN)以及相邻均方根差(RMSSD),因此,本申请中时域特征t的提取实质就是对训练集T中训练集样本数据的平均值(MEAN)、序列标准差(SDNN)以及相邻均方根差(RMSSD)进行的提取。本申请中通过式(14)计算MEAN(一般和人体的平均能量消耗速率相关), MEAN的计算公式,如式(14)所示:
[0149]   (14)
[0150] 式(14)中,RR表示R‑R间期序列,R表示心电图QRS波群中的R波,N表示R‑R间期序列的总数。
[0151] 序列标准差(SDNN)评估的是整个R‑R间期序列的标准差,SDNN通过公式(15)计算:
[0152]   (15)
[0153] 相邻均方根差(RMSSD)通过计算两相邻R‑R间期序列之差的均方根得到,RMSSD的计算公式,如式(16)所示:
[0154]  (16)
[0155] S2‑2:从训练集T中提取频域特征f:本申请中从频域特征中选取了3个最具代表性的特征分别为:高频分量(High Frequency,HF)、低频分量(Low Frequency,LF)以及归一化低频分量(Low Frequency Norm,LFnorm),本申请中从训练集T中提取频域特征f实质就是从训练集样本中提取高频分量(High Frequency,HF)、低频分量(Low Frequency,LF)以及归一化低频分量(Low Frequency Norm,LFnorm)。
[0156] 为了得到上述分量,首先要利用快速傅里叶变换对心电信号进行功率谱函数估计,其中,快速傅里叶积分函数计算公式,如式(17)所示:
[0157]  (17)
[0158] 其中,式(17)中,s(t)为原始心电信号的函数,i虚数单位,w为频率,t为时间。
[0159] 而后,对R‑R间期序列进行功率谱计算,步骤如下:
[0160] 选择去趋势运算之后的R‑R间期序列,通过三次样条插值(简称Spline插值,是通过一系列形值点的一条光滑曲线,通过求解三弯矩方程组得出曲线函数组的过程),然后,再重采样得到采样率为4Hz的离散R‑R间期序列;
[0161] 将离散R‑R间期序列样本进行重叠50%的处理方式,并将结果等分3份得到3组数据。时间窗设置为5分钟,总长度为300秒,则以每组150秒长度相互重叠75秒得到3组数据;
[0162] 将得到的3组数据加汉明窗并分别补零到2048点,通过进行2048点快速傅里叶变换得到0.002Hz频率的频谱信号;最后将得到的3组频谱信号取平均值,得心电信号的功率谱估计,而后,从其中提取功率谱频率0.15‑0.4Hz范围内的能量作为高频分量(High Frequency,HF),从中提取0.04‑0.15Hz的能量作为低频分量(Low Frequency,LF)。
[0163] 归一化低频分量(Low Frequency Norm,LFnorm)中包含人体神经活性信息。归一化低频分量(Low Frequency Norm,LFnorm)的计算公式,如式(18)所示:
[0164]  (18)
[0165] S2‑3:从训练集T中提取非线性特征n:本申请中从非线性特征中选取了2个最具代表性的特征分别为:样本熵(SimpleEn)和 复杂度。本申请中提取非线性特征n实质就是从训练集样本中提取样本熵(SimpleEn)和 复杂度。其中样本熵可以衡量序列的自我相似性的程度,如果在R‑R间期中得到一个较大的样本熵,表示序列自我相似性较低,产生新模式的概率较大。
[0166] 本申请中从训练集T中提取非线性特征n的具体步骤如下:
[0167] S2‑3‑1:样本熵的计算:
[0168] 对包含n个点的R‑R间期的时间序列 计算样本熵,样本熵的计算公式如式(19)所示:
[0169]  (19)
[0170] 式(19)中,函数指的是从训练集样本中随意选取长度为a的序列,这里的序列在时间上连续,意义为任意两个连续序列的距离都小于b的概率。 函数通过式(20)进行计算:
[0171]  (20)
[0172] 式(20)中,n是序列总长度,a是选取序列长度,函数C是通过式(21)计算得到的:
[0173] (21)
[0174] 式(21)中,  表示从时间序列  中取m个数组成的向量。 为距离函数,距离函数d的计算式如式(22)所示:
[0175]    (22)
[0176] 式(22)中,m是从 中选取数的个数,k是从0到m‑1随机选取一个数值,本申请中选取m=1,阈值b=0.1。
[0177] S2‑3‑2: 复杂度的计算
[0178] 为了计算 复杂度,本申请中先对R‑R间期的时间序列用 表示,经过式(4)所示的快速傅里叶积分函数得到频域序列 ;而后,再通过式(23)计算序列能量的总均方根 。
[0179] (23)
[0180] 式(23)中,N为划分的时间序列的总个数。
[0181] 而后,将能量小于 的部分叫做规则部分 ,其余部分能量称为混沌部分。将 分量置零,将 再次进行傅里叶逆变换得到序列 。 复杂度通过式(24)计算得到:
[0182]  (24)
[0183] S3:构建GRU神经网络:在深度学习框架Pytorch中构建GRU神经网络,GRU神经网络的结构图如图2所示,本实施例中构建的GRU神经网络包括input层、嵌入层、GRU层、线性分类层和输出层,其中嵌入层由二维卷积神经网络和批归一化层构成;
[0184] 其中,input层,用于将特征向量输入至嵌入层中;
[0185] 嵌入层用于将input层输入的特征向量转换为低维稠密向量,具体来说使用二维卷积神经网络和批归一化层同时运作共同实现将输入数据进行降维的目的,其中,通过二维卷积神经网络将将input层输入的特征向量数据映射到100维,而后通过批归一化层进一步使映射后的数据限定在维度为0到1之间;
[0186] GRU层用于对嵌入层输出的特征数据进行更高维度的抽线,使得得到的特征更具判别性,其中GRU层中包括更新门和重置门,更新门用于控制有多少前一时间步的信息和当前时间步的信息可以被传递到未来,重置门用于控制要遗忘多少过去的信息;
[0187] 线性分类层对GRU层输出的特征信息进行分类,并输出样本的分类预测结果,本申请将人体疲劳程度定义为10级,这里分类预测输出10类,每一类代表不同的疲劳程度。
[0188] S4:将时域特征t、频域特征f和非线性特征n送入GRU神经网络训练得综合损失L,并更新GRU神经网络参数,具体步骤为:将每个训练集样本的时域特征t、频域特征f和非线性特征n送入GRU神经网络进行训练,线性分类层会输出分类预测结果,将预测结果与该训练集样本的样本标签做交叉熵,作为综合损失L,综合损失L的计算公式,如式(25)所示:
[0189]  (25)
[0190] 式(25)中,P和Lable分别表示网络预测输出和样本标签。
[0191] 步骤S4中,本申请把迭代次数设置为10000,训练段长度设置为1000;训练数据为训练数据集中的所有样本数据。
[0192] S5:利用训练集T对GRU神经网络进行训练,然后利用测试集S对经训练得到的神经网络模型进行测试,输出最终GRU神经网络模型。具体来说:每次完成一个训练段后,将测试集样本送入嵌入层映射,完成嵌入映射后,将映射结果送入GRU神经网络提取特征,而后将特征送入线性分类层中实现分类,得到预测的分类结果;而后将分类结果与该测试集样本对应的样本标签对比得出测试精度;保持利用训练集样本对GRU神经网络训练后得到的GRU神经网络的GRU神经网络参数不变,利用该GRU神经网络对测试集样本进行测试,测试中总迭代次数设置为10000,每个训练段长度(epoch)为1000,若当前训练段的测试精度大于上一个训练段的测试精度,则保存当前GRU神经网络参数数据,输出GRU神经网络分类模型;若当前训练段测试精度小于上一训练段的测试精度,则不保存当前网络参数,并继续进行下一个训练段的训练,当训练次数达到预设的总迭代次数时结束训练,输出GRU神经网络分类模型。
[0193] 另外,为了验证本申请构建的GRU神经网络分类模型的有效性,本申请利用GRU神经网络分类模型、LSTM及LSTM改进方法基于同一训练集和测试集进行测试,得到不同方法所能取得的平均绝对值误差MAE,不同方法所能取得的平均绝对值误差MAE,如图4和表1所示。其中,图4和表1中的LSTM方法、LSTM‑SA方法、LSTM‑CSA方法是论文Fatigue Assessment Using ECG and Actigraphy Sensors中提到的三种对比方法。
[0194] 从图4和表1能够看出,本申请中的GRU神经网络分类模型相较于现有技术中的LSTM方法及LSTM改进方法(即LSTM‑SA方法和LSTM‑CSA方法),利用本申请中的GRU神经网络分类模型的GRU神经网络分类方法所能取得的平均绝对值误差MAE明显降低,具体来说,在上述四种分类方法中,相同测试样本数量的条件下,本申请使用GRU神经网络分类方法平均绝对值误差最小,比如,在同为15个测试样本的情况下,本申请GRU神经网络分类方法相较于LSTM改进方法——LSTM‑CSA方法,GRU神经网络分类方法能够降低平均绝对值误差11%;在同为30个测试样本的情况下,本申请GRU神经网络分类方法相较于LSTM改进方法——LSTM‑CSA方法,GRU神经网络分类方法能够降低平均绝对值误差18.94%;从表1和图4中也可以看出,随着样本数量的增加GRU神经网络分类方法平均绝对值误差也在不断地减少,比如,测试样本为75个的情况下相较于测试样本为15的情况下,本申请GRU神经网络分类方法的平均绝对值误差降低了63.7%,上述实验数据有效地证实了本申请中构建的GRU神经网络模型的有效性。
[0195] 表1
[0196]
[0197] 本发明中GRU神经网络分类模型的测试过程,如图3所示,主要包括步骤:
[0198] 对测试数据集进行去噪预处理;
[0199] 将测试数据集完成嵌入映射;
[0200] 将映射后的数据送入GRU层提取深层特征;
[0201] 送入线性分类器中得到分类结果,判断疲劳程度(等级)。