基于卷积神经网络的心电图心律失常分类方法

2021-07-05 12:29艾文书赵兴群
国际生物医学工程杂志 2021年2期
关键词:卷积神经网络分类

艾文书 赵兴群

东南大学生物科学与医学工程学院,南京210000

0 引 言

世界卫生组织的数据表明,心血管疾病是人类的头号死因,每年死于各类心血管疾病的人数多于其他任何疾病。《中国心血管报告2018》显示,我国心血管疾病的患病率与死亡率处于上升趋势,心血管疾病的死亡率居各种疾病的首位[1]。

心电图(electrocardiogram,ECG)是心脏电活动在体表的一种综合表现,其中心率节拍可以反映生理和病理的信息,在一定程度上可以客观反映心脏各部分的生理状况。心电图是诊断心率失常的主要依据,通过连续监测ECG信号可以识别心率状况,从而判断是否发生心率不齐。传统的心律失常诊断方法是通过人为观察并识别ECG中的心律失常特征信号,此过程需要检测人员长时间观测,且在一定程度上有误诊的可能,因此自动检测心率失常显得尤为重要。

近年来,在心律失常检测领域出现了几种简化监测任务的方法。其中,Li等[2-3]用支持向量机(support vector machine,SVM)分辨不同的ECG类型;Nanjundegowda和Meshram[4]用深度神经网络(deep neural networks,DNN)判断ECG是正常还是异常;Dbeyli[5]使用循环神经网络(recurrent neural networks,RNN)分类ECG信号,得到98.06%的正确率;Park等[6]使用K最近邻(K-nearest neighbor,KNN)分类器分类ECG信号,得到98.9%的正确率;Kiranyaz等[7]将卷积神经网络(convolutional neural networks,CNN)应用于一维ECG信号分类,其基于一维CNN提出了一种患者特异性ECG分类和监测系统,对室性异位搏动(ventricular ectopicbeats,VEB)和室上性异位搏动(supraventricular ectopic beats,SVEB)的分类准确率分别为99.0%和97.6%;Jun等[8]将一维ECG转换为128 px×128 px的图像,然后使用2D-CNN进行分类。

本研究中,将原始的一维ECG信号按照R点(R波波峰点)前后进行切分,获取一个RR周期,将RR周期内的波形生成为128 px×128 px大小的图像,然后使用2D-CNN对图像进行分类,以提升ECG分类算法的普适性,使之可以用来为医生诊断心脏疾病提供辅助依据。

1 ECG分类算法

1.1 样本生成

采用的数据集为美国麻省理工学院提供的用于研究心律失常的数据集(MIT-BIH)[9],选择该数据集中来自47位患者的48个ECG信号,信号的采样频率为360 Hz。其中,102、104、107和214号为起搏心电记录,因此将其排除,选择剩下的44个ECG信号。根据44个ECG信号的注释中记录的R波位置,以前一个R波位置的后50个点开始到后一个R波位置的前50个点结束,截取该段心电信号作为单独ECG信号图,该心电信号Fk定义为

式中:T(n)表示数据集中一个患者的离散心电信号;Qpeak(k)表示该心电信号的第k个R波的位置。

美国医疗促进协会的ANSL/AAMI EC57:2012标准将ECG节拍主要分成5大类:N类,即正常或者束支传导阻滞,包括正常搏动、左束支传导阻滞、右束支传导阻滞、室性逸搏、交界性逸搏;S类,即室上性异常,包括房性早搏、异常房性早搏、交界性早搏;V类,即心室异常,包括室性早搏和室性逸搏;F类,即室融合心跳;Q类,即未知类。因为MIT-BIH数据集中Q类信号较少,参考相关研究,本研究中忽略Q类信号。

依照MIT-BIH数据集中给定的R波位置,将R波切分,并对切分后的波形归一化,以采样点为横坐标,幅值(范围为[0,1])为纵坐标,使用Python语言中的matplotlib绘图库,将ECG信号生成128 px×128 px大小的图像,并将其标注。需要注意的是,在将图像读取并输入CNN之前,将图像像素颜色反转,即图像中原先黑色像素的颜色改为255(纯白),白色无信息部分的颜色改为0(纯黑)。最终得到N类样本88043例,S类样本2777例,V类样本6751例,F类样本801例。

1.2 样本扩充

数据增强是将图像用作输入数据的关键技术之一。由于单个ECG信号值的失真可能会降低测试集的性能,因此研究者无法手动将增强数据添加到训练集中。与CNN分类器不同,其他分类器(如SVM,前向神经网络和基于树的算法模型)假定每种ECG信号的类别是均匀分布的,因此输入数据的分布不均衡会使模型偏向于分布较大的分类。但是,本研究中使用的CNN分类模型使用二维ECG图像作为输入数据,对图像使用裁剪和调整大小操作不会降低分类性能,反而能扩大训练数据。当使用CNN图像分类器时,数据扩充可以有效减少数据的过度使用并保持类之间的平衡分配。此优势在医学数据分析中尤为重要,因为医学数据中,正例的比例远远高于负例的比例。在这种情况下,由于分类器采用梯度下降学习,数据集中相对较少的类别(如心律不齐)会被忽略。

