姚如蘋,孫 靜,潘家華,王威廉**
(1. 云南大學(xué) 信息學(xué)院,云南 昆明 650500;2. 云南省阜外心血管病醫(yī)院,云南 昆明 650032)
心臟聽診是臨床疾病檢查,尤其是各類心血管疾病初診的基本手段[1],如對先天性心臟?。ê喎Q先心?。┑某踉\和篩查主要依靠心臟聽診. 近年來,隨著電子聽診器的出現(xiàn),其大大方便了數(shù)字化記錄心音,記錄的心音信號稱為心音圖(Phonocardiogram,PCG). PCG 載有心臟生理、病理的豐富信息,分析研究心音對于機器輔助診斷有重要意義. 目前,用于心音特征提取的方法主要有小波變換、頻譜分析、數(shù)字濾波、梅爾倒譜頻率系數(shù)(Mel Frequency Cepstrum Coefficient,MFCC)和離散傅里葉變換等[2-6]. 文獻[7]首先使用小波去噪,然后提取MFCC作為心音特征后,采用支持向量機進行分類,在對異常和正常信號的分類中獲得了0.93 的準確率,但當異常心音種類增多時準確率明顯下降,且訓(xùn)練樣本過少無法保證算法的普適性. 文獻[8]提出了基于S 變換的心音特征提取方法,對一個周期進行S 變換,提取變換后矩陣的統(tǒng)計學(xué)特征,并將該特征作為區(qū)分不同信號的特征向量,但該算法對于病理性信號的特征提取較不明顯,不利于后續(xù)心音分類. 文獻[9-12]使用傳統(tǒng)的機器學(xué)習(xí)方法對心音信號進行分類,如支持向量機、人工神經(jīng)網(wǎng)絡(luò)等,但得到的準確率普遍較低. 文獻[13]使用深度學(xué)習(xí)方法對心音進行分類,將提取的MFCC 轉(zhuǎn)換為二維特征樣本,然后使用卷積神經(jīng)網(wǎng)絡(luò)對其進行分類,取得了0.895 的準確率.
上述研究中,各算法給出的準確率普遍較低,且訓(xùn)練樣本過小,無法保證算法的普適性和魯棒性等. 基于以上算法的不足,本文提出一種將變值邏輯模型與深度學(xué)習(xí)模型相結(jié)合的方法,將變值邏輯模型用于對心音信號的特征提取,用Inception_Resnet_v2 網(wǎng)絡(luò)實現(xiàn)對先心病心音信號的分類,實驗結(jié)果表明本研究取得了較高的分類評價指標.
1.1 整體框架本算法主要由3 個部分組成:首先對心音信號進行預(yù)處理,濾去環(huán)境噪聲和非病理性雜音,并提取心音信號的包絡(luò);然后使用變值邏輯模型進行心音信號的特征提取,得到10 個測度向量并將其進行可視化分析;最后通過深度卷積神經(jīng)網(wǎng)絡(luò)對提取到的二位樣本幀進行分類,算法框架如圖1 所示.
圖1 整體算法分析框圖Fig. 1 Block diagram of the overall analysis algorithm
1.2 實驗數(shù)據(jù)實驗所用的數(shù)據(jù)為云南省阜外心血管病醫(yī)院和昆明醫(yī)科大學(xué)第一附屬醫(yī)院臨床采集并經(jīng)醫(yī)學(xué)確診,以及在云南省各地州進行先心病篩查時采集并建立的心音信號數(shù)據(jù)庫. 每例樣本含臨床心臟聽診5 個部位的信號,時長均為20 s 或30 s,采樣頻率5 000 Hz. 該心音信號數(shù)據(jù)庫中,志愿者年齡2~18 歲,所有志愿者均簽署知情同意書,并經(jīng)過云南大學(xué)醫(yī)學(xué)院倫理委員會審查同意后,授權(quán)使用. 文中共使用了1 000 例來自不同志愿者的心音信號,其中正常信號290 例,房間隔缺損(Atrial Septal Defect,ASD)220 例,室 間 隔 缺 損(Ventricular Septal Defect,VSD)270 例,動脈導(dǎo)管未閉(Patent Ductus Artery,PDA)220 例. 為避免模型發(fā)生過擬合,將數(shù)據(jù)集按照7∶2∶1 劃分為訓(xùn)練集、測試集和驗證集. 訓(xùn)練集來自700 例不同受試者的心音信號,包括200 例正常心音信號和500 例病理性心音信號. 測試集包括50 例正常心音信號和150 例病理性心音信號. 在訓(xùn)練過程中為了驗證網(wǎng)絡(luò)模型的有效性,采用30 例正常心音信號和70例病理性心音信號組成的數(shù)據(jù)集對其驗證. 信號分布如表1 所示.
表1 心音信號集分布表Tab. 1 The distribution of heart sound signal
1.3 心音信號預(yù)處理由于采集環(huán)境的影響,心音信號往往含有背景噪聲、呼吸音等非病理性噪聲. 針對這類情況,使用了截止頻率為25 Hz 和400 Hz的四階巴特沃斯帶通數(shù)字濾波器進行了預(yù)處理濾波.
對心音信號進行變值邏輯模型數(shù)據(jù)計算,需要對心音信號包絡(luò)數(shù)據(jù)進行標記,然后對標記后的數(shù)據(jù)進行變值邏輯處理,轉(zhuǎn)換為可視化分析所需要的10 個測度. 在已有的算法中,使用歸一化香農(nóng)能量、希爾伯特-黃變換、同態(tài)包絡(luò)和維奧拉積分法提取心音信號包絡(luò)都取得了不錯的效果[14-16]. 維奧拉積分法是基于自適應(yīng)的快速檢測算法,具有處理速度快、簡單并且實時性強的特點,因此本文選擇維奧拉積分法作為心音信號包絡(luò)的提取方法,對正常心音信號采用維奧拉積分提取到的心音包絡(luò)如圖2 所示. 圖2(a)為未經(jīng)濾波的原始心音信號,圖2(b)為對應(yīng)心音信號的維奧拉積分包絡(luò)圖. 由圖2 可知,維奧拉積分包絡(luò)可以很好地反映心音信號的形態(tài)學(xué)特點,有利于后續(xù)的分析處理.
圖2 維奧拉積分包絡(luò)提取圖Fig. 2 Diagram of Viola integral envelope extraction
1.4 變值邏輯模型
1.4.1 變值邏輯模型簡介 變值邏輯理論體系[17]是在傳統(tǒng)的邏輯映射關(guān)系“與”、“或”、“非”3 種邏輯運算的基礎(chǔ)上引入了“置換”和“互補”等附加運算[18-19],從而擴展了邏輯函數(shù)空間. 通過對心音信號的包絡(luò)數(shù)據(jù)進行變值運算,將其轉(zhuǎn)換為可視化分析的測度數(shù)據(jù). 對心音信號數(shù)據(jù)序列進行處理的變值邏輯模型結(jié)構(gòu)如圖3 所示. 圖3 中的計算模型(Calculation Model,CM)包括基值計算模型(Basevalued Calculation Model,BVCM)、范圍值計算模型(Range-valued Calculation Model,RVCM)以及區(qū)間取值計算模型(Interval-valued Calculation Model,IVCM). 計算模型的處理流程為:首先將心音序列通過基值計算模型、范圍值計算模型、區(qū)間取值計算模型計算轉(zhuǎn)換為區(qū)間取值序列,由區(qū)間的范圍進一步將區(qū)間取值序列轉(zhuǎn)換為由A、G、C、T 4 個堿基組成的偽DNA 序列;然后通過狀態(tài)統(tǒng)計將其轉(zhuǎn)換為計算機可識別的0-1 序列;最后計算4 個基元的概率測度.
圖3 變值邏輯模型結(jié)構(gòu)圖Fig. 3 Structure diagram of the variant value logic model
其中,s為穩(wěn)定區(qū)間值.
1.4.5 偽DNA 序列映射 經(jīng)過以上3 個計算模型的處理,連續(xù)的心音信號數(shù)據(jù)序列{a0,a1,a2,···,ai,···,an} 被轉(zhuǎn)換成區(qū)間取值序列R(c){c0,c1,c2,···,cj,···,cn+w-1},對該序列的區(qū)間范圍參數(shù)用
進行比較劃分. 其中,i=0,1,2,···,n-w+1.
為了對數(shù)據(jù)進行有效的數(shù)學(xué)統(tǒng)計和保證轉(zhuǎn)換出的0-1 序列中的原始信號有效信息得到最大保留,需要對偽DNA 序列進行元素標記,從而將心音信號轉(zhuǎn)換為0-1 序列;同時為了使后期可視化構(gòu)圖表現(xiàn)出心音信號的特征,使用變值邏輯理論對分段后的0-1 序列進行變值轉(zhuǎn)換,將其分別轉(zhuǎn)換為00,01,10,11 四個元素. 設(shè)分段段長為m,第n段的數(shù)據(jù)為xi, 其相鄰的第n+1 段的數(shù)據(jù)為yi,則根據(jù)測度劃分規(guī)則將0-1 序列劃分成為變值邏輯空間的4 種變值狀態(tài),轉(zhuǎn)換規(guī)則如下:
圖4 心音信號的包絡(luò)標記圖Fig. 4 The labeled marking diagram of heart sound signal
算法示意圖如圖5 所示.
圖5 0-1 序列轉(zhuǎn)換圖Fig. 5 0-1 sequence conversion diagram
根據(jù)心音信號包絡(luò)標記特點可知,由于正常心音信號除了S1和S2以外,其他時段較為平緩,故轉(zhuǎn)換出的偽DNA 序列中G 和C 元素較多,A 和T元素較少,若標記元素為A 和T,則經(jīng)過0-1 序列轉(zhuǎn)換出的0 較多,1 較少;而病理性心音信號在收縮期或舒張期含有病理性雜音,因此對于病理性心音信號來說,提取的維奧拉積分包絡(luò)將會有更多上升和下降的幅度,轉(zhuǎn)換出的偽DNA 序列中A 和T元素較多,經(jīng)過0-1 序列轉(zhuǎn)換出的序列中1 較多,0 較少. 通過對轉(zhuǎn)換出的0-1 序列進行測度統(tǒng)計,則可以更直觀地區(qū)別正常心音信號和異常心音信號.
1.4.7 測度統(tǒng)計 對轉(zhuǎn)換出的0-1 序列進行測度統(tǒng)計,分別統(tǒng)計出各個分段中4 種變值邏輯狀態(tài)的個數(shù),然后計算各分段對應(yīng)的測度向量,非歸一化測度計算公式如(7)式所示,歸一化測度計算公式如(8)式所示.
其中,m為分段段長,P00,P01,P10,P11定義為非歸一化測度,P0,P1,Pn00,Pn01,Pn10,Pn11為歸一化測度. 對于正常的心音信號,由于其轉(zhuǎn)換出的00 較多,11 較少,故其統(tǒng)計出的P00,Pn00數(shù)值較大;而對于病理性心音信號,則統(tǒng)計出的P11,Pn11數(shù)值較大.本文將心音信號經(jīng)過變值邏輯模型處理后,將正常和病理性心音信號形態(tài)上的特點轉(zhuǎn)換成了測度數(shù)據(jù)并進行可視化分析,然后結(jié)合可視化結(jié)果使用分類算法,進行分類.
1.4.8 二維樣本幀轉(zhuǎn)換及可視化分析 為了達到可視化分析的目的,本文將標記好的維奧拉積分進行變值邏輯轉(zhuǎn)換,經(jīng)測度統(tǒng)計后,轉(zhuǎn)換為二維樣本幀. 選擇Pn00和Pn11兩個數(shù)值較大、較典型的測度向量,以Pn00為x軸,Pn11為y軸,將其轉(zhuǎn)換為二維樣本幀,分別繪制出其散點圖與等高線圖,觀察其分布特征. 文中算法各參數(shù)選取為:滑動窗口值w為20,穩(wěn)態(tài)區(qū)間值s為0.925,分段段長m為150.可視化測度向量選擇歸一化測度Pn00,Pn11和非歸一化測度P00,P11. 患有ASD 和正常人的心音信號二維散點圖如圖6(a)和圖6(b)所示,相應(yīng)的等高線圖如圖7(a)和圖7(b)所示. 圖6(a)和圖6(b)上半部分為經(jīng)過非歸一化后的二維散點圖,下半部分為歸一化后的二維散點圖.
從圖6(a)可以看出,房間隔缺損(ASD)的心音信號散點圖集中在左下角的位置,而正常人的心音信號散點圖則集中在左側(cè)靠近y軸坐標軸的位置. 由于病理性信號在收縮期含有病理性雜音,因此經(jīng)偽DNA 序列轉(zhuǎn)換后的0-1 序列中1 較多,經(jīng)過測度統(tǒng)計后繪制的等高線圖7(b)中,ASD 信號的形狀分布較廣,范圍更寬,且與散點圖的分布類似集中在左下角的位置;而正常信號含有較少的雜音,因此繪制出的等高線圖分布形狀更集中,與散點圖類似分布在左側(cè)靠近坐標軸的位置.
圖6 ASD 信號和正常信號的二維散點圖Fig. 6 Scatter of ASD signal and normal signal
圖7 ASD 信號和正常信號的等高線圖Fig. 7 The contour of ASD signal and normal signal
對于后續(xù)的機器學(xué)習(xí)分類器,文中將第1.4.7節(jié)測度統(tǒng)計中得到的10 個測度向量保存為.csv 文件,然后將這10 個測度向量作為特征向量輸入分類器進行心音分類. 對于深度卷積神經(jīng)網(wǎng)絡(luò),文中將本節(jié)得到的二維樣本幀作為神經(jīng)網(wǎng)絡(luò)的圖像輸入,將每一類數(shù)據(jù)按照不同文件夾存放,將其劃分好訓(xùn)練集、測試集和驗證集后轉(zhuǎn)換為TFrecord 文件,送入神經(jīng)網(wǎng)絡(luò)進行后續(xù)的分類識別.
1.5 數(shù)據(jù)增強為了防止由于數(shù)據(jù)集過小帶來模型的過擬合,同時增加足夠的數(shù)據(jù)量并且提高分類的準確率,本文對現(xiàn)有的數(shù)據(jù)進行數(shù)據(jù)增強. 具體操作是將已有的圖像(二維樣本幀)進行水平和垂直翻轉(zhuǎn),或者對圖像進行任意比例的縮放. 本文對圖像進行直角旋轉(zhuǎn),旨在讓網(wǎng)絡(luò)模型學(xué)習(xí)圖像的旋轉(zhuǎn)不變性特征,設(shè)置數(shù)據(jù)增強因子為2,這意味著將原始數(shù)據(jù)量增加一倍.
1.6 Inception_Resnet_v2 網(wǎng)絡(luò)Inception_Resnet_v2 網(wǎng)絡(luò)是由Google 公司在2016 年提出來的,其結(jié)構(gòu)主要由Stem 模塊、Inception-Resnet 模塊、Recduction 模塊和Softmax 層組成,如圖8 所示.Inception-Resnet 模塊是該網(wǎng)絡(luò)的特征提取模塊,為了節(jié)省計算資源引入非對稱卷積核的方法,將n×n的卷積使用1×n和n×1 的卷積來代替,在提高運算性能的同時加深了網(wǎng)絡(luò)深度與非線性. Inception_Resnet_v2 是在Inception_v3 的基礎(chǔ)上引入殘差模塊,將Inception 和Resnet 進一步結(jié)合,在加深網(wǎng)絡(luò)深度的同時,避免了由于網(wǎng)絡(luò)深度過深帶來模型的過擬合和梯度下降等問題,同時引入殘差模塊降低了計算復(fù)雜度,增加了分類準確率.
圖8 Inception_Resnet_v2 結(jié)構(gòu)圖Fig. 8 The structure of Inception_Resnet_v2
2.1 訓(xùn)練環(huán)境實驗的訓(xùn)練環(huán)境為深度學(xué)習(xí)開源軟件TensorFlow 2.0;硬件環(huán)境為:處理器(Inter?Xeon? W-2102 CPU@2.90GHz),顯 卡(NVIDIA GeForce RTX2080),操作系統(tǒng)為64 位Win10. 本文使用的Inception_Resnet_v2 模型采用自適應(yīng)矩估計(Adam)梯度優(yōu)化算法對權(quán)重、偏置進行更新,訓(xùn)練迭代100 epoch,初始學(xué)習(xí)率設(shè)為0.001,當?shù)?0 次時,將學(xué)習(xí)率調(diào)為0.000 1 便于網(wǎng)絡(luò)收斂,batch size =16,輸入特征尺寸為299×299.
2.2 評價標準文中將準確率(Acc)、靈敏度(RTP)和陽性預(yù)測值(VPP)作為模型的評價指標,計算公式如下:
式中,TP為陽性樣本預(yù)測為陽性的數(shù)目,TN為陰性樣本預(yù)測為陰性負的數(shù)目,F(xiàn)N為陽性樣本預(yù)測為陰性的數(shù)目,F(xiàn)P為陰性樣本預(yù)測為陽性的數(shù)目.
2.3 實驗結(jié)果文中選取Inception_Resnet_v2 模型作為該算法的分類器,Inception_Resnet_v2 是在Inception_v3 的基礎(chǔ)上引入了殘差網(wǎng)絡(luò)跳躍連接的方法,對比目前較主流的CNN、LSTM、Inception等網(wǎng)絡(luò),Inception_Resnet_v2 在加深網(wǎng)絡(luò)深度的同時,避免了梯度消失、 梯度爆炸的問題,將卷積核進行分解,進一步提升了計算能力和識別準確率.
文中的訓(xùn)練集在訓(xùn)練過程中自適應(yīng)調(diào)整神經(jīng)網(wǎng)絡(luò)的參數(shù)與權(quán)重,驗證集在訓(xùn)練過程中用來查看訓(xùn)練效果,防止網(wǎng)絡(luò)產(chǎn)生過擬合,測試集在訓(xùn)練結(jié)束后用來測試網(wǎng)絡(luò)的實際分類效果. 因此,在測試集上對常見的先心病信號進行多分類的實驗結(jié)果如表2 所示. 由表2 可知,在對先心病心音信號的分類中, 本算法在測試集上取得了0.931 的平均準確率、0.954 的平均敏感性和0.967 的平均陽性預(yù)測值.
表2 先心病心音信號多分類結(jié)果Tab. 2 Multi-classification result table of congenital heart disease heart sound signal
在測試集上使用不同的特征提取方法與文中所用特征提取算法相比的實驗結(jié)果如表3 所示.表3 展示了本文的特征提取算法與傳統(tǒng)的特征提取方法相比在對先心病心音信號分類上的有效性.其中,使用傳統(tǒng)的小波技術(shù)與MFCC 特征提取方法與使用變值邏輯模型作為特征提取方法相比,使用變值邏輯模型算法的準確率增加了0.033 和0.039.
表3 不同特征提取算法對比Tab. 3 Comparison of different feature extraction algorithms
使用不同的深度學(xué)習(xí)模型在相同測試集上的實驗結(jié)果如表4 所示. 表 4 展示了使用不同的深度學(xué)習(xí)模型對信號進行分類的準確率差異較大.其中相比于輕量級神經(jīng)網(wǎng)絡(luò)Mobilenet_v2,本文的準確率增加了0.139;與Inception_v3 網(wǎng)絡(luò)相比較,Inception_Resnet_v2 將Inception 結(jié) 構(gòu) 和Resnet 結(jié)構(gòu)相結(jié)合,在Inception_v3 的基礎(chǔ)上增加了殘差模塊,使其準確率進一步增加,本文的準確率增加了0.055. 同時,表4 與表3 對比可知,使用機器學(xué)習(xí)模型,如SVM 作為分類器的算法與本文使用深度學(xué)習(xí)模型作為分類器的算法相比,本文的準確率上升了0.082.
表4 不同深度學(xué)習(xí)算法對比Tab. 4 Comparison of different deep learning algorithms
文章對心音信號進行分析處理,提出了一種基于變值邏輯模型的先心病心音分類算法. 該算法主要分為3 個階段:第1 階段對心音信號進行去噪和包絡(luò)提取;第2 階段將包絡(luò)數(shù)據(jù)進行測度統(tǒng)計,使用變值邏輯模型將其轉(zhuǎn)換為反映心音形態(tài)學(xué)特征的特征圖也即二維樣本幀;第3 階段使用深度學(xué)習(xí)模型,本文選取Inception_Resnet_v2 網(wǎng)絡(luò)將變值邏輯模型提取到的特征圖進行圖像多分類. 實驗結(jié)果顯示,該算法得到了較高的分類準確率,該算法對常見先心病心音多分類的平均準確率為0.931,平均靈敏度為0.954,平均陽性預(yù)測值為0.967. 與傳統(tǒng)的機器學(xué)習(xí)方法相比,本文選用深度學(xué)習(xí)模型作為分類器,網(wǎng)絡(luò)層數(shù)更深,學(xué)習(xí)到的特征更加豐富,準確率提升了0.082. 實驗結(jié)果顯示,變值邏輯模型與Inception_Resnet_v2 網(wǎng)絡(luò)結(jié)合提高了分類準確率,且該算法是在大樣本環(huán)境下測試得到,保證了算法的普適性和魯棒性,有望用于先心病初診的機器輔助診斷.