陳 鵬,劉子龍
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
近年來高血壓、冠心病等心血管疾病逐漸成為全球性的主要醫(yī)療問題。據(jù)統(tǒng)計,每年因該類疾病死亡的人數(shù)約占全球死亡人數(shù)的三分之一[1]。心律失常是指心跳過快、過慢或者其他不規(guī)則跳動,屬于典型的心血管疾病。偶爾的心律失常可能不會對身體產(chǎn)生嚴重影響,但長期的心律失常可能與一些疾病有關(guān),嚴重時還發(fā)生會心力衰竭甚至猝死等情況,因此針對心律失常的診斷十分重要。目前主要根據(jù)病人病史、體格檢查還有心電圖等手段進行判斷。心電圖是利用心電圖機記錄心臟的電活動的一種技術(shù),普通心電圖與動態(tài)心電圖都能反映人的心電活動狀態(tài),前者是短時間的,而后者能進行24小時監(jiān)測。由于心電圖具有無創(chuàng)性和經(jīng)濟性,因此被大多數(shù)醫(yī)療機構(gòu)用于心律失常的分析診斷[2]。心電圖分析需要經(jīng)驗豐富的醫(yī)生以及大量時間,而我國患者數(shù)量龐大且醫(yī)生資源相對缺少,因此準確高效地輔助醫(yī)生進行心律失常的診斷已成為一個亟待解決的問題。
隨著機器學(xué)習(xí)等技術(shù)的發(fā)展,利用計算機自動診斷心律失常成為近年來研究的熱點。目前基于計算機信號處理技術(shù)的心電自動分析方法有很多,包括:(1)基于差分閾值算法的R波檢測[3];(2)利用小波變換與主成分分析法進行特征提取,然后使用前饋神經(jīng)網(wǎng)絡(luò)分類[4];(3)K近鄰(K-Nearest Neighbor,KNN)[5];(4)基于支持向量機(Support Vector Machines,SVM)和粒子群優(yōu)化分類算法[6];(5)利用短時傅里葉變換生成頻譜圖結(jié)合卷積神經(jīng)網(wǎng)絡(luò)的分類方法[7]:(6)利用離散小波變換特征提取后,采用深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)作為分類模型[8];(7)基于深度雙向長短時記憶網(wǎng)絡(luò)(Long Short Term Memory Network,LSTM)的小波序列分類模型[9];(8)具有深層結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[10]等。運用傳統(tǒng)機器學(xué)習(xí)的方法進行心電信號的特征提取,然后經(jīng)過分類器分類已取得了較為理想的效果。然而這些都依賴于前期信號的處理與人工特征的選擇,受到專業(yè)知識的限制,存在局限性,實際效果不佳?;谝陨锨闆r,深度學(xué)習(xí)這一端對端的方法開始被應(yīng)用于計算機的自動識別領(lǐng)域。深度學(xué)習(xí)具有自動提取特征的能力且無需人工干預(yù),只要數(shù)據(jù)量夠大就能學(xué)習(xí)到足夠的特征,泛化能力也強于傳統(tǒng)的機器學(xué)習(xí)方法。CNN相對于DNN而言不需要過大的數(shù)據(jù)集,因此在心電圖檢測心律失常方面取得了更好的效果。
大部分自動心電信號分類的方法都是以一維心電數(shù)據(jù)作為輸入,這些方法存在以下幾個缺陷:(1)需要對信號進行去噪處理。針對一維心電信號而言,各個時間點的信號值都具有相同的重要度,去噪后可能改變原始心電信號的含義[11];(2)數(shù)據(jù)集分布不均衡,需要數(shù)據(jù)增強。本文中,一維心電信號的數(shù)據(jù)擴增主要通過加噪去噪等方法,轉(zhuǎn)換為圖像后,方式增多且更加豐富;(3)需要根據(jù)不同心電采樣頻率振幅的設(shè)備調(diào)整模型;(4)相比于一維信號,卷積神經(jīng)網(wǎng)絡(luò)更適合從二維圖像中提取特征,并保留像素的空間關(guān)系;(5)復(fù)雜的模型結(jié)構(gòu)耗時較多且影響性能。本文設(shè)計的GAN-CNN模型將分類網(wǎng)絡(luò)與判別網(wǎng)絡(luò)合并,降低了模型的參數(shù)數(shù)量,提高了運行效率。此外,采用二維圖像作為輸入,與醫(yī)生診斷模式更為接近。
本文將一維心電信號進行單個節(jié)拍分割后轉(zhuǎn)化為二維的灰度圖像,采用數(shù)據(jù)增強手段、模型訓(xùn)練和分類,解決了上文提到的問題。整個過程僅通過GAN-CNN這一個網(wǎng)絡(luò)實現(xiàn)。本文所用數(shù)據(jù)集來自美國麻省理工學(xué)院提供的MIT-BIH心律失常數(shù)據(jù)庫。使用時,選擇其中較為常見的7種異常類型與正常心搏制作數(shù)據(jù)集,分別為:心室融合心跳(FVN)、左束支傳導(dǎo)阻滯心搏(LBBB)、起搏心搏(PAB)、室性早搏(PVC)、右束支傳導(dǎo)阻滯心搏(RBBB)、室性逸搏(VEB)、心室顫動波(VFW)、正常心搏(NOR)。由于MIT-BIH數(shù)據(jù)庫中各個心電信號類別分布不均衡,F(xiàn)VN、VEB、VFW這3類數(shù)據(jù)過少,需要數(shù)據(jù)增強處理以提高模型泛化能力。本文將首次采用生成對抗網(wǎng)絡(luò)[11],針對數(shù)量較少的心拍圖像進行數(shù)據(jù)增強。本文中,對抗損失用于提升生成器模型訓(xùn)練的穩(wěn)定性,圖像損失用于評估生成圖像的真實性,兩者結(jié)合能進一步改善圖像的生成效果。除了數(shù)據(jù)增強外,模型中通過加入批量歸一化層、Dropout層以及降低模型層數(shù)來減少過擬合。本文采用隨機梯度下降(Stochastic Gradient Descent)優(yōu)化器函數(shù)以及Swish激活函數(shù)提高模型精度。在網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計方面,本文將判別器與分類器的訓(xùn)練集于一個網(wǎng)絡(luò),簡化了模型架構(gòu)與參數(shù)。測試時,隨機選取數(shù)據(jù)集的60%作為訓(xùn)練集,20%為驗證集,20%為測試集。
本文采用MIT-BIH心律失常數(shù)據(jù)庫作為數(shù)據(jù)集。該數(shù)據(jù)集由47位患者的48個半小時雙通道心電記錄組成,記錄中的每個心跳都由專家根據(jù)其心律失常類型進行注釋,信號的采樣頻率為360 Hz。與傳統(tǒng)方法不同,本文將數(shù)據(jù)中單個心拍的一維信號轉(zhuǎn)換成大小為192×128的二維灰度圖像,省去了濾波和特征提取環(huán)節(jié)。為了統(tǒng)一各個波形的大小,在提取原始心電信號后,加入圖像腐蝕的方法增強波形顯示效果,并通過歸一化將原始數(shù)據(jù)幅值限定在128內(nèi),將單個波形長度限定在192。由于顏色對心律失常類型的判斷并無影響,因此該方法最大程度地保留了心電原始信號的信息并且降低了圖像的維度,為后續(xù)的訓(xùn)練提供了便利[12]。
心電圖的分析與診斷需要對心電圖波形進行分段并標注。心拍的分割方法多種多樣,關(guān)鍵在于QRS波的定位。本文采用經(jīng)典的Pan-Tompkins算法[13]獲得R峰的位置,并選取R峰的前110個采樣點與后130個采樣點作為一個完整的心拍范圍。經(jīng)過實驗,該方法能完整提取心拍的關(guān)鍵部分,即P波、PR段、QRS波、ST段、T波,且能最大程度保留單個心跳信息,并避免附近心跳的干擾。
MIT-BIH數(shù)據(jù)庫中正常搏動和7種心律失常類型的數(shù)量分布如表1所示。表中顯示,原數(shù)據(jù)集各個心律失常類型數(shù)量并不均衡。為提高模型訓(xùn)練效果,需要重新劃分數(shù)據(jù)集并對數(shù)量較少類進行數(shù)據(jù)增強。由于心電數(shù)據(jù)已被轉(zhuǎn)換為二維灰度圖像,本文將首次采用生成對抗網(wǎng)絡(luò)來實現(xiàn)心電數(shù)據(jù)增強。
表1 本文所需各類型心拍數(shù)量表
早期生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)主要包含兩部分:生成器(G)和判別器(D)。pz(z)用于生成的噪聲分布,pdata(x)是真實數(shù)據(jù)分布,D(x)表示x來源于真實數(shù)據(jù)的分布,D(z)表示噪聲經(jīng)過生成器后生成的樣本。最優(yōu)的結(jié)果是生成的數(shù)據(jù)分布和真實的數(shù)據(jù)分布相等,但實際條件下難以達到。整個網(wǎng)絡(luò)的優(yōu)化函數(shù)如式(1)所示,訓(xùn)練過程相當(dāng)于兩個網(wǎng)絡(luò)對抗的過程:生成器將隨機噪聲作為網(wǎng)絡(luò)的輸入,生成新圖片;判別器將生成器生成的圖片與原圖片進行區(qū)分,結(jié)果反饋到生成器中,進而使得生成器重新生成新圖像。兩者形成一個對抗的過程,直到判別器難以區(qū)分兩者,網(wǎng)絡(luò)訓(xùn)練完成。
(1)
本文利用改進的GAN-CNN結(jié)構(gòu)生成高質(zhì)量心拍圖像并進行分類,其核心是采取CNN進行無監(jiān)督式學(xué)習(xí),通過生成器與判別器的不斷對抗過程,從中學(xué)習(xí)到原始圖像的特征信息。對抗損失用于評估生成的圖像與原圖像,本文采用Wasserstein距離損失作為對抗損失。圖像損失作為對抗損失性能的一種補充,在生成好的心拍圖像與原始心拍圖像間構(gòu)建歐氏距離損失,進一步改善生成圖像的效果,使其接近原始圖像。在同一個網(wǎng)絡(luò)中,利用分類器可實現(xiàn)心律失常種類的識別。
由于原數(shù)據(jù)集中各類心律失常數(shù)據(jù)分布不平衡,其中大部分為正常心搏,綜合考慮后,本方法對較少的FVN、VEB、VFW等3類數(shù)據(jù)進行新圖像生成,解決了數(shù)據(jù)分布不平衡的問題。以FVN類為例,圖1為網(wǎng)絡(luò)的訓(xùn)練過程,圖1(a)~圖1(d)分別為原始圖像、訓(xùn)練30輪、70輪、150輪時生成的圖像。將數(shù)據(jù)增強后的數(shù)據(jù)集重新劃分,每類隨機取5 500張圖片,其中3 300張作為訓(xùn)練集,1 100張作驗證集,1 100張作訓(xùn)練集。
(a) (b)
本文設(shè)計的端到端網(wǎng)絡(luò)結(jié)構(gòu)主要包含3部分結(jié)構(gòu),如圖2所示。上部分虛線框內(nèi)為生成器,與下部分判別器、分類器共享一個網(wǎng)絡(luò)與參數(shù)信息。心電信號經(jīng)過R峰檢測、分割轉(zhuǎn)換等步驟可作為網(wǎng)絡(luò)的輸入與判別標準。相較于傳統(tǒng)一維信號,二維心電圖像能提供給網(wǎng)絡(luò)更加豐富的信息。判別器將生成器生成的低質(zhì)量心拍圖像與原圖像進行對抗訓(xùn)練,結(jié)合對抗損失與圖像損失逐步提高生成圖像的質(zhì)量。通過判別器計算出的對抗損失與圖像損失來調(diào)整生成器的生成效果,并利用分類器完成心律失常類別的判斷。為提高模型效率并簡化網(wǎng)絡(luò)結(jié)構(gòu),判別器與分類器共用一個網(wǎng)絡(luò)。
圖2 整體網(wǎng)絡(luò)結(jié)構(gòu)圖Figure 2. Overall network structure diagram
生成器由簡單的上采樣卷積神經(jīng)網(wǎng)絡(luò)組成。為提高系統(tǒng)性能,本文未選取復(fù)雜的深層神經(jīng)網(wǎng)絡(luò)。判別器與分類器網(wǎng)絡(luò)由下部分虛線框內(nèi)的二維卷積神經(jīng)網(wǎng)絡(luò)(2D CNN)組成,網(wǎng)絡(luò)輸入為原始與生成心拍圖像。卷積神經(jīng)網(wǎng)絡(luò)在圖像識別領(lǐng)域應(yīng)用最廣泛,其不僅不需要人工對圖像進行預(yù)處理,也無需額外的特征提取,還能夠保留圖像各個像素間位置關(guān)系。其細粒度特征提取方式與人類相似,因而能達到良好的效果。本文在網(wǎng)絡(luò)設(shè)計時將批標準化處理層放到了卷積層跟激活函數(shù)之間,選擇了合適的模型層數(shù),在加快網(wǎng)絡(luò)訓(xùn)練和收斂速度的同時,控制梯度爆炸防止梯度消失。心電灰度圖像較為簡單,無需過多的卷積層來提高模型提取特征的能力。本文在網(wǎng)絡(luò)最后加入了Dropout層防止過擬合。較少的模型層數(shù)意味著對硬件性能要求有所降低,具有向移動端設(shè)備移植的潛力。
本文采用的自門控激活函數(shù)Swish是Google公司在2017年利用自動搜索技術(shù)發(fā)現(xiàn)的一種新的激活函數(shù)[14]。Swish函數(shù)是一種平滑函數(shù),隨著參數(shù)的調(diào)整會有不同的表現(xiàn),也可把參數(shù)交由模型訓(xùn)練,與ReLU一樣無上界有下界。但其具有的非單調(diào)的特性與大多數(shù)常見激活函數(shù)不同,如式(2)所示。β是一個常量或者可訓(xùn)練的參數(shù),經(jīng)過多次實驗比較,本文最終采用β=0.9。有實驗表明,在圖像分類和機器翻譯領(lǐng)域中,Swish的表現(xiàn)都與ReLU相當(dāng)或者更優(yōu),能夠提高分類的精度。
f(x)=x·Sigmoid(βx)
(2)
2.3.1 對抗損失
在生成器與判別器對抗的過程中,生成器的最終目的是使其輸出能夠迷惑判別器,因此需要一種損失函數(shù)來衡量真實分布與生成分布的接近程度。本文采用Wasserstein距離損失作為對抗損失,提高了訓(xùn)練過程的穩(wěn)定性,同時也能作為衡量對抗過程中進行程度的指標。如式(3)所示,gθ為生成器函數(shù),fw為判別器函數(shù),Lg為對抗損失函數(shù)。
Lg=maxEx~Pdata[fw(x)]-Ex~Pg[fw(gθ(z))]
(3)
2.3.2 圖像損失
本文選取了歐氏距離損失作為圖像損失,用于量化生成器生成的心拍圖像與原始心拍圖像間的差異。生成器生成心拍圖像之后,根據(jù)圖像損失判斷其與原圖像間差距,進一步優(yōu)化生成器的生成效果。如式(4)所示,N是生成器生成的心拍圖像,O是原始心拍圖像,Li是圖像損失函數(shù)。
Li=‖N-O‖2
(4)
判別器的總損失如式(5)所示,α和γ為可調(diào)參數(shù),用于調(diào)整對抗損失與圖像損失權(quán)重對總損失的影響,Ls為總損失。
Ls=αLg+γLi
(5)
本文的實驗數(shù)據(jù)集來自于MIT-BIH心律失常數(shù)據(jù)庫,實驗平臺的CPU型號為Intel i7-6700 CPU,顯卡為GTX1060,模型的搭建基于Tensorflow框架和Python語言。將上述經(jīng)過處理以及數(shù)據(jù)增強后的數(shù)據(jù)集用于所設(shè)計的網(wǎng)絡(luò)訓(xùn)練,訓(xùn)練過程的分類損失值和精度變化如圖3所示。
(a)
如圖3所示,本文所設(shè)計的生成對抗網(wǎng)絡(luò)與二維卷積神經(jīng)網(wǎng)絡(luò)結(jié)合的結(jié)構(gòu)對該數(shù)據(jù)集的訓(xùn)練收斂速度快且無大幅震蕩,模型擬合較好。模型參數(shù)經(jīng)過優(yōu)化后,大約在50個epoch后,分類loss值基本不再變化,訓(xùn)練集與驗證集精度達到穩(wěn)定,最終測試集的精度達到了99.32%,而未使用數(shù)據(jù)增強手段的測試集精度只有97.95%。圖4(a)和圖4(b)分別為未進行數(shù)據(jù)增強與采用GAN-CNN數(shù)據(jù)增強后測試集的混淆矩陣。從圖4中可以分析出,由于原始數(shù)據(jù)過少且不均衡,模型對FVN、VEB、VFW3類心律失常的識別效果較差,其中FVN類的識別準確率只有65.00%。這可能是因為該類別的心跳波形特征跟NOR與PVC類別較為相似,加之訓(xùn)練數(shù)據(jù)過少,導(dǎo)致模型無法學(xué)習(xí)到更多有效特征。經(jīng)過本文所提方法擴充原數(shù)據(jù)集后,模型對這3類心律失常的識別能力得到了顯著提升。
(a)
本文方法與先前心律失常分類方法的比較如表2所示。由于采用的數(shù)據(jù)集處理方法以及心律失常的類別均不相同,因此無法僅從準確度角度分析對比。在研究心律失常多分類問題時,通常以準確率、敏感性、特異性和陽性預(yù)測率作為評價模型性能的指標。目前大部分心律失常分類方法都是直接使用一維心電數(shù)據(jù),容易受到去噪處理以及數(shù)據(jù)集較小等因素影響,導(dǎo)致模型泛化能力不佳。因此本文提出將一維心電信號轉(zhuǎn)換為二維灰度圖像并通過GAN-CNN生成高質(zhì)量的心電圖像實現(xiàn)心律失常識別。從表中可以看出,本文提出針對不平衡數(shù)據(jù)集的八分類的方法平均準確率達到了99.32%,敏感性為99.69%,特異性為98.91%,陽性預(yù)測率為99.84%,各項指標均優(yōu)于其他方法,而未經(jīng)過GAN處理過的數(shù)據(jù)集最終的分類精度為97.95%。信號轉(zhuǎn)換為二維圖像后均要比傳統(tǒng)的一維輸入分類效果更好,無論是否經(jīng)過本方法的數(shù)據(jù)增強處理,該模型都有較高的準確率與性能。然而在實際情況中,心電數(shù)據(jù)往往分布不平衡且數(shù)量較少。本文所提出的采用改進生成對抗網(wǎng)絡(luò)結(jié)構(gòu)的方法能較好地解決這一問題。DA表示經(jīng)過數(shù)據(jù)增強處理,本文還嘗試采用VGG16模型以及采用ReLU的模型與本文設(shè)計的網(wǎng)絡(luò)進行對比。盡管前者的模型層數(shù)更深,但由于數(shù)據(jù)大小以及圖像復(fù)雜度等因素的限制,其效果不如后者。檢測心律失常是一件勞動密集型的任務(wù),自動化方法可以減輕醫(yī)生們的工作量,有效防止因疲勞等人為因素造成漏診錯診現(xiàn)象。
表2 基于同一數(shù)據(jù)庫的不同心律失常分類方法比較
與傳統(tǒng)心律失常分類方法不同,本文將心電數(shù)據(jù)轉(zhuǎn)化為二維圖像,利用GAN-CNN生成高質(zhì)量心拍圖像,實現(xiàn)了心律失常類別的檢測,解決了醫(yī)療相關(guān)領(lǐng)域數(shù)據(jù)集較小、分布不平衡以及輔助診斷的問題。傳統(tǒng)圖像領(lǐng)域的數(shù)據(jù)增強技術(shù),例如仿射變換、添加噪聲等,雖然在一定程度上能緩解網(wǎng)絡(luò)過擬合問題,提高精度,但未從本質(zhì)上解決原始數(shù)據(jù)不足的問題。此外,這些方法需要根據(jù)經(jīng)驗選擇合適的增強手段,因此難以達到最優(yōu)處理。本文利用基于網(wǎng)絡(luò)合成方法生成的樣本多樣性更豐富,模型的泛化性能也更強。
作為一種自動診斷系統(tǒng),本文提出的方法可以輔助醫(yī)生進行心律失常類型的診斷,減輕醫(yī)生工作量。與醫(yī)生實際通過心電圖判斷心律失常類似,本方法也通過視覺角度進行診斷,后續(xù)可被應(yīng)用于醫(yī)院系統(tǒng)以及醫(yī)療機器人等系統(tǒng)中。相比于深層神經(jīng)網(wǎng)絡(luò),本文采用的結(jié)構(gòu)具有往移動端設(shè)備移植的潛力。目前的研究僅限于MIT-BIH心律失常數(shù)據(jù)庫,隨著日后數(shù)據(jù)集種類豐富性的增加,本模型結(jié)構(gòu)可以進行調(diào)整以獲得更好的泛化能力,從而提高實際應(yīng)用的效果。