基于上述情况,本研究中通过9种不同的裁剪方法增强了分类标注为S、V、F的ECG心律失常搏动信号。9种裁剪方法的方向分别为左上、中上、右上、左中、中、右中、左底部、中央底部和右底部。每种裁剪方法都会将原始图像转换为108 px×108 px大小的图像。然后,将这些增强的图像调整为和原始图像大小一致的128 px×128 px。这样,在输入一张图像的情况下,就可以得到10张注释信息相同的图像。

此外,为了增强测试集的分布,在对图像进行裁剪时,每种裁剪方法都会采用2个随机变量,随机变量的范围为[0,10)内的整数,表示裁剪图像在原图像上的x方向和y方向上的偏移量。例如,当裁剪方向为左上时,在不使用随机变量条件下,其截取的图像就是原来图像中的确定位置,如果使用随机变量,则左上裁剪是在原图像0~137 px正方形像素区域内随机截取边长为128 px的正方形区域。上述的图像扩增是在训练开始阶段于模型内部完成的,因为从磁盘复制这些图像会耗费一定的时间,导致学习速度降低。原始图像和样本扩增后的图像如图1所示。

图1 原始数据和扩增数据

在原始数据中,S类样本占比为2.8%,V类样本占比为6.8%,F类样本占比为0.8%,N类样本占比为89.6%。经过数据扩增后,S类样本占比为14.5%,V类样本占比为35.3%,F类样本占比为4.2%,N类样本占比为46.0%。数据集在扩增前后的分类统计数据见表1。

表1 数据集分类统计表

当训练集和测试集改变以后,模型在验证集上的指标很容易发生变化。在一般情况下,验证集是随机地从整个数据集中抽取的。但是,由于整个数据集的分布不均衡,且特征数据较少,每次随机取得的验证集的评价指标必定产生变化,因此本研究中使用k折交叉验证法[10],该方法将整个数据集划分为k个大小相似的互斥子集,每个子集都尽可能地保持数据分布的均匀性,然后每次使用k-1个子集作为训练集进行训练,可以进行k次训练和测试,返回的结果是k个测试结果的均值。本研究中k=8,每个子集通过分层采样,保证每个子集都与数据集具有相同的类别分布。按照k=8,每个训练集包含的样本数量如下:N类77 000例、S类24 000例、V类59 000例、F类7 000例。在每个“时期”(epoch,即数据送入网络中完成一次前向计算及反向传播的过程)开始阶段,从训练集中随机抽取10 000个N类、7 000个S类、7 000个V类、7 000个F类数据组成此次的训练子集。

1.3 卷积神经网络

本研究中采用CNN作为ECG心律失常信号的分类器。现有的前馈神经网络并不适合做图像分类,而CNN可以通过应用非线性滤波器并通过应用多个滤波器来提取空间相邻像素的相关性,从而可以提取图像的各种局部特征。针对ECG图像的空间局限性,可以使用2D-CNN中的2D卷积层和池化层来过滤这些局限性。其中,2D卷积层(Conv2D)用于提取图像特征,最大池化层(MaxPooling2D)[11]用于减少特征和参数,加快训练。卷积层的输出无法直接连接全连接层(Dense),因此需要Flatten层[12]将卷积层的数据压平。全连接层用于对特征进行组合,减少特征位置对分类造成的影响,使用Dropout层[13]可以减少过拟合,加快训练。

激活函数定义了模型中卷积核的输出,在本研究中使用的激活函数有ReLU函数[14]和Softmax函数[15],2D卷积层和最后一层之前的全连接层使用的ReLU激活函数可表示为

最后一层全连接层使用的激活函数为Softmax函数,其能将一个任意含实数的k维向量压缩到另一个k维实向量中,使每一个元素的范围都在(0,1)区间内,并且所有元素的和为1。

该输出表示概率值,表示属于各个类别的概率。

神经网络中的损失函数是训练阶段用来衡量模型训练样本输出和模型输出的差值的函数。损失函数需要优化器来得到最小值。神经网络中有很多损失函数,深度学习中常用的损失函数为交叉熵损失函数(cross-entropy function)[16]:

式中:y表示真实值,a表示模型的输出值,n为批尺寸(batchsize)。

为了让深度学习网络更好地学习V类和S类的特征,本研究中提出使用带权重系数的Loss函数。

式中:α为权重系数。当种类为N类时,α取值为1,其他情况下为5。

