基于BiGRU深度神经网络的心肌梗死检测

2020-03-11 12:50张行进李润川赵红领王宗敏
计算机应用与软件 2020年2期
关键词:导联心电电信号

张行进 李润川 赵红领 王宗敏,3*

1(解放军信息工程大学数学工程与先进计算国家重点实验室 河南 郑州 450001)2(郑州大学互联网医疗与健康服务河南省协同创新中心 河南 郑州 450000)3(郑州大学产业技术研究院 河南 郑州 450000)

0 引 言

心肌梗死(MI)[1]指营养心肌的冠状动脉发生了粥样变化,管腔内壁上沉积的胆固醇斑块脱落形成血栓,堵塞了某支冠状动脉,使某部分心肌长时间得不到血供,便发生了心肌缺血、损伤甚至坏死,心肌梗死具有极高的死亡率和致残率。图1是一个典型的心肌梗死心拍波形。

图1 典型心肌梗死心拍波形

在MI发作期间患者可能经历许多严重症状,例如意识丧失、胸痛和呼吸短促。然而,许多患者仅出现轻微症状或根本没有症状,这通常被描述为无症状(也称作沉默)心脏病发作。基于手工提取心电信号特征,国内外研究者提出了各种针对心梗的自动分类算法,辅助医生快速做出临床诊断。心梗自动分类整体工作流程包括如下五个部分:(1) 心电信号采集;(2) 利用滤波或小波变换等方法进行去噪预处理;(3) 分割成心拍;(4) 心电特征提取与选择;(5) 心梗类型的自动分类识别。工作流程图如图2所示。

图2 心梗自动分类流程图

传统的手工提取特征的方法首先确定R波峰,然后用类似的方法定位Q波起点、S波终点、P波和T波的峰值点、起点和终点,最后获得几个幅值和间期特征。这些特征是根据医生的诊断规则提取的,它存在一个缺点,虽然QRS波群检测算法的准确度很高,但是R波的检测依然存在误差,由于其他特征值都是基于R波的位置而提取到的,所以其他特征值的提取会产生累积误差。与传统识别方法相比,深度学习[2]的优势在于它能够从海量数据中自动学习,并得到有效的特征表示。深度学习极大地推动了图像识别[3]、计算机视觉[4]、语音识别[5]等领域的研究进展,并在医学领域[6-7]得到应用。

本文提出了一种基于BiGRU和多导联ECG信号的神经网络深度学习算法,用于心梗检测,可行性高、识别率高,具有可扩展性。

1 相关工作

针对心肌梗死的计算机自动分析诊断,研究者提出了各种不同的分类识别方法。Sopic等[8]采用随机森林分层分类方法,实现了心肌梗死的检测,为了应用于实时分析系统,逐层增加特征数量,以减少分类所需要的时间。Sharma等[9]设计了一种双波段最优双正交小波滤波器组对ECG信号进行预处理,然后采用K-近邻(K-Nearest Neighbor,KNN)方法,只利用单导联数据就实现了心梗检测。Dohare等[10]对提取的多维特征首先采用主成份分析(Principal Component Analysis,PCA)方法降维,然后用基于径向基函数(Radial Basis Function,RBF)的SVM方法,实现了心梗的检测。

Chang等[11]首先使用隐马尔科夫模型(Hidden Markov Model,HMM)从V1~V4胸导联信号中提取特征,然后采用SVM和高斯混合模型(Gaussian Mixture Model,GMM)实现了心梗的检测。Seenivasagam等[12]采用前馈神经网络(Feed-Forward Neural Network,FFNN)和SVM实现了心梗的检测。Lui等[13]使用PTB 上标准I导联的数据,采用卷积递归神经网络实现了心梗的检测。Acharya等[14]使用标准II导联的心电数据,采用卷积神经网络(Convolutional Neural Networks,CNN)方法实现了心梗的检测。Reasat等[15]采用卷积神经网络方法,仅仅使用三个导联的ECG数据,就实现了心肌梗死的检测。Wu等[16]基于小波分解,采用多尺度深度特征学习方法实现了心梗的检测。

2 实验数据

本文使用PTB心电诊断数据库,总共采集了549条记录。290名受试者包括有心肌梗死、心肌肥大、心率衰竭、房室束支传导阻滞患者和健康对照者,其中男性209名(平均年龄为 55.5岁),女性81名(平均年龄为61.6岁)。每条记录大约2分钟,包括15个同步测量的信号:传统的12导联以及3个Frank导联心电信号。PTB诊断类别及受试者人数统计数据如表1所示。

表1 PTB诊断类别及受试者人数统计表

3 数据预处理

ECG信号是诊断心血管疾病的重要依据,但由于心电信号是一种不稳定、非线性和微弱的电信号,振幅约为几毫伏,频率范围在0.05 Hz到100 Hz之间,在信号采集过程中容易受到人体活动和仪器等各种因素的干扰,不利于ECG信号的特征提取,因此有必要对采集到的ECG信号滤除各种噪声。

