陳 成,潘家華,孫 靜,楊宏波
(1. 云南大學信息學院,云南 昆明 650091;2. 云南省阜外心血管病醫院,云南 昆明 650102;3. 昆明醫科大學,云南 昆明 650500)
先天性心臟病簡稱先心病(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]作為分類網絡對心音進行分類測試,并與其它常見的分類網絡作了比較。
心音分類識別系統一般由信號預處理、特征提取和分類識別三個部分組成,系統整體框架如圖1所示。

圖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 一個心動周期的心音信號
針對單一特征參數表征信號不夠全面的缺點,將傳統的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。
卷積神經網絡作為一種深度學習模型,主要包括輸入層、卷積層、池化層、全連接層和輸出,主要特點是局部連接、權值共享。卷積層進行卷積運算可以提取出輸入數據的深層特征信息;池化層實現特征的壓縮、減少數據量;全連接層則將學習到的特征映射到不同的分類結果中,分類結果則由輸出層輸出。實驗選用深度學習模型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層解決過擬合問題。
用于實驗的心音數據均來自用課題組研發的心音采集設備以及美國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次。驗證集用于對訓練集訓練出的多個模型進行測試,記錄各個模型的分類準確率,選出效果最佳的模型,并用測試集數據進行模型預測。
在2011 PASCAL Classifying Heart Sounds Challenge Workshop上,給出了評判分類性能的標準,分別為靈敏度(Sensitivity,Se)、特異度(Specificity,Sp)以及準確率(Accuracy,acc),定義如(13)-(15)式所示

(13)

(14)

(15)
式中,TP表示真陽性,即實際為陽性且被分類器劃分為陽性的樣本數;FP表示假陽性,即實際為陰性但被分類器劃分為陽性的樣本數;FN表示假陰性,即實際為陽性但被分類器劃分為陰性的樣本數;TN表示真陰性,即實際為陰性且被分類器劃分為陰性的樣本數。
心音信號特征提取的有效性決定了分類器的分類效果。為了更好地比較不同特征對分類結果的影響,將單一特征與混合特征分別作為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%的結果。
為獲取更典型更全面的心音特征,提高心音分類準確率,提出了一種基于MFCC與GFCC混合特征的先心病心音信號分類算法。首先,對心音信號進行預處理,使用基于db6小波基的雙參數可調閾值函數對心音信號進行去噪,隨后采用基于邏輯回歸的HSMM心音分割算法對心音進行準確分割并提取出心音信號的單個心動周期;然后利用改進的特征提取方法提取各個心動周期的HMFCC與HGFCC特征,進行PCA降維后組成混合特征HMGFCC;最后,利用Inception v4對正常心音和先心病心音進行分類。該算法在160例測試集中取得較好的分類效果,并在同一樣本下對單一特征、混合特征分別進行了對比實驗。實驗證明,混合特征更具心音信號的特征表達能力,結合深度學習模型Inception v4取得較好的分類效果,有望用于對先心病的機器輔助診斷。