楊風健,李小琪,李洪亮
(1.東新大學計算機學系,韓國羅州58245;2.吉林醫(yī)藥學院生物醫(yī)學工程學院,吉林 吉林 132013)
根據(jù)2020 年發(fā)布的《中國心血管健康和疾病》報告顯示,心血管疾病(Cardio Vascular Disease,CVD)死亡率占所有疾病致死率首位[1]。心律失常是臨床常見而又極具危險性的心血管疾病[2],在心律失常的診斷中,傳統(tǒng)的心律失常診斷方式依靠醫(yī)生根據(jù)專業(yè)經(jīng)驗進行判斷,不僅費時費力,而且易增加漏診與誤診的概率。卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)是一種深度前饋神經(jīng)網(wǎng)絡[3],具有權(quán)重共享和局部連接等特性,在心電圖(Electrocardiogram,ECG)分類識別方面具有較大的優(yōu)勢[4]。
文獻[5]提出了一種基于卷積神經(jīng)網(wǎng)絡的十二導聯(lián)心電圖衍生方法,能夠減少導聯(lián)數(shù)量,并證明了該方法優(yōu)于傳統(tǒng)算法,適用性較強。文獻[6]提出了一個通過構(gòu)建CNN 模型提取特征,只采用第一導聯(lián)的心電數(shù)據(jù),識別Physionet 數(shù)據(jù)庫中心電信號的五類心拍。文獻[7]采用CNN 模型進行心電圖的正、異常2 分類,準確率大于90%,分類較為簡單,且準確率尚有提升空間。
該研究旨在利用卷積神經(jīng)網(wǎng)絡實現(xiàn)心電信號自動五分類,為降低數(shù)據(jù)復雜度,利于在穿戴設備上實現(xiàn),采用單導聯(lián)心電信號作為數(shù)據(jù)源,利用小波變換去除掉心電信號中的噪聲,根據(jù)R 波峰位置對心電信號進行心拍分割,設計并優(yōu)化CNN 模型進行心律失常分類識別,提高了分類準確率。
ECG 信號是一種微弱的生物電信號,易受工頻干擾[8]、基線漂移[9]和肌電干擾[10]三種噪聲干擾,該文采用小波分解與重構(gòu)對ECG 信號進行去噪及基線漂移抑制。以心電記錄203 為例,如圖1 所示。取前1 500 個采樣數(shù)據(jù),對原始信號進行8 級小波分解,去除1 級、2 級、3 級和8 級信號成分,將剩余成分重構(gòu)成新的ECG 信號,實現(xiàn)較好的濾波效果,同時保留了ECG 信號原有特征。
圖1 信號203預處理對比
該文通過Python 和TensorFlow2 構(gòu)建一維CNN模型,使用Keras 人工神經(jīng)網(wǎng)絡庫對模型進行訓練和測試。心電數(shù)據(jù)來源于美國麻省理工學院提供的MIT-BIH 心律失常數(shù)據(jù)庫,數(shù)據(jù)由48 條心電記錄組成,每條記錄時長為30 min,采樣頻率為360 Hz,該研究僅采用MLII 導聯(lián)[11-12]的心電信號作為實驗數(shù)據(jù)。共分為正常心拍(N)、房性早搏(A)、心室的心室異常(V)、左束支傳導阻滯(L)、起搏心拍(P)五類。
圖2 所示為一個心跳周期的波形圖,由于MITBIH 數(shù)據(jù)庫中的心電數(shù)據(jù)為連續(xù)采樣數(shù)據(jù),為了獲得更大的數(shù)據(jù)樣本,需要首先對心電數(shù)據(jù)進行切分,而進行數(shù)據(jù)切分首先需要進行R 波峰的識別,文中QRS 復合波中R 波峰位置是由差分運算結(jié)合自適應閾值法融合檢測確定的,差分閾值法[13]結(jié)構(gòu)原理簡單、容易實現(xiàn),計算處理速度快,適用于運算復雜度低的使用場合。
圖2 心跳周期示意圖
在R 波峰位置確定后,以R 波峰位置為基準,向前取100 個采樣點,向后取200 個采樣點構(gòu)成一個完整的心拍樣本,每個心拍樣本定義為:
式中,Rpeak(k)表示心電信號的數(shù)字采樣值,表示第k個R波峰值。
按照上述方法可將心電信號拆分出92 192 個心拍樣本,CNN 模型采用9 個網(wǎng)絡層級結(jié)構(gòu),包括4 層卷積層、3 層池化層、2 層全連接層,CNN 模型結(jié)構(gòu)如圖3 所示。
圖3 CNN模型結(jié)構(gòu)
設計CNN 模型各層參數(shù)設置如表1 所示。
表1 CNN模型每層的參數(shù)設置
該文使用Relu 函數(shù)作為卷積層的激活函數(shù),當輸入信號小于0 時,非線性激活層會舍去信號特征,從而減小網(wǎng)絡參數(shù)間的依賴性,避免模型產(chǎn)生過擬合問題。針對多分類模型,輸出層的激活函數(shù)采用softmax 多分類器[14],該分類器會自動選取最大概率作為CNN 分類結(jié)果的輸出。
在模型訓練過程中,采用類別交叉熵損失函數(shù)(Categorical Cross Entropy,CSE)[15]來訓練CNN 網(wǎng)絡模型,多分類的交叉熵損失函數(shù)計算如式(2)所示:
式中,N為心拍樣本總數(shù);M為心律失常類別的數(shù)量,該研究分為五類,故M=5,yic為符號函數(shù),當?shù)趇個心拍樣本真實類別屬于c時,其值為1,否則為0;Pic代表第i個心拍樣本心律失常類別屬于c的預測概率。
經(jīng)過多次實驗對比進行模型調(diào)參,在表2 所示參數(shù)值時模型分類效果達到最佳。
表2 CNN模型主要參數(shù)設置
該文采用整體準確率(Overall Accuracy,OA)、正預測率(Positive Prediction Value,PPV)和靈敏性(Sensibility,SE)三種指標對實驗結(jié)果進行評估,計算方法如式(3)-(5)所示:
式中,TP 為正確分類的陽性樣本數(shù);TN 為正確分類的陰性樣本數(shù);FP 為實際為陰性誤分類成陽性的樣本數(shù);FN 為實際為陽性誤分類成陰性的樣本數(shù)。
整體準確率(OA)為正確分類的樣本占所有樣本數(shù)的比例;正預測率(PPV)為正確分類的陽性樣本被正確預測的概率;靈敏性(SE)為正確的陽性樣本被正確分類的比例。靈敏性越高,心律失常疾病檢出正確率越高;整體準確率越高,說明模型分類性能也越好。
該研究將數(shù)據(jù)集按7∶3 比例隨機劃分訓練集和測試集,故訓練集心拍樣本量為64 535,測試集心拍樣本量為27 657,每次訓練完成后就驗證一次。將訓練集放入CNN 模型上訓練,并根據(jù)驗證集在其模型上的分類效果來評估模型的性能。驗證集和訓練集的準確率和損失值如圖4-5 所示。
圖4 模型在訓練集與驗證集的準確率結(jié)果
圖4 中accuracy 為訓練集的準確率,val_accuracy為驗證集的準確率;圖5 中l(wèi)oss 為訓練集的損失值,val_loss 為驗證集的損失值。
圖5 模型在訓練集與驗證集的損失值結(jié)果
通過混淆矩陣可直觀了解預測的分類和真實的類別在模型上的表現(xiàn),構(gòu)建一維CNN 模型下的五分類混淆矩陣如圖6 所示。
圖6 CNN模型下的五分類混淆矩陣
水平方向代表預測的分類,豎直方向代表真實的分類,矩陣中的數(shù)值代表心拍樣本,0、1、2、3、4 分別代表心律失常的NAVLP 五分類。因此,對角線為正確分類的心拍樣本數(shù)。其中,N 類(正常心拍)正確分類樣本數(shù)有21 400,被錯誤分類有56 個樣本;A類(房性早搏)正確分類樣本數(shù)有476,被錯誤分類有109 個樣本;V 類(心室的心室異常)正確分類樣本數(shù)有2 021,被錯誤分類有81 個樣本;L 類(左束支傳導阻滯)正確分類樣本數(shù)有1 998,被錯誤分類有3個樣本;P 類(起搏心拍)正確分類樣本數(shù)有1 510,被錯誤分類有3 個樣本。對于測試集錯誤分類樣本數(shù)最低是L 類和P 類均為3 個樣本,最高是A 類為109 個樣本。
從圖4-5 可看出驗證集的準確率幾乎都高于訓練集,模型沒有出現(xiàn)過擬合現(xiàn)象,訓練集和驗證集的誤差均很小,反映了模型分類精度高且穩(wěn)定。根據(jù)圖6 所示的混淆矩陣,按照評價指標公式計算一維卷積神經(jīng)網(wǎng)絡(CNN)模型分類結(jié)果的各項指標,如表3 所示。
表3 CNN模型分類結(jié)果的各項指標
由表3 數(shù)據(jù)可知,該文提出的一維卷積神經(jīng)網(wǎng)絡(CNN)分類模型實現(xiàn)心律失常五分類的整體準確率達99%以上,從正預測率(PPV)來看,模型對N、V、L、P 類的正預測均達99%以上,而模型對A 類的正預測率為93.3%,說明心拍如果被錯誤分類,則被誤診為該類的可能性更高。再從靈敏性角度來看,模型對N、V、L、P 類的靈敏性均達97%以上,而靈敏性最低的是A 類,為81.3%。綜上所述,模型對于N、V、L、P 四類從正預測率和靈敏性的角度上均有較好的分類效果,對于A 類的分類效果較差,是因為MIT-BIH 數(shù)據(jù)庫關于A 類樣本數(shù)較少,模型訓練次數(shù)不足,能學習到的特征相對有限。
該文實驗結(jié)果與其他文獻進行比較,結(jié)果如表4所示,可見在準確率方面有提升,而且CNN 模型結(jié)構(gòu)復雜度可以接受,利用ST 公司新推出的人工智能工具包STM32Cube.AI,可進一步將該算法移植到STM32 微控制器上,實現(xiàn)便攜式或者穿戴式心律失常分類檢測,實時監(jiān)測人體健康狀況。
表4 該文與其他文獻模型分類效果比較
在前人研究的基礎上,構(gòu)建了9 層網(wǎng)絡結(jié)構(gòu)的一維卷積神經(jīng)網(wǎng)絡模型,采用公共數(shù)據(jù)庫中的心電數(shù)據(jù)進行訓練與測試,實現(xiàn)心律失常的五分類識別,模型最終整體準確率達99%以上,取得很好的分類效果。
該文的創(chuàng)新點在于使用單導聯(lián)的心電數(shù)據(jù)和相對簡潔的模型和數(shù)據(jù)運算,實現(xiàn)較高的心律失常分類準確率,最終目標是在穿戴式設備上予以實現(xiàn),進而達到實時監(jiān)測人體健康狀態(tài)的目的。但是,穿戴式的心電信號來源于實時的穿戴設備檢測,其實際信號質(zhì)量與MIT-BIH 數(shù)據(jù)庫將存在差別。同時,模型的泛化能力仍有較大提升空間,將在以后研究中繼續(xù)加以改進和完善。