3.1 基线漂移

基线漂移的频率在0.05~2 Hz之间,与低频正弦曲线相似。本文采用中值滤波算法去除基线漂移,方法简单,速度快,准确度高,能有效滤除变化较大的基线漂移。首先对原始心电信号进行重采样,然后对重采样点前后一定长度的数据按照大小排序,取排序后数据的中间值。用同样的方法处理所有重采样点,得到ECG信号中的基线部分,从原始心电信号中减去这个基线部分,就得到去除基线漂移后的心电信号。

3.2 工频干扰

工频干扰指的是因市电产生电磁波辐射而导致心电信号采集异常。PTB心电数据取自德国的一所医学大学,工频干扰是50 Hz。本文采用的是巴特沃斯IIR(Infinite Impulse Response)数字带阻滤波器,该方法原理简单、效果较好、处理速度快。

3.3 肌电干扰

肌电干扰近似于白噪声,频率范围在5~2 000 Hz之间。去除不规则的肌电干扰通常采用阻带滤波方法,原理是设置上限、下限两个频率界限,输入信号的频率处于上限、下限之间才能够通过滤波器,超出或者低于设置的值都将会被过滤掉。本文采用切比雪夫数字低通滤波器,从原始心电信号中去除频率在0.05~100 Hz以外的信号成分。

3.4 心拍分割

本文采用基于小波变换的检测算法,使用的母小波为二次B样条小波,它是一个具有对称性和正交性的微分小波。经过小波变换后,在系数中寻找最值,最小值和最大值之间的过零点就是R波峰值点所在位置。据统计,成年人每分钟心跳约60到100次,考虑到老年人和儿童,如果以R的峰值点为基准向前向后提取若干采样点,基本上可以覆盖一个心拍波形的主要特征。本文首先定位R波峰值点,然后以它为基准,向前向后分别选择250 ms和400 ms的原始采样数据,将这些值组合为一个心拍的特征向量。

本文对PTB数据库进行预处理,并提取出54 753个心拍,这些心拍分属于2个类别,心梗(MI)和健康对照(Healthy Control,HC),各类心拍的样本数量如表2所示。理论上来说,如果使用所有15个导联的数据,学习的信息会更全面,能够获得总体上更好的结果,但这不符合临床实际情况,临床通常仅有12导联可用,故此,本文仅使用临床上普遍采用的12导联的数据。由于六个肢体导联的数据是两个测量电压(例如Ⅰ和 Ⅲ)的线性组合,因此仅使用两个肢体导联,而丢弃其他肢体导联的数据,以去除肢体导联之间的数据相关性。因此,实验只考虑临床应用中常用且非冗余的8个导联心电数据。

表2 各类别心肌梗死的心拍数

4 BiGRU模型

针对时间序列样本,研究者提出了循环神经网络RNN(Recurrent Neural Network),在RNN中,增加了一个时序结构,神经元的输出可以在下一个时间戳直接作用到自身。为了解决RNN在时间轴上出现的梯度爆炸和梯度消失现象,Hochreiter 和 Schmidhuber(1997)提出了长短时记忆单元[17](Long Short-Term Memory,LSTM),通过门开关实现时间上的记忆功能。针对LSTM模型复杂、训练和预测时间长的问题,文献[18]提出了GRU模型。如图3所示,GRU设置更新门替换输入门和遗忘门,用重置门替换原先的输出门。使用更新门控制前一时刻的状态信息被带入到当前状态中的程度,使用重置门控制忽略前一时刻的状态信息的程度。

图3 GRU神经元结构

(1)

tt=σ(Wr·[ht-1,xt])

(2)

(3)

(4)

(5)

(6)

图4 BiGRU结构模型图

针对心梗检测任务,用X=[x1,x2,…,xm]表示经过预处理和分割后一个心拍的心电信号序列,把X输入BiGRU深度学习网络,结果送入SoftMax全连接层分类,最后输出是否有心梗的标记y∈{0,1}。在训练过程中,使用随机梯度下降法(Stochastic Gradient Descent,SGD)对模型的参数进行优化,为了提高GRU网络的学习速度,采用交叉熵损失函数来衡量模型实际输出与期望输出之间的接近程度,定义为:

(7)

gt=▽θt-1f(θt-1)

(8)

Δθt=-ηgt

(9)

式中:gt为SGD当前batch的梯度;θ为待优化的参数;η为学习率。在模型的输出层使用了RELU激活函数,RELU采用强正则化方法,能够训练多层深度神经网络,使得模型的学习具有很强的鲁棒性,因此无需再增加任何梯度裁剪和正则化方法。

5 实验结果

5.1 实验参数

