李鴻強(qiáng),吳非凡,曹路,張振,張美玲
(1.天津工業(yè)大學(xué) 電子與信息工程學(xué)院,天津300387;2.天津市胸科醫(yī)院,天津300222;3.天津工業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,天津300387;4.天津工業(yè)大學(xué) 紡織科學(xué)與工程學(xué)院,天津300387)
心血管疾病已經(jīng)嚴(yán)重威脅到人類的身體健康[1],根據(jù)世界衛(wèi)生組織統(tǒng)計[2],每年全世界約有1 700萬人死于心血管疾病,占世界總死亡人數(shù)的31%,并預(yù)計到2030年,心血管疾病死亡人數(shù)將增至每年2 300萬。心電圖是使用心電圖機(jī)來記錄人體心臟電勢變化的圖像,能夠反映人體的健康狀況,是診斷心律失常的重要依據(jù),但通常需要依靠經(jīng)驗豐富的醫(yī)生來觀察患者的心電圖,所以醫(yī)務(wù)人員的工作負(fù)擔(dān)較重,并且人工診斷過程中的誤差難以避免[3]。因此,依靠人工智能算法對ECG信號進(jìn)行識別和分類已成為近年來的研究熱點(diǎn)[4]。
傳統(tǒng)的ECG分類算法需要手動提取和選擇合適的特征,Sahoo等[5]提出了一種基于多分辨率小波變換的心電圖QRS波復(fù)雜特征檢測算法,對ECG信號進(jìn)行六尺度的小波變換并進(jìn)行特征提取,然后分別使用多層感知機(jī)和反向傳播的神經(jīng)網(wǎng)絡(luò)(MLP-BP)和支持向量機(jī)(SVM)分類器對4類ECG信號進(jìn)行分類。Raj等[6]通過離散小波變換提取ECG信號的時頻特征,接著采用主成分分析對特征進(jìn)行了降維,并與提取的RR間隔(即心電圖中2個完整波形之間的間隔)特征相結(jié)合,最后采用粒子群優(yōu)化的支持向量機(jī)對ECG信號進(jìn)行分類,取得了良好的結(jié)果。Chen等[7]提出了一種結(jié)合投影特征和動態(tài)特征的ECG信號分類方法,首先利用離散余弦變換的隨機(jī)矩陣作為投影矩陣來提取ECG信號的形態(tài)特征,然后提取3個加權(quán)RR間隔作為動態(tài)特征,最后將特征融合后輸入SVM中進(jìn)行分類,得到了98%的準(zhǔn)確率。但是上述方法需要人工提取特征并選擇合適的分類器,同時也面臨最優(yōu)特征選擇和分類器優(yōu)化的問題,并不利于實(shí)時的檢測。近年來,隨著深度學(xué)習(xí)的迅速發(fā)展[8-11],為自動提取特征開辟了一條嶄新的途徑。Kiranyaz等[12]提出了一種基于自適應(yīng)一維卷積神經(jīng)網(wǎng)絡(luò)(1D-CNN)實(shí)現(xiàn)對ECG信號進(jìn)行有效識別的方法。Oh等[13]提出了一種基于長短期記憶(LSTM)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)相結(jié)合的系統(tǒng),并在5類ECG信號分類中取得了良好的效果。以上深度學(xué)習(xí)方法都是將ECG信號作為一維時間序列輸入到1DCNN中,期間會存在梯度消失的問題,盡管LSTM在一定程度上緩解了該問題,但仍未徹底解決。
本文針對以上問題,提出了一種格拉姆角場GAF和改進(jìn)殘差網(wǎng)絡(luò)相結(jié)合的ECG信號分類方法。該算法利用GAF的數(shù)據(jù)可視化方法,將一維ECG信號轉(zhuǎn)換到極坐標(biāo)中,接著使用角度信息編碼成二維圖像。然后搭建了一種改進(jìn)的殘差網(wǎng)絡(luò)結(jié)構(gòu),在原始的Resnet-50模型中添加了5組shortcut連接,并且對殘差塊的結(jié)構(gòu)進(jìn)行了調(diào)整,將殘差塊主干路徑中的下采樣操作放置到3×3的卷積層,前置殘差塊結(jié)構(gòu)中的批歸一化算法(batch normalization,BN)和激活操作,殘差塊的旁路添加平均池化層,并采用SELU激活函數(shù)[14]代替Relu激活函數(shù)。最后使用從MIT-BIH數(shù)據(jù)庫、Long Term AF Database和Prosim2生命體征模擬儀提取的7類ECG數(shù)據(jù)進(jìn)行檢驗,并與醫(yī)生診斷結(jié)果做對比,以驗證該算法的分類效果。
深度學(xué)習(xí)可以從原始數(shù)據(jù)中提取有效的特性并輸出分類的結(jié)果,在計算機(jī)視覺[15]、語音識別[16]、圖像分割[17]和目標(biāo)檢測[18]等領(lǐng)域取得了不錯的成果。為了充分發(fā)揮深度學(xué)習(xí)在圖像分類上的優(yōu)勢,本文采用GAF[19]的數(shù)據(jù)處理方法將一維的ECG信號編碼為二維的圖像。
GAF是將時間序列的角度信息編碼為圖像的一種技術(shù),可以將數(shù)據(jù)轉(zhuǎn)換成格拉姆求和角場(Gramian summation angular field,GASF)、格拉姆差分角場(Gramian difference angular field,GADF)2種圖像形式,本文將心電數(shù)據(jù)轉(zhuǎn)換成GASF圖像。
定一個長度為n的時間序列X={x1,x2,…,xn},使用歸一化方法把所有的值壓縮到[-1,1]區(qū)間內(nèi):
然后將歸一化后的值編碼為角余弦,與之對應(yīng)的時間戳編碼為半徑,在極坐標(biāo)中表示重新歸一化后的序列,公式為:
式(2)中:?的取值在[0,π]區(qū)間;ti為時間戳;r為編碼后的半徑;N為正則化極坐標(biāo)系跨度的常數(shù)因子。隨著時間戳的增加,相應(yīng)的值會在跨越原始的不同角度點(diǎn)之間扭曲。將重新標(biāo)度的時間序列轉(zhuǎn)換為極坐標(biāo)后,就可以很容易地利用角度視角,通過考慮每個點(diǎn)之間的三角和來識別不同時間間隔內(nèi)的時間相關(guān)性。GASF的定義如式(3)所示,其中,I為單位向量為縮放后的時間向量值。
GASF相比原始數(shù)據(jù)有2個優(yōu)點(diǎn):首先,它提供了一種保持時間依賴性的方法,因為時間隨著位置從左上角移動到右下角而增加;其次,它包含了時間的相關(guān)性,對角線由歸一化后的時間序列的原始值構(gòu)成,利用主對角線可以從深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的高級特征中重建時間序列。
He等[20]提出了殘差神經(jīng)網(wǎng)絡(luò)(residual networks,Resnet),該網(wǎng)絡(luò)通過增加恒等映射,可以直接將當(dāng)前輸出傳輸?shù)骄W(wǎng)絡(luò)的下一層,并不會增加額外的參數(shù);同時,在反向傳播的過程中,也是將下一層網(wǎng)絡(luò)的梯度直接傳遞給上一層網(wǎng)絡(luò),從而解決了深度神經(jīng)網(wǎng)絡(luò)隨著網(wǎng)絡(luò)卷積層數(shù)的不斷加深出現(xiàn)網(wǎng)絡(luò)退化的問題;此外,采用BN算法加快了網(wǎng)絡(luò)的收斂[21],提高了訓(xùn)練的速度。這種殘差網(wǎng)絡(luò)結(jié)構(gòu)可以將網(wǎng)絡(luò)擴(kuò)展到1 000層以上,并且具有良好的分類效果。
殘差模塊的結(jié)構(gòu)如圖1所示,假設(shè)輸入為x,期望的關(guān)系映射為H(x),輸出結(jié)果為H(x)=F(x)+x,當(dāng)F(x)=0時,則H(x)=x,也就是恒等映射。殘差網(wǎng)絡(luò)改變了學(xué)習(xí)目標(biāo),使用F(x)作為目標(biāo)值,也就是所謂的殘差F(x)=H(x)-x,這樣可以保證恒等變換和反向傳播的梯度傳遞,緩解了網(wǎng)絡(luò)退化的問題。
圖1 殘差模塊Fig.1 Residual block
本文提出的改進(jìn)方案是在Resnet-50的基礎(chǔ)上,添加了多層shortcut支路[22],并且對殘差塊的結(jié)構(gòu)進(jìn)行了改進(jìn),結(jié)構(gòu)框架如圖2所示。該模型首先經(jīng)過7×7卷積和池化層,然后經(jīng)過Conv2_x、Conv3_x、Conv4_x和Conv5_x組成的4組殘差塊,每組殘差塊分別由3、4、6和3個殘差塊組成。
圖2 改進(jìn)的Resnet結(jié)構(gòu)Fig.2 Improved Resnet structure
殘差塊的具體結(jié)構(gòu)見圖2的右半邊部分,改變了殘差塊主干路徑的下采樣塊,將原先1×1卷積層中的步長由2設(shè)置為1,3×3卷積層的步長由1設(shè)置為2。由于原始?xì)埐顗K的第一個卷積層的卷積核大小為1×1,步長為2會導(dǎo)致卷積后3/4的信息丟失,所以將下采樣操作作用到3×3的卷積層。同理,將殘差塊旁路中的1×1卷積層步長也設(shè)置為1,為了保持旁路與主干路徑的輸出維度一致,在旁路1×1卷積層之上添加了2×2的平均池化層,步長為2。由于Conv2_x的輸入和輸出維度相同,在Conv2_x的殘差塊的旁路并未添加平均池化層,僅僅在Conv3_x、Conv4_x和Conv5_x的第1個殘差塊的旁路添加了平均池化層。此外受文獻(xiàn)[23]的啟發(fā),前置了殘差塊主干路徑BN層和激活操作,可以使梯度更好地反向傳播,易于優(yōu)化。
在整個網(wǎng)絡(luò)中的每組殘差塊添加了多層shortcut支路,即在Conv2_x的3個殘差塊之外添加了一層shortcut連接,為保證與網(wǎng)絡(luò)主干路徑的輸出結(jié)果維度一致,設(shè)步長為1。Conv3_x、Conv4_x和Conv5_x同樣也添加了shortcut連接,步長為2。此外,在整個殘差塊外也添加了1層shortcut連接,步長為8,新增的多層shortcut支路的卷積核的大小均為1×1。通過添加多層shortcut支路,可以將學(xué)習(xí)目標(biāo)轉(zhuǎn)換為學(xué)習(xí)殘差到殘差映射,比原始網(wǎng)絡(luò)更簡單,更易于學(xué)習(xí)。并且可以在不同殘差塊中傳播信息,在一定程度上緩解了梯度消失的問題,可以使得網(wǎng)絡(luò)進(jìn)行更好的訓(xùn)練分類。
卷積神經(jīng)網(wǎng)絡(luò)多以圖3所示的Relu作為激活函數(shù),但由于Relu在x<0的時候梯度為0,容易導(dǎo)致神經(jīng)元死亡。Relu激活函數(shù)定義如下:
圖3 Relu和SELU激活函數(shù)Fig.3 Relu and SELU activation functions
由圖3可看出,當(dāng)x>0時,Relu的導(dǎo)數(shù)始終為1,能夠使該處的梯度不衰減,從而減少了梯度消失的問題。但是當(dāng)x<0時,Relu的梯度值為0,在訓(xùn)練期間,負(fù)的梯度在Relu上被置零,從而導(dǎo)致相應(yīng)的神經(jīng)元再也不會被激活,引起對應(yīng)的權(quán)重不能更新,即產(chǎn)生了神經(jīng)元死亡。SELU激活函數(shù)的收斂速度比Relu激活函數(shù)要快,通過該激活函數(shù),可以將樣本分布自動歸一化到0均值和單位方差[24],確保在訓(xùn)練過程中梯度不會爆炸或消失。SELU激活函數(shù)定義如下:
式中:α≈1.673 3,λ≈1.050 7。當(dāng)x≤0時,SELU激活函數(shù)的斜率較為平緩,在激活操作中方差過大時可以使其減小,從而防止梯度爆炸;當(dāng)x>0時,其斜率λ是大于1的數(shù),方差過小時可以使其增大,從而防止梯度消失。這樣使得該激活函數(shù)自帶歸一化操作,即使加深網(wǎng)絡(luò)層次,每層的輸出依舊是均值為0,方差為1。因此,本文采用SELU激活函數(shù)代替Relu激活函數(shù)來優(yōu)化網(wǎng)絡(luò)訓(xùn)練。
本文采用Pytorch深度學(xué)習(xí)框架進(jìn)行網(wǎng)絡(luò)搭建,利用Python進(jìn)行編程,運(yùn)行環(huán)境為Windows7系統(tǒng),內(nèi)存32 GB,處理器為Intel E5-2620,顯卡為NVIDIA Geforce GTX 1080Ti。
2.1.1 數(shù)據(jù)來源與評價指標(biāo)
為了驗證所構(gòu)建模型的有效性,本實(shí)驗中的數(shù)據(jù)分別來自美國麻省理工學(xué)院-波士頓貝斯以色列醫(yī)院(MIT-BIH)數(shù)據(jù)庫、長期房顫數(shù)據(jù)庫(Long-Term AF Database,LTAF)和Prosim2生命體征模擬儀。從MITBIH中提取房性早搏(PAC)、室性早搏(PVC)、正常(N)等3種心電類型。從LTAF中提取心房顫動(AF)、室性心動過速(VT)和竇性心動過緩(SBR)等3種心電類型。從Prosim2生命體征模擬儀中提取房性心動過速(AT)。以上7類原始ECG數(shù)據(jù)如圖4所示,經(jīng)GAF數(shù)據(jù)處理轉(zhuǎn)換后得到的GASF圖像如圖5所示。實(shí)驗樣本數(shù)據(jù)分布如表1所示,共提取了12 447組數(shù)據(jù),以9∶1的比例隨機(jī)分配訓(xùn)練集和測試集。
表1 實(shí)驗樣本數(shù)據(jù)分布Tab.1 Distribution of experimental sample data
圖4 原始七類ECG數(shù)據(jù)Fig.4 Seven types of ECG signals
圖5 GASF圖像Fig.5 GASF images
為了便于對心電信號分類的結(jié)果進(jìn)行性能評估,本文采用精確率(P)、靈敏度(S1)、特異性(S2)、F1分?jǐn)?shù)和識別準(zhǔn)確率(A)作為評價指標(biāo),其計算定義如下:
式中:TP為真陽性,表示Y型ECG信號正確分類的樣本數(shù)量[25];TN為真陰性,表示對非Y型ECG信號正確分類的樣本數(shù)量;FP為假陽性,表示其他類的ECG信號被錯誤地分成Y型ECG信號的樣本數(shù)量;FN為假陰性,表示將Y型ECG信號錯誤地分成其他類ECG信號的樣本數(shù)量。精確率P表示對Y型ECG信號的正確預(yù)測占全部預(yù)測為Y型ECG信號的比例;靈敏度S1表示對Y型ECG信號的正確預(yù)測占全部實(shí)際為Y型ECG信號的比例;特異性S2表示對非Y型ECG信號的正確預(yù)測占全部實(shí)際為非Y型ECG信號的比例;準(zhǔn)確率A表示所有預(yù)測正確的樣本占總樣本數(shù)的比例[26];F1分?jǐn)?shù)表示精確率和靈敏度的加權(quán)平均值,可以從總體上反映系統(tǒng)整體分類能力,其值越大,說明分類效果越好。
2.1.2 網(wǎng)絡(luò)對比實(shí)驗
本實(shí)驗分別采用原始Resnet-50模型、改進(jìn)Resnet-Relu模型和改進(jìn)Resnet-SELU模型對心電數(shù)據(jù)進(jìn)行測試,選取Adam作為優(yōu)化器,將初始學(xué)習(xí)率設(shè)置為0.000 1,批量大小設(shè)置為32,即每次從輸入圖像中選取32個圖像和與之對應(yīng)的標(biāo)簽作為一個批量進(jìn)行網(wǎng)絡(luò)訓(xùn)練,網(wǎng)絡(luò)一共訓(xùn)練了150個epoch,測試結(jié)果如圖6和表2所示。
由圖6和表2可知,隨著迭代次數(shù)的增加,網(wǎng)絡(luò)的損失值在快速下降并趨于穩(wěn)定,改進(jìn)的Resnet網(wǎng)絡(luò)的損失值小于原始Resnet網(wǎng)絡(luò)的損失值;在訓(xùn)練過程中,網(wǎng)絡(luò)測試的準(zhǔn)確率也隨著迭代次數(shù)的增加而快速上升,并逐步趨于穩(wěn)定。本文改進(jìn)殘差網(wǎng)絡(luò)的識別準(zhǔn)確率高于原始網(wǎng)絡(luò)的準(zhǔn)確率,此外當(dāng)激活函數(shù)為SELU函數(shù)時分類效果要優(yōu)于Relu激活函數(shù)。由此可見,本文基于改進(jìn)殘差網(wǎng)絡(luò)的心電信號識別系統(tǒng)具有較好的性能。
表2 不同網(wǎng)絡(luò)模型測試結(jié)果比較Tab.2 Comparison of test results of different network models
圖6 訓(xùn)練結(jié)果Fig.6 Training results
2.1.3 混淆矩陣和各項指標(biāo)
本文算法對7類ECG信號的分類混淆矩陣如表3所示,矩陣的每1行代表了實(shí)際數(shù)據(jù)類別,每1列代表了預(yù)測類別,每1行的數(shù)據(jù)總數(shù)代表了該類別測試數(shù)據(jù)的實(shí)際數(shù)量,每1列的數(shù)值表示真實(shí)數(shù)據(jù)被預(yù)測為該類的數(shù)目。通過混淆矩陣可以計算出測試集的精確率、靈敏度、特異性、準(zhǔn)確率和F1分?jǐn)?shù),結(jié)果如表4所示。
表3 本文算法分類的混淆矩陣Tab.3 Cofused matrix of algorithm classification in this paper
由表4可以看出,本文算法測試的精確率、靈敏度、特異性、F1分?jǐn)?shù)以及識別準(zhǔn)確率整體達(dá)到了97%以上,表明本文算法具有較高的穩(wěn)定性和準(zhǔn)確性。
表4 每個類別的性能指標(biāo)Tab.4 Performance metrics for each category%
本文方法與其他文獻(xiàn)中方法的ECG信號分類結(jié)果對比如表5所示。
表5 不同算法的分類結(jié)果對比Tab.5 Comparison of classification results by different algorithms%
由表5可以看出,文獻(xiàn)[27]提出了一種基于脈沖神經(jīng)網(wǎng)絡(luò)(SNN)網(wǎng)絡(luò)的心電信號分類算法,并且對脈沖時間依賴的可塑性(STDP)和抑制層的學(xué)習(xí)規(guī)則進(jìn)行優(yōu)化,得到97.9%的準(zhǔn)確率和88.0%的F1分?jǐn)?shù),與該方法相比,本文的準(zhǔn)確率和F1分?jǐn)?shù)分別提高了0.4%和9.1%。文獻(xiàn)[28]提出了一種基于2D-CNN的心電信號分類算法,與該方法相比,本文的準(zhǔn)確率和F1分?jǐn)?shù)分別提高了1.3%和10.0%。文獻(xiàn)[29]使用卷積神經(jīng)網(wǎng)絡(luò)和門控遞歸單元網(wǎng)絡(luò)來對心電信號進(jìn)行分類,本文算法比該方法的準(zhǔn)確率和F1分?jǐn)?shù)分別提升了4.6%和7.4%。文獻(xiàn)[30]提出了一種結(jié)合16層卷積神經(jīng)網(wǎng)絡(luò)和短期記憶網(wǎng)絡(luò)的分類算法,本文算法比該方法的準(zhǔn)確率提升了2.9%,F(xiàn)1分?jǐn)?shù)提升了0.3%。由此表明,本文算法對ECG信號具有較高的識別率,有一定的臨床應(yīng)用價值。
為了驗證算法的實(shí)用性,利用可穿戴心電監(jiān)測系統(tǒng)在醫(yī)院做了實(shí)際的門診測試。通過將可穿戴前端采集電路板貼在人體胸部位置采集病人的心電信號,并利用藍(lán)牙將數(shù)據(jù)發(fā)送給手機(jī)APP,手機(jī)APP再將數(shù)據(jù)傳送給云服務(wù)器,在服務(wù)器端采用本文算法對心電信號進(jìn)行診斷。
圖7為采集的4名患者的心電圖,表6為其診斷結(jié)果。其中,1號為房顫患者,算法診斷的結(jié)果顯示該病人心電信號中存在正常和心房顫動2種類型;2號為偶發(fā)性房性早搏患者,檢測時病人未出現(xiàn)房性早搏的癥狀,診斷結(jié)果為正常;3號為頻發(fā)性房性早搏患者,診斷結(jié)果為該病人的心電信號中存在正常和房性早搏兩種類型;4號為室性早搏和房顫患者,檢測時未出現(xiàn)室性早搏癥狀,診斷結(jié)果為該病人的心電信號存在正常和心房顫動2種類型。
表6 患者診斷結(jié)果Tab.6 Diagnosis results of patients
圖7 患者心電圖Fig.7 Electrocardiogram of patient
綜上所述,改進(jìn)算法的診斷結(jié)果與醫(yī)生診斷結(jié)果一致,進(jìn)一步驗證了本文算法對心電信號具有較好的分類效果。
本文提出了一種基于改進(jìn)殘差網(wǎng)絡(luò)的ECG信號分類的算法。首先采用GAF將一維的心電信號轉(zhuǎn)換成二維的圖像,保留了時間的依賴性,增強(qiáng)了深度學(xué)習(xí)在ECG信號分類中的優(yōu)勢;其次,對Resnet-50網(wǎng)絡(luò)進(jìn)行了改進(jìn),添加了多層shortcut支路,并對殘差塊結(jié)構(gòu)進(jìn)行改進(jìn);同時,采用SELU激活函數(shù)來代替原始網(wǎng)絡(luò)中的Relu激活函數(shù),提高了網(wǎng)絡(luò)的非線性表達(dá)能力,在一定程度上抑制了神經(jīng)元的死亡。通過仿真和實(shí)驗驗證,結(jié)果表明:
(1)相比于原始的殘差網(wǎng)絡(luò),本文算法對7類ECG信號的分類準(zhǔn)確率更高,收斂速度也更快,可達(dá)到98.3%的準(zhǔn)確率。
(2)通過對醫(yī)院的患者進(jìn)行實(shí)際測試,算法的檢測結(jié)果與醫(yī)生的診斷結(jié)果一致,證明了該算法的有效性和實(shí)用性。