劉偉偉,桑勝波,張宏鵬
(1.太原理工大學信息與計算機學院,山西晉中 030600;2.中國人民解放軍總醫(yī)院第一醫(yī)學中心心血管外科,北京 100000)
心腦血管疾病已成為導致死亡的主要原因之一,并經(jīng)常導致其他病癥的發(fā)生,如中風、高血壓、心力衰竭和心律失常等[1-2],而心音包含著大量的心臟生理病理信息,如何更好地構建心音分類模型,對于心臟疾病的預防和前期診斷具有重要作用[3],目前深度學習在心音分類算法方面研究廣泛[4],常見的處理步驟包括以下幾步:心音分割、特征提取、模型搭建與訓練[5],但研究思路各有不同,有采用端到端模型完成特征自提取和分類過程的[6],也有手動提取特征后將其作為輸入,傳送到搭建好的分類器,還有一些則在特征提取中僅某一部分使用深度學習模型來進行局部學習。這些模型各有千秋,但如何提高模型分類性能全依靠個人經(jīng)驗。該文預處理步驟中做了適當修改,提出了一種具有更高分類精確度的模型,為后續(xù)模型的進一步改進提供了方向。
前人在處理心臟音頻時,將一維時序的心臟音頻通過時頻域轉化的方法映射到二維圖像進行處理,然后利用典型的CNN 模型處理得到的時頻圖及其各種變形,但在這一過程中,對于一維的音頻序列,認為其丟失了一部分時間序列信息,為了進一步驗證該想法的正確性,文中研究了前人的多種CNN深度模型,最終發(fā)現(xiàn)CNN 模型在準確率達到93%附近時遇到瓶頸,一方面是由于數(shù)據(jù)集樣本較少導致無法使用規(guī)模參數(shù)更大的模型,另一部方面也是由于CNN 模型可能忽略了一部分時間序列信息,為此文中嘗試從第二點出發(fā),將CNN 模型與LSTM 模型相結合,提出一種改進的心音分類模型,另外,該研究也在處理流程中以及特征提取階段做了一些優(yōu)化與改進。
模型訓練使用的數(shù)據(jù)集源于2016 年挑戰(zhàn)賽,樣本按照正常、異常、不確定分為3 類,該文實驗中均采用周期為4 s 的心音,并剔除掉部分背景嘈雜的正常心音,對異常心音進行分割,最終使訓練樣本數(shù)據(jù)集保持正負比例平衡,其中正常數(shù)據(jù)數(shù)量為2 326,異常數(shù)據(jù)數(shù)量為1 357。
文中所有的實驗均在Google 的Colab 開發(fā)平臺進行,顯卡是NVIDIA 的TeslaT4,深度學習開發(fā)框架為tensorflow2.3。
使用準確率(Accuracy)、敏感度(Sensitive)、特異性(Specificity)來衡量模型效果。
傳統(tǒng)的處理步驟有心音去噪、分割、特征提取、模型分類[7],但在比較前人模型時無論使用何種結構的模型,最終的分類度都會遇到瓶頸,故而該研究在前期處理流程中做了適當優(yōu)化,經(jīng)過多處探究[8],該文在前期處理流程中的優(yōu)化點有如下兩部分:1)分割步驟結束后增加了一步歸一化處理;2)特征提取階段使用二階譜分析法。
歸一化處理步驟如圖1 所示,分割處理完成后采用分割模型[9]預估所處理的心音周期,將各段音頻壓縮后與相應的周期對齊,此處選擇固定的心音基周期為0.8 s,然后根據(jù)分割模型所判斷的音頻周期,利用式(1)進行處理,其中,f代表壓縮的倍數(shù),這樣就將心音歸一化到同一尺度下進行判別。
圖1 歸一化處理步驟圖
相較之前的研究,該文既沒有使用傳統(tǒng)的音頻特征MFCC 等作為輸入[10],又沒有采用模型自提取的方式提取特征,前者是基于前期采用其他模型分析進行實驗時,CNN 模型存在一個分類的上限,這與模型的性能無關,是特征提取層面丟失了一部分信息;后者主要考慮到在特征提取階段,使用的樣本數(shù)量較少,模型容易過擬合,使得模型在實際中表現(xiàn)不佳,綜合以上兩點首先對音頻采用了二階譜分析法,二階譜分析提取出的特征明顯優(yōu)于短時傅里葉變換、小波變換等低階特征提取方法的結果,二階譜分析可以很好地抑制信號中的相位關系,檢測與量化非高斯信號的相位耦合[11],具體如式(2)、(3)所示:
對一段心音用二階譜分析后得到了一個二維矩陣,為了方便觀察,根據(jù)該矩陣分別繪制了其等高線圖和熱力圖,如圖2 所示,可以看出不同類別的心音信號的二階譜圖差異較大,從而也驗證了這是一種行之有效的特征提取方法。
圖2 二階譜分析等高線圖和熱力圖
研究初步確定了CNN+LSTM 的實驗模型,但兩者如何進行搭建需要進一步研究,初步確定了圖3中的幾種模型結構。
圖3 預采用模型
經(jīng)測試,圖3 中模型②表現(xiàn)最佳,模型①相較模型②,最終效果差別不大,為了更好地組織其他結構,選擇模型②,模型③和模型④的計算量過大,模型⑤性能表現(xiàn)不佳,所以后續(xù)模型在模型②的基礎上進行優(yōu)化和改進。
為了進一步提高模型性能,針對可能影響模型性能的主要參數(shù)做了如下兩個實驗:CNN 卷積核大小和層數(shù)對模型性能的影響實驗,LSTM 不同結構對模型的影響實驗,結果如圖4、5 所示。
圖4 CNN卷積核大小和層數(shù)對模型的影響
該實驗是選擇3.1 中最好的基準模型②進行的,動態(tài)調(diào)整卷積核大小以及卷積層數(shù),最終得出卷積層數(shù)越多,也即選擇的卷積核大小相對較小的情況下,模型表現(xiàn)并非與上述因素成正相關,卷積層數(shù)超過3 層時,模型性能迅速提升,當卷積層數(shù)為4~7 層時,即卷積核大小在[2~4,3~6]范圍內(nèi),模型整體性能較優(yōu),之前的研究指出,卷積核越大,感受野越大,能看到的圖片信息越多,獲取到的特征也越多。但該模型中的時頻圖譜本身已經(jīng)是提取出的特征圖,較小的卷積核就可以有很大的感受野,所以上述實驗中提出的卷積核大小適合該研究中的模型。
另外改變了LSTM 模型中的結構,看其是否對模型表現(xiàn)有一定影響,圖5 中的1、2、3、4、5、6 分別代表LSTM 模型中的單層單向、單層雙向、雙層單向、雙層雙向、三層單向、三層雙向,可以看出LSTM 模型為單層單向和單層雙向時模型整體效果最好,而隨著模型層數(shù)的增多,模型的準確率反而波動更大且略有下降,主要是這種情況下模型訓練參數(shù)大幅提升,而訓練數(shù)據(jù)量則相對短缺,模型極易過擬合。
圖5 LSTM不同結構對模型的影響
從中也可看出LSTM 模型本身作為序列模型對序列心音信號的不可或缺性,LSTM 是完全以序列的角度搭建的模型,心音在時間段前后的依賴性可以被模型很好地捕捉到,而CNN 模型最大的特點是權值共享,局部連接[12],這對于典型的圖片領域非常有效,在此處,二維時頻圖是通過一維的音頻序列轉化生成的,并非典型的圖片形式,之所以模型依舊能呈現(xiàn)一定的效果是因為在轉化過程中一些邊緣特征反而被凸顯了出來,對于CNN淺層的特征圖可以很敏銳地捕捉到這些信息,但同時也丟失了部分位置信息,而這一點恰好是LSTM模型所擅長的[13],故而在同等的前提條件下表現(xiàn)更好,這也為后續(xù)的研究提供了支撐,即模型的結構設計以及改進需要與所研究的對象結合起來考慮,適合研究對象的模型能夠取得更好的表現(xiàn)結果。
模型結構如圖6 所示,使用自提取特征作為特征輸入,然后采用一層LSTM 結構提取心音特征的時序信息,后接了一層Attention 機制[9],使模型能夠更多關注S1、S2 以及S3、S4 處的心音信息,之后連接了5 層卷積層對特征圖做數(shù)據(jù)量壓縮,最后連接4 層全連接層作為分類器,所有層中的激活函數(shù)均采用ReLU 函數(shù),優(yōu)化器選擇Adam 函數(shù),在卷積層后適當增加了部分最大池化層和Dropout 正則化。
圖6 模型結構
訓練結果如圖7 所示,訓練中的數(shù)據(jù)迭代了100次,在接近50 次時模型已經(jīng)逐漸達到最優(yōu)性能,最終模型的準確率在95%~96%附近擺動。
圖7 訓練結果
與文獻[9]和文獻[10]中的模型作對比,實驗結果如表1 所示,可以明顯得出,該研究所采用的CNN+LSTM 結合的分類模型表現(xiàn)好于CNN 和LSTM 模型至少5%以上。
表1 實驗結果
該模型充分結合了CNN 模型能有效提取圖像的空間特性[12]和LSTM 模型可以提取時間特性的優(yōu)點,保留了音頻序列的時間維度特征。
為了進一步驗證模型的效果,同中國人民解放軍總醫(yī)院合作采集了800 人的心音數(shù)據(jù),其中正常心音400 例,異常心音400 例,采用十倍交叉驗證,得到模型的表現(xiàn)結果如圖8 所示。結果使用混淆矩陣表示,實際結果為正常心音的預測準確率是96%,實際結果為異常心音的預測準確率是94%,樣本總體準確率達到95%??梢钥闯雠c之前訓練結果中的95.3%接近,也驗證了該模型在實際使用中的平穩(wěn)性。
圖8 實際測試結果
實驗方案的優(yōu)化點集中在以下3 點:1)在前期處理流程中,在心音分割這一步后增加了歸一化處理,使不同心音周期的信號更方便地集中在同一尺度下進行比較;2)在特征提取階段,使用了二階譜分析方法進行處理,相較于前人的低階譜分析,保留了音頻中的更多信息;3)在模型構建階段,該文結合了CNN 模型能有效提取圖像的空間特性[14]和LSTM 模型可以提取時間特性的優(yōu)點,充分保留音頻序列的時間維度特征。該模型的性能相較前文的研究有了大幅度提升,準確率達到95.3%,在實際測試中也表現(xiàn)出了良好的可用性。但仍需進行進一步研究,有以下兩點:1)進一步提高模型的性能;2)對模型表現(xiàn)為什么優(yōu)秀作更多解釋[15-18],提高模型的置信度。