杨淑莹 桂彬彬 陈胜勇
(天津理工大学计算机科学与工程学院 天津 300384)
(计算机视觉与系统教育部重点实验室 天津 300384)
影响人类生命健康的各种疾病中,心血管病是最主要的疾病之一,据国家心血管病中心报告,心血管病死亡率在各种疾病中居首位,占居民疾病死亡构成的40%以上[1]。在心血管疾病的早期发作中,心律失常的症状已在临床实践和病理学研究中广泛报道。心律失常的临床诊断主要依靠心电图(Electro Cardio Graph,ECG)。许多心脏结构或电生理异常在ECG上都有对应,对其进行识别可以帮助诊断心脏疾病。在获得患者的ECG后,往往需要专业的心脏病医生结合大量的专业知识和临床经验才能做出合理的诊断,这需要投入相当大的人力和精力。随着计算机科学的不断发展,心律失常自动检测任务已成为研究热点,它为医生提供了越来越有效和可靠的诊断依据,缓解了医生的人力投入。
传统上,ECG信号的自动检测任务通常需要3个步骤,即信号预处理、特征提取和模式分类[2]。ECG信号通常是经过专用的心电记录仪获取的,因此原始信号中混杂了各种无效信号和噪声信号。ECG信号中主要的噪声包括心肌噪声、基线漂移、工频干扰、信道噪声和运动伪影[3,4]。针对 ECG信号比较典型的去噪方法包括低通滤波器、自适应滤波器[5,6]。在最近的报道中,研究人员在去噪方法算法上做了新的研究,提出了如经验模态分解(Empirical Mode Decomposition,EMD)、自适应傅里叶分解和基于人工神经网络(Artificial Neural Network,ANN)的去噪方法[7–9]。
信号预处理之后就是提取ECG 的特征。ECG信号是一个关于时间的序列信号。通常一个心跳周期包括P波、QRS波和T波,这些波描述了一个心电周期的不同阶段。ECG信号的形态学特征是其常见特征之一,如斜率、峰值、幅度、间隔。文献[10]使用ECG信号的形态特征预先确定阻塞性睡眠呼吸暂停(Obstructive Sleep Apnea,OSA)程度。ECG的形态学特征可以使用Hermite变换、小波变换或离散余弦变化等算法得到[11,12]。此外诸如主成分分析、线性判别分析和独立成分分析之类的特征选择算法可从降低数据维度方面生成更高效、更紧凑的特征向量[13]。在新的研究中,Alquran等人[14]使用高阶谱分析,计算ECG信号的双谱和3阶累积量得到2维图像形式的特征信息,以便应用卷积神经网络(Convolutional Neural Network,CNN)进行分类。取得ECG的特征之后,便是根据具体的检测识别任务设计分类器。在现有的研究中,学者主要采用机器学习领域中的分类算法,例如线性与2次判别、支持向量机(Support Vector Machines,SVM)、随机森林、贝叶斯网络和ANN[15]。具体来讲,文献[16]在ECG的 (RR)间隔和小波变换特征上采用线性判别分析算法对3类ECG信号进行检测分类,并最终取得了93%的平均正确率。Nasiri等人[17]使用SVM和遗传算法对从ECG信号提取的22维特征进行分类,并在4分类心律失常检测中达到了93%的正确率。Casas等人[18]在心室早期收缩(Premature Ventricular Contraction,PVC)检测任务中提出了一种使用贝叶斯分类算法的技术,在MIT-BIH数据库的108,653个ECG分类搏动中进行训练测试并取得了95%的F1得分。Kumar等人[19]提出采用随机森林算法进行心律失常检测,并在六分类任务上获得了92.16%准确率的成绩。
以上用于心电信号分类检测的方法其分类结果完全依赖从心电信号中提取手动特征,特征的质量对分类检测的可靠性和性能有重大影响。而在机器学习算法中,通过ANN,可以做到无需信号预处理和专家知识对ECG进行分析,从而避免了对生物标志物先验信息的需求,并且可以帮助发现新知识。在基于ANN的心律失常检测研究中,Rajpurkar等人[20]研究了一种基于34层卷积神经网络的心律失常检测算法,算法的测试结果在召回率(Recall)和准确性(Precision)方面均超过了心脏病专家的平均表现。Huang等人[2]提出一种基于快速压缩残差卷积神经网络(Fast Compression ResNet,FCResNet)的精确心律失常分类方法,该网络结构由快速下采样残差网络、快速下采样卷积网络、残差网络和分类网络组成,将特征提取和分类进行整合。文献[14]应用AlexNet神经网络,将信号的双谱图作为其输入,实验中得到了91.3%的平均准确率。Mostayed等人[21]提出了一种基于循环神经网络的算法,该网络由两个双向的长短期记忆网络(Long Short-Term Memory,LSTM)层组成,以检测12导联ECG信号中的病理。Singh等人[22]则比较了循环神经网络(Recurrent Neural Network,RNN)、门控循环单元(Gated Recurrent Unit,GRU)、LSTM3种循环神经网络在心律失常分类上的表现,分别得到了85.4%,82.5%和88.1%的准确率。
上述关于ANN对ECG信号进行分类检测的应用中,各种神经网络模型利用其在知识发现上的特点将特征提取和分类整合,减少了在算法设计中对专家知识和传统特征提取算法的依赖。基于深度神经网络的心律失常自动分类算法可以通过具有多个隐藏层的神经网络来学习ECG信号中的隐含特征。然而,现有的研究中基于深度神经网络的分类检测算法仍然存在不足之处。
(1)为了满足现有卷积神经网络模型的2维输入数据要求,通常采用ECG的2维图像特征,该处理方法会破坏原始数据的一些有用信息和增加数据冗余,这会对模型的识别能力产生不利影响。
(2)ECG数据是1维时间序列上的信号,因此1维卷积神经网络模型中的局部感知域是在时间维度上划分,缺乏频域上的信息。
(3)基于2维卷积的网络参数太多,训练模型的时间成本很大,在进行推理时实时性能较差。
鉴于现有基于深度神经网络的心律失常自动分类算法的不足,本文提出一种使用小波分解和1D-GoogLeNet模型结构的ECG心律失常分类检测方法。从ECG信号中选择5种心律类型,信号在经过小波分解后得到不同频带的子信号,然后该结果用作1D-GoogLeNet的输入,以便最终识别和检测ECG心律失常类型。本文使用来自MIT-BIH心律失常数据库的ECG记录作为训练和测试数据,分类结果表明,所提出的1D-GoogLeNet模型可以达到96.58%的平均准确度。
机器学习能够在ECG分类任务上有大量的研究应用,一个重要的原因在于研究人员能够较容易地获得各种公开的ECG数据集用于验证他们提出的众多方法。例如MIT-BIH心律失常数据集(MITBIH arrhythmia database)[23],该数据集包含48个30 min时长的双通道动态心电信号记录,最初用于评估心律失常检测器。其他的被广泛采用的数据集还有Physionet’s Physiobank,INCART和 the American Heart Association database[24]。
本文选择MIT-BIH心律失常数据集(下文将以MIT-BIH代替)作为验证文中所提心律失常检测算法的数据集。MI-BIH中的数据来自48个不同的被采集人员,每组都包含两路不同导联方式的ECG。本文选择了样本最多的MLⅡ型ECG信号,共计46组MLⅡ型数据。MIT-BIH中的数据都有详细的标注,标注信息主要包含了15种心跳类型。本文实验中检测的心律类型包括左束支传导阻滞(Left bundle branch block)、右束支传导阻滞(Right bundle branch block)、心室早期收缩(Premature ventricular contraction)和心房过早收缩(Atrial premature contraction)4种心律失常类型及正常心跳(Normal beat),总共5种心跳类型。根据MIT-BIH中的标注信息,本文分别采用L,R,V,A和N作为上述5种心跳类型的标识。表1列出了46组30分钟时长的数据集中包L,R,V,A,N的统计结果。
表1 MI-BIH中L,R,V,A和N统计结果
ECG信号是一个1维时间序列,信息维度低,且原始数据中包含了不必要的高频噪声信息,为了增加数据维度和去噪,本文采用多分辨率小波变换对数据进行分解,既能得到各频带的子信号又增加了信号的维度,使后文提出的模型达到更好的心律失常检测效果。
在小波分解中通过尺度函数φ(t)和小波函数ψ(t)基将原始信号分解为不同频带的子信号。一个长度为M的离散信号s(t)的小波近似系数a0(k)和小波细节系数dj(k)可以表示为
式(1)和式(2)中的j和k分别表示子信号在频域上的伸缩和时域上的平移。然后根据近似系数和细节系数又可以重构出原始信号
上述使用小波变换对信号进行多分辨率分析的过程,就是本文中对ECG信号进行分解,实现数据增维的基础。使用小波分析对信号进行处理时,可供选择的小波函数众多且变换后得到的结果各不相同,因此需要根据分析的目的选择合适的小波函数。本文选择Daubechies小波函数族中的Db6作为实验的小波函数。Daubechies小波函数族的形状与ECG信号中的QRS波相似,并且它们的能谱集中在低频附近[25]。图1是实验中MI-BIH的ECG信号经过8级小波分解后的结果,包括原始信号s,第8级近似信号a8和1~8级细节信号d1~d8。
图1 Db6 8级ECG信号的多分辨率分解
MI-BIH中的ECG信号时长为30 min,采样频率是360 Hz,而标注的方式则是将心跳类型标注到心电周期中的R波处。在本文中,经过多分辨率小波分解后需进一步从每一个ECG序列中截取出L,R,V,A,N 5类标注所在的心电周期,组成实验所需的数据集。在处理每一位被采集者的ECG信号时,因为心律各不相同,所以截取的一个完整心电周期的数据长度也各不相同,为了统一每一个数据样本的长度,在本文中,采用线性插值将所有截取出的原始样本缩放到360个数据的长度。同时为了减弱ECG信号中包含的人员信息对检测结果的影响,对L,R,V,A,N 5种类型分别从总数据样本中随机抽取8000例、7000例、7000例、2500例和8000例,然后各类以4:1分为训练集和测试集后再随机排序。最终文中将数据集用数学符号表示为
其中,xi表 示长度为L的 心电信号,yi∈(1,2,...,C),为xi对应的心跳类别标签编号,C为分类总数,N为数据集中样本的总个数。
GoogLeNet最开始由Christian Szegedy等人在ILSVRC 2014年提出,并且在分类挑战赛(Classification Challenge)和目标检测挑战赛(Detection Challenge)中均取得头筹[26]。近几年人们对CNN的研究方向主要集中于改进网络的深度、宽度和基数3个方面,以提升网络的性能[27]。GoogLeNet的主要特点就是改进网络的宽度使得网络能提取更丰富的特征。在GoogLeNet的结构中引入了名为Inception的模块,通过该模块增加卷积网络在提取深层特征时的网络宽度。该团队在后续的工作中又对GoogLeNet进行了改进,依次提出了Inception V2,Inception V3,Inception V4与Inception-Res-Net-V2 4种改进网络,从加速训练、减少参数规模、防止梯度弥散这几个方面进行了优化[28–30]。
GoogLeNet最开始出现于计算机视觉领域,应用于目标分类和识别等方向,由于图像是一个2维数据,所以GoogLeNet的卷积模块中各个卷积核都是2维卷积核。在本文中,待检测的数据——ECG信号,是典型的1维时间序列。在本文的研究中,为了将Inception强大的特征提取能力应用到心律失常检测中,遂提出了1维GoogLeNet(1D-GoogLeNet)。在1D-GoogLeNet的结构中依然以Inception为核心实现对网络的拓宽,而卷积核则由原始的2维卷积核替换为1维卷积核。此外,在本文的研究中还对Inception的结构做了优化,使得网络在心律失常检测任务中有更优的表现。详细来讲主要有以下几点:首先,由于本文中最终的检测类别只有5类,远远小于GoogLeNet设定的1000类分类结果,为了减小过拟合现象,本文在不改变特征提取层输出大小的情况下减少了1D-GoogLeNet中学习参数的规模,主要通过重新调整每个Inception中卷积层的卷积核数量和网络的深度;其次,在分类器模块中,新增加了一层全连接以提高分类器的非线性;最后,精简了只在多维卷积中才会出现的特异结构,如在InceptionV3中用两个前后相继的1维卷积代替2维卷积。图2、图3给出了1D-GoogLeNet的网络结构示意图。其中 “S”标志该神经网络模块的stride=2,否则为1;括号内的数字表示卷积核的大小,括号外的数字表示卷积核的数量。
图2 1D-GoogLeNet中的Inception模块
图3(c)是1D-GoogLeNet的整体网络结构图,左侧为数据流向,右侧为该节点数据输出尺寸,数字c表示训练数据的输入通道。网络主要由特征提取器和分类器组成。特征提取器由各个Inception和Stem构成;分类器由两层全连接和dropout组成,括号内给出了该层所用的激活函数。
图3 1D-GoogLeNet中的InceptionE,Stem模块和整体网络结构图
在实验阶段,用PyTorch1.5实现了本文所提1D-GoogLeNet,并在Nvidia GTX 1080 GPU上训练该模型。训练中将数据集D按照4:1划分为训练集和测试集,采用交叉熵作为网络的损失函数,使用学习率为10–5的Adam优化策略[31],小批量(minibatch)大小为32,共训练24轮。
在实验结果评估上,本文采用精确率(Precision)、召回率(Recall)和F1-score来衡量1DGoogLeNet模型在各个类上的检测性能。每一类的精确率、召回率和F1-score可以通过式(5)和式(6)得到
式(5)、式(6)和式(7)中P,R和 F1分别为精确率、召回率和F1-score;TP表示将正类样本预测为正类的频次,TN表示将负类样本预测为负类的频次,FP表 示将负类样本预测为正类的频次,FN表示将正类样本预测为负类的频次。对于本文心律失常检测而言,是一个多分类任务,每一种心律型的TPi,FPi,FNi(i=1,2,...,5)具体表示的意义可以由图4说明,图为1D-GoogLeNet检测心律失常得到的混淆矩阵。图4中红色边框所围的蓝色区域表示左束支传导阻滞(L)的 TP,红色和橙色区域分别为其FN,FP,数值代表对应的频次,如(N,R)的值为1,意味着模型将测试集中的N类样本预测为R类的频次为1。
图4 检测结果的混淆矩阵
对于模型的整体性能,则采用训练时耗(time)、准确率(Accuracy)以及每一种心律类型Pi,Ri,F 1i(i=1,2,...,5)的宏平均值(macro-average)PM,RM和F 1M作为度量标准,式(8)和式(9)是其具体的数学表达式
其中,n表示心跳类别数,在本文中n的具体数值为5。在实验中,本文探讨了由不同小波分解信号组合成的输入数据对实验结果的影响,此外还验证了本文所提1D-GoogLeNet和已有的分类模型的性能差异,以展示基于小波分解和1D-GoogLeNet在心律失常检测任务上的有效性。
首先确定了小波分解所得分量的各种组合方式:含有所有分量的D1={a8,b1-b8}、除去高频细节分量与近似分量的D2={b2-b8}与D3={b3-b8}和只含有部分细节分量的D4={b2-b7},以及原始数据D5={s},各种组合方式的分量形成具有不同通道数的输入数据。通过训练测试,表2记录了详细的实验结果,用粗体标注了各个度量标准的最大值。从表2数据可以明显看出,分解得到的多通道数据在各类指标上都优于原始数据。具体讲,原始数据在关键指标Acc上取得了95.00%的成绩,对应的多通道分解数据中D4取得了96.58%的最高成绩,比原始数据高出了1.58%,此外D4数据在召回率和F1-score指标上也取得了最优表现。虽然D3数据在精确率上的表现最优,但对于本文的心律失常检测任务,召回率比精确率更具有参考意义。实验还对比了其他数据预处理算法对实验结果的影响,表3展示了离散傅里叶变换(Discrete Fourier Transform,DFT)、经验模态分解(Empirical Mode Decomposition,EMD)和小波分解(Wavelet Decomposition,WD)对分类检测结果的影响。从表3可以看出,经过 DFT和EMD方法预处理的数据都能取得较好的检测结果,但相较于小波分解后的数据,在检测准确率上都有大约2%的差异。
表2 基于小波分解和1D-GoogLeNet的分类检测结果(%)
表3 各预处理方法在心律失常检测任务中的比较
通过上述实验结果,验证了当采用小波分解后的数据作为1D-GoogLeNet的输入,模型取得了更优异的表现。图5给出了当D4数据作为输入时,模型训练的表现,图6和表4记录了其测试集的详细结果,图6中,主对角线的数值即为各类的召回率。在结果中A类型的心律检测结果明显劣于其他类型,导致该现象的主要原因来自数据不平衡——A类型的样本明显少于其他各类。
表4 D4数据作为1D-GoogLeNet的输入,各类的测试结果(%)
图5 D4数据作为输入时1D-GoogLeNet的实验结果
图6 D4 数据测试集的混淆矩阵
其次,本文在输入数据确定的情况下,对文中所提1D-GoogLeNet和简单1维化的GoogLeNet两者的性能做实验比较。简单1维化的GoogLeNet是指在保证GoogLeNet网络结构和参数不变的情况下,将原始的2维卷积核替换为1维卷积核所得的网络模型。同时还比较了相同输入情况下不同分类检测模型的检测性能。主要比较了同为卷积神经网络的LeNet和能处理顺序数据(sequential data)的循环神经网络(Recurrent Neural Network,RNN)。实验结果如表5所示,表5列举了各个模型以D4数据作为输入时,在准确率、精确率、召回率、F1-score、训练时耗和学习参数规模(params)上的结果。从表5所示的对比结果中可以看出,本文所提1D-GoogLeNet在准确率、精确率、召回率和F1-score度量标准上都优于其他3种模型。其中在准确率(AccM)上1D-GoogLeNet比其他三者分别高出4.4%,2.6%,3.8%;训练时长方面1D-GoogLeNet相较于简单1维化GoogLeNet,得益于学习参数规模小,将时长减少了1/2以上,使训练更快。
表5 1D-GoogLeNet与其他分类模型的实验比较
本文提出了一种使用Db6小波分解和1DGoogLeNet卷积神经网络的心电图心律失常检测方法。从MIT-BIH心律失常数据库中选取了N,L,R,V,A 5种不同类型的ECG信号,共计 32500条记录。在该方法中,首先使用Db6对ECG的时域信号进行8级分解,然后包含一个完整心电周期为准则对信号切割后再使用线性插值统一缩放到360个数值长度,组合成多通道的信号样本,最后将5种心律失常类型的样本用作1D-GoogLeNet的输入,以确定ECG心律失常类型。经过详细实验验证,结果表明:分解后的多通道数据检测效果优于未分解的;不同小波分量组合方式之间,检测结果有差异,当输入数据由{d2-d7}组合时,所提出的1DGoogLeNet模型可以达到最高的96.58%平均准确率;1D-GoogLeNet和简单1维化GoogLeNet相对比,结构更简单、参数更少的1D-GoogLeNet的准确率比后者提高了4.7%,训练效率提高了118%。以上结论最终验证了本文所提将多通道小波分量ECG信号样本作为输入的1D-GoogLeNet分类器可以在心律失常检测任务上取得优异表现。