張俊飛,張貴英
(1.廣州醫(yī)科大學信息與現(xiàn)代教育技術中心,廣東 廣州 511436;2.廣州醫(yī)科大學基礎醫(yī)學院,廣東 廣州 511436)
心音信號是由心肌收縮、心臟瓣膜開閉和血液流動撞擊等引起的振動所產生的聲音。心音信號包含大量心臟生理信息,心音檢測結果可以比其他檢測結果更早表現(xiàn)器質性心臟病體征[1],因此對心音信號的有效分析有助于心臟疾病無創(chuàng)診斷。
當前深度學習在心音分類領域已經得到大量的應用。根據當前心音分類領域深度學習神經網絡模型組合方式和訓練方法,深度學習應用在心音分類領域的模式可分為以下3種:(1)一種或多種神經網絡模型組合。許春冬等[2]通過構造心音功率譜密度特征矩陣,利用卷積神經網絡實現(xiàn)心音分類,基于2016年PhysioNet/CinC挑戰(zhàn)賽(簡稱CinC2016)數據的分類準確率、靈敏度和特異度分別為84.72%,77.63%和94.63%。李偉等[3]結合卷積神經網絡和循環(huán)神經網絡分別提取心音的頻域和時域特征進行訓練,基于CinC2016數據的分類準確率為85.70%。Noman等[4]基于心音原生數據和梅爾頻率倒譜系數MFCC(Mel-Frequency Cepstrum Coefficient)特征利用一維卷積和二維卷積神經網絡進行心音二分類,基于CinC2016數據的分類準確率、靈敏度和特異度分別為89.22%,89.94%和86.35%。Li等[5]將傳統(tǒng)的特征工程方法與設計的卷積神經網絡相結合,對心音進行自動分類,基于CinC2016數據的分類準確率、靈敏度和特異度分別為86.80%,87.00%和86.60%。Zabihi等[6]從原生心音數據的時間、頻率和時頻域維度提取特征,利用前饋神經網絡進行分類,基于CinC2016數據的分類平均準確率、靈敏度和特異度分別為85.90%、86.91%和84.90%。(2)機器學習和神經網絡模型組合。Potes等[7]從原生心音數據124個時頻特征和4個頻帶特征2個維度,分別應用AdaBoost分類器和一維卷積神經網絡進行訓練,最后結合決策,其基于CinC2016數據的分類平均準確率、靈敏度和特異度分別為86.02%,94.24%和77.81%。韓威等[8]改進文獻[7]分類模型中的一維卷積為二維卷積,其準確率、靈敏度和特異度分別為91.08%±1.79%,93.03%±3.12%和89.14%±1.92%。(3)輔助模塊參與的深度學習心音分類。Chen等[9]參照ECG信號利用隱馬爾可夫模型尋找心音信號中S1、S2、收縮期和舒張期確切位置,再進行心音分段并輸入到卷積神經網絡中,基于CinC2016數據的分類平均準確率、靈敏度和特異度分別為94.00%,95.00%和93.00%。Han等[10]首先對心音數據進行分段并提取每段MFCC特征,再在神經網絡模型中引入輔助閾值映射心音段類別到心音實例類別,基于CinC2016數據的分類平均準確率、靈敏度和特異度分別為91.50%,98.33%和84.67%。
深度學習摒棄了傳統(tǒng)機器學習的特征工程環(huán)節(jié),為心音分類提供了簡單便捷的端到端模式,因此特征工程方式、機器學習與深度學習組合使得心音特征獲取、網絡模型結構過于復雜;輔助模塊的參與明顯提升了心音分類的準確度,但是輔助模塊需要更多的運算,也使模型變得復雜,偏離了深度學習理念。秉承特征獲取簡易、網絡模式簡單和分類準確率高的需求,本文利用ResNet152模型對CinC2016數據進行深度學習,應用CBAM(Convolutional Block Attention Module)注意力機制到心音特征提取中,使得特征更加有效;利用Focal Loss損失函數緩解心音數據不均衡帶來的分類不準確問題,同時有利于心音難例分析;利用多尺度心音特征使得心音信號表達更加準確。
本文采用2016年PhysioNet/CinC挑戰(zhàn)賽中的比賽數據。該數據共由6個數據庫(A~F)組成,總計3 240個心音記錄,其中正常心音2 575個、異常心音665個。
心音數據重采樣的目的是保留有效心臟活動聲音信號,減少數據量和后期運算時間。正常心音頻率一般在50 Hz到800 Hz[11],根據奈奎斯特采樣定理,本文采用2 000 Hz采樣頻率完整保留原始信號有效信息。
對于正常心音頻率區(qū)域外的高頻、低頻噪音信號,先由5階巴特沃斯帶通濾波器去噪;對于區(qū)域內的噪音信號,采用小波閾值去噪。
5階巴特沃斯帶通濾波頻帶設為50~800 Hz,由其頻率響應(圖1)可知,基本保留了0.05~0.8 kHz區(qū)間信號。圖2展示了一條心音信號濾波前后頻譜對比,濾波后的心音數據在50 Hz之前和800 Hz之后均有所衰減。
Figure 1 Frequency response diagram圖1 頻率響應圖
Figure 2 Spectrum comparison圖2 頻譜對比圖
小波閾值去噪選取Db8小波基,并采用軟閾值函數法對噪聲小波系數進行過濾。軟閾值函數計算見式(1),其中,w是小波系數;λ是閾值;wλ是施加閾值后的小波系數。λ值利用固定閾值估計法確定,具體如式(2)所示,其中,σ是噪聲標準差;Lsignal是信號長度。本文通過信噪比計算驗證小波閾值的有效性。信噪比RSN如式(3)所示:
(1)
(2)
(3)
其中,S′為濾波后的信號;S為濾波前的信號。
MFCC特征目前被廣泛應用到心音處理,它首先把心音信號轉化為短時平穩(wěn)數據,再向人耳聽覺機理方面轉化從而提取心音特征。文獻[12,13]表示在卷積神經網絡應用中,梅爾頻率譜系數MFSC(Mel-Frequency Spectrum Coefficients)相對MFCC減少了離散余弦變換,使得特征表達更加豐富。心音信號是一維數據,為符合卷積神經網絡深度學習數據格式,本文把心音信號的MFSC特征圖及其一階差分(Δ)和二階差分(Δ-Δ)合并成3通道二維數據格式,如圖3所示。
Figure 3 Heart sound feature map圖3 心音特征圖
2.4.1 計算MFSC
本文提取MFSC特征的步驟如下所示:
(1)預加重。將心音信號進行高通濾波,提升高頻頻帶使心音頻譜變得平坦,且突出高頻共振峰。
(2)分幀和加窗。利用漢寧窗函數對信號進行加窗和分幀處理,使得心音信號變得短時平穩(wěn),方便后期研究。使用漢寧窗函數減少了2幀之間變化引起的能量泄露,同時削弱了后期傅里葉變換引起的柵欄效應。分幀窗口長度為1 024,幀移為512,2幀之間50%的重疊保證了參數過渡自然。分幀數fn計算如式(4)所示:
fn=(N-Noverlap)/Ninc
(4)
其中,N為幀長;Noverlap為2幀重疊部分;Ninc為幀移。
(3)計算譜線能量。相較于在時域視角下表征,心音信號在頻域視角通過能量分布進行表征更為直觀,便于觀察,故對分幀和加窗后的各幀信號進行快速傅里葉變換,得到各幀的頻譜X(i,k),并對其取模平方得到語音信號的譜線能量E(i,k),其計算如式(5)所示:
E(i,k)=|X(i,k)|2
(5)
其中,i為心音的幀數;k為譜線的頻率序號。
(4)計算Mel濾波能量。通過Mel濾波器計算每幀譜線的濾波能量。把每幀的譜線能量乘以Mel濾波器的頻域響應并相加。Mel濾波能量的計算如式(6)所示:
(6)
其中,S(i,m)為心音第i幀對應的第m個Mel濾波器的能量;Hm為第m個Mel濾波器頻率響應;n為心音第i幀n條譜線。
(5)Mel能量取對數得到MFSC。人耳感知是非線性的,通過對每幀Mel能量取對數來模擬非線性關系,描述人耳對心音判斷的感知特性。
2.4.2 構建心音特征圖
心音信號是連續(xù)的時序數據,分幀提取的特征信息具有時序局部性,為了保留心音時序特征增加了前后幀信息,采用一階差分(Δ)和二階差分(Δ-Δ)實現(xiàn)。心音數據集每個心音長度不一致,導致MFSC特征長度不一,為了對齊特征,將梅爾濾波器個數設為200,截取心音信號前200幀,去掉總幀數不夠的心音數據,最終得到大小為200×200的二維心音MFSC特征。對齊的MFSC特征取一階和二階差分,保留了心音信號時域連續(xù)性特征。將MFSC特征圖和一階、二階差分特征圖組織成3通道的三維數據格式,其大小為200×200×3。
對于輸入特征圖F大小為HⅹWⅹC(H為高度,W為寬度,C為通道數),CBAM依次推導出通道注意力圖Mc∈R1×1×C和空間注意力圖Ms∈RH×W×1,整體的注意力圖計算過程如式(7)和式(8)所示:
F′=Mc(F)?F
(7)
F″=Ms(F)?F′
(8)
其中,?為逐元素相乘,F(xiàn)′為F施加通道注意力掩碼后的輸出,F(xiàn)″為F先后施加通道注意力和空間注意力掩碼后的輸出。
CBAM可以無縫集成到任何CNN架構,強調或抑制輸入特征圖,并細化其局部特征,在保持較小開銷的前提下提升基線網絡性能。Woo等[14]通過消融實驗證明了對輸入特征圖先施加通道注意力后施加空間注意力運算,能夠更好地提取目標特征,且空間注意力卷積核大小為7×7時,效果更好。
Mc(F)=σ(MLP(AvgPool(F))+
MLP(MaxPool(F)))=
(9)
Ms(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))=
(10)
衡量2個分布的差異,經常使用交叉熵CE(Cross Entropy) 損失函數,針對二分類問題CE損失函數計算如式(11)所示。其中,p表示預測樣本屬于1的概率;y表示真實標簽。為了表示簡便,用pt表示樣本屬于真實類別的概率,其表達如式(12)所示。由式(11)和式(12),可知CE函數表達如式(13)所示。在式(13)基礎上得到Focal Loss損失函數表達如式(14)和式(15)所示。其中,參數α解決了正負樣本之間的平衡問題,通過α值,調節(jié)標簽為1的樣本對損失的貢獻度;通過調節(jié)參數γ,使得樣本越易分類(pt值越大),損失貢獻越小,難例則相反。
(11)
(12)
CE(p,y)=CE(pt)=-log (pt)
(13)
(14)
FL(pt)=-αt(1-pt)γlog(pt)
(15)
本文分別選取數據集中正常心音和異常心音的10%作為測試集(Test)。在剩下的90%數據中,分別選取正常心音和異常心音數據的80%作為訓練集(Train),20%作為驗證集(Validation)。數據劃分具體見表1。
Table 1 Data partitioning表1 數據劃分
本文采用TensorFlow深度學習框架。訓練服務器參數為:CPU(3.2 GHz)、GPU(TITAN RTX 24 GB)、RAM(13 GB)。
5.3.1網絡模型
ResNet152[15]以跨層連接瓶頸結構進行組合,解決了深層網絡梯度消失的問題。CBAM注意力機制通過改進瓶頸結構中殘差支路輸出,實現(xiàn)殘差特征圖細化,使得部分特征得到強調或抑制。瓶頸結構改進模型如圖4所示。當輸入X與輸出F″大小相同和不同時,瓶頸結構改進算法分別如式(16)和式(17)所示,為了簡便公式,忽略了偏差參數。
y=CBAM(F(X,{Wi}))+X
(16)
y=CBAM(F(X,{Wi}))+WsX
(17)
其中,CBAM(·)表示通道注意力和空間注意力機制運算;F(X,{Wi})表示瓶頸結構中的3個卷積操作,卷積核分別為1×1,3×3和1×1;Wi為需要訓練獲得的權重矩陣;Ws為需要訓練獲得的使輸入X和輸出F″大小相同的卷積操作矩陣。
Figure 4 Improved bottleneck圖4 改進的瓶頸結構
淺層卷積操作可以獲取更多心音細節(jié)特征,深層卷積操作可以獲取更多心音包絡宏觀特征,多尺度特征可以更好地表征心音信號。多組不同通道數瓶頸結構組成4個網絡層,分別包含的瓶頸結構數為3,8,36和3,每層瓶頸結構卷積核1×1,3×3和1×1對應的通道數分別為(64,64,256),(128,128,512),(256,256,1 024)和(512,512,2 048)。4個網絡層輸出特征進行串聯(lián)即為心音多尺度特征。
模型采用ReduceLROnPlateau學習率策略,每10次迭代后,如果驗證集損失沒有減少則初始學習率乘以系數0.8;更改ResNet152網絡分類層為二分類和激活函數為Sigmoid;利用Adam優(yōu)化器和Focal Loss損失函數(其中α為0.25、γ為2)進行模型編譯;網絡訓練批次大小設置為100,迭代500次。
5.3.2 實驗設計
為驗證CBAM注意力機制、Focal Loss損失函數和多尺度特征可以促進ResNet152模型正確分類心音數據,共設計5組對比消融實驗。通過與先前學者的心音分類效果橫向對比分析,來驗證改進后ResNet152模型的有效性。
本文采用靈敏度Se(Sensitivity)、Sp特異度(Specificity)和準確率Acc(Accuracy)作為分類評估指標,其計算如式(18)~式(20)所示:
(18)
(19)
(20)
其中,TP表示陽性心音樣本判別為陽性的心音數,F(xiàn)N表示陽性心音樣本判別為陰性的心音數,F(xiàn)P表示陰性心音樣本判別為陽性的心音數,TN表示陰性心音樣本判別為陰性的心音數。
表2為5組對比消融實驗在測試集上的測試結果,對其分析如下:
(1)實驗2和實驗1對比可知,CBAM注意力機制提高了基線網絡ResNet152的分類準確率,但幅度不大。
(2)實驗3和實驗1對比可知,F(xiàn)ocal Loss損失函數使基線網絡分類靈敏度提高2.55%,但特異度和準確率提高效果不太明顯。
(3)實驗4和實驗1對比可知,多尺度特征使得基線網絡分類靈敏度和準確率分別提高了2.7%和2.64%,特異度提高效果不太明顯。
(4)5個實驗對比可知,CBAM注意力機制、Focal Loss損失函數和多尺度特征共同使用達到基線網絡最好的分類效果,相對基線網絡,靈敏度、特異度和準確率分別提高了2.85%,3.35%和3.89%。
Table 2 Experimental results表2 實驗結果 %
基于CinC2016心音數據,橫向對比實驗5與其他學者采用深度學習方法實現(xiàn)的心音分類研究成果,因準確率計算公式不同,故只進行Se和Sp標準比較,結果如表3所示。
Table 3 Comparison of classification results 表3 分類結果比較 %
通過比較實驗5與3種深度學習心音分類模型的分類結果,可知:
(1)相對于模式1,實驗5分類結果靈敏度比較高,能夠更準確判斷異常心音;實驗5特異度除了比文獻[2]中的模式1分類結果低3%,比其他都高,因此實驗5在保證高分類靈敏度的同時,能夠實現(xiàn)對正常心音信號的正確判斷。
(2)相對于模式2,實驗5分類靈敏度偏低,但分類特異度相對于Potes等和韓威等的方法分別提高了13.82%和2.49%。由此可知,機器學習與深度學習模型組合、利用特征工程獲取心音特征可以提高心音分類準確度;利用CBAM注意力機制、Focal Loss和多尺度特征等技巧優(yōu)化深度學習模型,同樣可以達到不錯的心音分類效果。
(3)相對于模式3,實驗5分類整體效果有些遜色。Chen等利用ECG信號準確分段心音信號,增強了心音段信號的有效性,但需要額外計算S1、S2、收縮期和舒張期確切位置;Han等引入閾值映射心音段類別到心音實例類別,增廣數據集的基礎上,還需額外訓練閾值,使得網絡模型變得復雜。由此可見,數據集的有效增強、增廣可以更好地實現(xiàn)心音信號分類,但實驗5滿足了特征獲取簡易、網絡模式簡單、分類準確率較高的需求。
以心音特征獲取簡易、深度學習網絡模型簡單為依據,本文改進了ResNet152殘差網絡對CinC2016心音數據進行深度學習,利用CBAM注意力機制改進殘差網絡中的瓶頸結構,使用Focal Loss損失函數獲取心音多尺度特征。通過5組消融實驗證實了CBAM注意力機制增強了提取特征的有效性;Focal Loss損失函數減弱了心音數據不均衡帶來的影響,同時促進了心音難例分析;多尺度特征提高了心音分類的準確度。與先前學者心音分類研究成果相比,本文設計的心音分類網絡具有較好的靈敏度和特異度,且具有特征獲取簡易、網絡模型簡單等特點。