验证实验首先对ECG信号进行去噪预处理,然后检测R波,将每条大约两分钟的心电信号分割为心拍序列,接下来以R波峰为基准前后分别取250 ms和400 ms的采样数据,构成单导联心电向量,对8个导联分别采用相同的方式进行处理,生成8个心电向量。每一个心电向量输入一个BiGRU网络进行学习,8个BiGRU网络学习的结果输入一个全连接的SoftMax层产生分类结果。使用L2正则化方法对网络参数进行约束,训练过程引入了Dropout策略防止过拟合,采用批量的SGD优化方法用于模型训练。参数设置如表3所示。

表3 参数设置

5.2 评价指标

为了评价本文提出的检测算法的性能,我们使用了三个指标,它们分别是分类灵敏度(Sen)、特异性(Spe)和准确度(Acc)。分类准确度评估所提出的方法在所有心拍上的整体性能。由于正异常心拍的数量不同,Sen和Spe在评估分类器性能方面会出现较小的偏差,评价指标计算公式如下:

(10)

(11)

(12)

式中:TP是正确检测为MI的心拍的数量;TN是正确识别为HC的心拍数量;FN是错误检测为HC的心拍数量;FP是错误诊断为MI的心拍数量。

5.3 结果与讨论

在训练过程中,批量大小设置为128,训练迭代次数设置为20。混淆矩阵和分类性能结果如表4所示,可以看出,该算法在心梗检测上的总体准确度为99.89%,在灵敏度、特异性和精度上都达到99%以上。

表4 混淆矩阵及分类性能

文献[9]设计了一种新颖的双波段最佳双正交滤波器组,将ECG信号分解成6个子带,接下来根据这些子带计算出特征,最后使用KNN分类器得到分类结果。在PTB数据集上验证算法的性能,对于没有去噪的原始心电数据集,得到的准确度为99.62%,在经过去噪预处理后的心电数据集上,得到的准确度为99.74%。文献[10]首先对原始心电信号进行去噪预处理,然后组合12导联的信号生成具有更强的波形特征和间期的复合导联,接下来采用阈值法检测QRS复合波的峰值,并以此为基准得到其他几个特征值,最后采用SVM分类器分类,准确度达到98.96%。文献[13]首先使用Savitzky-Golay平滑滤波器和多项式拟合法去除基线漂移,然后采用非线性变换和一阶高斯微分器来定位QRS复合波的位置,并完成心拍的分割,最后送入CNN深度神经网络训练,在测试数据集上得到95.3%的准确度。文献[14]等人仅使用标准Ⅱ导联心电数据,首先使用Daubechies 6母小波从ECG信号中去噪并去除基线漂移,然后采用经典的Pan Tompkins算法检测R波峰,并分割心拍,最后送入CNN深度神经网络训练,在测试数据集上得到95.22%的准确度。为了进行性能的对比,他们还完成了另一个实验,与前一个实验的唯一区别是不进行去噪预处理,但是得到的分类准确度只有93.53%。

本文所提出的算法对原始心电信号进行了去噪预处理,分析了多导联的数据,信息更加全面,并且采用了BiGRU深度学习方法,不局限于医学专家所设计的手工特征,机器自动提取特征,能够挖掘出隐藏在大数据后面的有用信息,在心梗检测上得到了优异的结果。表5是本文与其他文献算法在性能上的对比结果,可以看出,在准确度、敏感性和特异性方面,本文可以比其他文献方法获得更好的性能。

表5 与其他文献性能对比结果

6 结 语

本文提出了基于BiGRU的多导联心肌梗死检测算法。首先采用滤波器组对心电信号进行预处理,然后采用二次B样条小波变换方法定位R波峰,接下来把每条心电信号分割成独立的心拍,最后采用BiGRU深度学习方法进行二分类。用公开的PTB心电数据库对算法进行了验证,并与其他文献提出算法的实验结果做了对比。结果表明本文算法有较高的灵敏度、精确率、准确度,而且具有普适性。使用本文所提出的深度学习框架能够从多导联的ECG信号中提取到潜在的有用的特征。下一步将探索在其他ECG数据集上训练该分类器,以检测各种其他的心脏疾病。考虑到其优异的性能,基于BiGRU的多导联心梗检测算法可应用于计算机辅助诊断平台。

猜你喜欢
导联心电电信号
基于融合模糊聚类算法的异常心电多频段弱信号快速捕捉方法
基于窗函数法的低频肌电信号异常分类仿真
基于单片机的心电信号采集系统设计
卡片式智能心电采集仪
18导联动态心电图的应用价值研究
神经元电生理模型的构建及分析
“声名大噪”的跑步神器?
多类运动想象脑—机接口导联选择方法
15导联心电图与18导联心电图对临床诊疗价值的比较分析
2016浙江省心电生理与起搏学术年会隆重举办