唐奇伶,劉志梅,符玲玲,張彗彗,夏先富
(中南民族大學(xué) 生物醫(yī)學(xué)工程學(xué)院,武漢430074)
糖尿病分為兩型,在糖尿病達到一定年限后,有一定的發(fā)病率最終出現(xiàn)糖尿病視網(wǎng)膜病變.Ⅰ型糖尿病患者發(fā)病率近乎達到百分之百,Ⅱ型糖尿病發(fā)病率則達到了百分之六十.而糖尿病視網(wǎng)膜病變分為三種,背景型視網(wǎng)膜病變、黃斑型視網(wǎng)膜病變發(fā)病和增生型視網(wǎng)膜病變.目前用于篩查糖網(wǎng)病的重要成像方法包括兩種,光學(xué)相干層析成像技術(shù)與眼底的圖像可視化.本文主要使用光學(xué)相干層析成像技術(shù).
光學(xué)相干層析成像技術(shù)(Optical Coherence Tomography,OCT)是一種基于低相干光干涉原理[1]新型的醫(yī)學(xué)影像技術(shù).隨著光學(xué)相干層析成像技術(shù)越來越成熟,開始廣泛的運用在各個醫(yī)學(xué)領(lǐng)域,尤其是眼科,牙科和皮膚表層組織[2].OCT技術(shù)用于拍攝并診斷視網(wǎng)膜的疾病、測量視網(wǎng)膜結(jié)構(gòu),對虹膜、視網(wǎng)膜、晶狀體等結(jié)構(gòu)進行高分辨成像,具有操作簡單、無損傷、非接觸、高分辨率等優(yōu)點.通過檢測視網(wǎng)膜層的微小變化,判斷糖網(wǎng)病、黃斑變質(zhì)、青光眼等眼部疾病早期的癥狀,進而得以確診[3].
幾年前,在神經(jīng)網(wǎng)絡(luò)技術(shù)還未成熟的情況下,K.NARASIMHAN等人[4]提出的‘一種使用支持向量機與貝葉斯分類器從病理圖像檢測糖網(wǎng)病的自動有效系統(tǒng)’,作者僅使用訓(xùn)練樣本與測試樣本各50組,獲得的AUC的值為0.95,糖網(wǎng)病的檢測準確率為0.92.從近幾年動輒用上萬張圖片對大型的神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練的背景下,這種結(jié)果必然是不準確,在實際應(yīng)用中的意義也不大.如今大多數(shù)糖網(wǎng)病檢測的研究都是基于眼底圖像數(shù)據(jù),但要做到對疾病預(yù)防就必須在疾病發(fā)病初期檢查出來;早診斷,早治療,才有較好的治療效果.而眼底圖像在發(fā)病初期的病灶特征沒有那么的明顯,而OCT圖像特征較為明顯,特別是在發(fā)病早期,技術(shù)特性決定了其較高的靈敏度,醫(yī)生容易做出判斷.
近幾年,已經(jīng)能在一些期刊與會議上看到通過使用算法檢測OCT圖像而達到輔助診斷糖網(wǎng)病為目的的文章.OSCAR和SEBASTIAN等人[5]提出了一種用卷積神經(jīng)網(wǎng)絡(luò)對OCT的圖像做自動分類方法.AWAIS等人[6]使用了VGG16結(jié)構(gòu)對OCT圖像的采樣,然后將特征圖送入到KNN與決策樹算法中得出分類結(jié)果,其中DME圖像的分類正確率達到93%.KARRI等人[7]使用了遷移學(xué)習(xí)的方法,采用已經(jīng)訓(xùn)練過的深度卷積神經(jīng)網(wǎng)絡(luò)模型 Google Net基于Image Net數(shù)據(jù)庫,微調(diào)了部分參數(shù),正常、AMD、DME三種類型的OCT圖像被模型正常區(qū)別,并且在實驗后,得出一定的結(jié)果,表明了該算法比較優(yōu)秀的分類表現(xiàn),三類圖像的靈敏度分別為99%、89%和 86%.這一系列的實驗結(jié)果證明了神經(jīng)網(wǎng)絡(luò)對OCT圖像分類的可行性.
本文提出的基于多層級聯(lián)融合網(wǎng)絡(luò)的糖網(wǎng)病檢測方法,采用了OCT的數(shù)據(jù)集,用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,可以在早期檢測糖網(wǎng)病的嚴重程度.通過一些網(wǎng)絡(luò)上的改進來適應(yīng)醫(yī)學(xué)圖像的特殊性,如采用多層級聯(lián)融合的方法,對數(shù)據(jù)集進行多層采樣后,融合每層的采樣結(jié)果.并使用了空間金字塔結(jié)構(gòu)對多層的特征圖做歸一化,提高了模型對數(shù)據(jù)的適應(yīng)性,解決采樣過程中,特征圖大小不一致的問題,提高了算法的準確性.
與神經(jīng)網(wǎng)絡(luò)有關(guān)的研究很早就開始了,今天,深度學(xué)習(xí)已形成為一個多學(xué)科交叉的龐大研究領(lǐng)域[8].而神經(jīng)網(wǎng)絡(luò)目前很重要的一個類別是監(jiān)督學(xué)習(xí).不久前,XIE[9]提出了一種基于FCNN的深度監(jiān)督網(wǎng)絡(luò)的邊緣檢測算法(Holistically-Nested Edge Detection,HED),該網(wǎng)絡(luò)輸入整個的圖片,輸出圖片對應(yīng)的是邊緣分割結(jié)果.它的創(chuàng)新點有兩個重要的方面:一方面是圖片的整體訓(xùn)練和預(yù)測,另一方面是多尺度的特征提取并學(xué)習(xí).Holistically-nested方法將幾種使用了不同尺度的深度學(xué)習(xí)結(jié)構(gòu)進行了對比說明.分析多尺度學(xué)習(xí)的兩個方面:網(wǎng)絡(luò)內(nèi)部形成多尺度的原因是由于降采樣得到特征圖大小在不斷變小,外部網(wǎng)絡(luò)形成多尺度的原因是輸入圖像的尺寸不一致.五種情況下的多尺度深度學(xué)習(xí)模型,如圖1所示.
由圖1可看出:(a)網(wǎng)絡(luò),輸入的圖像進入多個網(wǎng)絡(luò),每個網(wǎng)絡(luò)的層數(shù)和參數(shù)不同,得到的特征圖大小不同,反應(yīng)網(wǎng)絡(luò)多尺度結(jié)構(gòu),網(wǎng)絡(luò)的最后一層利用特定的卷積核將所有輸出的結(jié)果合并,得到最后的輸出結(jié)果.(b)網(wǎng)絡(luò),輸入圖像后提取每個卷積層生成的特征圖融合一起后再通過一個卷積層得到輸出結(jié)果.(a)和(b)差異在于(a)通過不同的網(wǎng)絡(luò)的不同卷積層,(b)是在同一網(wǎng)絡(luò)的不同卷積層提取特征圖融合,但是他們都是使用一個loss函數(shù)進行回歸訓(xùn)練.(c)網(wǎng)絡(luò)是通過外部使尺度不同,即輸入圖像的大小不一致,但是通過相同的卷積核,得到的輸出特征圖也不一致.(d)網(wǎng)絡(luò)是由(a)演化過來,相同的圖像通過不同的獨立網(wǎng)絡(luò),每個網(wǎng)絡(luò)的深度和輸出損失函數(shù)都不一致,不同的網(wǎng)絡(luò)預(yù)測結(jié)果也不一致.將最后的結(jié)果綜合分析,能得出更好結(jié)論.唯一的缺陷是需要比其它模型更多的數(shù)據(jù)量.(e)網(wǎng)絡(luò)是HED綜合前面的方法提出的,同樣的輸入圖像大小,經(jīng)過不同的卷積層,每一個卷積層的生成的特征圖都不一致,保存特征圖作為第一個結(jié)果,將后面的特征圖做反卷積后,與之前的特征圖相融合,融合后再通過一個卷積核就能得到第二個輸出,結(jié)合了的兩個輸出結(jié)果就是模型最終的結(jié)果.
圖1 不同多尺度深度學(xué)習(xí)架構(gòu)配置說明
HED論文中利用一個“權(quán)重混合層”解決每側(cè)輸出結(jié)果混合的問題,讓整個模型學(xué)習(xí)混合權(quán)重.混合權(quán)重層的損失函數(shù)定義如公式 (1)所示:
(1)
L(I,G,W,w)=Lside(I,G,W,w)+Lfuse(I,G,W,w).
(2)
在考慮使用HED網(wǎng)絡(luò)的核心思想時,出現(xiàn)了一個問題,分割和分類網(wǎng)絡(luò)存在一些差異.上面提到的方法是對最后的特征圖做一層層的反卷積,并將反卷積結(jié)果與第一層融合來產(chǎn)生分割效果,每一層池化前得到的特征圖是大小不一致的,為了解決這個問題,以下提出了一個解決方案,即利用空間金字塔池化結(jié)構(gòu)去解決特征圖大小不一致的問題.
空間金字塔池化結(jié)構(gòu)是HE Kaiming提出的一個用于解決圖片輸入大小不一致的方法, 如圖2所示.當(dāng)圖片強行歸一化的時候,會扭曲圖片,從而丟失圖片攜帶的信息.空間金字塔池化結(jié)構(gòu)原理簡單,即將圖片分塊,每個塊提取特征向量,這樣對任意尺寸的特征圖,都可以從中提取固定大小的特征向量,這樣就兼容了多尺度的特征,最后將這些多尺度特征拼接成一個固定維度特征,與全連接層相連.
圖2 空間金字塔池化結(jié)構(gòu)示意圖
1.3.1 基于HED和VGG模型的擴展結(jié)構(gòu)
VGG模型在自然圖像中使用非常廣泛,也得到非常好的效果,于是參考HED網(wǎng)絡(luò)建立一個基于VGG模型的多層級聯(lián)融合網(wǎng)絡(luò)(HED-VGG-net,HV-net).應(yīng)用該網(wǎng)絡(luò)的原因在于HED網(wǎng)絡(luò)融合能獲得非常好的分割效果,證明了融合多個卷積層得到的特征圖,提高了采樣的效果.本文的網(wǎng)絡(luò)構(gòu)建方式是在每個池化層前,引出一個分支結(jié)構(gòu),即引出每一層卷積完后得到的特征圖,再將每一層的特征圖經(jīng)過空間金字塔池化結(jié)構(gòu)進行歸一化,生成五個多維的向量,最后對這五個多維的向量使用融合函數(shù)融合.由于兩個全連接層的參數(shù)量過大,硬件設(shè)備的內(nèi)存不允許設(shè)置兩個維度過高的全連接層,所以在建立模型之前,對融合后的值進行了簡單的計算,最后決定在原本的VGG模型的基礎(chǔ)上將兩個全連接層刪減為一個,維度設(shè)置為1024最優(yōu),也有對維度設(shè)置為512及更小的值進行訓(xùn)練,實驗發(fā)現(xiàn)模型不穩(wěn)定,偶爾出現(xiàn)不收斂的情況.詳細結(jié)構(gòu)如圖3所示.
圖3 HED-VGG-net結(jié)構(gòu)
1.3.2 基于HED和KA-net模型的擴展結(jié)構(gòu)
參考HED網(wǎng)絡(luò)也建立一個了基于KA-net模型的多層級聯(lián)融合網(wǎng)絡(luò)(HED-KA-net, HK-net).也對每個池化層前的卷積層做了一個分支結(jié)構(gòu)出來,用空間金字塔池化對特征圖歸一化,生成多維的向量再融合.兩個模型的大致結(jié)構(gòu)一致,區(qū)別在于輸入圖像大小不一致,KA-net每個分支結(jié)構(gòu)輸出的特征圖比VGG模型的特征圖大,所以在最后融合完成之后進入全連接層之前的參數(shù)量比VGG模型多 ,因此在最后兩個全連接層,本文沿用了VGG的全連接層結(jié)構(gòu).詳細結(jié)構(gòu)如圖4所示.
圖4 HED-KA-net結(jié)構(gòu)
研究的數(shù)據(jù)集來自Kaggle比賽,這是一組質(zhì)量非常高的數(shù)據(jù)集,共有83484張圖像,OCT圖像的數(shù)據(jù)集的數(shù)據(jù)量比較充足,分為四種類別,分別為絡(luò)膜新生血管(CNV)、糖尿病性視網(wǎng)膜黃斑水腫(DME)、與年齡相關(guān)的黃斑變異(AMD)和正常人(NORMAL).每一類的數(shù)據(jù)量比較均衡,不存在需要做數(shù)據(jù)擴充的問題,非常適合用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練.這四類圖像的數(shù)據(jù)分布,如表1所示.
表1 OCT圖像數(shù)據(jù)分布
下面是從數(shù)據(jù)集中隨機抽取的四張圖像作為實例,如圖5所示.從示例圖片中(a)、(b)、(c)中都是早期可以看到三種病變,圖像上有明顯的的病變特征.
(a)DME (b) CNV (c) DRUSEN (d) NORMAL
評估模型的泛化誤差是需要通過數(shù)據(jù)集的實驗.通過篩選,選定一個測試集,該測試集一方面要與訓(xùn)練集保持互斥的關(guān)系,另一方面也需要從真實樣本中獨立采樣.本文使用了兩種測試方法,包括“留出法”和“交叉驗證法”.留出法就是將數(shù)據(jù)集分為兩個集合,一個訓(xùn)練集和一個測試集,同時兩個集合保持互斥關(guān)系.為防止數(shù)據(jù)不均衡產(chǎn)生的偏差而影響測試結(jié)果,使用的訓(xùn)練集和測試集對應(yīng)的每個類別的數(shù)據(jù)分布保持一致.因為訓(xùn)練集包含大多數(shù)樣本,測試集樣本較少,也根據(jù)別的研究人員的方法用4/5的樣本訓(xùn)練,剩余樣本用于測試.相反交叉驗證法適用于數(shù)據(jù)量不充足的情況,具體做法是先對數(shù)據(jù)集D進行劃分,劃分后存在k個大小的互斥子集,將每個子集設(shè)為d,這些子集都保持原本數(shù)據(jù)集分布的一致性.然后取k-1個子集,將這些自己合并用來訓(xùn)練,余下的自己合并用來測試.即最終訓(xùn)練集和測試集加起來一共有k組,統(tǒng)計這k個集合測試結(jié)果的均值.
分類模型中常用的性能度量,如精度,非常適用于多分類模型 ,精度的定義為分類正確的樣本數(shù)占總樣本數(shù)的比例.如下公式(3)所示:
(3)
精確度是常用的標準,但是有些任務(wù)需求并不能滿足,所以本文還會使用其他的性能度量.如二分類問題,可將樣例根據(jù)其真實類別與學(xué)習(xí)器預(yù)測類別的組合劃分為真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四種情形,令TP、FP、TN、FN分別表示其對應(yīng)的樣例,分類結(jié)果的“混淆矩陣”如表2所示.
表2 分類結(jié)果混淆矩陣
在醫(yī)學(xué)圖像中,靈敏度(sensitivity)表示實際患病(陽性)而被正確診斷為患病(陽性)的比例.如下公式(4)所示:
(4)
2.3.1 學(xué)習(xí)率參數(shù)對模型的影響
研究的實驗硬件環(huán)境為NVIDIA Quadro M5000,Intel Xeon CPU E5-2650 V4,軟件環(huán)境為Windows 10專業(yè)版,Anaconda 3.5,Cudnn 8.0,Tesnsorflow 1.6,Keras 2.1.5.
在訓(xùn)練網(wǎng)絡(luò)時,考慮到不同的學(xué)習(xí)率對模型收斂存在一定的影響,我們不斷實驗尋找了最優(yōu)的學(xué)習(xí)率.本節(jié)用OCT數(shù)據(jù)集對HED-VGG-net和HED-KA-net做訓(xùn)練,迭代次數(shù)為20次,batchsize為30.調(diào)整四組初始學(xué)習(xí)率,分別為0.01、0.05、0.1、0.5.模型loss值隨著迭代次數(shù)收斂的情況如圖6與圖7所示.
圖6 HED-VGG-net收斂曲線
圖7 HED-KA-net收斂曲線
2.3.2 網(wǎng)絡(luò)模型性能分析
在自然圖像的處理中,大多數(shù)經(jīng)典模型都有很好的效果,實際上在醫(yī)學(xué)圖像上效果并不是很理想.在查閱文獻時,有一種利用VGG模型使用遷移學(xué)習(xí)的方法,主要做法是將中間部分層固定住,僅訓(xùn)練尾部的全連接層.從文獻的結(jié)果來看,這種方法也得到了很好的結(jié)果. 但是單個模型的準確率不能體現(xiàn)效果,所以希望通過多種經(jīng)典網(wǎng)絡(luò)模型和本文構(gòu)建的模型進行對比實驗,驗證模型效果的優(yōu)良性.使用OCT數(shù)據(jù)集對模型進行訓(xùn)練,訓(xùn)練完成后,生成四組對比折線圖.epoch為50,學(xué)習(xí)速率初始值為0.01.橫坐標為迭代次數(shù),縱坐標為準確率,驗證方法為交叉驗證.由于四組模型收斂速度不一樣,這里取了每五組迭代的準確率,一共30次,用來生成準確率隨迭代次數(shù)變化的折線圖.四組模型的準確率變化曲線如圖8所示.
圖8 網(wǎng)絡(luò)模型分類準確率變化曲線圖
由圖8我們可以看見模型在迭代20個epoch之后,準確率趨于穩(wěn)定,所以這里統(tǒng)計了20至50個epoch中間四個模型的準確率,結(jié)果如表3所示.幾個模型準確率存在一定的波動是交叉驗證會出現(xiàn)的正常情況. 本文將每個模型在迭代時準確率的最大值統(tǒng)計出來,其直方圖如圖9所示.可以看見HED-VGG-net準確率在最高時表現(xiàn)好于HED-KA-net,但HED-KA-net準確率變化趨勢更小,更穩(wěn)定.
表3 網(wǎng)絡(luò)模型在OCT數(shù)據(jù)集上的分類結(jié)果(平均值±標準差)
圖9 網(wǎng)絡(luò)模型在OCT數(shù)據(jù)集上準確率對比(最大值)
基于上面的交叉驗證結(jié)果,通過更具體的性能對模型進行分析.這里又使用了留出法的驗證方法,測試集共有968張圖像用于驗證HED-VGG-net和HED-KA-net的性能,每一類為242張,表4和表5是使用多層級聯(lián)網(wǎng)絡(luò)對968張圖像做預(yù)測的混淆矩陣結(jié)果.實驗數(shù)據(jù)為OCT圖像數(shù)據(jù)集,batch size為30,epoch為50,學(xué)習(xí)速率初始值為0.01.
表4 HED-VGG-net混淆矩陣
表5 HED-KA-net混淆矩陣
圖10 模型對應(yīng)靈敏度
從靈敏度角度上,DME圖像的靈敏度較高,其它兩類的靈敏度都低于DME圖像。從測試集隨機抽取部分樣本,將三類病變與正常類的樣本作對比.
在測試集中,隨機抽取DME、NORMAL、DRUSEN和CNV四個類別中各16張圖像,如圖11所示.DME、CNV和NORMAL的特征差異大,但DRUSEN和NORMAL的特征差異較小,這也是這幾組數(shù)據(jù)的出現(xiàn)靈敏度差異的原因之一.
圖11 四類圖像抽樣對比
從另外兩個類別觀察圖像,同一類的圖像共有特征明顯機器更容易區(qū)分,如DME類中間有類似于空腔的結(jié)構(gòu)、CNV類有像多次扭曲的層結(jié)構(gòu).從神經(jīng)網(wǎng)絡(luò)采樣的角度上看,這種圖像上明顯的特征會是分類效果更好.
2.3.3 與其他算法的比較
基于Kaggle數(shù)據(jù)庫,表6顯示了文獻中對OCT圖像分類結(jié)果的比較.
表6 不同分類算法在Kaggle數(shù)據(jù)庫上的結(jié)果比較
SAMRA等人[10]利用了相干張量對糖尿病性黃斑水腫(DME)進行分類,VENHUIZEN等人[11]使用基于詞袋模型的方法來分類OCT圖像,OSCAR等人[5]出了一種基于CNN的OCT-NET模型,用于OCT體積的自動分類.RONG[14]等人提出了一種基于CNN自動分類視網(wǎng)膜OCT圖像的替代輔助分類方法.結(jié)果表明基于神經(jīng)網(wǎng)絡(luò)是一種非常高效的分類模型.本實驗最終分類結(jié)果,證明其效果優(yōu)于同類型的分類算法.
糖網(wǎng)病檢測是醫(yī)學(xué)圖像分析中非常具有實際應(yīng)用意義的一個問題,針對這個問題,我們提出了基于經(jīng)典網(wǎng)絡(luò)模型的改進模型.使用多組學(xué)習(xí)率訓(xùn)練模型,測試幾組學(xué)習(xí)率對模型收斂的影響.通過將構(gòu)建的兩個模型與經(jīng)典網(wǎng)絡(luò)的分類結(jié)果進行對比,體現(xiàn)了多層級聯(lián)融合分類模型的效果在醫(yī)學(xué)圖像檢測中優(yōu)于經(jīng)典網(wǎng)絡(luò)模型.最后,對兩個模型用混淆矩陣和靈敏度來做評估,分析了出現(xiàn)靈敏度差異的原因.綜上結(jié)果發(fā)現(xiàn),我們提出的基于多層級聯(lián)融合的分類模型是一種高效、合理、性能好的算法. 作者將繼續(xù)嘗試多層級聯(lián)融合網(wǎng)絡(luò)結(jié)合其它算法框架的更有效信息,進一步提升性能,更好的檢測糖網(wǎng)病的病理圖像.