基于MFCC与GFCC混合特征的先心病心音分类研究
2022-08-22潘家华杨宏波
陈 成,潘家华,孙 静,杨宏波
(1. 云南大学信息学院,云南 昆明 650091;2. 云南省阜外心血管病医院,云南 昆明 650102;3. 昆明医科大学,云南 昆明 650500)
1 引言
先天性心脏病简称先心病(congenital heart disease,CHD),因胎儿时期心脏发育缺陷,患儿出生存在心血管结构异常,是儿童最常见、危害较大的心血管疾病[1]。第二十三届全国介入心脏病学论坛线上会议(CCIF2020 Online)上,先心病论坛主席张戈军指出,当前我国每年新增先心病患者约15-20万例,在出生缺陷类疾病中位列第一,每100个新生儿中约有1个是先心病患者。心音是心肌收缩和舒张,瓣膜启闭,血流冲击心室壁和大动脉等因素引起的机械振动产生的音频信号。心音信号含有丰富的生理、病理信息,是先心病初诊的主要依据,用电子听诊器记录下的心音信号称为心音图(phonocardiogram,PCG),研究PCG有助于临床对先心病进行评估。
早期国内外的心音研究者主要采用自回归模型(Autoregressivel model,AR)、自回归滑动平均模型(Autoregressive moving average model,ARMA)、傅里叶变换等对心音信号进行频谱分析[2]。心音的主要研究范围涉及心音信号的预处理、特征提取、以及分类识别。例如利用巴特沃斯滤波、组稀疏(group-sparsity)[4]、经验模态分解[5]、小波变换[6]等方法对心音进行去噪。采用香农能量[7]、小波变换、希尔伯特-黄变换[8]等提取心音包络,以便对心音信号进行定位、分割。心音的特征提取可从时域、频域、能量分布等角度分析,其中文献[9]利用梅尔频率倒谱系数(Mel-frequency Cepstral Coefficients,MFCC)和线性预测倒谱系数(Linear Predictive Cepstral Coefficients,LPCC)提取心音特征;文献[9]从时频矩阵中提取幅度和相位特征对心脏瓣膜疾病进行分类;文献[11]采用梅尔频率系数(log Mel-frequency Spectral Coefficients,MFSC)提取心音特征;文献[12]提出一种以第一心音和第二心音的共振峰频率作为特征的心音分类识别方法,以上文献对心音的特征提取均为单一特征。心音的分类识别通常采用支持向量机(Support Vector Machines,SVM)[13]、深度神经网络(Deep Neural Networks,DNN)[14]、卷积神经网络(Convolutional Neural Networks,CNN)[11]、长短时记忆网络(Long Short-Term Memory,LSTM)[15]等方法。然而在心音的特征提取和分类识别方面,仍然存在特征提取不典型、识别率不高等问题。
MFCC与伽马通频率倒谱系数(Gammatone Frequency Cepstral Coefficients,GFCC)[16]已广泛应用于语音信号特征提取并取得了较好的效果。例如用MFCC与GFCC的混合特征作为卷积神经网络的输入进行声源定位[17]、对环境声音进行分类[18]、说话人识别[19]等,但鲜为有文报道用于心音特征提取。心音信号分类识别的关键在于信号的特征提取与分类网络的选择。为此提出了一种特征提取新方法。用汉宁自卷积窗(Hanning self-convolution window,HSCW)[20]代替传统的汉宁窗对心音信号进行加窗运算,之后提取心音的MFCC与GFCC特征(称其为HMFCC与HGFCC特征),并利用主成分分析算法(Principal Component Analysis,PCA)进行特征降维,将降维后的HMFCC与HGFCC特征组合构成混合特征HMGFCC。最后采用深度学习模型Inception v4[21]作为分类网络对心音进行分类测试,并与其它常见的分类网络作了比较。
2 心音分类识别方法
心音分类识别系统一般由信号预处理、特征提取和分类识别三个部分组成,系统整体框架如图1所示。
图1 系统整体框架
2.1 信号预处理
2.1.1 心音信号去噪
在采集心音采集过程中易受外界环境和人为干扰而混入噪声,这些噪声将对后续有效特征的提取及信号的识别产生影响。实验运用基于db6小波双参数可调阈值函数对心音信号进行去噪,该阈值函数克服了硬阈值函数在λ处不连续,导致重构信号产生震荡及软阈值函数存在明显偏差,使得重构信号失真的问题。阈值函数定义为
(1)
式中,sgn(Wjk)为符号函数,Wjk为心音信号的小波分解系数,jk是去噪后的小波估计函数,阈值为噪声信号长度,为噪声的标准差,该式分子表示在分解的各个尺度下的绝对值中值。
通过实验,对比不同小波和不同分解层数去噪后信号的信噪比与均方误差,最终选择db6小波基函数,分解层数为5层。原始心音和去噪后的心音对比如图2所示。
图2 原始心音与去噪后的心音对比
2.1.2 提取心动周期
为了提取心音信号的有效成分,提高心音的识别率,采用David等[22]提出的基于逻辑回归的隐半马尔可夫模型(hidden semi-Markov models,HSMM)心音分割方法自动对心音信号进行准确的状态分割,正常心音信号的分割结果如图3所示。
图3 心音状态分割结果
从图3可以看出,该算法能对心音的S1、收缩期、S2和舒张期四个状态进行准确分割。根据状态分割算法提取出心音的各个心动周期并保存为wav格式。图4为提取出的去噪后的正常心音和3种常见先心病心音的单个心动周期所对应的波形图。
图4 一个心动周期的心音信号
2.2 特征提取
针对单一特征参数表征信号不够全面的缺点,将传统的MFCC与抗噪性能良好的GFCC组合并改进后用于心音特征提取。具体为:先用HSCW对分帧后的信号进行加窗,再提取心音的HMFCC与HGFCC特征,并用PCA降维,最后组成一个新的混合特征HMGFCC,图5为该混合特征参数的提取流程。
图5 特征提取流程
2.2.1 HMFCC特征
在心音识别系统中,特征参数提取的有效性将直接影响分类网络的准确率。MFCC根据人耳听觉感知机理,克服听觉感知不能聚集整个频谱包络的缺点,提取在Mel标度频率域的非线性倒谱参数。实际频率fs与Mel频率之间的关系可由(2)下式表示
(2)
式中,fMel代表感知频率,单位是Mel,fs表示实际心音频率,单位为Hz。
提取HMFCC特征参数的具体步骤如下:
1)预加重、分帧
为弥补心音采集过程中的高频分量损失,使频谱平滑,对信号进行预加重处理,一般采用一阶数字滤波器,即
H(z)=1-az-1
(3)
式中,a为预加重系数,取值为0.97。对信号进行分帧,设置帧长为256,帧移为128。
2)加窗
用汉宁自卷积窗HSCW代替传统的汉宁窗对心音信号进行加窗运算是本文的一个特点,可达到有效抑制频谱泄露的效果,进一步提高特征参数提取的准确性。经过实验,选用2阶HSCW作为窗函数对心音信号进行截取已经达到实验效果。数据长度为N的2阶HSCW窗频域表达式见(4)式
(4)
式中,WR(n)为矩形窗的频率响应,表达式见(5)式
(5)
图6给出了N为128的hanning窗和HSCW窗函数的频率响应示意图。
图6 hanning窗和HSCW窗的幅频响应
对比分析两种窗函数,HSCW窗的旁瓣电平小且衰减速度快,因而可使信号在频率分辨率较高的同时抑制频谱泄露[23]。
3)FFT(Fast Fourier Transform)
对心音x(n)做快速傅里叶变换,将信号从时域转换到频域,对频域信号X(k)进行平方处理,得到每一帧信号的能量频谱|X(k)|2。
4)Mel频率刻度变换
将频域信号经Mel滤波器组进行滤波和刻度变换,得到每一帧心音的Mel频谱。每个滤波器的输出响应如式(6)所示。
(6)
式中,f(m-1)、f(m)、f(m+1)分别表示第m-1、m、m+1个滤波器的中心频率,k为心音信号频率。
5)倒谱分析
倒谱分析包括取对数能量和离散余弦变换(Discrete Cosine Transformation,DCT)。对每个滤波器滤波后的信号取对数能量Em,如式(7)所示
(7)
式中,|X(k)|2为每一帧信号的能量频谱,Hm(k)为Mel滤波器频率响应,M为滤波器个数。
为得到Mel倒谱系数,将(7)式所得结果进行DCT变换,使信号映射到低维空间,实现数据压缩且可去除噪声和特征分量之间的冗余信息。HMFCC特征参数可由(8)式表示。
(8)
式中,HMn为Mel频率倒谱系数;M为滤波器个数。
时域的一维心音信号,经提取HMFCC后转变成了2D的“图片”,以便作为特征输入到随后的分类器Inception v4进行分类处理。
2.2.2 HGFCC特征
GFCC特征提取与MFCC特征提取相似,只是在提取过程中使用的是Gammatone滤波器,且GFCC是基于等效矩形带宽(Equivalent Rectangular Bandwidth,ERB)刻度提取的特征。与Mel滤波器相比,Gammatone滤波器是一种基于标准耳蜗结构的滤波器,对高频信息较敏感,谱峰平坦,可减少能量泄露,具有鲁棒性和抗噪性强的优点。其时域表达式如式(9)所示
gi(t)=Atn-1e-2πbitcos(2πfi)u(t),t≥0,1≤i≤N
(9)
式中,A为滤波器增益;fi为滤波器中心频率;u(t)为阶跃函数;n为滤波器级数;N为滤波器个数;bi为滤波器衰减因子,它与ERB的关系为
(10)
式中,Q为渐进因子,Bmin为最小带宽。
经倒谱分析后得到的GFCC可由式(11)表示
(11)
式中,k为Gammatone滤波器个数,N为特征参数的维数。
由于心音信号的时域连续性,从每一帧信号种提取的特征只能反映当前帧的心音特征,因此实验提取的HMFCC特征包括静态分量和可以反映前后帧之间特征信息的一阶差分动态分量ΔHMFCC,HGFCC特征包括静态分量及其一阶差分分量ΔHGFCC。
2.2.3 混合特征
特征提取过程保留具有静态特性的HMFCC、HGFCC及其具有动态特性的一阶差分特征参数。由于HMFCC与HGFCC不在不同一尺度下进行心音特征提取,表征着不同的心音特征信息,所以在实验中对因此进行了特征参数采用归一化处理。将归一化后两组特征参数组合在一起,构成混合特征,其组成式如下
HMGFCC
=[(HM1,HM2,…,HMm),(ΔHM1,ΔHM2,…,ΔHMm),
(HG1,HG2,…,HGn),(ΔHG1,ΔHG2,…,ΔHGn)]
(12)
式中,HMm、ΔHMm分别表示第m维维Mel频率倒谱特征参数系数及对其及进行差分运算得到的一阶差分HGn、ΔHGn分别表示第n维Gammatone频率倒谱系数及其一阶差分。
2.2.4 PCA优化特征参数
为降低计算复杂度,采用PCA算法对心音样本特征进行降维,降维过程如图7所示。
图7 PCA降维
在实验中,使用HMFCC与HGFCC特征提取算法分别对心音样本进行特征提取,得到24维的HMFCC特征与24维的HGFCC特征,将二者按照式(12)进行组合。对组合后的混合特征按照图7所示过程进行降维,得到24维混合特征HMGFCC。
2.3 基于深度学习模型的先心病心音分类
卷积神经网络作为一种深度学习模型,主要包括输入层、卷积层、池化层、全连接层和输出,主要特点是局部连接、权值共享。卷积层进行卷积运算可以提取出输入数据的深层特征信息;池化层实现特征的压缩、减少数据量;全连接层则将学习到的特征映射到不同的分类结果中,分类结果则由输出层输出。实验选用深度学习模型Inception v4作为先心病心音信号的分类网络。Inception v4网络由Stem模块、3个Inception-A模块、7个Inception-B模块、3个Inception-C模块、Reduction-A模块、Reduction-B模块、平均池化层、Dropout层和Softmax层组成。其网络结构如图8所示。
图8 Inception v4网络结构
该网络构架计算量少,在增加网络深度和宽度的同时,提高了深度学习网络分类准确率并且防止过拟合现象的发生。网络通过Inception模块对输入特征图进行多尺度卷积和池化,提升了模型感知力,增加网络的深度和宽度以获取更具表达能力的特征信息。采用1×1卷积核进行降维,有效减少了计算量,提高了训练速度;Stem模块和Reduction模块使用卷积层和池化层的并行结构来防止bottleneck问题;使用Dropout层解决过拟合问题。
3 实验结果与分析
3.1 实验数据及平台
用于实验的心音数据均来自用课题组研发的心音采集设备以及美国The One ThinkLabs电子听诊器,在云南省阜外心血管病医院临床采集以及跟随医疗队在云南省各地区筛查采集所建的心音数据库。采集对象为先心病患者和健康志愿者,年龄在2-18岁之间。心音信号时长为20秒或30秒,采样率为5kHz。所有信号均经过临床专家确诊,并经云南大学医学伦理委员会审查同意后授权使用。心音数据库中的每例信号均采集5个点位的心音,分别为二尖瓣听诊区(M点)、肺动脉瓣听诊区(P点)、主动脉瓣听诊区(A点)、主动脉瓣第二听诊区(E点)、三尖瓣听诊区(T点)。根据不同先心病在临床上的不同表现,选择不同点位的心音信号作为样本。在本次实验中,采用了心音数据库中的1600例心音样本,含正常心音信号850例,先心病心音信号750例。数据集分布如表1所示。
表1 数据集分布
实验环境为MATLAB R2018a、python 3.6,硬件环境为Inter(R)Core(TM)i7-8700 CPU@ 3.2GHz。Inception v4模型在Tensorflow深度学习框架中实现。
在深度学习实验中,数据集按照7:2:1比例划分得到训练集1120例、验证集320例、测试集160例,测试集中包含正常心音与先心病心音各80例。按上述流程对PCG信号处理后,提取心音每一帧的HMFCC与HGFCC特征,将获得的表征每一帧信号的特征拼接在一起,组成48维HMFCC与HGFCC混合特征,经过PCA降维得到24维混合特征HMGFCC。将特征转换为TFrecord格式作为深度学习网络Inception v4的输入进行训练,可提高训练时数据的读取和处理速度。设置batchsize大小为8,学习率为0.001,权重衰减值weight_decay为0.00004,使用Adam优化算法,迭代250次。验证集用于对训练集训练出的多个模型进行测试,记录各个模型的分类准确率,选出效果最佳的模型,并用测试集数据进行模型预测。
3.2 评价指标
在2011 PASCAL Classifying Heart Sounds Challenge Workshop上,给出了评判分类性能的标准,分别为灵敏度(Sensitivity,Se)、特异度(Specificity,Sp)以及准确率(Accuracy,acc),定义如(13)-(15)式所示
(13)
(14)
(15)
式中,TP表示真阳性,即实际为阳性且被分类器划分为阳性的样本数;FP表示假阳性,即实际为阴性但被分类器划分为阳性的样本数;FN表示假阴性,即实际为阳性但被分类器划分为阴性的样本数;TN表示真阴性,即实际为阴性且被分类器划分为阴性的样本数。
3.3 实验结果与分析
心音信号特征提取的有效性决定了分类器的分类效果。为了更好地比较不同特征对分类结果的影响,将单一特征与混合特征分别作为Inception v4网络的特征输入,得到表2所示的分类结果。
表2 特征提取方法对识别率的影响
由表2可以看出,采用混合特征参数的分类效果优于单一特征。以分类准确率为例,用混合特征HMGFCC的分类准确率为91.25%,而采用单一特征HMFCC或HGFCC的分类准确率依次为86.25%、83.12%,前者相比后者分别提高了5%、8.13%。采用HSCW提取的心音特征HMFCC、HGFCC的分类准确率相比传统的汉宁窗提取的MFCC、GFCC特征的分类准确率分别提高了1.87%、0.62%。可见,文中提出的改进的混合特征能更好地表征心音信号特征,在避免传统汉宁窗的频谱泄露问题的同时,提取到更有效的心音特征,提高了先心病心音分类的准确率。
为了进一步证明混合特征应用于Inception v4网络在心音分类识别上的优越性,在同一测试样本下,通过实验对BP、CNN、LSTM、Inception v3、Inception v4五种深度学习网络的分类准确率进行对比。使用三层BP网络,将24维混合特征保存为mat格式数据文件作为网络的输入。用24维混合特征构造出二维特征图作为CNN的输入进行训练,实验设计的CNN包含3个卷积层、2个池化层、1个全连接层,采用Softmax作为网络输出层。LSTM是在RNN的基础上用包含输入门、遗忘门、输出门和记忆单元的神经元替代神经节点,实验在Keras框架下以混合特征作为LSTM的训练数据,该网络模型由2层LSTM网络与一个全连接层组成。此外,学习Inception v2模型的优点,为提高训练速度、防止过拟合,在CNN和LSTM训练时引入批量归一化(Batch Normalization,BN)算法。五种深度学习模型对先心病心音的分类对比结果如表3所示。
表3 分类结果对比
由表3可知,对比Inception v4对心音的分类效果与同样混合特征参数训练的其它深度学习模型,证明Inception v4在心音分类上更具优越性。并且由灵敏度与特异度可以看出,混合特征HMGFCC应用于该模型的漏诊率与误诊率较其它算法更低。
提出的混合特征避免了单一特征无法较好表征信号特征的缺点,并且改进加窗方式,能提取到更有效的心音信号特征,与其它分类器相比提高了先心病心音分类的准确率,取得了灵敏度Se、特异度Sp和分类准确率acc依次为93.75%、88.75%、91.25%的结果。
4 结束语
为获取更典型更全面的心音特征,提高心音分类准确率,提出了一种基于MFCC与GFCC混合特征的先心病心音信号分类算法。首先,对心音信号进行预处理,使用基于db6小波基的双参数可调阈值函数对心音信号进行去噪,随后采用基于逻辑回归的HSMM心音分割算法对心音进行准确分割并提取出心音信号的单个心动周期;然后利用改进的特征提取方法提取各个心动周期的HMFCC与HGFCC特征,进行PCA降维后组成混合特征HMGFCC;最后,利用Inception v4对正常心音和先心病心音进行分类。该算法在160例测试集中取得较好的分类效果,并在同一样本下对单一特征、混合特征分别进行了对比实验。实验证明,混合特征更具心音信号的特征表达能力,结合深度学习模型Inception v4取得较好的分类效果,有望用于对先心病的机器辅助诊断。