魏中杰,許少華
(山東科技大學 計算機科學與工程學院,山東 青島 266590)
心血管疾病是當今社會的頭號死因[1],因而基于心電信號(electrocardiogram,ECG)[2,3]的心血管疾病自動識別是當前醫(yī)療人工智能領域的熱點問題,Kiranyaz等[4]提出了基于一維卷積神經網絡并適用于可穿戴設備的心電信號識別方法;Zhou等[5]提出了一種一維卷積神經網絡進行AF檢測的方法;Pranav Rajpurkar等[6]建立了34層卷積神經網絡,對14種心電圖進行分類;Patrick Schwa等[7]建立了一種多樣化的循環(huán)神經網絡用于區(qū)分正常、竇性心律、心房顫動以及其它類型的心率失常;Hong等[8]提出了一種基于循環(huán)神經網絡與決策樹的方法對心房顫動進行診斷;Rajan等[9]提出了一種基于遞歸神經網絡和隨機森林分類算法的RNN+RF深度神經網絡,采用多導聯(lián)心電信號診斷心肌梗死;Acharya等[10]建立了11層卷積神經網絡,對心力衰竭進行識別。
上述方法在對心電信號分類過程中存在一定的局限性:
(1)分類過程中大都采用一個或幾個導聯(lián)參與診斷,而醫(yī)學診斷過程中不同種類心臟疾病的異常特征有時會出現(xiàn)在不同導聯(lián)當中,因此上述模型大都無法擴展至更多種類的心臟疾病診斷當中。
(2)上述算法都從時變信號的角度出發(fā),關注信號的數(shù)值變化,而醫(yī)生在進行疾病診斷的過程當中需要參考病人的心電圖形的變化,因而上述方法的診斷方式與醫(yī)生的診斷過程相比缺少對于波形特征的參考,且無法同時處理信號與圖像。
(3)上述方法當中大都基于心拍進行的分類診斷,因而在診斷之前需要心拍的分割,這里往往需要人工參與,增加標注的成本。
考慮到上述方法在對心電信號處理過程當中的不足,本文設計一種多通道深度卷積神經網絡模型:
(1)該模型針對12個導聯(lián)進行訓練,使其后期可以擴展至更多種類的疾病。
(2)能夠同時處理信號與圖形的特征,并使用信號與圖形兩類特征參與診斷,更加符合醫(yī)生的診斷規(guī)則。
(3)該模型基于一段信號分類,不需標注心拍,更加符合自動化檢測的規(guī)則。
為了將信號與波形特征都參與診斷,本文將信號數(shù)據(jù)轉為圖像后再與原數(shù)據(jù)組成新的數(shù)據(jù)集,該數(shù)據(jù)集中的心電數(shù)據(jù)中包含時變信號數(shù)據(jù)以及圖像數(shù)據(jù)。而在卷積神經網絡中,處理信號通常需要采用一維卷積核,處理圖像需要采用二位卷積核,因而一條深度卷積網絡模型無法同時處理信號與圖形數(shù)據(jù)。因此本模型將不同數(shù)據(jù)經過不同卷積通道處理后在進行分類,其基本思想為:不同類型的數(shù)據(jù)通過不同通道中不同維度(所使用的卷積核的維度不同,針對處理圖像數(shù)據(jù)的通道選擇二維卷積核,處理時變信號數(shù)據(jù)的通道選擇一維卷積核)的卷積處理后得到相同類型的輸出向量,再將相同類型的向量融合后用于診斷。方法處理的基本步驟為:
步驟1 針對圖像以及信號數(shù)據(jù)各設計并預訓練一條卷積神經網絡,預訓練通過端到端的方式完成,訓練的標簽為其所對應的疾病標簽。
步驟2 裁剪掉各預訓練的卷積神經網絡部分全連接層,裁剪后的每個網絡即為一條通道。裁剪后無論信號數(shù)據(jù)還是圖像數(shù)據(jù)在通過各自的網絡處理后都會得到一條一維的特征向量。
步驟3 將不同通道輸出的特征向量按照拼接的方式融合,得到一個新的特征向量,該條特征向量同時包含心電數(shù)據(jù)的時序數(shù)值特征與不同導聯(lián)的波形特征。
步驟4 針對新的向量設計并訓練新的全連接層,在新向量通過全連接層處理后通過Softmax完成分類。
通過上述處理可以得到一個能夠同時處理不同類型數(shù)據(jù)的網絡模型,該模型可以更加全面地處理心電數(shù)據(jù)各個方向上的特征并用于診斷。
對于一個樣本進行診斷的完整步驟為:不同類別數(shù)據(jù)通過不同通道提取特征—通道輸出的特征進行融合—通過全連接層處理—完成分類。
對于心電信號進行分類是傳統(tǒng)的模式識別問題,問題描述如式(1)
c=g(f(x,θf),θg)
(1)
c代表預測神經元的輸出,g(·,θg)為預測函數(shù),θg為其相關參數(shù),f(·,θf)為特征提取函數(shù),θf為其參數(shù)。根據(jù)相關樣本及其標簽選擇適當?shù)膿p失函數(shù),通過優(yōu)化求解損失函數(shù)獲得參數(shù)θg,θf,可以表述為式(2),其中L(·)代表度量預測值與真實類別的損失函數(shù),S(·)代表Softmax分類函數(shù),y代表真實類別
(2)
深度學習將特征提取與分類器的訓練統(tǒng)一用深度神經網絡的方法進行建模,并實現(xiàn)端到端的學習。學習過程中需要選擇適當?shù)膿p失函數(shù),本文選擇了交叉熵損失函數(shù)[11],表示如式(3)
(3)
其中,oi為ci經過Softmax處理所得到的預測概率,o為包含所有類別預測概率的向量,且0 (4) 計算交叉熵損失函數(shù)L(·)對oi的偏導數(shù)可見參考文獻[11]。求得偏導數(shù)后再根據(jù)反向傳播算法[12]對網絡權重進行更新。 在本文中,同時考慮了信號以及不同導聯(lián)的圖像特征,因此樣本x={x1,x2,…,xn},xi代表一個樣本中的不同類型的數(shù)據(jù),由于類型不同,無法通過同一個特征提取函數(shù)來處理,因此本文中針對各部分使用不同的特征提取函數(shù)fi(·,θfi)來初步提取特征,再將提取的各部分特征融合得到新的特征向量xnew,如式(5),后使用新的函數(shù)gnew(xnew,gnew)進一步提取特征并最終完成分類,如式(6) xnew=[f1(x1,θf1),f2(x2,θf2),…,fn(xn,θfn)] (5) c=gnew(xnew,θnew) (6) 其中,fi(xi,θfi)代表提取xi中的特征,θfi通過優(yōu)化求解式(7)得到。根據(jù)得到的θfi提取xi中的特征,即fi(xi,θfi)。gnew(·,θnew)為最終的分類函數(shù),θnew通過優(yōu)化求解式(8)求得 (7) (8) θfi與θgi為針對xi的一個分類器的完整參數(shù),借用遷移學習的思想主要是保留訓練好的部分參數(shù)θfi提取特征fi(xi,θfi)。 本文對心電數(shù)據(jù)處理的方法涉及圖像與時變信號兩種類型的數(shù)據(jù),而卷積神經網絡在信號與圖像方面皆有廣泛應用并取得較好的效果[13-15],故可以選擇卷積神經網絡對數(shù)據(jù)進行處理,設計合理有效的二維CNN模型與一維CNN模型,使其分別提取心電圖像的波形特征與心電信號的數(shù)值特征。 典型的卷積神經網絡結構如圖1所示。由卷積、歸一化、池化、激勵以及全連接層構成。 圖1 典型卷積神經網絡模型 本文中模型的主要卷積網絡模型,主要包括4個部分: (1)一維卷積網絡模型CNN4,通過訓練并裁剪該模型獲得處理心電信號的通道。 (2)二維卷積網絡模型CNN1-CNN3,通過訓練并裁剪該模型獲得處理心電圖像的通道。 (3)多通道網絡模型,包括多通道圖像模型以及多通道圖像+信號模型,該模型用來處理經過各通道處理后的特征。 (4)相關模型。 一維卷積神經網絡模型CNN1與二維卷積神經網絡模型CNN1-CNN3結構如圖1所示,即為普通卷積網絡模型。 多通道網絡模型的結構如圖2所示。該模型主要由多通道與全連接兩個部分構成,多通道部分中每個Channel為已經訓練并截取完成的一個網絡。全連接部分為針對融合后的向量所設計的新的全連接層。 圖2 多通道網絡結構 3.2.1 一維卷積網絡參數(shù)設計 使用一維卷積網絡結構提取時變信號數(shù)據(jù)的數(shù)值特征,該網絡包含5層卷積,后接兩個全連接層。5層卷積層中卷積核的個數(shù)依次為:32、64、64、128、128,設定卷積核大小均為1×5,步長均為1,激勵函數(shù)采用Relu,池化方式為最大池化且步長全部為4,在卷積與池化過程中邊界均不補零。后接兩層的全連接層,神經元的個數(shù)依次為256、3。 3.2.2 二維卷積網絡參數(shù)設計 二卷積神經網絡提取心電圖像的特征,卷積網絡結構如圖2所示,該卷積網絡結構共包含4層卷積,最后接兩層全連接層。該CNN模型中卷積核的個數(shù)依次為:32、64、128、256,大小均為5×5,步長為1。所有池化層均選擇最大池化的方法,4層池化的步長依次為:(4,4),(5,5),(5,5),(4,4)。激活函數(shù)為LReLU,卷積與池化過程中邊界作補零處理。 3.2.3 多通道網絡參數(shù)設計 截取訓練好的4個CNN分類器的部分全連接層構成4個通道,其中3個圖像分類器只保留卷積層,保留后3個通道的輸出均為1×512的向量,1個信號分類器保留至第1個全連接層,該通道的輸出為1×256的向量。在預訓練4個網絡的基礎上,設計了3通道圖像分類器與4通道圖像+序列分類器。 3通道圖像分類器將3圖像通道輸出的向量按照拼接方式形成新的向量,該向量包含12導聯(lián)的波形特征,向量大小為1×1536,新的全連接層結構為:Input—FC1—FC2—FC3,神經元的個數(shù)以此為:1536—64—32—3,損失函數(shù)為交叉熵損失。 圖像+序列分類器將4個通道所輸出的向量按照拼接方式形成新的向量,該向量的大小為1×1792。新的全連接層結構:Input—FC1—FC2—FC3,神經元的個數(shù)依次為:1792—256—64—3。該階段損失函數(shù)依舊為交叉熵損失。 3.2.4 相關模型參數(shù) 本文在實驗過程當中亦進行了相關的對比實驗,主要包括基于卷積神經網絡的單導聯(lián)圖像、信號以及集成CNN模型。其模型結構為: 單導聯(lián)圖像模型,包含4個卷積層,CNN模型中卷積核的個數(shù)依次為:16、32、64、128,大小均為5×5,步長為1,后接兩層的全連接層,神經元的個數(shù)依次為256、3。 單導聯(lián)序列模型,包含5個卷積層,CNN模型中卷積核的個數(shù)依次為:16、32、64、128、128,大小均為1×5,步長為1,后接兩層的全連接層,神經元的個數(shù)依次為128、3。 集成CNN模型在CNN4模型的基礎上進行的,將數(shù)據(jù)集分為6份,分別訓練得到6個CNN4,最后進行隨機森林的投票分類。 為了得到足夠多且有效的數(shù)據(jù),本文選擇了中國心血管疾病數(shù)據(jù)庫[16](the Chinese cardiovascular disease database,CCDD)中的ECG樣本,每個樣本的采樣頻率為500 Hz,記錄時間為10 s左右,并且包含專家的標注結果,同時所有樣本皆包含12個導聯(lián)。所用數(shù)據(jù)集中疾病與樣本個數(shù)見表1。為了便于計算,本文實驗中統(tǒng)一對每個導聯(lián)截取4500個采樣點,再將其抽析為2250維的向量。處理之后,每個樣本包含12個導聯(lián),每個導聯(lián)包含2250個采樣點。 表1 數(shù)據(jù)集分布 由于心電信號數(shù)據(jù)在采集過程中會受到噪聲的影響,因而在實驗前需對數(shù)據(jù)進行降噪處理。本文選擇低通濾波的處理方法,使用巴特沃斯濾波器(Butterworth)對數(shù)據(jù)進行處理,處理過程中的截止頻率Wn為0.08,濾波器的階數(shù)N為4。 山風比午間更加狂烈,呼嘯著,像一群怨魂,在天葬場的地面處游蕩。白鷲仍然沒有離去,它們中的一些盤旋在眾人的頭頂上空,另一些則站在天葬臺對面的高坡上,不時發(fā)出一聲聲令人揪心的悲鳴。 同時需要將心電信號轉為灰度圖像,為了保證得到足夠清晰的圖像,每條導聯(lián)對應的圖像分辨率為700×100,此時進行單導聯(lián)分類所得到的識別率為88.6%,進一步將分辨率調整為800×150,其識別率為88.8%,幾乎無提高。同時如果將12導聯(lián)繪制在同一張圖像當中,所得到的圖像分辨率為700×1200,圖像過大導致訓練難度增加,因此12導聯(lián)轉為3張圖像,既降低了圖像的大小,減少了訓練難度,又能夠保持部分導聯(lián)間所存在的組合特征。 為此將12個導聯(lián)分為3組,每組所包含的導聯(lián)見表2,每組4個導聯(lián)繪制在分辨率為700×400的圖像當中,利用python中的繪圖,將采樣點繪制為圖像,每個樣本得到如圖3所示的3張圖像,其中圖3(a)、圖3(b)、圖3(c)分別對應組別1、2、3。 表2 每組所包含的導聯(lián) 最終每個樣本轉換為一個12×2250的二維矩陣和3張分辨率為700×400的心電圖像。 圖3 心電圖像 本文當中的實驗環(huán)境包括兩個部分: (1)實驗數(shù)據(jù)預處理環(huán)境 硬件環(huán)境為:Inter(R) Core(TM)i5-4200 h CPU @2.8 GHZ,8 GB內存 軟件環(huán)境為:Windows10操作系統(tǒng),MATLAB R2016b win64平臺 硬件環(huán)境為:Intel(R) Xeon(R) Gold 5118 CPU@2.3 GHz,NVIDIA TITAN X GPU,32 G內存。 軟件環(huán)境為:16.04.1-Ubuntu 系統(tǒng),Python3.6.4|Ana-conda+tenserf1ow1.11.1平臺。 本次實驗的基本步驟為: (1)數(shù)據(jù)的處理; (2)分別訓練基于3組圖像的3個卷積網絡CNN1-CNN3; (3)訓練基于12導聯(lián)信號的卷積網絡CNN4; (4)裁剪CNN1-CNN4,獲得4個通道; (5)訓練融合CNN1-CNN3的多通道模型; (6)訓練融合CNN1-CNN4的多通道模型; (7)對比實驗,訓練對比模型。 在訓練CNN分類器的過程中,epoch為40,即對訓練集迭代40次,圖像分類器中Batchsize為8,信號分類器中Batchsize為64,初始學習率為0.001,并隨著迭代次數(shù)的增加而指數(shù)衰減,衰減系數(shù)為0.95,衰減的速度為每個epoch一次。模型的訓練過程中選擇交叉熵損失(Cross-entropy)作為該網絡的損失函數(shù),采用自適應動量估計[17](Adam)進行優(yōu)化求解。 在訓練融合后的全連接層的過程中,epoch為30,Batchsize為274,初始學習率為0.001,衰減方案與訓練CNN分類器時相同。 在本數(shù)據(jù)集的基礎上進行實驗,實驗結果見表3。CNN1-CNN4為預訓練的分類器,其中CNN1-CNN3分別為3個圖像分類器,每個分類器針對一組導聯(lián)所轉換為的心電圖像;CNN4為信號分類器,采用12個導聯(lián)信號數(shù)據(jù)分類;多通道圖像為多通道遷移CNN1-CNN3,利用波形特征分類;圖像+序列為多通道遷移CNN1-CNN4網絡,利用波形與數(shù)值兩類特征分類。其中單導聯(lián)序列、CNN4信號以及集成CNN均為傳統(tǒng)上采用時變信號的傳統(tǒng)方式。 表3 實驗結果 由表3可以觀察到,無論是采用時間序列還是圖像的方式,單導聯(lián)的分類方法均低于多導聯(lián)。采用圖像方法的識別率要略高于采用時間序列的方法,其中單導聯(lián)圖像方法相較于單導聯(lián)序列提高了1.3%;CNN1-CNN3遷移融合(即采用12導聯(lián)圖像的方式)的分類方法相較于12導聯(lián)矩陣序列以及集成CNN模型的方式有略微提高,融合了波形與數(shù)值特征的多通道圖像+序列分類方法相較于傳統(tǒng)的12導聯(lián)分類方法提高了1.1%,集成CNN模型提高了1%;多通道圖像提高了0.7%。 這次實驗進行了一系列的對比實驗,直接使用了3個深度卷積神經網絡模型對心電信號進行分類,這包括文獻[6]中所提出的基于34層卷積神經網絡的分類方法、文獻[9]中所提出的基于RNN+RF的分類方法、文獻[10]中所提出的基于11層一維卷積神經網絡的分類方法,在相同樣本集的情況下,將這3個模型與本文方法進行了比較。 在對比實驗中,CNN-34layers模型網絡包含16個residual blocks組成,并且每個塊包含2個卷積層。每個塊中的卷積層的濾波器長度均為16,并且具有64k個濾波器,其中k以1開始,并且每4個塊增加1;CNN-11layer模型包括4個卷積、4個最大池和3個完全連接的層,步幅(濾鏡移動量)設置為1和2,卷積核為1×5;在RNN+RF模型中構建的每個LSTM中的隱藏層設置為6,在特征向量空間中建立隨機森林分類器以進行分類。 在本數(shù)據(jù)集的基礎上,以端到端的方式相關訓練,實驗結果見表4。 表4 ECG分類方法與結果 通過以上對比可以發(fā)現(xiàn),本文分類方法將12個導聯(lián)參與診斷,相較于其它方法考慮到了疾病在不同導聯(lián)上的不同特征,同時也將波形特征參與到診斷當中,因而處理過程更加符合醫(yī)生診斷的規(guī)則,使更多更全面的特征參與到診斷過程中,因而取得了較好的效果。 為了檢驗模型的時效性,本文測試了圖像+序列網絡的GPU與CPU運行時間,采用圖像處理器硬件加速(GPU)實現(xiàn)算法,處理一個樣本所需要的時間為0.027 s,在不使用GPU的情況下,單獨使用CPU處理樣本所需要的時間為0.21 s。 本文借鑒醫(yī)生對心臟病人的診斷過程,提出了一種能夠提取并融合心電數(shù)據(jù)波形與數(shù)值特征的多通道卷積神經網絡模型,該模型在多通道利用卷積神經網絡自動提取波形與數(shù)值特征,再借用遷移學習的思想,在全連接層將波形特征與數(shù)值特征融合,關注了信號不同方面的特征,取得了95.6%的分類準確率。本文實驗驗證了該方法的可行性,下一步的研究方向主要考慮利用卷積神經網絡識別心電圖像中的異常區(qū)域。3 模型結構與參數(shù)
3.1 模型結構
3.2 模型參數(shù)
4 實 驗
4.1 ECG數(shù)據(jù)準備與處理
4.2 實驗環(huán)境
4.3 實驗過程
4.4 實驗結果
4.5 對比分析
5 結束語