基于CNN和RNN联合网络的心音自动分类

2020-02-08 06:54杨向东
计算机工程与设计 2020年1期
关键词:心音卷积准确率

李 伟,杨向东,陈 恳

(清华大学 机械工程系,北京 100084)

0 引 言

心音由心脏发出,包含其活动的丰富信息,因此对心脏疾病的诊断具有重要指示作用,通常被医生作为初步诊断的主要依据。然而目前心音诊断通常只能在医院由经验丰富的医生进行,这些限制不利于人们及时发现心脏异常并进行有效的预防和治疗。随着大数据和机器学习的发展,自动的心音诊断逐渐成为研究热点,研究者们尝试使用人工神经网络、支持向量机、k近邻、决策树[1,2]等对心音进行自动分类,使人们可以更方便的进行心音听诊,从而帮助发现心脏疾病并进行提前预防。目前心音自动分类的方法可分为两类,一类是两阶段方法,它们首先对心音数据进行分割然后将各段的特征送入分类器进行判断。这些方法使用的心音分割方法各不相同,比如有人使用k近邻和滤波的方法来分割心音,而Kay等[3]使用基于隐马尔科夫模型的方法,分割心音后研究者们如Michael等[4]进一步提取各阶段的梅尔倒谱系数和小波系数等作为特征,构造合理的分类器并训练,最后得到一个自动分类心音的模型。还有研究者在心音分割后使用简单的CNN或RNN提取特征,结合其它网络和规则器共同分类,达到了目前效果最好的86.0%的分类准确率[5]。另一类是单阶段方法,这类方法直接对完整心音数据提取特征然后进行分类[6,7],这类方法中最好的结果是85.2%[7]。由于单阶段的方法不存在心音分割过程,卷积结构可以更好提取全局特征,因此也有研究者使用CNN直接处理心音数据变换得到的声谱图,利用卷积结构对图像特征的强大提取能力,即使没有特别的选择特征,这些方法的平均准确率也可达到80%[8-10]。整体来讲,单阶段方法流程简单,与心音分割方法解耦,然而目前效果略差于两阶段方法,考虑到未经分割的心音数据保留了更多的全局信息,若可以充分挖掘其中的信息,可能会对分类产生较大帮助。因此为进一步提升分类准确率,本文专注于未经分割的心音数据,构造一个同时包含CNN和RNN的新型网络,直接对完整心音数据提取特征并做分类,达到了目前单阶段方法中的最好效果。

1 方法介绍

为从完整心音中提取更多的有效信息来做分类,同时简化心音分类的整体流程,本文提出一种基于CNN和RNN联合网络的单阶段自动分类方法。目前的两类方法中,两阶段方法过于复杂,分类之前需要额外的心音分割过程,这里心音分割是指将一个完整的心音周期根据不同特性划分为4个时期,分别是第一心音期、收缩期、第二心音期和舒张期。分割后从各个时期提取特征再做分类,这与医生听诊的过程更加相似,因此准确率相对较高。单阶段方法直接对未分割的心音做分类,虽然减少了各时期的监督信息,但完整的心音又增添了全局的特征,如果能使用有效的特征提取手段利用这些信息,必将得到更好的分类结果。目前单阶段方法中提取特征的过程比较简单,直接导致分类结果较差。因此本文构造具备强大能力的网络进行特征提取并分类。

随着深度学习和大数据的发展,CNN和RNN在图像及语音方面发挥着越来越重要的作用,依托于强大的特征提取能力,它们能够自动学习到有效特征,从而使研究者摆脱手动构造特征的繁琐过程。一般来讲,CNN使用堆叠的卷积核逐层的提取特征,每个卷积核只专注于一种特征,它们在图像各处共享权值,相较于全连接的神经网络,CNN提高了特征提取效率并极大减少了计算量,能够高效处理网格化的数据;而RNN采用循环单元作为结构的核心,每个单元都接收当前时间步的输入和上个时间步处理后的状态作为输入,由于增加了各个时间步之间的关联,RNN可较好处理具有时序关系的序列。它们已经成功的应用到诸多领域,比如目标检测,语音识别和机器翻译等。然而目前利用深度学习进行心音自动分类的方法只是单独使用最朴素的CNN或者RNN,并没有充分发挥这些网络的优势。另外,从之前的研究来看,无论是单阶段还是两阶段方法,一般效果较好的模型都是同时利用时域和频域特征,因此本文充分利用CNN和RNN的特性,提出使用CNN提取频域特征,使用RNN提取时域特征,然后将两组特征融合后再做分类的方法,为了减轻模型的过拟合现象,本文还特别地使用了音频增强的方法,使得模型更加鲁棒。总体来讲,本文提出了一个单阶段心音分类方法,利用精调参数的CNN和RNN分别来提取时频特征并辅以音频增强的方法进行训练,相对于单独使用CNN或RNN的模型,平均分类准确率有较大的提升。这里的平均分类准确率作为评价指标指的是分类器对正常和异常样本预测准确率的平均值,相对于总的准确率,该指标对于不平衡的样本分布有更好的指示作用。

