魏中杰,许少华
(山东科技大学 计算机科学与工程学院,山东 青岛 266590)
心血管疾病是当今社会的头号死因[1],因而基于心电信号(electrocardiogram,ECG)[2,3]的心血管疾病自动识别是当前医疗人工智能领域的热点问题,Kiranyaz等[4]提出了基于一维卷积神经网络并适用于可穿戴设备的心电信号识别方法;Zhou等[5]提出了一种一维卷积神经网络进行AF检测的方法;Pranav Rajpurkar等[6]建立了34层卷积神经网络,对14种心电图进行分类;Patrick Schwa等[7]建立了一种多样化的循环神经网络用于区分正常、窦性心律、心房颤动以及其它类型的心率失常;Hong等[8]提出了一种基于循环神经网络与决策树的方法对心房颤动进行诊断;Rajan等[9]提出了一种基于递归神经网络和随机森林分类算法的RNN+RF深度神经网络,采用多导联心电信号诊断心肌梗死;Acharya等[10]建立了11层卷积神经网络,对心力衰竭进行识别。
上述方法在对心电信号分类过程中存在一定的局限性:
(1)分类过程中大都采用一个或几个导联参与诊断,而医学诊断过程中不同种类心脏疾病的异常特征有时会出现在不同导联当中,因此上述模型大都无法扩展至更多种类的心脏疾病诊断当中。
(2)上述算法都从时变信号的角度出发,关注信号的数值变化,而医生在进行疾病诊断的过程当中需要参考病人的心电图形的变化,因而上述方法的诊断方式与医生的诊断过程相比缺少对于波形特征的参考,且无法同时处理信号与图像。
(3)上述方法当中大都基于心拍进行的分类诊断,因而在诊断之前需要心拍的分割,这里往往需要人工参与,增加标注的成本。
考虑到上述方法在对心电信号处理过程当中的不足,本文设计一种多通道深度卷积神经网络模型:
(1)该模型针对12个导联进行训练,使其后期可以扩展至更多种类的疾病。
(2)能够同时处理信号与图形的特征,并使用信号与图形两类特征参与诊断,更加符合医生的诊断规则。
(3)该模型基于一段信号分类,不需标注心拍,更加符合自动化检测的规则。
为了将信号与波形特征都参与诊断,本文将信号数据转为图像后再与原数据组成新的数据集,该数据集中的心电数据中包含时变信号数据以及图像数据。而在卷积神经网络中,处理信号通常需要采用一维卷积核,处理图像需要采用二位卷积核,因而一条深度卷积网络模型无法同时处理信号与图形数据。因此本模型将不同数据经过不同卷积通道处理后在进行分类,其基本思想为:不同类型的数据通过不同通道中不同维度(所使用的卷积核的维度不同,针对处理图像数据的通道选择二维卷积核,处理时变信号数据的通道选择一维卷积核)的卷积处理后得到相同类型的输出向量,再将相同类型的向量融合后用于诊断。方法处理的基本步骤为:
步骤1 针对图像以及信号数据各设计并预训练一条卷积神经网络,预训练通过端到端的方式完成,训练的标签为其所对应的疾病标签。
步骤2 裁剪掉各预训练的卷积神经网络部分全连接层,裁剪后的每个网络即为一条通道。裁剪后无论信号数据还是图像数据在通过各自的网络处理后都会得到一条一维的特征向量。
步骤3 将不同通道输出的特征向量按照拼接的方式融合,得到一个新的特征向量,该条特征向量同时包含心电数据的时序数值特征与不同导联的波形特征。
步骤4 针对新的向量设计并训练新的全连接层,在新向量通过全连接层处理后通过Softmax完成分类。
通过上述处理可以得到一个能够同时处理不同类型数据的网络模型,该模型可以更加全面地处理心电数据各个方向上的特征并用于诊断。
对于一个样本进行诊断的完整步骤为:不同类别数据通过不同通道提取特征—通道输出的特征进行融合—通过全连接层处理—完成分类。
对于心电信号进行分类是传统的模式识别问题,问题描述如式(1)
c=g(f(x,θf),θg)
(1)
c代表预测神经元的输出,g(·,θg)为预测函数,θg为其相关参数,f(·,θf)为特征提取函数,θf为其参数。根据相关样本及其标签选择适当的损失函数,通过优化求解损失函数获得参数θg,θf,可以表述为式(2),其中L(·)代表度量预测值与真实类别的损失函数,S(·)代表Softmax分类函数,y代表真实类别
(2)
深度学习将特征提取与分类器的训练统一用深度神经网络的方法进行建模,并实现端到端的学习。学习过程中需要选择适当的损失函数,本文选择了交叉熵损失函数[11],表示如式(3)
(3)
其中,oi为ci经过Softmax处理所得到的预测概率,o为包含所有类别预测概率的向量,且0 (4) 计算交叉熵损失函数L(·)对oi的偏导数可见参考文献[11]。求得偏导数后再根据反向传播算法[12]对网络权重进行更新。 在本文中,同时考虑了信号以及不同导联的图像特征,因此样本x={x1,x2,…,xn},xi代表一个样本中的不同类型的数据,由于类型不同,无法通过同一个特征提取函数来处理,因此本文中针对各部分使用不同的特征提取函数fi(·,θfi)来初步提取特征,再将提取的各部分特征融合得到新的特征向量xnew,如式(5),后使用新的函数gnew(xnew,gnew)进一步提取特征并最终完成分类,如式(6) xnew=[f1(x1,θf1),f2(x2,θf2),…,fn(xn,θfn)] (5) c=gnew(xnew,θnew) (6) 其中,fi(xi,θfi)代表提取xi中的特征,θfi通过优化求解式(7)得到。根据得到的θfi提取xi中的特征,即fi(xi,θfi)。gnew(·,θnew)为最终的分类函数,θnew通过优化求解式(8)求得 (7) (8) θfi与θgi为针对xi的一个分类器的完整参数,借用迁移学习的思想主要是保留训练好的部分参数θfi提取特征fi(xi,θfi)。 本文对心电数据处理的方法涉及图像与时变信号两种类型的数据,而卷积神经网络在信号与图像方面皆有广泛应用并取得较好的效果[13-15],故可以选择卷积神经网络对数据进行处理,设计合理有效的二维CNN模型与一维CNN模型,使其分别提取心电图像的波形特征与心电信号的数值特征。 典型的卷积神经网络结构如图1所示。由卷积、归一化、池化、激励以及全连接层构成。 图1 典型卷积神经网络模型 本文中模型的主要卷积网络模型,主要包括4个部分: (1)一维卷积网络模型CNN4,通过训练并裁剪该模型获得处理心电信号的通道。 (2)二维卷积网络模型CNN1-CNN3,通过训练并裁剪该模型获得处理心电图像的通道。 (3)多通道网络模型,包括多通道图像模型以及多通道图像+信号模型,该模型用来处理经过各通道处理后的特征。 (4)相关模型。 一维卷积神经网络模型CNN1与二维卷积神经网络模型CNN1-CNN3结构如图1所示,即为普通卷积网络模型。 多通道网络模型的结构如图2所示。该模型主要由多通道与全连接两个部分构成,多通道部分中每个Channel为已经训练并截取完成的一个网络。全连接部分为针对融合后的向量所设计的新的全连接层。 图2 多通道网络结构 3.2.1 一维卷积网络参数设计 使用一维卷积网络结构提取时变信号数据的数值特征,该网络包含5层卷积,后接两个全连接层。5层卷积层中卷积核的个数依次为:32、64、64、128、128,设定卷积核大小均为1×5,步长均为1,激励函数采用Relu,池化方式为最大池化且步长全部为4,在卷积与池化过程中边界均不补零。后接两层的全连接层,神经元的个数依次为256、3。 3.2.2 二维卷积网络参数设计 二卷积神经网络提取心电图像的特征,卷积网络结构如图2所示,该卷积网络结构共包含4层卷积,最后接两层全连接层。该CNN模型中卷积核的个数依次为:32、64、128、256,大小均为5×5,步长为1。所有池化层均选择最大池化的方法,4层池化的步长依次为:(4,4),(5,5),(5,5),(4,4)。激活函数为LReLU,卷积与池化过程中边界作补零处理。 3.2.3 多通道网络参数设计 截取训练好的4个CNN分类器的部分全连接层构成4个通道,其中3个图像分类器只保留卷积层,保留后3个通道的输出均为1×512的向量,1个信号分类器保留至第1个全连接层,该通道的输出为1×256的向量。在预训练4个网络的基础上,设计了3通道图像分类器与4通道图像+序列分类器。 3通道图像分类器将3图像通道输出的向量按照拼接方式形成新的向量,该向量包含12导联的波形特征,向量大小为1×1536,新的全连接层结构为:Input—FC1—FC2—FC3,神经元的个数以此为:1536—64—32—3,损失函数为交叉熵损失。 图像+序列分类器将4个通道所输出的向量按照拼接方式形成新的向量,该向量的大小为1×1792。新的全连接层结构:Input—FC1—FC2—FC3,神经元的个数依次为:1792—256—64—3。该阶段损失函数依旧为交叉熵损失。 3.2.4 相关模型参数 本文在实验过程当中亦进行了相关的对比实验,主要包括基于卷积神经网络的单导联图像、信号以及集成CNN模型。其模型结构为: 单导联图像模型,包含4个卷积层,CNN模型中卷积核的个数依次为:16、32、64、128,大小均为5×5,步长为1,后接两层的全连接层,神经元的个数依次为256、3。 单导联序列模型,包含5个卷积层,CNN模型中卷积核的个数依次为:16、32、64、128、128,大小均为1×5,步长为1,后接两层的全连接层,神经元的个数依次为128、3。 集成CNN模型在CNN4模型的基础上进行的,将数据集分为6份,分别训练得到6个CNN4,最后进行随机森林的投票分类。 为了得到足够多且有效的数据,本文选择了中国心血管疾病数据库[16](the Chinese cardiovascular disease database,CCDD)中的ECG样本,每个样本的采样频率为500 Hz,记录时间为10 s左右,并且包含专家的标注结果,同时所有样本皆包含12个导联。所用数据集中疾病与样本个数见表1。为了便于计算,本文实验中统一对每个导联截取4500个采样点,再将其抽析为2250维的向量。处理之后,每个样本包含12个导联,每个导联包含2250个采样点。 表1 数据集分布 由于心电信号数据在采集过程中会受到噪声的影响,因而在实验前需对数据进行降噪处理。本文选择低通滤波的处理方法,使用巴特沃斯滤波器(Butterworth)对数据进行处理,处理过程中的截止频率Wn为0.08,滤波器的阶数N为4。 山风比午间更加狂烈,呼啸着,像一群怨魂,在天葬场的地面处游荡。白鹫仍然没有离去,它们中的一些盘旋在众人的头顶上空,另一些则站在天葬台对面的高坡上,不时发出一声声令人揪心的悲鸣。 同时需要将心电信号转为灰度图像,为了保证得到足够清晰的图像,每条导联对应的图像分辨率为700×100,此时进行单导联分类所得到的识别率为88.6%,进一步将分辨率调整为800×150,其识别率为88.8%,几乎无提高。同时如果将12导联绘制在同一张图像当中,所得到的图像分辨率为700×1200,图像过大导致训练难度增加,因此12导联转为3张图像,既降低了图像的大小,减少了训练难度,又能够保持部分导联间所存在的组合特征。 为此将12个导联分为3组,每组所包含的导联见表2,每组4个导联绘制在分辨率为700×400的图像当中,利用python中的绘图,将采样点绘制为图像,每个样本得到如图3所示的3张图像,其中图3(a)、图3(b)、图3(c)分别对应组别1、2、3。 表2 每组所包含的导联 最终每个样本转换为一个12×2250的二维矩阵和3张分辨率为700×400的心电图像。 图3 心电图像 本文当中的实验环境包括两个部分: (1)实验数据预处理环境 硬件环境为:Inter(R) Core(TM)i5-4200 h CPU @2.8 GHZ,8 GB内存 软件环境为:Windows10操作系统,MATLAB R2016b win64平台 硬件环境为:Intel(R) Xeon(R) Gold 5118 CPU@2.3 GHz,NVIDIA TITAN X GPU,32 G内存。 软件环境为:16.04.1-Ubuntu 系统,Python3.6.4|Ana-conda+tenserf1ow1.11.1平台。 本次实验的基本步骤为: (1)数据的处理; (2)分别训练基于3组图像的3个卷积网络CNN1-CNN3; (3)训练基于12导联信号的卷积网络CNN4; (4)裁剪CNN1-CNN4,获得4个通道; (5)训练融合CNN1-CNN3的多通道模型; (6)训练融合CNN1-CNN4的多通道模型; (7)对比实验,训练对比模型。 在训练CNN分类器的过程中,epoch为40,即对训练集迭代40次,图像分类器中Batchsize为8,信号分类器中Batchsize为64,初始学习率为0.001,并随着迭代次数的增加而指数衰减,衰减系数为0.95,衰减的速度为每个epoch一次。模型的训练过程中选择交叉熵损失(Cross-entropy)作为该网络的损失函数,采用自适应动量估计[17](Adam)进行优化求解。 在训练融合后的全连接层的过程中,epoch为30,Batchsize为274,初始学习率为0.001,衰减方案与训练CNN分类器时相同。 在本数据集的基础上进行实验,实验结果见表3。CNN1-CNN4为预训练的分类器,其中CNN1-CNN3分别为3个图像分类器,每个分类器针对一组导联所转换为的心电图像;CNN4为信号分类器,采用12个导联信号数据分类;多通道图像为多通道迁移CNN1-CNN3,利用波形特征分类;图像+序列为多通道迁移CNN1-CNN4网络,利用波形与数值两类特征分类。其中单导联序列、CNN4信号以及集成CNN均为传统上采用时变信号的传统方式。 表3 实验结果 由表3可以观察到,无论是采用时间序列还是图像的方式,单导联的分类方法均低于多导联。采用图像方法的识别率要略高于采用时间序列的方法,其中单导联图像方法相较于单导联序列提高了1.3%;CNN1-CNN3迁移融合(即采用12导联图像的方式)的分类方法相较于12导联矩阵序列以及集成CNN模型的方式有略微提高,融合了波形与数值特征的多通道图像+序列分类方法相较于传统的12导联分类方法提高了1.1%,集成CNN模型提高了1%;多通道图像提高了0.7%。 这次实验进行了一系列的对比实验,直接使用了3个深度卷积神经网络模型对心电信号进行分类,这包括文献[6]中所提出的基于34层卷积神经网络的分类方法、文献[9]中所提出的基于RNN+RF的分类方法、文献[10]中所提出的基于11层一维卷积神经网络的分类方法,在相同样本集的情况下,将这3个模型与本文方法进行了比较。 在对比实验中,CNN-34layers模型网络包含16个residual blocks组成,并且每个块包含2个卷积层。每个块中的卷积层的滤波器长度均为16,并且具有64k个滤波器,其中k以1开始,并且每4个块增加1;CNN-11layer模型包括4个卷积、4个最大池和3个完全连接的层,步幅(滤镜移动量)设置为1和2,卷积核为1×5;在RNN+RF模型中构建的每个LSTM中的隐藏层设置为6,在特征向量空间中建立随机森林分类器以进行分类。 在本数据集的基础上,以端到端的方式相关训练,实验结果见表4。 表4 ECG分类方法与结果 通过以上对比可以发现,本文分类方法将12个导联参与诊断,相较于其它方法考虑到了疾病在不同导联上的不同特征,同时也将波形特征参与到诊断当中,因而处理过程更加符合医生诊断的规则,使更多更全面的特征参与到诊断过程中,因而取得了较好的效果。 为了检验模型的时效性,本文测试了图像+序列网络的GPU与CPU运行时间,采用图像处理器硬件加速(GPU)实现算法,处理一个样本所需要的时间为0.027 s,在不使用GPU的情况下,单独使用CPU处理样本所需要的时间为0.21 s。 本文借鉴医生对心脏病人的诊断过程,提出了一种能够提取并融合心电数据波形与数值特征的多通道卷积神经网络模型,该模型在多通道利用卷积神经网络自动提取波形与数值特征,再借用迁移学习的思想,在全连接层将波形特征与数值特征融合,关注了信号不同方面的特征,取得了95.6%的分类准确率。本文实验验证了该方法的可行性,下一步的研究方向主要考虑利用卷积神经网络识别心电图像中的异常区域。3 模型结构与参数
3.1 模型结构
3.2 模型参数
4 实 验
4.1 ECG数据准备与处理
4.2 实验环境
4.3 实验过程
4.4 实验结果
4.5 对比分析
5 结束语