孟麗楠,謝紅薇,寧 晨,付 陽(yáng)
(太原理工大學(xué) 軟件學(xué)院,山西 晉中 030600)
根據(jù)國(guó)家心血管疾病中心發(fā)布的《中國(guó)心血管疾病報(bào)告2018》,心血管疾病患病人數(shù)達(dá)2.9億,且仍處于持續(xù)上升階段[1]。心音作為反應(yīng)人體心臟活動(dòng)及心血管功能的一種體征信號(hào)[2],可以通過(guò)心音聽(tīng)診被專(zhuān)家評(píng)估,進(jìn)而得到心血管疾病的病理信息。另外,心音信號(hào)所包含的一部分信息是心電圖所不能體現(xiàn)的[3]。因此,心音信號(hào)分類(lèi)是心血管疾病計(jì)算機(jī)輔助診斷研究和應(yīng)用的關(guān)鍵技術(shù)。
傳統(tǒng)的心音分類(lèi)方法包含心音分割、特征提取和分類(lèi)器設(shè)計(jì)3個(gè)步驟。在心音分割中,一般會(huì)將心音分割成基本心音[4],即第一心音、第二心音、收縮期和舒張期的聲音。在特征提取過(guò)程中,大多數(shù)研究者提取基于時(shí)間[5]、基于頻率[6]或基于時(shí)頻[7-8]的心音特征,作為后續(xù)分類(lèi)器的輸入。在分類(lèi)階段,選擇支持向量機(jī)[8-9]、K近鄰算法[10]或決策樹(shù)[11]等分類(lèi)器對(duì)提取的特征進(jìn)行分類(lèi)。傳統(tǒng)心音分類(lèi)方法過(guò)程簡(jiǎn)單、可解釋性強(qiáng),但其也存在一些不足:在心音分割階段大多需要參考同時(shí)期心電圖;手工提取特征不夠全面、耗時(shí)長(zhǎng);分類(lèi)器的分類(lèi)效果嚴(yán)重依賴(lài)于分割的準(zhǔn)確性和特征選取的有效性。
近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)以其強(qiáng)大特征提取能力在圖像識(shí)別[12]、聲音識(shí)別[13]等領(lǐng)域被廣泛應(yīng)用。于是,近幾年很多學(xué)者提出了基于CNN的心音分類(lèi)算法。對(duì)于CNN模型而言,多數(shù)采用淺層網(wǎng)絡(luò)模型[14~18]或者混合模型[19-20]。對(duì)于CNN模型的輸入而言,可選擇心音信號(hào)的梅爾頻譜系數(shù)[14-15]( MFSC,Mel frequency spectral coefficients)、梅爾頻率倒譜系數(shù)[16]( MFCC,Mel-frequency cepstral coefficients)、功率譜密度圖[17-18](PSD,power spectral density)或一維波形信號(hào)[21]等。Vykintas[14]和譚朝文[15]都將心音的MFSC以及一階差分和二階差分組織成心音的三通道特征圖分別作為6層和5層CNN的輸入,不同之處在于譚朝文[15]需參考心電信號(hào)。Rubin[16]等人首先將心音分割成基本心音,進(jìn)而提取基本心音的MFCC,然后利用4層CNN進(jìn)行分類(lèi)。Nilanon[17]和許春冬[18]提取心音的PSD,分別輸入4層和5層的CNN進(jìn)行訓(xùn)練與分類(lèi)。Potes[19]等人設(shè)計(jì)了AdaBoost和CNN結(jié)合的集成分類(lèi)器,但其分類(lèi)器的輸入特征依賴(lài)于對(duì)基本心音的精確分割;李偉等人[20]將6層CNN和3層循環(huán)神經(jīng)網(wǎng)絡(luò)相結(jié)合,分別提取心音的頻域和時(shí)域特征進(jìn)行分類(lèi)。Bin[21]等人僅僅利用了心音的一維時(shí)序特征,而其CNN深達(dá)19層,達(dá)到了目前最好的分類(lèi)效果。
盡管近幾年提出了一些基于CNN的心音分類(lèi)方法,但是這些方法不同程度地存在以下三方面不足:1)大多心音分類(lèi)算法往往依賴(lài)于對(duì)基本心音的精確分割,過(guò)程繁瑣,必然影響分類(lèi)性能;2)由于分類(lèi)模型結(jié)構(gòu)單一,未能充分挖掘和提取心音信號(hào)特征,導(dǎo)致分類(lèi)性能仍有待提高。3)心音分類(lèi)算法往往在小樣本中進(jìn)行訓(xùn)練分類(lèi),其普適性無(wú)法得到有效驗(yàn)證。
針對(duì)以上不足,提出的大量未經(jīng)過(guò)精確分割的心音二維特征圖訓(xùn)練深度CNN模型的方法,消除了基本心音分割步驟產(chǎn)生的誤差,同時(shí)可以顯著提高分類(lèi)模型的分類(lèi)性能和普適性。該方法首先通過(guò)滑動(dòng)窗口方法獲取大量心音樣本,再采用MFSC算法生成心音的二維特征圖,最后利用深度CNN模型進(jìn)行訓(xùn)練和測(cè)試。在深度CNN模型的設(shè)計(jì)中,根據(jù)卷積層間連接方式的不同,設(shè)計(jì)了3種深度CNN模型:基于單一連接的卷積神經(jīng)網(wǎng)絡(luò)(SingleCNN, convolutional neural network based on single connection)、基于跳躍連接的卷積神經(jīng)網(wǎng)絡(luò)(SkipCNN,convolutional neural network based on skip connection)、基于密集連接的卷積神經(jīng)網(wǎng)絡(luò)(DenseCNN,convolutional neural network based on dense connection)。實(shí)驗(yàn)中,分別使用Challenge 2016的29 384個(gè)和CHSC數(shù)據(jù)集的6 628個(gè)心音樣本作為3種深度CNN模型訓(xùn)練和測(cè)試數(shù)據(jù),實(shí)驗(yàn)表明DenseCNN作為心音信號(hào)分類(lèi)的深度CNN模型是最有潛力的。與目前已有的分類(lèi)算法進(jìn)行了分析比較,結(jié)果顯示本文提出的心音分類(lèi)算法不依賴(lài)于心音精確分割,且在分類(lèi)準(zhǔn)確率、敏感性和特異性方面均有優(yōu)勢(shì)。
原始心音數(shù)據(jù)通常是一組不固定長(zhǎng)度的時(shí)間序列,而深度CNN模型的輸入往往需要固定大小的樣本輸入,因此,將原始心音信號(hào)分割為固定的心音片段是非常有必要的。目前大多數(shù)心音分類(lèi)算法選擇將心音分割成基本心音,再進(jìn)行特征提取和分類(lèi),這樣做的弊端在于過(guò)程繁瑣且特征提取和分類(lèi)嚴(yán)重依賴(lài)于對(duì)基本心音的精準(zhǔn)分割。本文采用滑動(dòng)窗口的方法對(duì)原始數(shù)據(jù)進(jìn)行截取,避免了基本心音分割帶來(lái)的不確定性,同時(shí)也可以擴(kuò)增樣本數(shù)據(jù)量,為大量樣本訓(xùn)練深度CNN模型奠定了基礎(chǔ)。
滑動(dòng)窗口方法是指對(duì)一段長(zhǎng)度為n-1的時(shí)間序列X={x[0],x[1],...,x[n-1]}借助窗口長(zhǎng)度為c的滑動(dòng)窗口被分割為多個(gè)長(zhǎng)度為c的子時(shí)間序列Y={x[i],x[i+1],...,x[c+i-1]}?;瑒?dòng)窗口左端從起始點(diǎn)x[0]開(kāi)始,在時(shí)間方向上以步長(zhǎng)為s的步幅向后迭代,直到到達(dá)整個(gè)時(shí)間序列T的末尾,序列末尾不足滑動(dòng)窗口長(zhǎng)度的舍棄。最終可以得到((n-1-c)/s+1)個(gè)子序列。
圖1展示了采用滑動(dòng)窗口方法處理原始心音信號(hào)的過(guò)程。本文中一段原始心音信號(hào)即為時(shí)間序列X,采用滑動(dòng)窗口方法處理后得到心音子序列Y作為后續(xù)步驟的樣本數(shù)據(jù)?;瑒?dòng)窗口的長(zhǎng)度c為數(shù)據(jù)集中最短的時(shí)間序列X的長(zhǎng)度,步幅s小于c。
MFSC可以將心音的一維時(shí)序信號(hào)轉(zhuǎn)換為二維特征圖,便于深度CNN模型的特征提取和分類(lèi)。MFSC是去除了離散余弦變換步驟的MFCC。MFCC特征提取成功應(yīng)用于語(yǔ)音識(shí)別[22]、聲紋識(shí)別[23]以及各種語(yǔ)音模式識(shí)別[24]任務(wù)中。然而,譚朝文等人[25]指出:MFSC相比較MFCC光譜能量能保持局部特性,MFSC具有高度相關(guān),在頻譜上較為平滑,少量的MFSC特征即可代表絕大部分信號(hào)的信息,而且Maknickas等人[14]也表明MFSC比MFCC在心音表征特征方面更具有優(yōu)越性,故本文選用MFSC作為深度CNN模型的輸入樣本。
MFSC包括以下步驟:預(yù)加重、分幀加窗、快速傅里葉變換、功率譜計(jì)算、梅爾濾波、對(duì)數(shù)能量計(jì)算。
1.2.1 預(yù)加重
語(yǔ)音信號(hào)處理中,預(yù)加重是將語(yǔ)音信號(hào)通過(guò)一個(gè)高通濾波器,以達(dá)到補(bǔ)償高頻分量,放大高頻共振峰的目的。預(yù)加重信號(hào)的計(jì)算方式如式(1):
x'(n)=x(n)-?x(n-1)
(1)
其中:x(n)為原始信號(hào),x'(n)為預(yù)加重后信號(hào),n為離散時(shí)間點(diǎn),?為預(yù)加重因子,一般取0.9~1.0。
1.2.2 分幀、加窗
心音信號(hào)是一種短時(shí)非平穩(wěn)信號(hào),研究起來(lái)困難,分幀可以使信號(hào)近似為平穩(wěn)信號(hào)。加窗可以防止信號(hào)相鄰兩幀之間變化過(guò)大,使得相鄰兩幀有重疊部分,克服頻譜泄露現(xiàn)象[15]。分幀后,心音信號(hào)的幀數(shù)Z的計(jì)算公式為式(2):
(2)
其中:c為截取的心音子序列時(shí)間長(zhǎng)度,F(xiàn)l為幀長(zhǎng),F(xiàn)m為幀移,fs為采樣頻率。Fl通常取10~30 ms信號(hào)所包含的點(diǎn)數(shù),F(xiàn)m通常為0.5倍的Fl。
1.2.3 快速傅里葉變換與功率譜計(jì)算
利用快速傅里葉變換將信號(hào)從時(shí)域轉(zhuǎn)換到頻域是信號(hào)處理的一般方法。對(duì)心音的時(shí)域信號(hào)x’(n)進(jìn)行快速傅里葉變換,可獲得心音信號(hào)的頻譜特征X(k),計(jì)算公式為式(3):
(3)
其中:N為每幀心音信號(hào)所包含的點(diǎn)數(shù)。在此基礎(chǔ)上計(jì)算每幀信號(hào)的功率譜P(k),計(jì)算公式為式(4):
(4)
1.2.4 梅爾濾波與對(duì)數(shù)能量計(jì)算
梅爾濾波與對(duì)數(shù)能量計(jì)算過(guò)程可以使得聲音信號(hào)更符合人類(lèi)的聽(tīng)覺(jué)系統(tǒng),有助于心音分類(lèi)。每幀心音信號(hào)的功率譜經(jīng)過(guò)梅爾濾波器組,并計(jì)算每幀信號(hào)在每個(gè)通道上的對(duì)數(shù)能量E(m),計(jì)算方法如式(5)。梅爾濾波器的個(gè)數(shù)M通常取20~26。
(5)
其中:Hm(k)表示第m個(gè)濾波器第k條譜線對(duì)應(yīng)的強(qiáng)度。
每幀信號(hào)通過(guò)一組梅爾濾波器即可得到該幀信號(hào)的一組梅爾系數(shù),每組梅爾系數(shù)以每幀信號(hào)所指向的時(shí)間為序進(jìn)行排列,可得到梅爾系數(shù)矩陣,即心音信號(hào)經(jīng)過(guò)MFSC算法后,從一維變換到二維,每幀信號(hào)包含頻率信息,而每幀之間以時(shí)間為序,因而MFSC特征圖包含頻域和時(shí)域信息。
如圖2,心音子序列Y經(jīng)過(guò)MFSC算法后轉(zhuǎn)換為M×Z特征圖,特征圖的橫軸方向表示心音信號(hào)時(shí)間域方向的幀數(shù),縱軸方向表示第一個(gè)到第M個(gè)梅爾濾波器對(duì)應(yīng)的頻率通道。
本文提出的用于心音分類(lèi)的深度CNN模型的總體架構(gòu)如圖3所示。主要由普通卷積層(Conv_1, Conv_2, Conv_3)、復(fù)合卷積層(Com_1, Com_2, Com_3)、池化層(Pool_1, Pool_2)、全局池化層(GlobPool_1, GlobPool_2, GlobPool_3)和全連接層(FC)組成。
第一個(gè)普通卷積層Conv_1用64個(gè)3×3卷積核和修正線性單元(Rectified Linear Unit, ReLU)提取了心音信號(hào)特征圖X0的64個(gè)特征組成X1_C,為后續(xù)網(wǎng)絡(luò)層提取心音特征奠定了基礎(chǔ)。池化層Pool_1和Pool_2之前的卷積層Conv_2和Conv_3包含1×1卷積核和ReLU函數(shù),增加了網(wǎng)絡(luò)的非線性,使得本文深度CNN模型可以表達(dá)更加復(fù)雜的心音信號(hào)特征。復(fù)合卷積層Com_1和Com_2的輸出特征圖X1_M和X2_M在網(wǎng)絡(luò)中有兩種流向,一種是流入下一個(gè)普通卷積層,另一種是與當(dāng)前復(fù)合卷積層的輸入特征圖X1_C在通道方向進(jìn)行連接,作為全局池化層GlobPool_1和GlobPool_2的輸入特征圖XCM_1和XCM_2。Com_3的輸出特征圖僅有第二種流向。池化層的作用在于對(duì)前一層的輸出特征圖進(jìn)行簡(jiǎn)化,達(dá)到縮減特征圖尺度的目的。全連接層FC將經(jīng)3個(gè)全局池化層壓縮后的心音特征進(jìn)行融合,并用softmax分類(lèi)。
其中,復(fù)合卷積層是本文重點(diǎn)探索和研究的模塊。在CNN發(fā)展過(guò)程中,卷積層之間經(jīng)典的連接方式有單一連接[26]、跳躍連接[27]以及密集連接[28]。在此基礎(chǔ)上,設(shè)計(jì)了3種復(fù)合卷積層單元結(jié)構(gòu)分別構(gòu)建3種深度CNN分類(lèi)模型,期望找到最優(yōu)的用于心音分類(lèi)的深度CNN模型。
單一連接,即CNN的第l層的輸出特征圖作為第l+1層的輸入特征圖[26],可以用式(6)表示:
Xl+1=Hl+1(Xl)
(6)
其中:Xl表示卷積神經(jīng)網(wǎng)絡(luò)第l層的輸出,Xl+1表示第l+1層的輸出,Hl+1表示第l+1層的非線性變換函數(shù)。以5個(gè)卷積層為例,其結(jié)構(gòu)如圖4所示。此結(jié)構(gòu)中,特征信息流從低層逐層流入高層。
跳躍連接最早出現(xiàn)在ResNet[27]中,表示當(dāng)前卷積層的輸入特征圖來(lái)源于前兩層輸出特征圖的疊加和。卷積層之間的關(guān)系可用式(7)表示:
Xl=Hl(Xl-1)+Xl-1
(7)
圖5展示了基于跳躍連接的復(fù)合卷積層。此結(jié)構(gòu)中,梯度信息可以直接通過(guò)恒等映射Xl-1從上層傳輸?shù)胶髮泳W(wǎng)絡(luò)[27],優(yōu)點(diǎn)是網(wǎng)絡(luò)層次很深時(shí),減少了連續(xù)求導(dǎo)運(yùn)算導(dǎo)致的梯度消失。
密集連接在DenseNet[28]中首次提出,其利用特征重用的方式加強(qiáng)卷積層間有效信息的流動(dòng)。此結(jié)構(gòu)中,任意卷積層均和其后的所有層建立直接連接,即網(wǎng)絡(luò)中第l層的輸入特征圖來(lái)自其前面所有層的輸出特征圖。其卷積層間的關(guān)系可用式(8)表示:
Xl=Hl([X0,X1,X2,···,Xl-1])
(8)
其中:[X0,X1, …,Xl-1]指第0、…、l-1層的輸出特征圖在通道方向直接連接。圖6展示了密集連接結(jié)構(gòu)。此結(jié)構(gòu)可以使輸出層獲得之前所有網(wǎng)絡(luò)層的信息,增大了特征圖信息的利用率。
3種復(fù)合卷積層的每層網(wǎng)絡(luò)均包含批歸一化(BN,batch normalization)、ReLU、卷積(Convolution, Conv)和Dropout操作。用上述3種復(fù)合卷積層構(gòu)建本文心音分類(lèi)的深度CNN模型的總體架構(gòu)中的復(fù)合卷積層Com_1、Com_2和Com_3,便得到了本文的3個(gè)候選的深度CNN模型:SingleCNN、SkipCNN和DenseCNN。
3.1.1 Challenge 2016數(shù)據(jù)集
實(shí)驗(yàn)中使用的第一個(gè)心音數(shù)據(jù)集來(lái)自PhysioNet/CinC Challenge 2016數(shù)據(jù)庫(kù)[29]。該數(shù)據(jù)庫(kù)由來(lái)自不同研究小組的9個(gè)子數(shù)據(jù)庫(kù)組成,均來(lái)自健康的和患有各種心臟疾病的受試者,總共包含3 240段心音錄音。這些錄音是通過(guò)各種型號(hào)的電子聽(tīng)診器所采集的,長(zhǎng)度從4~120 s不等,采樣頻率為2 kHz。
在Challenge2016的數(shù)據(jù)集上,采用滑動(dòng)窗口方法處理處理數(shù)據(jù)時(shí),窗長(zhǎng)c為4 s,步幅s為1 s,最終得到61 624個(gè)心音子序列,包括14 692個(gè)負(fù)類(lèi)子序列和46 932個(gè)正類(lèi)子序列。其中,正類(lèi)子序列表示正常心音信號(hào),負(fù)類(lèi)子序列表示異常心音信號(hào)。為得到正負(fù)類(lèi)子序列平衡的數(shù)據(jù)樣本集,本文隨機(jī)舍棄了多于負(fù)類(lèi)子序列的正類(lèi)子序列,最終得到14 692個(gè)正類(lèi)子序列和14 692個(gè)負(fù)類(lèi)子序列。
將心音子序列轉(zhuǎn)換為MFSC特征圖時(shí),選擇Fl為40點(diǎn),F(xiàn)m為20點(diǎn),梅爾濾波器個(gè)數(shù)為26,故可得到尺寸為399×26×1的MFSC特征圖。
3.1.2 CHSC數(shù)據(jù)集
實(shí)驗(yàn)中使用的第二個(gè)數(shù)據(jù)集來(lái)自心音分類(lèi)挑戰(zhàn)賽(CHSC,classifying heart sounds challenge)。該數(shù)據(jù)集有兩大類(lèi):第一類(lèi)是通過(guò)iStethoscope Pro iPhone應(yīng)用程序從大眾人群獲得,采樣頻率為44.1 kHz;第二類(lèi)使用數(shù)字聽(tīng)診器從醫(yī)院聽(tīng)診試驗(yàn)中收集,采樣頻率為4 kHz。整個(gè)數(shù)據(jù)集包含585條1~30 s不等的心音錄音。使用窗長(zhǎng)c為1 s、步幅s為0.5 s的滑動(dòng)窗口對(duì)原始心音信號(hào)進(jìn)行截取,然后平衡正負(fù)類(lèi)子序列數(shù)量,得到6 628個(gè)心音子序列。
將心音子序列轉(zhuǎn)換為MFSC特征圖時(shí),第一類(lèi)數(shù)據(jù)樣本選擇Fl為882點(diǎn),F(xiàn)m為441點(diǎn);第二類(lèi)數(shù)據(jù)樣本選擇Fl為80點(diǎn),F(xiàn)m為40點(diǎn),梅爾濾波器個(gè)數(shù)為均為26,故可得到尺寸為99×26×1的MFSC特征圖。
對(duì)兩個(gè)數(shù)據(jù)集的MFSC特征圖均按照4∶1劃分訓(xùn)練集和測(cè)試集,并作為本文深度CNN模型的輸入數(shù)據(jù)。
1)軟件環(huán)境。本文實(shí)驗(yàn)在python2.7環(huán)境下完成。MFSC特征提取用到python_speech_features依賴(lài)包,卷積神經(jīng)網(wǎng)絡(luò)主要用到tensorflow-gpu 1.14.0。
2)硬件環(huán)境。所有訓(xùn)練和測(cè)試都是在服務(wù)器中完成,處理器Intel(R) Xeon(R) Silver 4210 CPU@2.2 Hz,內(nèi)存128 G,顯卡GeForce RTX 2080 Ti 10 GiB。
3)網(wǎng)絡(luò)參數(shù)配置:本文CNN模型的初始學(xué)習(xí)率為0.1;總迭代次數(shù)為100次,隨著迭代次數(shù)增加,學(xué)習(xí)率會(huì)隨之動(dòng)態(tài)變化(總迭代次數(shù)的三分之一和四分之三時(shí)降為原來(lái)的0.1倍);使用帶有動(dòng)量的隨機(jī)梯度下降算法訓(xùn)練和優(yōu)化模型,動(dòng)量為0.9,權(quán)重衰減為10-4,Dropout率為0.5。
本文性能評(píng)估中,主要使用準(zhǔn)確率(Acc,accuracy)、敏感性(Sen,sensitivity)、特異性(Spe,specificity)和損失值(loss)4種評(píng)價(jià)指標(biāo)對(duì)不同深度CNN模型的表現(xiàn)性能進(jìn)行評(píng)價(jià),計(jì)算方式如式(9)~(12):
(9)
(10)
(11)
其中:TP、TN、FP和FN為二分類(lèi)問(wèn)題中所有可能的預(yù)測(cè)結(jié)果,分別表示正樣本被預(yù)測(cè)為正類(lèi)、負(fù)樣本被預(yù)測(cè)為負(fù)類(lèi)、負(fù)樣本被預(yù)測(cè)為正類(lèi)和正樣本被預(yù)測(cè)為負(fù)類(lèi)。
(12)
3.3.1 本文3種深度CNN模型的比較
表1是3種已優(yōu)化CNN模型的網(wǎng)絡(luò)架構(gòu)參數(shù)配置,表中nblock表示復(fù)合卷積層個(gè)數(shù)、nFilter表示每個(gè)復(fù)合卷積層內(nèi)每層卷積層過(guò)濾器個(gè)數(shù)、nLayer表示每個(gè)復(fù)合卷積層內(nèi)卷積層個(gè)數(shù)、totalLayer表示網(wǎng)絡(luò)總層數(shù)。
表1 本文模型架構(gòu)參數(shù)配置
圖7展示了3種CNN模型在訓(xùn)練過(guò)程中Acc和Loss在Challenge2016訓(xùn)練集和測(cè)試集上的變化趨勢(shì)。
3種模型在整個(gè)訓(xùn)練過(guò)程中均迭代100次,在第33次迭代之前,3種模型在訓(xùn)練集上Acc迅速上升、Loss迅速下降,其原因在于初始學(xué)習(xí)率較大,可以讓模型快速趨于最優(yōu)狀態(tài),但是從測(cè)試集來(lái)看,Acc和Loss震蕩較嚴(yán)重,此時(shí)的模型并不是真的達(dá)到最優(yōu),而是陷入了局部最優(yōu)值。迭代33次以后,學(xué)習(xí)率自動(dòng)調(diào)整為原來(lái)的0.1倍,模型在訓(xùn)練集上進(jìn)一步精細(xì)優(yōu)化,在測(cè)試集上表現(xiàn)出微小震蕩;到第75次迭代之后,模型在訓(xùn)練集和測(cè)試集均達(dá)到穩(wěn)定收斂狀態(tài)。不同的是,DenseCNN從第一次迭代開(kāi)始就表現(xiàn)出了自身挖掘和提取心音特征的優(yōu)勢(shì),其分類(lèi)效果在整個(gè)訓(xùn)練過(guò)程中的Acc和Loss一直明顯優(yōu)于其余兩種CNN模型,SkipCNN的Acc和Loss僅次于DenseCNN。在DenseCNN和SkipCNN在測(cè)試集上趨于穩(wěn)定時(shí),SingleCNN還存在微小震蕩,相比之下分類(lèi)效果最差。
表2展示了3種CNN模型在Challenge2016數(shù)據(jù)集上的Acc、Sen、Spe以及Loss。其中,DenseCNN的分類(lèi)效果在3個(gè)模型中更為突出,擁有最高的Acc、Sen和Spe。DenseCNN比SingleCNN和SkipCNN在Acc方面分別高3.30%和2.49%,在Sen方面分別高1.44%和2.39%,在Spe方面分別高4.18%和1.77%;在Loss方面,DenseCNN的Loss僅為SingleCNN和SkipCNN的近0.5倍。SkipCNN的Acc和Spe均高于SingleCNN,Loss略低于SingleCNN的Loss,但是Sen不如SingleCNN。
表2 各模型分類(lèi)效果對(duì)比(Challenge2016數(shù)據(jù)集)
表3展示了3種CNN模型在CHSC數(shù)據(jù)集上的分類(lèi)結(jié)果。其中,DenseCNN模型的Acc、Sen和Spe均高于SingleCNN和SkipCNN模型,Loss也是3種模型中最小的。
表3 各模型分類(lèi)效果對(duì)比(CHSC數(shù)據(jù)集)
結(jié)合3種CNN模型的架構(gòu)參數(shù)來(lái)分析,SingleCNN和SkipCNN達(dá)到最好的分類(lèi)效果時(shí)網(wǎng)絡(luò)深度一樣,但是SkipCNN的表現(xiàn)略勝于SingleCNN,這是因?yàn)镾kipCNN中的跳躍連接能夠在深層網(wǎng)絡(luò)中減少梯度消失,使得更多有效信息可以被網(wǎng)絡(luò)學(xué)習(xí)到。DenseCNN在達(dá)到最好的分類(lèi)效果時(shí),層數(shù)相較于SkipCNN和SingleCNN達(dá)到各自結(jié)構(gòu)下最好分類(lèi)效果時(shí)的層數(shù)淺,但是其表現(xiàn)出了更好的分類(lèi)效果。這是由于DenseCNN具有密集連接,采用此結(jié)構(gòu)可以實(shí)現(xiàn)心音特征的重用,使得網(wǎng)絡(luò)以更少的層數(shù)就能夠充分挖掘和提取更多的心音特征。故相比采用單一連接或跳躍連接結(jié)構(gòu)的CNN,采用密集連接結(jié)構(gòu)的CNN模型更有利于心音分類(lèi)。
3.3.2 本文方法與已有方法的比較
本小節(jié)實(shí)驗(yàn)分別在兩個(gè)數(shù)據(jù)集上與其他心音分類(lèi)算法進(jìn)行比較,以驗(yàn)證本文算法的優(yōu)越性。
表4比較了3種已有心音分類(lèi)算法與本文的最優(yōu)算法,這3種心音分類(lèi)算法所用數(shù)據(jù)集均為Challenge 2016。
表4 本文算法與其他算法分類(lèi)效果對(duì)比(Challenge2016數(shù)據(jù)集)
從表中數(shù)據(jù)來(lái)看,本文心音分類(lèi)算法在Acc、靈敏度和Spe方面都有優(yōu)勢(shì)。本文算法的Acc為98.22%,比MFSC-CNN[14]、AdaBoost-CNN[19]、1-D CNN[21]分別提高了8.12%、7.34%、4.12%;本文算法的Sen為98.45%,比MFSC-CNN[14]、AdaBoost-CNN[19]、1-D CNN[21]分別提高了9.12%、2.91%、10.4%;本文分類(lèi)算法的Spe為97.18%,比MFSC-CNN[14]、AdaBoost-CNN[19]、1-D CNN[21]分別提高了5.42%、8.37%、1.96%。
表5展示了3種心音分類(lèi)算法與本文算法在CHSC數(shù)據(jù)集上的分類(lèi)效果。本文的DenseCNN模型在Acc、Sen和Spe方面相比其他分類(lèi)算法均有所提升。
表5 本文算法與其他算法分類(lèi)效果對(duì)比(CHSC數(shù)據(jù)集)
在兩個(gè)數(shù)據(jù)集上均已驗(yàn)證本文算法的有效性,分析其原因,文獻(xiàn)[14]所用算法同本文整體思路一致,都用了心音的MFSC特征圖和CNN模型,但在CNN方面,文獻(xiàn)[14]的CNN由兩個(gè)卷積層和3個(gè)全連接層堆疊而成,本文CNN模型層次更深、結(jié)構(gòu)更復(fù)雜,提取有鑒別性特征的能力更強(qiáng)。文獻(xiàn)[19]不僅需對(duì)基本心音信號(hào)的精準(zhǔn)分割,還要提取基本心音的9個(gè)頻帶和MFCC特征,其分類(lèi)效果嚴(yán)重依賴(lài)精確分割;而本文算法采用滑動(dòng)窗口方法得到心音的固定片段,消除了基本心音分割不準(zhǔn)確帶來(lái)的隱患,同時(shí)豐富了樣本多樣性,使得模型普適性和魯棒性更強(qiáng)。文獻(xiàn)[21]和本文提出的心音分類(lèi)是從深度模型角度解決心音分類(lèi)問(wèn)題,但其模型輸入使用心音的一維時(shí)序信號(hào),而本文使用的是兼具時(shí)域和頻域信息的二維MFSC特征圖,可以充分發(fā)揮深度CNN模型提取特征的能力。
針對(duì)現(xiàn)有的基于卷積神經(jīng)網(wǎng)絡(luò)的心音分類(lèi)算法普適性差、依賴(lài)于對(duì)基本心音的精確分割、分類(lèi)模型結(jié)構(gòu)單一的問(wèn)題,本文提出采用大量未經(jīng)過(guò)精確分割的心音二維特征圖訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)的方法用于心音分類(lèi)。在數(shù)據(jù)預(yù)處理方面,通過(guò)滑動(dòng)窗口方法獲取大量的心音樣本,又采用MFSC算法將心音的一維時(shí)序信號(hào)變換為兼具時(shí)域和頻域信息的二維特征圖,作為后續(xù)深度CNN模型的輸入。深度CNN模型方面,首先設(shè)計(jì)了分類(lèi)模型總體架構(gòu)圖,然后利用3種不同的復(fù)合卷積層構(gòu)建模型細(xì)節(jié),得到3種深度CNN分類(lèi)模型。實(shí)驗(yàn)表明,基于密集連接的卷積網(wǎng)絡(luò)模型由于其特征重用的功能在心音分類(lèi)任務(wù)中展示了明顯的優(yōu)勢(shì);基于跳躍連接的卷積神經(jīng)網(wǎng)絡(luò)分類(lèi)效果僅僅次于基于密集連接的卷積神經(jīng)網(wǎng)絡(luò),基于單一連接的卷積神經(jīng)網(wǎng)絡(luò)分類(lèi)效果在三者中表現(xiàn)最差。相比其他已有心音分類(lèi)算法,本文心音分類(lèi)算法不依賴(lài)于基本心音分割,訓(xùn)練樣本量更大,模型結(jié)構(gòu)表征能力更強(qiáng),使得心音分類(lèi)算法普適性和魯棒性更強(qiáng),分類(lèi)性能更佳。在后續(xù)的研究中,可以探索在MFSC中增加一階差分和二階差分作為MDenseCNN模型的輸入特征,進(jìn)一步提高心音分類(lèi)效果。