本文提出的单阶段心音分类方法,构建了同时包含CNN和RNN的新型分类网络,精细的调整网络结构,并在训练时辅以音频数据增强,避免模型出现过拟合现象。基于以上创新点,本文最终得到了目前单阶段方法中分类效果最好的模型。文中使用的数据来源于PhysioNet Challenge 2016的数据集,其专门为研究者提供各种现实场景下的心音数据,主要包括异常、正常两大类,同时还包含少量的不确定样本,目前被研究者广泛使用。上述文献的诸多方法也都使用了该数据集,这使得各实验结果具有可比性。这部分本文将从数据预处理、分类网络构建、数据增强训练及样本预测4个方面来详细介绍提出的心音自动分类方法。

1.1 数据预处理

从PhysioNet中获取的数据包含一些长度不等的心音片段和相应的类别标签,其中心音数据的采样频率是2000 Hz,长度为20 s到60 s不等。为了保证输入网络的数据维度固定,本文将一段心音数据以5 s为间隔进行划分,根据医学专家的经验,5 s的时间至少包含了一个完整的心音周期,因此该划分不会破坏心音的全局信息,依旧保持单阶段方法的特性。另外,原始心音数据的振幅分布在-5000到5000之间,为使后续网络训练快速收敛,需要用下式将它归一化到标准的(0,1)分布

(1)

其中,μ代表均值,σ代表方差。最后将数据变换为CNN和RNN要求的输入形式,对于RNN的输入,本文将5 s的心音数据划分为20个时间步(图1)。对于CNN的输入,本文采用短时傅里叶变换(STFT)将其转化为声谱图(图2),具体计算方法如下

(2)

其中,w代表窗函数,一般选择矩形窗,m和k分别代表时间和频率。变换后的数据粗略包含了心音在各时刻的频率信息,而它所具备的网格化形式恰好是CNN最擅长处理的。

图1 RNN输入

图2 CNN输入

1.2 分类网络构建

此处建立的分类模型是本文的一个重要创新点,利用CNN和RNN强大的特征提取能力,直接从原始数据出发做心音正常和异常的分类,省略了复杂的心音分割和特征提取步骤,充分利用心音数据的全局特性并同时提取频域和时域信息,最终得到了单阶段心音分类方法中的最好效果。具体来讲,本文的分类模型可以被划分为3个模块,分别是CNN频域特征提取模块、RNN时域特征提取模块和全连接分类模块,在训练的过程中这3个模块可以同时更新参数,协同做好心音自动分类任务,其整体结构如图3所示。接下来分别介绍3个模块。

图3 方法整体结构

1.2.1 CNN频域特征提取模块

此模块的输入是声谱图,主要用来提取心音的频率信息,其结构见表1,其中s,c分别代表卷积的步幅和输出通道数,数据维度中的4个量分别代表样本数量、图像宽、高以及输出通道数。卷积操作中除了第一层采用了5×5的卷积核,大多采用的是3×3的卷积核。考虑到声谱图特殊的纹理结构,这里还特别的添加了1×3和3×1的卷积核,这样既减少了参数量和计算量,又使得网络加深,增强网络的非线性和拟合能力,后续实验也说明这样的网络结构确实对分类有帮助。除此之外,在最后的全连接层,本文还添加了dropout结构,以避免网络出现过拟合现象。最终网络通过一系列操作输出维度为8的频域特征向量。

表1 CNN模块结构说明

1.2.2 RNN时域特征提取模块

