陈 鹏,刘子龙
(上海理工大学 光电信息与计算机工程学院,上海 200093)
近年来高血压、冠心病等心血管疾病逐渐成为全球性的主要医疗问题。据统计,每年因该类疾病死亡的人数约占全球死亡人数的三分之一[1]。心律失常是指心跳过快、过慢或者其他不规则跳动,属于典型的心血管疾病。偶尔的心律失常可能不会对身体产生严重影响,但长期的心律失常可能与一些疾病有关,严重时还发生会心力衰竭甚至猝死等情况,因此针对心律失常的诊断十分重要。目前主要根据病人病史、体格检查还有心电图等手段进行判断。心电图是利用心电图机记录心脏的电活动的一种技术,普通心电图与动态心电图都能反映人的心电活动状态,前者是短时间的,而后者能进行24小时监测。由于心电图具有无创性和经济性,因此被大多数医疗机构用于心律失常的分析诊断[2]。心电图分析需要经验丰富的医生以及大量时间,而我国患者数量庞大且医生资源相对缺少,因此准确高效地辅助医生进行心律失常的诊断已成为一个亟待解决的问题。
随着机器学习等技术的发展,利用计算机自动诊断心律失常成为近年来研究的热点。目前基于计算机信号处理技术的心电自动分析方法有很多,包括:(1)基于差分阈值算法的R波检测[3];(2)利用小波变换与主成分分析法进行特征提取,然后使用前馈神经网络分类[4];(3)K近邻(K-Nearest Neighbor,KNN)[5];(4)基于支持向量机(Support Vector Machines,SVM)和粒子群优化分类算法[6];(5)利用短时傅里叶变换生成频谱图结合卷积神经网络的分类方法[7]:(6)利用离散小波变换特征提取后,采用深度神经网络(Deep Neural Networks,DNN)作为分类模型[8];(7)基于深度双向长短时记忆网络(Long Short Term Memory Network,LSTM)的小波序列分类模型[9];(8)具有深层结构的卷积神经网络(Convolutional Neural Network,CNN)[10]等。运用传统机器学习的方法进行心电信号的特征提取,然后经过分类器分类已取得了较为理想的效果。然而这些都依赖于前期信号的处理与人工特征的选择,受到专业知识的限制,存在局限性,实际效果不佳。基于以上情况,深度学习这一端对端的方法开始被应用于计算机的自动识别领域。深度学习具有自动提取特征的能力且无需人工干预,只要数据量够大就能学习到足够的特征,泛化能力也强于传统的机器学习方法。CNN相对于DNN而言不需要过大的数据集,因此在心电图检测心律失常方面取得了更好的效果。
大部分自动心电信号分类的方法都是以一维心电数据作为输入,这些方法存在以下几个缺陷:(1)需要对信号进行去噪处理。针对一维心电信号而言,各个时间点的信号值都具有相同的重要度,去噪后可能改变原始心电信号的含义[11];(2)数据集分布不均衡,需要数据增强。本文中,一维心电信号的数据扩增主要通过加噪去噪等方法,转换为图像后,方式增多且更加丰富;(3)需要根据不同心电采样频率振幅的设备调整模型;(4)相比于一维信号,卷积神经网络更适合从二维图像中提取特征,并保留像素的空间关系;(5)复杂的模型结构耗时较多且影响性能。本文设计的GAN-CNN模型将分类网络与判别网络合并,降低了模型的参数数量,提高了运行效率。此外,采用二维图像作为输入,与医生诊断模式更为接近。
本文将一维心电信号进行单个节拍分割后转化为二维的灰度图像,采用数据增强手段、模型训练和分类,解决了上文提到的问题。整个过程仅通过GAN-CNN这一个网络实现。本文所用数据集来自美国麻省理工学院提供的MIT-BIH心律失常数据库。使用时,选择其中较为常见的7种异常类型与正常心搏制作数据集,分别为:心室融合心跳(FVN)、左束支传导阻滞心搏(LBBB)、起搏心搏(PAB)、室性早搏(PVC)、右束支传导阻滞心搏(RBBB)、室性逸搏(VEB)、心室颤动波(VFW)、正常心搏(NOR)。由于MIT-BIH数据库中各个心电信号类别分布不均衡,FVN、VEB、VFW这3类数据过少,需要数据增强处理以提高模型泛化能力。本文将首次采用生成对抗网络[11],针对数量较少的心拍图像进行数据增强。本文中,对抗损失用于提升生成器模型训练的稳定性,图像损失用于评估生成图像的真实性,两者结合能进一步改善图像的生成效果。除了数据增强外,模型中通过加入批量归一化层、Dropout层以及降低模型层数来减少过拟合。本文采用随机梯度下降(Stochastic Gradient Descent)优化器函数以及Swish激活函数提高模型精度。在网络结构设计方面,本文将判别器与分类器的训练集于一个网络,简化了模型架构与参数。测试时,随机选取数据集的60%作为训练集,20%为验证集,20%为测试集。
本文采用MIT-BIH心律失常数据库作为数据集。该数据集由47位患者的48个半小时双通道心电记录组成,记录中的每个心跳都由专家根据其心律失常类型进行注释,信号的采样频率为360 Hz。与传统方法不同,本文将数据中单个心拍的一维信号转换成大小为192×128的二维灰度图像,省去了滤波和特征提取环节。为了统一各个波形的大小,在提取原始心电信号后,加入图像腐蚀的方法增强波形显示效果,并通过归一化将原始数据幅值限定在128内,将单个波形长度限定在192。由于颜色对心律失常类型的判断并无影响,因此该方法最大程度地保留了心电原始信号的信息并且降低了图像的维度,为后续的训练提供了便利[12]。
心电图的分析与诊断需要对心电图波形进行分段并标注。心拍的分割方法多种多样,关键在于QRS波的定位。本文采用经典的Pan-Tompkins算法[13]获得R峰的位置,并选取R峰的前110个采样点与后130个采样点作为一个完整的心拍范围。经过实验,该方法能完整提取心拍的关键部分,即P波、PR段、QRS波、ST段、T波,且能最大程度保留单个心跳信息,并避免附近心跳的干扰。
MIT-BIH数据库中正常搏动和7种心律失常类型的数量分布如表1所示。表中显示,原数据集各个心律失常类型数量并不均衡。为提高模型训练效果,需要重新划分数据集并对数量较少类进行数据增强。由于心电数据已被转换为二维灰度图像,本文将首次采用生成对抗网络来实现心电数据增强。
表1 本文所需各类型心拍数量表
早期生成对抗网络(Generative Adversarial Network,GAN)主要包含两部分:生成器(G)和判别器(D)。pz(z)用于生成的噪声分布,pdata(x)是真实数据分布,D(x)表示x来源于真实数据的分布,D(z)表示噪声经过生成器后生成的样本。最优的结果是生成的数据分布和真实的数据分布相等,但实际条件下难以达到。整个网络的优化函数如式(1)所示,训练过程相当于两个网络对抗的过程:生成器将随机噪声作为网络的输入,生成新图片;判别器将生成器生成的图片与原图片进行区分,结果反馈到生成器中,进而使得生成器重新生成新图像。两者形成一个对抗的过程,直到判别器难以区分两者,网络训练完成。
(1)
本文利用改进的GAN-CNN结构生成高质量心拍图像并进行分类,其核心是采取CNN进行无监督式学习,通过生成器与判别器的不断对抗过程,从中学习到原始图像的特征信息。对抗损失用于评估生成的图像与原图像,本文采用Wasserstein距离损失作为对抗损失。图像损失作为对抗损失性能的一种补充,在生成好的心拍图像与原始心拍图像间构建欧氏距离损失,进一步改善生成图像的效果,使其接近原始图像。在同一个网络中,利用分类器可实现心律失常种类的识别。
由于原数据集中各类心律失常数据分布不平衡,其中大部分为正常心搏,综合考虑后,本方法对较少的FVN、VEB、VFW等3类数据进行新图像生成,解决了数据分布不平衡的问题。以FVN类为例,图1为网络的训练过程,图1(a)~图1(d)分别为原始图像、训练30轮、70轮、150轮时生成的图像。将数据增强后的数据集重新划分,每类随机取5 500张图片,其中3 300张作为训练集,1 100张作验证集,1 100张作训练集。
(a) (b)
本文设计的端到端网络结构主要包含3部分结构,如图2所示。上部分虚线框内为生成器,与下部分判别器、分类器共享一个网络与参数信息。心电信号经过R峰检测、分割转换等步骤可作为网络的输入与判别标准。相较于传统一维信号,二维心电图像能提供给网络更加丰富的信息。判别器将生成器生成的低质量心拍图像与原图像进行对抗训练,结合对抗损失与图像损失逐步提高生成图像的质量。通过判别器计算出的对抗损失与图像损失来调整生成器的生成效果,并利用分类器完成心律失常类别的判断。为提高模型效率并简化网络结构,判别器与分类器共用一个网络。
图2 整体网络结构图Figure 2. Overall network structure diagram
生成器由简单的上采样卷积神经网络组成。为提高系统性能,本文未选取复杂的深层神经网络。判别器与分类器网络由下部分虚线框内的二维卷积神经网络(2D CNN)组成,网络输入为原始与生成心拍图像。卷积神经网络在图像识别领域应用最广泛,其不仅不需要人工对图像进行预处理,也无需额外的特征提取,还能够保留图像各个像素间位置关系。其细粒度特征提取方式与人类相似,因而能达到良好的效果。本文在网络设计时将批标准化处理层放到了卷积层跟激活函数之间,选择了合适的模型层数,在加快网络训练和收敛速度的同时,控制梯度爆炸防止梯度消失。心电灰度图像较为简单,无需过多的卷积层来提高模型提取特征的能力。本文在网络最后加入了Dropout层防止过拟合。较少的模型层数意味着对硬件性能要求有所降低,具有向移动端设备移植的潜力。
本文采用的自门控激活函数Swish是Google公司在2017年利用自动搜索技术发现的一种新的激活函数[14]。Swish函数是一种平滑函数,随着参数的调整会有不同的表现,也可把参数交由模型训练,与ReLU一样无上界有下界。但其具有的非单调的特性与大多数常见激活函数不同,如式(2)所示。β是一个常量或者可训练的参数,经过多次实验比较,本文最终采用β=0.9。有实验表明,在图像分类和机器翻译领域中,Swish的表现都与ReLU相当或者更优,能够提高分类的精度。
f(x)=x·Sigmoid(βx)
(2)
2.3.1 对抗损失
在生成器与判别器对抗的过程中,生成器的最终目的是使其输出能够迷惑判别器,因此需要一种损失函数来衡量真实分布与生成分布的接近程度。本文采用Wasserstein距离损失作为对抗损失,提高了训练过程的稳定性,同时也能作为衡量对抗过程中进行程度的指标。如式(3)所示,gθ为生成器函数,fw为判别器函数,Lg为对抗损失函数。
Lg=maxEx~Pdata[fw(x)]-Ex~Pg[fw(gθ(z))]
(3)
2.3.2 图像损失
本文选取了欧氏距离损失作为图像损失,用于量化生成器生成的心拍图像与原始心拍图像间的差异。生成器生成心拍图像之后,根据图像损失判断其与原图像间差距,进一步优化生成器的生成效果。如式(4)所示,N是生成器生成的心拍图像,O是原始心拍图像,Li是图像损失函数。
Li=‖N-O‖2
(4)
判别器的总损失如式(5)所示,α和γ为可调参数,用于调整对抗损失与图像损失权重对总损失的影响,Ls为总损失。
Ls=αLg+γLi
(5)
本文的实验数据集来自于MIT-BIH心律失常数据库,实验平台的CPU型号为Intel i7-6700 CPU,显卡为GTX1060,模型的搭建基于Tensorflow框架和Python语言。将上述经过处理以及数据增强后的数据集用于所设计的网络训练,训练过程的分类损失值和精度变化如图3所示。
(a)
如图3所示,本文所设计的生成对抗网络与二维卷积神经网络结合的结构对该数据集的训练收敛速度快且无大幅震荡,模型拟合较好。模型参数经过优化后,大约在50个epoch后,分类loss值基本不再变化,训练集与验证集精度达到稳定,最终测试集的精度达到了99.32%,而未使用数据增强手段的测试集精度只有97.95%。图4(a)和图4(b)分别为未进行数据增强与采用GAN-CNN数据增强后测试集的混淆矩阵。从图4中可以分析出,由于原始数据过少且不均衡,模型对FVN、VEB、VFW3类心律失常的识别效果较差,其中FVN类的识别准确率只有65.00%。这可能是因为该类别的心跳波形特征跟NOR与PVC类别较为相似,加之训练数据过少,导致模型无法学习到更多有效特征。经过本文所提方法扩充原数据集后,模型对这3类心律失常的识别能力得到了显著提升。
(a)
本文方法与先前心律失常分类方法的比较如表2所示。由于采用的数据集处理方法以及心律失常的类别均不相同,因此无法仅从准确度角度分析对比。在研究心律失常多分类问题时,通常以准确率、敏感性、特异性和阳性预测率作为评价模型性能的指标。目前大部分心律失常分类方法都是直接使用一维心电数据,容易受到去噪处理以及数据集较小等因素影响,导致模型泛化能力不佳。因此本文提出将一维心电信号转换为二维灰度图像并通过GAN-CNN生成高质量的心电图像实现心律失常识别。从表中可以看出,本文提出针对不平衡数据集的八分类的方法平均准确率达到了99.32%,敏感性为99.69%,特异性为98.91%,阳性预测率为99.84%,各项指标均优于其他方法,而未经过GAN处理过的数据集最终的分类精度为97.95%。信号转换为二维图像后均要比传统的一维输入分类效果更好,无论是否经过本方法的数据增强处理,该模型都有较高的准确率与性能。然而在实际情况中,心电数据往往分布不平衡且数量较少。本文所提出的采用改进生成对抗网络结构的方法能较好地解决这一问题。DA表示经过数据增强处理,本文还尝试采用VGG16模型以及采用ReLU的模型与本文设计的网络进行对比。尽管前者的模型层数更深,但由于数据大小以及图像复杂度等因素的限制,其效果不如后者。检测心律失常是一件劳动密集型的任务,自动化方法可以减轻医生们的工作量,有效防止因疲劳等人为因素造成漏诊错诊现象。
表2 基于同一数据库的不同心律失常分类方法比较
与传统心律失常分类方法不同,本文将心电数据转化为二维图像,利用GAN-CNN生成高质量心拍图像,实现了心律失常类别的检测,解决了医疗相关领域数据集较小、分布不平衡以及辅助诊断的问题。传统图像领域的数据增强技术,例如仿射变换、添加噪声等,虽然在一定程度上能缓解网络过拟合问题,提高精度,但未从本质上解决原始数据不足的问题。此外,这些方法需要根据经验选择合适的增强手段,因此难以达到最优处理。本文利用基于网络合成方法生成的样本多样性更丰富,模型的泛化性能也更强。
作为一种自动诊断系统,本文提出的方法可以辅助医生进行心律失常类型的诊断,减轻医生工作量。与医生实际通过心电图判断心律失常类似,本方法也通过视觉角度进行诊断,后续可被应用于医院系统以及医疗机器人等系统中。相比于深层神经网络,本文采用的结构具有往移动端设备移植的潜力。目前的研究仅限于MIT-BIH心律失常数据库,随着日后数据集种类丰富性的增加,本模型结构可以进行调整以获得更好的泛化能力,从而提高实际应用的效果。