为了使损失函数最小,需要使用梯度下降优化器函数,一般可以使用的优化器有Adam[17]、Adagrad[18]、Adadelta和SGD[19],本研究中使用的优化器为Adam,初始学习率为0.001。

本研究中采用的卷积神经网络结构如图2所示。Conv2D_1和Conv2D_2各包含2个卷积层,每个卷积窗口的长宽均为3;Conv2D_1输出空间维度为64,Conv2D_2输出空间维度为128,激活函数均为ReLU。Conv2D_3包含3个卷积层,卷积窗大小为3×3,输出空间维度为256,卷积层的padding均为same[20]。最大池化层的步长为2×2。Dropout层的比率为0.5。

图2 心电信号神经网络结构图

为了减少过拟合,与文献[8]中的视觉几何组(visual geometry group,VGG)网络相比,本研究中所使用的模型在第2个和第3个卷积层后增加了批量正则化层(batch normalization,BN),全连接层使用了L2正则化。

2 结果与分析

采用的评价指标为受试者工作特征(receiver operating characteristic,ROC)曲线下面积(area under curve,AUC)、准确率(accuracy)、精确率(precision)、召回率(recall)和特异性(specificity)[21]。AUC表示ROC曲线和x=1围成几何图形的面积,范围为(0,1),越接近于1,表示模型的真实性越高。表2显示了AUC指标解释。

表2 受试者工作特征曲线下面积(AUC)判断分类器指标

准确率表示预测正确的结果占总数的比例。

精确率表示预测为正且预测正确的样本占所有预测为正的样本的比例。

召回率表示预测为正且预测正确的样本占所有实际为正的样本的比例。

特异性表示表示预测为负且实际值也为负占所有实际为负样本的比例。

上式中:FN为被判定为负样本的正样本数;FP为被判定为正样本的负样本数;TN为被判定为负样本的负样本数;TP为被判定为正样本的正样本数。

在分类实验开始阶段,设置batchsize为16,设置epoch大小为100,读取所有数据集中的图像,按照前述方法对标记为V类,S类和F类的样本进行扩增。然后按照k=8,将每个分类分成均匀的8份,再将所有数据组成8组,其中7组为训练集,剩下的1组为验证集,混淆矩阵见表3。在本研究中,使用Python语言中的Keras接口编写神经网络模型,损失函数使用categorical_crossentropy,每个epoch结尾保存当前模型,当categorical_accuracy连续5个epoch不再增长的时候,结束此次训练,并使用验证集得到评价指标。

表3 混淆矩阵

图3为训练过程对应的准确率,最终得到的模型的准确率为99.02%,AUC为0.973。

图3 模型训练的准确率结果

本研究中,主要关注的是模型对V类中的室性异位搏动(VEB)和S类中的室上性异位搏动(SVEB)的分类性能。表4显示的是本研究中得到的结果和相关文献中的结果对比。

表4 文献结果对比表

3 讨论

通过将ECG转换为图像,然后通过2D-CNN提取图像特征训练分类模型,使模型的AUC达0.973。该结果表明,该模型的分类性能很优秀。

通过样本扩增,在准确率不降低的情况下,提升了模型的召回率和特异性,模型的普适性得到显著提升。文献[7]和文献[22]的VEB召回率指标均高于SVEB,原因是数据集中的S类样本数量较少,而本研究中所用模型得到的VEB的指标和SVEB指标基本相同,证明所使用的随机偏移的样本扩增方法能够解决样本过少的问题。

与文献[8]中的完整的VGG网络相比,本研究中通过对VGG网络进行优化,减少VGG网络的深度,并且通过使用BN层和L2正则化来减少过拟合的影响。结果表明在减少网络参数的情况下模型的SVEB和VEB的召回率并未降低。

本研究中,为了更好地学习S类和V类的特征,引入了带有权重系数的交叉熵损失函数。与文献[8]中的VGG网络和CNN网络相比,所用模型在VEB和SVEB的精确率上有很大提升。

4 结论

提出了一种基于2D-CNN识别ECG信号是否正常的方法,将原始一维ECG信号转换为128 px×128 px的图像,使用样本扩增方法解决样本不均衡问题,利用深度CNN提取图像特征,并对图像进行分类,通过使用带有权重系数的交叉熵损失函数,使模型能够更好地学习V类和S类的特征。8折交叉验证结果表明,与文献报道的其他分类模型相比,本研究中所提出的模型在保持对VEB和SVEB的准确率的指标的同时,得到了良好的召回率性能和特异性性能,模型的普适性得到显著提升。

利益冲突所有作者均声明不存在利益冲突

猜你喜欢
卷积神经网络分类
基于3D-Winograd的快速卷积算法设计及FPGA实现
分类算一算
神经网络抑制无线通信干扰探究
从滤波器理解卷积
分类讨论求坐标
数据分析中的分类讨论
基于傅里叶域卷积表示的目标跟踪算法
教你一招:数的分类
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用