此模块的输入是经过处理的振动波形,主要用来提取心音的时域信息,其结构见表2,其中sequence用来标识循环单元对每个时间步是否都有输出,数据维度的3个量分别代表样本数量、时间步数和特征维度。本文采用具有长短期记忆的循环单元(LSTM)作为该模块的基本结构,它是RNN的改进版本。相比之下,LSTM添加了门控单元调整信息流的传递过程,解决了RNN固有的梯度消失和梯度爆炸的问题,从而保证信息可在多个时间步共享,效果更好。这里采用两层堆叠的LSTM,为了保证网络能快速收敛且具有更强的泛化能力,还特别添加了batch norm,同时在LSTM内部也增加了dropout以缓解过拟合现象。最终网络输出的是维度为8的时域特征向量。

表2 RNN模块结构说明

1.2.3 全连接分类模块

此分类模块相当于多层感知机,输入是上述两模块产生的特征向量拼接后的特征,经过由8个神经元组成的隐藏层,最终输出该样本属于正常的概率,模型结构如图4所示。

图4 全连接网络

通过建立以上3个模块,即可得到本文的分类模型。其数学模型可简单表示如下

feat1=H1(stft(data))
feat2=H2(split(data))
pre=H3(feat1,feat2)

(3)

其中,H1,H2,H3分别是CNN模块,RNN模块以及全连接分类模块代表的变换函数;stft和split代表将原始数据变换成网络输入的操作,即短时傅里叶变换和波形分割操作。模型训练是通过梯度下降法更新3个模块的参数,使式(4)代表的损失函数降到最低

(4)

1.3 音频数据增强

经过预处理得到的数据集,正负样本的比例大概在 4∶1,属于不平衡样本的情况,训练时使用过采样方法使得每批正负样本大致保持在1∶1,这样可以有效提高分类器对于负样本的判断能力。另外,考虑到原始数据样本有限,本文采用了类似在图像分类时使用的数据增强方法,对原有的心音数据进行扩充,以进一步减轻网络的过拟合现象。为了不改变心音数据的原有标签,本文使用3种方法进行音频数据增强。第一,添加微弱白噪声,如式(5)所示,此操作有利于减轻模型的过拟合,同时可以模拟心音数据质量稍差的情形

xp=x+white_noise

(5)

其次是将心音数据左移或右移,类似数据的位移操作,但需要将数据溢出边界的部分补充到数据的另一端。除此之外还可在音频首端或尾端添加一段0振幅数据,以模拟某些时刻心音数据只是大部分完整,而首端或尾端没有记录的情况。考虑实际的效率和效果,本文将前两个增强操作作用在分割为5 s片段前,最后一个作用在分割为5 s片段后。

1.4 样本预测方法

训练好的模型具备对一段固定长度为5 s的心音数据进行分类的能力。当对一个完整心音样本进行分类,首先要按照上述的数据预处理方法得到多个心音片段,接着利用训练好的模型对各个片段进行预测,最后根据设定的规则将这些结果转化为最后对样本的判断结果。此处的规则可以有多种设定方式,可以采用投票机制,即选择这些片段的多数类别作为最终的样本类别,也可采用平均各片段分类概率的方法,把平均后的结果当作这个样本属于正常的概率,然后根据分类阈值确定样本的最终类别结果。获取一个样本类别结果的规则一般都是人为设定,上述两个规则各有利弊,对最终的结果影响不大,本文选择平均各段的结果得到样本的类别概率。后续如果研究者找到更合理的规则设定,更改此处预测样本类别的规则将有利于提升整体的分类准确率。

2 结果与讨论

本文首先将PhysioNet 2016上的所有心音数据划分为训练集和测试集,训练集和测试集分别占比为90%和10%。其中,测试集用于最终测试模型的性能,为确保结果的合理性,须严格保证训练时不可见。接着将用于训练的各心音分割为长度为5 s的片段,把所有的片段再划分为训练集和验证集,两者分别占比为80%和20%,这里额外构造验证集是为了避免模型出现过拟合,同时可以挑选更优的模型超参数。这部分通过展示一些实验结果,验证本文采用的网络结构确实具有优越性。

2.1 CNN结构实验

