李果璟,夏秋婷,李 宏
(杭州電子科技大學(xué)自動化(人工智能)學(xué)院,浙江 杭州310018)
眼底是人體唯一能直接看到血液循環(huán)狀況及微循環(huán)結(jié)構(gòu)的部分[1]。 傳統(tǒng)眼底檢查的流程是患者前往醫(yī)院拍攝眼底照片,眼科醫(yī)生依據(jù)圖像進(jìn)行診斷。 但日益上升的患者人數(shù)造成專業(yè)眼科醫(yī)生短缺,醫(yī)生工作愈發(fā)繁重等問題逐漸顯現(xiàn)。 并且,僅僅憑靠醫(yī)生肉眼觀察分析的傳統(tǒng)診斷方法所帶來的效率低下、誤診、漏診等問題也不容忽視。 因而,利用計算機(jī)技術(shù)輔助眼底診斷,進(jìn)行眼底健康篩查十分必要。
糖尿病(Diabetes Mellitus,DM)和眼底病變的發(fā)生存在一定的關(guān)聯(lián)性,由胰島素分泌缺陷或者胰島素作用障礙造成的糖尿病會給患者帶來血糖升高,血管性改變等后果[2]。 在全球范圍內(nèi),糖尿病引發(fā)的眼底視網(wǎng)膜病變(Diabetic retinopathy,DR)是致盲的首要因素,是許多國家成年人失明的最主要病因之一[2-4]。
深度學(xué)習(xí)[5-10](Deep Learning) 是機(jī)器學(xué)習(xí)(Machine Learning)方法中的一種。 深度學(xué)習(xí)在眼科上的應(yīng)用目前取得了很多成果。 Gulshan 等人[11]在2016年就利用Inception-v3 結(jié)構(gòu)將深度學(xué)習(xí)技術(shù)應(yīng)用在糖尿病眼底視網(wǎng)膜病變的診斷上,且實(shí)驗結(jié)果十分成功;Muhammad 等人[12]設(shè)計了一種基于Alexnet 網(wǎng)絡(luò)與隨機(jī)森林方法混合的深度學(xué)習(xí)方法(HDLM),基于OCT 眼底圖像對52 名青光眼患者眼底圖像進(jìn)行是否為青光眼的診斷;Felix 等人[13]設(shè)計的神經(jīng)網(wǎng)絡(luò)與隨機(jī)神經(jīng)結(jié)合的模型,對年齡相關(guān)性黃斑病變進(jìn)行12 個等級的分類。
本文利用全局信息對整個眼底圖像進(jìn)行特征提取,隨后進(jìn)行分類。 其創(chuàng)新點(diǎn)在于,提出了一種針對眼底視網(wǎng)膜圖像的多疾病多標(biāo)簽分類的解決方案;針對視網(wǎng)膜圖像中多種疾病的多標(biāo)簽分類,提出了構(gòu)建多分支模型多任務(wù)學(xué)習(xí)的解決方法;為增強(qiáng)模型對病灶學(xué)習(xí)能力,引入了注意力機(jī)制來提高疾病分類的精度;采用多模型融合技術(shù),對不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)進(jìn)行融合以提升模型效果。
本文所用數(shù)據(jù)集來源于2019年北京大學(xué)“智慧之眼” 國際眼底圖像智能識別競賽(Peking University International Competition on Ocular Disease Intelligent Recognition,ODIR-2019),由北京上工醫(yī)信科技有限公司提供。 數(shù)據(jù)來源于在上工醫(yī)信合作醫(yī)院及醫(yī)療機(jī)構(gòu)進(jìn)行眼健康檢查的患者,數(shù)據(jù)提供了3500 組結(jié)構(gòu)化脫敏信息作為訓(xùn)練集。 以下簡稱數(shù)據(jù)集為ODIR。
從醫(yī)學(xué)角度上分析病灶特征,正常眼眼底圖像中血管清晰,包括小血管在內(nèi)的多個血管走行方向明確,視盤呈正常淡紅色。 無絮狀物或結(jié)節(jié)狀物體出現(xiàn)。 而糖尿病視網(wǎng)膜病變的眼底圖像上可能會存在微動脈瘤(Microaneurysms,MA),軟性滲出(Soft Exudates,SE),硬性滲出(Hard exudates,EX)以及出血(Hemorrhages,HE)等癥狀。 微動脈瘤是由于毛細(xì)血管壁局部變薄而膨脹引起的,他們被認(rèn)為是糖尿病視網(wǎng)膜病變發(fā)生時最早可見的體征。 滲出是由于毛細(xì)血管內(nèi)血漿的滲漏,再根據(jù)顏色及邊界是否明顯區(qū)分為硬性或軟性滲出。 淺層的出血通常呈火焰狀,在視網(wǎng)膜深層的血管破裂將導(dǎo)致斑點(diǎn)狀圓形病灶[14]。
1.2.1 實(shí)驗環(huán)境
本文提出了新的眼底視網(wǎng)膜圖像病變檢測分類方法,并進(jìn)行優(yōu)化。 本實(shí)驗設(shè)計多組對比實(shí)驗,先確定了整體的分類器模型構(gòu)建思路: 選擇以Resnet50[7]為主干網(wǎng)絡(luò),在此基礎(chǔ)上對結(jié)構(gòu)進(jìn)行修改,結(jié)合特征融合技術(shù)并采用多任務(wù)學(xué)習(xí)得到基準(zhǔn)模型。
通過設(shè)計多組對比實(shí)驗,實(shí)驗環(huán)境配置表如表1 所示,所設(shè)計的深度學(xué)習(xí)方法實(shí)現(xiàn)是基于Pytorch1.1.0 以及torchvision0.3.0 框架。
表1 實(shí)驗環(huán)境配置
1.2.2 評價指標(biāo)
本實(shí)驗利用留出法進(jìn)行模型選擇和評估,選擇所有數(shù)據(jù)中的90%左右為訓(xùn)練數(shù)據(jù),10%為測試數(shù)據(jù)。 本實(shí)驗為多標(biāo)簽分類問題,輸入示例可以由多個標(biāo)簽進(jìn)行標(biāo)記且不互斥。 采用的評價策略分為兩個部分,首先是對于所有類別評估模型整體的準(zhǔn)確率(accuracy,acc)、基于標(biāo)簽的評價指標(biāo)(f1-score)、受試者工作特征曲線下面積(Area of receiver operating characteristic curve,AUC)以及杰卡德指數(shù)(Jaccard Index);其次,針對每個類別,進(jìn)行acc、f1-score、AUC、查準(zhǔn)率、敏感性(Sensitivity)以及特異性(specificity)的評估。 通過綜合指標(biāo)的考量,更為全面地判斷模型性能好壞。 上述指標(biāo)大多借助混淆矩陣得分統(tǒng)計,如表2 所示。
表2 混淆矩陣分析
準(zhǔn)確率表示所有被預(yù)測正確的數(shù)據(jù)比例,計算公式為:
查準(zhǔn)率(precision)表示預(yù)測值為正例時預(yù)測正確的比例,計算公式為:
敏感性表示真實(shí)值為正例的情況下,預(yù)測正確的比例,計算公式為:
特異性(Specifity)表示預(yù)測值為負(fù)例的情況下,預(yù)測正確的比例,計算公式為:
F1-score 事實(shí)上是查準(zhǔn)率和敏感性的調(diào)和平均數(shù)Fβ的一種特殊情況,來評估樣本不平衡情況下的模型總體表現(xiàn)。 其計算公式為:
分類過程中按照不同閾值設(shè)定,可得到一系列的橫坐標(biāo)為假陽性率(false positive rate,F(xiàn)PR)和縱坐標(biāo)為真陽性率(true positive rate)即敏感性數(shù)值對,并按照假正例率進(jìn)行排序。 然后將閾值設(shè)為最大值,那么所有的樣本均為負(fù)例,再按照排列順序?qū)㈤撝翟O(shè)為每個預(yù)測值,可繪制得到曲線。 該曲線為受試者工作特征(Receiver Operating Characteristic,ROC)曲線。 該曲線右下方面積為AUC,AUC 越大表示性能越佳。
Jaccard 指標(biāo)是預(yù)測值和真實(shí)值都為正例占預(yù)測為正例或者真實(shí)值為正例的比例,其所代表的含義是比較兩個樣本之間的差異程度,Jaccard 指數(shù)越大,說明差異性越小。 假設(shè)標(biāo)簽集合為T,預(yù)測結(jié)果為P,計算公式可以表示為:
1.2.3 特征融合與多任務(wù)學(xué)習(xí)
本實(shí)驗中包含兩組對比實(shí)驗,分別為:
①用于選擇輸入模式,驗證本實(shí)驗中對輸入進(jìn)行特征融合是必要的。 ②不同的輸出策略對結(jié)果的影響,設(shè)計適用于本實(shí)驗的多任務(wù)學(xué)習(xí)方案。
同一位患者的左右眼存在一定相關(guān)性,從而進(jìn)行猜想:訓(xùn)練模型同時參考左眼和右眼圖像信息將提高實(shí)驗結(jié)果。 為驗證該猜想設(shè)計如下實(shí)驗:
對ODIR 信息標(biāo)簽表中“Left-Diagnostic Keywords”和“Right-Diagnostic Keywords”采用正則匹配手段,依照關(guān)鍵詞信息,提取并生成相應(yīng)的左眼和右眼各個疾病的單眼級別的標(biāo)簽(image label)。 在預(yù)測的時候,根據(jù)同一患者的ID 選擇出左右眼,然后利用訓(xùn)練好的模型分別針對其左眼和右眼進(jìn)行預(yù)測,然后對雙眼結(jié)果進(jìn)行融合得到最終診斷結(jié)果。在預(yù)測診斷階段,綜合左眼和右眼結(jié)果進(jìn)行融合,并整合成診斷意見,指出患者是否存在相應(yīng)眼底疾病。
采用信息標(biāo)簽表中已有數(shù)據(jù)(雙眼各疾病類別標(biāo)簽)。 相應(yīng)采取的訓(xùn)練策略是先將左眼和右眼分別讀入,然后將雙眼圖像做拼接處理后輸入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。 輸出結(jié)果即為患者診斷信息。
最終訓(xùn)練集和驗證集中各類別數(shù)據(jù)分布如表3所示,其中訓(xùn)練集為9417 張,驗證集為290 張。 其中,N 表示正常眼,D 表示糖尿病視網(wǎng)膜病變,G 表示青光眼,C 表示白內(nèi)障,A 表示年齡相關(guān)性黃斑病變,H 表示高血壓,M 表示近視。 在訓(xùn)練策略上,設(shè)置初始學(xué)習(xí)率為3×10-4,每8 次迭代完成后學(xué)習(xí)率衰減為原來的0.6;批量大小表示網(wǎng)絡(luò)每一次輸入的樣例個數(shù),本實(shí)驗中設(shè)置為10。 實(shí)驗所采用的優(yōu)化器是SGD,動量設(shè)置為0.9,網(wǎng)絡(luò)損失函數(shù)采用二元交叉熵。
表3 訓(xùn)練集與驗證集各類別數(shù)量及比例統(tǒng)計
如表4 所示,雙眼級別多任務(wù)學(xué)習(xí)除AUC 指標(biāo)外,在其他指標(biāo)上均比單眼突出,驗證了雙眼級別預(yù)測模型效果比單眼級別效果更好。 在特異性、敏感性、查準(zhǔn)率和F1-score 上,雙眼級別模型結(jié)果比單眼級別更優(yōu)。
表4 基于單/雙眼級別不同輸出分支模型結(jié)果統(tǒng)計
單眼與雙眼級別多分支情況下每個類別的分類情況評價指標(biāo)對比如圖1 所示。 從準(zhǔn)確度來講對于正常眼(N)以及糖尿病視網(wǎng)膜病變(D)的分類效果最差。
圖1 單眼或雙眼級別多任務(wù)學(xué)習(xí)模型每個類別評價指標(biāo)對比
實(shí)驗2 中,同樣參數(shù)條件下,對比雙眼級別多任務(wù)學(xué)習(xí)模型及其分類效果。 分析loss 曲線及ROC曲線,如圖2,雙眼級別單分支模型未能成功收斂,效果十分不理想。 由此,模型訓(xùn)練結(jié)構(gòu)為多眼級別多分支結(jié)構(gòu)。
圖2 雙眼級別單分支模型訓(xùn)練
最終在迭代了總共32 次后,模型最佳結(jié)果各項指標(biāo)如表5,將其定義為基準(zhǔn)模型Resnet50_M(jìn)。
表5 Resnet50_M(jìn) 模型整體評估指標(biāo)
針對當(dāng)前所獲得的基準(zhǔn)模型Resnet50_M(jìn),進(jìn)一步調(diào)整參數(shù)來優(yōu)化,設(shè)計了以下方案:
①更改學(xué)習(xí)率衰減策略,將訓(xùn)練得到模型記為new_lr 觀察Resnet50_M(jìn) 模型loss 下降曲線。 僅調(diào)整學(xué)習(xí)率衰減策略,即始終保持3×10-4不變,Resnet50_M(jìn)模型訓(xùn)練時其他超參數(shù)設(shè)置均不改變,重新訓(xùn)練模型。
②更改loss 函數(shù)為Focal Loss,將訓(xùn)練得到模型命名為focal_loss。 與方案(1)中其余超參數(shù)保持一致,進(jìn)行訓(xùn)練,并且設(shè)置Focal Loss 中γ=1,α=1。
如表6,重新訓(xùn)練后,new_lr 模型的準(zhǔn)確率、AUC、F1-score、Jaccard 有所提升。 但是再進(jìn)一步采用Focal_Loss 方案后,部分指標(biāo)略微有些下降。
表6 Resnet50_M(jìn)/new_lr/focal_loss 模型評估指標(biāo)
從單個類別的多項評估指標(biāo)來看,如圖3 所示,new_lr 以及focal_loss 效果均比Resnet50_M(jìn) 優(yōu)良。new_lr 以及focal_loss 模型查準(zhǔn)率較優(yōu),表明模型正樣本預(yù)測的準(zhǔn)確率較高,也代表對正樣本的“過濾能力”較佳。 對于不同類別在敏感性評估前三種模型各有所長。 使用Focal Loss 時,效果略微下降。
圖3 Resnet50_M(jìn)/new_lr/focal_loss 在單類別中評估指標(biāo)
本實(shí)驗中,將SE 模塊添加至Resnet50 結(jié)構(gòu)中,記為SE_Resnet50_M(jìn),并嘗試更換zuiho 新的主干網(wǎng)絡(luò)為Xception 及孿生網(wǎng)絡(luò)。 訓(xùn)練數(shù)據(jù)集預(yù)處理方式都與其他設(shè)置與new_lr 模型基本相同,但由于內(nèi)存有限,batch size 只能設(shè)為8。 將學(xué)習(xí)率初始化為3×10-4,每迭代32 次后衰減為原來的0.2,即在loss下降較為平穩(wěn)時候,主動調(diào)整學(xué)習(xí)率繼續(xù)訓(xùn)練。
由表7 可以發(fā)現(xiàn),SE-Resnet50_M(jìn) 使模型整體效果提升較大。 acc 和Jaccard 指數(shù)大幅度提升。 但Xception_M(jìn) 模型中,acc 下降較大,更換孿生網(wǎng)絡(luò)后模型未能擬合。
表7 Resnet50_M(jìn)/SE-Resnet50_M(jìn)/Xception_M(jìn)評估指標(biāo)
從圖4 看,SE_Resnet50_M(jìn) 在高血壓(H)上的查準(zhǔn)率、敏感性和f1-score 中出現(xiàn)了0 值,這說明高血壓類別較難正確分類。
圖4 Resnet50_M(jìn)/SE-Resnet50_M(jìn)/Xception_M(jìn) 在單類別中評估指標(biāo)
將Resnet50_M(jìn) 與SE_Resnet50_M(jìn) 使用加權(quán)平均法實(shí)現(xiàn)模型融合,如表8 所示,其中,α表示Resnet50_M(jìn)的權(quán)重,γ表示SE_Resnet50_M(jìn) 的權(quán)重,兩個模型在不同的權(quán)重比例下,得到結(jié)果為表8。
表8 不同權(quán)重比例下模型評估指標(biāo)
因此,在α=0.5,γ=0.5 時候,模型融合效果為最佳。 對比基準(zhǔn)網(wǎng)絡(luò)Resnet50_M(jìn),最終結(jié)果在其基礎(chǔ)上有所提升。
從單個類別的結(jié)果來看,最終得到結(jié)果如表9所示。 從準(zhǔn)確度acc 來看,正常眼(N)和糖尿病(D)預(yù)測結(jié)果最差。 在本實(shí)驗中,AUC 考慮了閾值變動情況,為二分類中最常用,評估價值最高的指標(biāo)。Gulshan 等利用Inception-v3 結(jié)構(gòu)在兩個數(shù)據(jù)集上分別進(jìn)行驗證得到的AUC 分別為0.991 和0.990。
表9 多模型融合后單個類別下模型評估指標(biāo)
本實(shí)驗針對左右眼之間的相關(guān)性,提出了一種左右眼拼接的特征融合方法;針對視網(wǎng)膜圖像中的多種疾病多標(biāo)簽分類,提出了利用多任務(wù)學(xué)習(xí)構(gòu)建多分支模型的解決方法;為增強(qiáng)模型對病灶學(xué)習(xí)能力,引入了注意力機(jī)制來提高對疾病分類的精度;采用多模型融合技術(shù),對不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)進(jìn)行融合提升模型效果。
在確定模型架構(gòu)為“雙眼級別輸入-網(wǎng)絡(luò)-多分支輸出”的情況下,進(jìn)行參數(shù)優(yōu)化,得到基準(zhǔn)模型Resnet50_M(jìn)。 在對比實(shí)驗中,發(fā)現(xiàn)注意力機(jī)制有利于特征的學(xué)習(xí),并且準(zhǔn)確率大幅度提升。 利用多模型融合技術(shù),綜合考量Resnet50_M(jìn) 與SE_Resnet50_M(jìn) 模型預(yù)測結(jié)果,準(zhǔn)確率提升了21.17%達(dá)到0.7103,AUC 提升了10.07%達(dá)到0.9458,F(xiàn)1-score 提高了4.620%達(dá)到0.9261,Jaccard 指數(shù)提高了36.94%達(dá)到0.6042。