针对CNN模型的结构,考虑到长条形的卷积更符合声谱图带状的特点,其提取特征的效果可能更好,因此本文比较了3×3和1×3,3×1的卷积的效果,为了实验简单快速,此处只利用CNN特征进行分类,在计算量和参数量几乎相同的情况下,模型训练5轮,两者的比较结果见表3,对照组采用3×3的卷积直接输出64通道的特征图,实验组采用先使用3×3的卷积输出32通道的特征图,然后再经过3×1和1×3的长条形卷积输出64通道的特征图。由于每个心音样本的预测准确率直接依赖于分割后各心音片段的预测准确率,因此这里的评价标准直接使用模型在验证集的判断准确率(下同)。通过比较准确率可知,添加长条形的卷积在心音的声谱图上确实有更好的表现。

表3 CNN结构比较

2.2 RNN结构实验

通常研究者在使用RNN时很少添加额外的结构,本文尝试在RNN模块中添加一些常见的有效单元,并验证它们是否可以提升模型的效果。本文主要比较了添加batch norm、dropout以及不添加的两种结构,batch norm有利于模型各层之间的解耦,加速训练过程并提升分类准确率;而dropout单元在训练时可随机屏蔽一些神经元,起到正则化的作用从而避免模型过拟合。它们在全连接网络中作用显著,但在RNN上的效果学界还未有定论。从表4的结果可以看出,在添加较少计算量的情况下,这些结构确实可在本文的RNN模块上起作用,它们减弱了模型的过拟合,同时提高了模型准确率。关于这些结构是否对于其它的RNN模型都起作用,值得研究者们继续探讨研究。

表4 RNN结构比较

2.3 各方法比较

音频数据增强是本文的另一个重要创新点,虽然从表5得知它并没有大幅提高分类准确率,但它可以使得模型学习到更多的合理数据从而减轻过拟合现象,随着更大的模型在音频数据上使用,音频数据增强必定是一个重要的研究方向,本文采用的音频增强操作比较简单,希望可以为研究者们提供一些方向和思路。

在本次实验中,本文从已有的心音样本中随机选择10%当作测试样本,这部分不参与训练。训练好模型后,采用对完整心音样本进行预测的方法对心音进行分类,最终得到平均分类准确率为85.7%,达到了目前单阶段心音分类方法的最好效果,并且与最好的两阶段分类方法也非常接近,表5比较了多个单阶段心音自动分类方法的性能。

表5 各方法性能比较

总结来说,本文提出的直接从心音数据出发的自动分类方法,不依赖于心音分割,同时使用CNN和RNN提取频域和时域特征,并且更加精细调整网络结构和超参数,如使用长条形的卷积、设置dropout和batch normalization结构等,并辅以音频数据增强进行训练,使网络充分学习了数据与标签的潜在函数关系,达到了目前单阶段分类方法中的最好效果。本文提出的方法,将有助于打破心音听诊只能在医院进行的限制,但要使心音自动听诊真正走进家庭,研究者们还需进一步提升心音分类的准确率。

3 结束语

随着生活水平的提高,人们对自身健康越来越关注,心音诊断作为监测心脏相关疾病的重要手段自然也引起人们的广泛关注。通常的心音诊断活动只能在医院由经验丰富的医生进行,而心音自动诊断能够帮助人们在各个场所方便的进行心音异常检测,从而更加有效地保障人们的心脏健康。借助于深度学习和大数据的发展,本文在之前方法的基础上,提出了一种不依赖于分割的自动心音判断方法,充分利用心音的全局信息,使用CNN和RNN自动提取的时频特征并辅以数据增强的方法进行训练,最后得到了较高的分类准确率。这对心音辅助听诊会有不小的帮助,有利于人们及时准确的发现心脏异常并提早预防。在本文研究的基础上,研究者可进一步开发利用CNN或者RNN的结构,采用更加合理有效的模块和超参数或者更多的音频数据增强操作来提升分类准确率,另外,如果对心音听诊有更好的理解,还可以通过设置更加合理的心音片段判断结果到心音样本判断结果的转换规则来提升模型的分类效果。总体来讲,本文认为利用深度学习的视角和思路来研究心音异常判断方法将会是一个非常有潜力的方向。

猜你喜欢
心音卷积准确率
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
卷积神经网络的分析与设计
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
基于双阈值的心音快速分段算法及其应用研究
基于傅里叶域卷积表示的目标跟踪算法
双声道心音能量熵比的提取与识别研究