程小輝,李賀軍,鄧 昀,陶小梅,黎辛曉
(1.桂林理工大學信息科學與工程學院,廣西桂林 541006;2.廣西嵌入式技術與智能系統(tǒng)重點實驗室,廣西桂林 541006)
糖尿病視網膜病變(Diabetic Retinopathy,DR)是一種病發(fā)率和致盲率都很高的糖尿病并發(fā)癥[1],近年來成為造成視力模糊甚至失明的主要原因之一。糖尿病視網膜病變的主要病理特征有微動脈瘤、出血點、軟性滲出物以及硬性滲出物[2]。根據眼底圖像病變的類型和程度,DR可分為5個階段:無(DR0)、輕度(DR1)、中度(DR2)、重度(DR3)和增生性(DR4)。通常,DR的早期階段癥狀不明顯,患者往往會忽視DR早期對自身的影響而錯過最佳的治療時間。目前,糖尿病視網膜病變的診斷需要專業(yè)的眼科醫(yī)生根據自身的診斷經驗來判斷,由于糖尿病視網膜圖像中不同等級之間的差異性很小,再加上專業(yè)眼科醫(yī)生就診經驗的不同,可能會出現誤診、漏診等情況[3,4]。利用深度學習來提高DR模型分類準確性和診斷效率對預防糖尿病視網膜病變有重大意義[5]。深度卷積神經網絡(Convolutional Neural Network,CNN)對圖像的特征提取和學習能力突出,被廣泛應用在醫(yī)學圖像處理領域,特別是在視網膜圖像分類、分割和目標檢測任務中表現出色[6-8]。Gulshan等[9]利用Inception-v3模型框架并采用12多萬張?zhí)悄虿∫暰W膜眼底圖像來檢測病變,由于數據量比較充分以及眼科專家對眼底圖像的篩選,該模型取得了良好的效果。李瓊等[10]在AlexNet網絡的基礎上,在每一個卷積層后緊跟一個批量歸一化層來加深網絡,用于視網膜圖像的特征提取,訓練時采用遷移學習的策略,該模型具有較好的魯棒性和泛化性。Sharma等[11]提出一種深度CNN架構來對非糖尿病視網膜病變和糖尿病視網膜病變眼底圖像進行分類,具有較好的效果。丁蓬莉等[12]提出一種密集型CompactNet網絡模型,該模型使用AlexNet的淺層結構參數,由于缺少標記的視網膜眼底圖像,模型在訓練過程中提取特征信息不足,導致分類準確率不高。Zhou等[13]利用多模塊結構對高分辨率的眼底圖片進行學習,訓練時以分類和回歸的方法對標簽進行預測,最后利用EyePacs數據集對模型有效性進行測試,并取得了不錯的效果。但是該模型僅適合像素較高的眼底圖片,對于分辨率較低的圖像無法保證其精度。鄭婷月等[14]采用編碼器-解碼器對稱全卷積結構,該結構將高層語義信息與低層特征信息進行特征融合,并利用空洞卷積構建多尺度空間金字塔結構,同時引入殘差結構塊進一步提取圖像特征信息,獲得了較好的分類準確率。近年來,基于深度學習的方法對DR等級進行分類取得了一定的進步。然而,在糖尿病視網膜病變過程中,病理圖像質量差異大且不同DR等級圖像之間相似度較高,增加了DR分類模型在無標記病變區(qū)域條件下自動精確分類的難度[15]。不同的眼底圖片在顏色和紋理方面一致性較高,在模型訓練過程中容易混淆,導致模型難以對類別特征作出精確判斷。除此之外,眼底數據集的高度不平衡性也嚴重制約著模型的分類性能。如何設計合理高效的深度模型實現高精度的識別分類,進而推動深度學習在醫(yī)學圖像中的可靠應用成為關鍵的一環(huán)。為了更加充分地提取圖像特征信息,增加模型對微病灶點的學習能力,本研究提出一種基于集成MobileNetV2和EfficientNetB0深度模型的注意力網絡(ME-ANet)進行細粒度學習分類,旨在進一步強化深度模型對DR病變特征的學習,提高模型的準確率和魯棒性。
算法的工作流程主要分為數據處理、模型訓練和模型性能評估3個階段。在數據處理階段,主要包括數據預處理和數據擴增兩個步驟,解決原始數據集中類別分布不均衡的問題,對預處理后的眼底圖像按照一定的比例進行劃分,將擴增后數據集劃分為訓練集、驗證集和測試集,比例為8∶1∶1。模型訓練階段采用ME-ANet集成網絡,將眼底圖像尺度大小固定為224×224×3作為網絡的輸入層數據。為了提高模型的收斂速度,模型訓練時采用遷移學習的方式對集成模型頭部進行權重初始化,最后輸出使用softmax分類器完成DR五分類預測任務;在模型性能評估階段,利用訓練好的模型進行測試集的分類,計算相應的評價指標并作對比分析,對模型進行評價總結。DR分類系統(tǒng)的工作流程如圖1所示。
圖1 DR分類系統(tǒng)流程圖Fig.1 Flowchart of DR classification
為了強化學習眼底病變圖像中的病灶特征,提高模型的分類精度,本研究采用集成的方式,將輕量化的深度模型架構MobileNetV2與高效神經網絡EfficientNetB0部分結構集成組合為特征提取主干,并將其命名為ME特征提取主干。MobileNetV2是由一系列具有線性瓶頸層的倒殘差結構(Inverted residual)堆疊而成。模型利用倒殘差結構代替?zhèn)鹘y(tǒng)卷積順序疊加的方式,該結構采用先升維再降維的信息處理方式,另外,深度可分離卷積替換傳統(tǒng)卷積,大大減少了模型的參數。捷徑分支位于兩端較窄的瓶頸層之間,中間部分采用輕量級的深度卷積來提取數據特征,卷積過程中均使用ReLU6激活函數。為了減少非線性激活函數對壓縮通道特征信息的丟失,維持網絡的特征表達能力,在最后的卷積操作后使用線性激活函數Linear進行激活。具有線性瓶頸層的殘差結構Bottleneck如圖2所示,帶跳躍連接的殘差結構為優(yōu)化后的結構,均采用1×1卷積對通道進行升維和降維處理。在模型訓練過程中,由于跳躍連接的存在,深層的梯度更容易傳回至淺層,該結構避免了深度網絡反向參數更新引起的梯度彌散問題。
圖2 Bottleneck殘差塊Fig.2 Bottleneck residual block
當利用深度模型對處理完成后的糖尿病視網膜圖像進行訓練時,增大模型的深度往往能夠提取到更加豐富的特征,但網絡深度過深容易出現梯度消失,導致模型訓練失敗。增加網絡的寬度、增加特征圖的通道數雖然可以獲得更高細粒度的特征信息,但寬度過大且深度較淺的模型很難學習到深層次的語義特征。高分辨率的圖像輸入雖然可以使模型學習到更加細粒度的信息,能夠擴大網絡的感受進而提升網絡性能,但是會增大模型的計算量。EfficientNetB0采用自適應算法平衡模型深度、寬度和分辨率三者之間的比例關系,通過比例系數對模型進行3個維度的自適應縮放,合理優(yōu)化網絡結構。模型核心結構為移動翻轉瓶頸卷積(Mobile Inverted Bottleneck Convolution,MBConv)模塊(圖3)。輸入特征首先經過第一次1×1卷積和深度卷積(之后都進行BN和Swish激活操作),需要注意的是,第一次卷積是為了擴展通道維度,擴展比例設置為n,當n=1時,不進行通道擴展,直接進行k×k的深度卷積操作。接著將輸出特征輸入到SE注意力模塊結構中,再通過卷積(第二次1×1卷積之后只進行BN操作)進行降維,調整輸出通道維度使之與輸入通道維度相等。最后進行隨機失活處理,同時在輸入和輸出之間設置捷徑分支,該結構有利于模型融合更多的特征信息,而只有當輸入MBConv結構的特征矩陣與輸出的特征矩陣形狀相同時才有捷徑分支的存在。
圖3 MBConv模塊Fig.3 MBConv block
圖像分類、圖像分割和目標檢測任務中,SE注意力模塊效果顯著。該模塊由一個全局平均池化(Global Average Pooling,GAP)、兩個全連接層構成。第一個全連接層的輸出通道數是輸入該MBConv特征矩陣channels的1/4,且使用Swish激活函數;第二個全連接層的節(jié)點個數等于深度卷積層輸出的特征矩陣通道數,且使用Sigmoid激活函數。假設一個輸入特征H×W×C,首先通過全局平局池化和全連接層將其拉伸為一個1×1×C的特征向量,然后與原始圖像相乘,對通道特征重新加權計算,從而學習更多目標特征信息。
在深度學習醫(yī)學圖像領域,缺乏大型公開的數據集成為醫(yī)療圖像處理中的難題之一。在缺少訓練樣本的情況下,容易導致模型在訓練過程中產生過擬合甚至出現不收斂狀態(tài),導致訓練出的模型魯棒性較差。
為了解決視網膜圖像數據量少、模型訓練困難等問題,除了對數據進行擴增處理外,采用遷移學習的方式加載模型相應層的預訓練權重參數有利于模型性能的提升。由于淺層卷積能夠學習到更加豐富的低層語義信息,本研究將加載MobileNetV2和EfficientNetB0已經在ImageNet數據集上訓練好的模型參數,在訓練過程中,凍結淺層模型參數,僅保留相關卷積層,將輸入圖像的特征信息和相應的標簽作為輸入,通過計算預測標簽與真實標簽之間的誤差,自動調整網絡參數。
在糖尿病視網膜病變分類任務中,微小的病灶點如滲出物和微動脈瘤等類別之間差異較小,造成視網膜不同類別之間差異非常細微,模型難以準確識別相似度較高的病變圖像,為提高模型分類精度,需要模型具備更加細粒度分類能力,引入更加細粒度分類實現視網膜病變的分級。對于細粒度的分類來說,如何使模型學習到有效的目標特征成為決定細粒度分類模型性能的關鍵。
在注意力機制中,通道注意力機制通過學習通道注意權重,判別每個特征通道的重要程度同時抑制信息量較小的通道,而空間注意力機制通過學習空間注意權重說明每個空間位置的重要性,與通道注意力機制形成互補機制?;诖耍狙芯吭O計全局注意力機制(Global Attention Mechanism,GAM)模塊來學習目標病灶特征。GAM模塊由通道注意力和空間注意力模塊組成,采用平均池化單分支結構。全局平均池化(GAP)可以實現圖像通道特征的壓縮,對輸入特征圖的空間變化具有較強的魯棒性。但是,僅考慮建模評估特征圖中每個通道之間的重要性過于簡單,無法準確學習特征之間的長依賴關系。由于空間位置信息決定生成空間選擇性注意力圖,在計算機視覺任務中,這些空間位置信息往往更有利于模型捕獲學習目標特征。故重新設計注意力機制,具體使用平均池化對圖像通道和空間特征信息進行轉換處理,具體結構如圖4所示。
圖4 全局注意力機制Fig.4 Global attention mechanism
注意力網絡將集成模型輸出的融合特征FGAM-IN∈RH×W×C作為輸入,利用公式(1)計算生成通道注意力特征圖FCA-OUT∈RH×W×C。
FCA-OUT=(σ(Conv2(GAP(FGAM-IN))))?FGAM-IN,
(1)
式中,σ(·)表示sigmoid激活函數,將變量值映射到[0,1]區(qū)間;Conv2表示兩個卷積核大小為1×1的卷積層;GAP(·)為全局平均池化操作,即在通道維度上進行全局平均池化;?表示特征同位元素對應相乘。
利用公式(2)計算GAM的輸出特征FSA-Feature∈RH×W×1,即空間注意力特征圖。
FSA-Feature=FCA-OUT?
σ((C_GAP(FCA-OUT))),
(2)
式中,C_GAP(·)為空間維度平均池化操作,σ(·)為sigmoid激活操作??臻g注意力結構簡化為單鏈路,針對模型的原始特征輸入,只采用平均池化操作,更好地維護了圖像的空間信息,有利于對空間注意力權值的學習,同時指出每個空間位置的重要性。
在特征提取主干網由MobileNetV2的核心結構Bottleneck和EfficientNetB0的核心結合MBConv卷積結構進行相應的集成操作,其中的MBConv6表示其卷積擴展比例設置為6。具體的頭部集成模型ME-Head結構如圖5所示,其中頭部訓練時采用遷移學習的方式加載與訓練權重進行特征提取,提高模型的收斂時間。頭部集成模型中,輸入尺度為224×224×3,首先將圖像進行一步卷積操作,轉化為MBConv和Bottleneck結構所需要的輸入維度112×112×32。然后分別選擇兩種基本模型核心結構的前兩層,即對應3組MBConv和Bottleneck結構,進行Concat特征融合操作,將兩部分的輸出特征進行通道疊加,豐富通道特征信息,融合特征尺度為56×56×48。最后再進行一次卷積運算,調整輸出特征的通道維數,得到輸入到下一個集成模塊的特征圖,尺度為56×56×24。
圖5 頭部集成模型ME-Head結構Fig.5 Head integrated model ME-Head structure
在深度學習中,通常采用加深網絡深度來獲取醫(yī)學圖像中的深層次語義特征,而忽略模型對淺層特征的學習。為解決網絡模型加深帶來的淺層網絡學習特征學習不充分問題,本研究設計ME-ANet模型(圖6)。除了特征提取頭部集成外,設計模型主干3個階段特征集成方案,實現充分學習不同尺度特征的效果,集成模塊的Bottleneck和MBConv6結構的疊加層數分別設為3,4,3層。集成模型頭部的輸入尺度為56×56×24,輸入到模型集成的第一個階段,經過下采樣后分別得到兩個28×28×40的特征向量,然后使用通道融合技術進行Concat處理得到特征向量FConcat_1∈R28×28×80,該特征輸出至GAM模塊、第二階段的Bottleneck和MBConv 3個模塊中,特征圖輸入到GAM模塊中,從通道和空間兩個維度對網絡權重更新進行訓練優(yōu)化,其中得到注意力特征圖FGAM_1∈R28×28×80。依次類推,可得到FConcat_2∈R14×14×160、FGAM_2∈R14×14×160、FConcat_3∈R7×7×384、FGAM_3∈R7×7×384,輸出的3個階段的注意力特征分別代表圖像的淺層紋理特征、中間層過渡特征和深度語義特征。將3個階段輸出的注意力特征圖進行多尺度特征融合操作,得到最后的特征輸出FFinal∈R7×7×384。然后通過全局平均池化代替?zhèn)鹘y(tǒng)的全連接層,將特征提取網絡學習到的深度特征映射到樣本標記空間,不僅減少了參數的數量,還可以減輕模型過擬合的問題。最后采用softmax函數完成多分類任務。
圖6 ME-ANet模型Fig.6 ME-ANet model
實驗所用的數據集來源于數據建模和數據分析競賽平臺Kaggle中的比賽Diabetic Retinopathy Detection。數據集包含35 126張由專業(yè)眼科醫(yī)生診斷為不同嚴重程度的高分辨率視網膜圖片。眼科專家根據糖尿病引發(fā)的視網膜病變程度的不同,將其分為5個等級(圖7),分別為DR0、DR1、DR2、DR3和DR4,分別對應正常、輕度、中度、重度和增殖性。
圖7 糖尿病視網膜病變圖像Fig.7 Diabetic retinopathy images
由于數據集來源和成像設備不同,圖像質量差別較大,存在圖像尺寸及顏色差異、曝光過度、噪點較多等現象。為了提高眼底圖片的質量,對原始圖像進行降噪和歸一化處理十分必要。同時為了適應模型訓練,對分辨率大小進行統(tǒng)一操作,使用OpenCV對視網膜圖像進行預處理,具體步驟如下:首先處理原始圖像的邊框信息,如圖8(a)所示;去除多余黑色背景區(qū)域,去除冗余特征噪聲,如圖8(b)所示;使用OpenCV圖像處理庫中的resize()方法統(tǒng)一數據集分辨率為224×224像素,即進行尺寸歸一化處理,具體如圖8(c)所示;縮放后的圖像邊緣被裁剪,為了得到與圖像主體類似的輪廓,本研究以在圖像中心點畫圓的方式處理裁剪后的圖像,處理結果如圖8(d)所示;同時為了減少亮度條件不一致因素的影響,利用高斯濾波對圖像進行亮度、對比度等均衡化操作,具體公式如下:
Ii(x,y;σ)=α(I(x,y)-G(x,y;σ)*I(x,y))+β,
(3)
式中,G(x,y;σ)為高斯平滑函數;σ代表標準差,用來提高圖像的對比度;β代表強度,像素值分布在[0-255]。當α=4,σ=256/30,β=128時,圖像處理效果如圖8(e)所示。
圖8 數據預處理對比圖Fig.8 Comparison chart of data preprocessing
糖尿病視網膜眼底圖像5個等級對應的原始圖像和預處理后生成的圖像如圖9所示。
圖9 5種眼底圖片處理前后對比圖Fig.9 Comparison of 5 kinds of fundus images before and after processing
視網膜數據量較小且各病變類別分布極不平衡,如果數據不進行均衡化處理,就容易導致模型出現過擬合現象。在深度學習中,通常采用Dropout隨機失活和增加訓練數據集來解決過擬合問題。數據集中每種類別數據數量如表1所示,健康的眼底圖片占總數據集的70%以上。為了保證模型數據量的大致相等,提高模型的泛化能力。利用數據增強擴增訓練數據是解決模型過擬合問題最直接有效的做法。
表1 Kaggle數據集分布情況Table 1 Distribution situation of Kaggle dataset
在深度學習中,數據的增強可以分為離線增強和在線增強兩種方式。離線增強就是事先處理好需要進行訓練的數據,然后存儲在本地,模型訓練時自動加載預處理過的數據,但這種方式效率比較低,且不是實時增強。本研究采用實時數據增強的方式,通過keras框架提供的ImageDataGenerator()圖片生成器進行實時數據增強,生成模型訓練時所設定的batch_size大小的張量圖像,且可以循環(huán)迭代,主要采用隨機拉伸、旋轉圖像、隨機水平和垂直翻轉、比例縮放、隨機水平和垂直移動等方法來增加樣本數量。圖10展示了本研究訓練過程中圖像隨機增強效果。
圖10 實時隨機增強效果圖Fig.10 Real-time random enhancement renderings
本研究深度學習框架為Tensorflow2.0版本,采用Python3編程語言進行模型框架的搭建,在GPU型號為NVIDIA RTX 2080Ti、16 G顯存的Ubuntu16.04操作系統(tǒng),CUDA10.0,cudnn7.6.0的服務器上進行訓練調試。將預處理后的各類數據以8∶1∶1的比例進行劃分,模型輸入尺寸調整為224×224像素,訓練過程中使用Adam優(yōu)化器進行參數調優(yōu),初始學習率設為0.000 05,Loss計算過程中采用交叉熵(Cross Entropy,CE)損失函數,損失函數的權重衰減因子設為0.1,batch_size設置為32,一共訓練30個epochs。
本研究通過分類準確率(Accuracy)、特異性(Specificity)、靈敏度(Sensitivity)和二次加權Kappa(Quadratic Weighted Kappa,QWK)系數對模型分類效果進行評估。評價指標定義如式(4)-(6)所示。
(4)
(5)
(6)
式中,統(tǒng)計定義真陽性(TP)、假陽性(FP)、真陰性(TN)和假陰性(FN)4個指標。其中,當輸入正常眼底圖像時,模型分類為正常則為真陽性,分類為非正常則為假陽性;當輸入非正常眼底圖像時,模型分類為非正常則為真陰性,分類為正常則為假陰性。
Kappa系數是統(tǒng)計學中度量一致性的指標,對于分類問題,一致性檢驗就是考察模型預測結果和實際分類結果是否一致[13]。本研究采用二次加權Kappa (QWK)系數作為評估指標。QWK系數被設計用于衡量兩個評分者在具有序列等級的標簽上是否具有一致性,并且已經被應用在糖尿病視網膜病變等級分類中。QWK系數的數學表達式如下:
(7)
為了驗證所提出的模型集成的特征提取主干分類的有效性,實驗采用相同的數據集對特征提取網絡分別為MobileNetV2、EfficientNetB0以及兩者之間的集成模型ME-Net進行訓練。ME-Net僅僅是將兩模型按照圖6的集成方式構建,只是缺少了GAM模塊結構。實驗采用遷移學習訓練策略,模型加載預訓練權值,結果如表2所示。將模型融合后作為主干網絡,優(yōu)于單個基礎模型,評價指標均高于單個模型,表明提出的模型集成融合策略有助于提高模型的性能。
為了探究本研究所提出的GAM模塊的分類效果,分別以MobileNetV2、EfficientNetB0和ME-Net作為基本的特征提取器,并加載初始化預訓練權重,將3個模型的特征輸出最終輸入到一個GAM模塊中,分析模型效果。如表3所示,總體來看,相較于表2中的數據,加入該注意力模塊后,除了特異性外,在分類準確率、靈敏度和Kappa值上均有所提升,特別是在ME-Net主干下,Kappa值提升了近3個百分點,說明所提出的GAM模塊更適合于直接與主干網絡結合進行分類任務。
表2 主干模型訓練結果Table 2 Results of backbone model training
表3 加入注意力機制模型性能對比Table 3 Performance comparison of models adding attention mechanism
為進一步探究本研究所設計的集成ME-ANet模型的分類效果以及頭部遷移學習策略對模型性能的影響,再次設計一組對照實驗,對ME-ANet模型進行訓練時,將頭部集成模型ME-Head結構加載預訓練權重和未加載預訓練權重作對比,實驗結果如表4所示。
表4 ME-ANet模型訓練策略性能對比Table 4 Performance comparison of ME-ANet model training strategies
由表4分析可知,無論是否采用遷移學習的方式,本研究設計的模型性能指標均達到不錯的效果,頭部集成的遷移訓練策略更進一步提升了模型的性能。其中Kappa值超過0.92,表明模型的訓練和預測的一致性較高,模型預測穩(wěn)定性較好。
從模型遷移訓練過程中的準確率和損失變化曲線可以看出,模型并沒有發(fā)生過擬合現象,模型在前5個epoch訓練中準確率很快突破了0.85,損失率降到了0.35左右。之后模型很快收斂,準確率穩(wěn)定在0.94左右(圖11)。
圖11 模型遷移訓練和驗證過程中準確率和損失率變化曲線Fig.11 Accuracy and loss rate curve in model transfer training and validation
最后,為了評估本研究分類模型ME-ANet的分類性能,使用相同的數據集和實驗訓練參數與近年來經典的方法進行實驗對比,本研究模型的準確率和二次加權Kappa系數均達到了最大值,且特異性和靈敏度均超過0.9(表5),進一步表明,本研究的模型分類達到了不錯的效果。
表5 模型方法對比Table 5 Comparison of model method
本研究提出一種基于模型集成的注意力網絡ME-ANet,用于糖尿病視網膜病變分類。利用Kaggle數據集進行模型訓練,為解決數據不充分及分布不平衡的問題,本研究采用數據預處理及數據擴增等方式做均衡處理。采用模型融合構成主干特征提取器,并基于頭部遷移學習的方式訓練模型,以充分提取淺層特征信息。改進設計全局注意力機制,優(yōu)化模型提取微病灶特征信息,強化眼底細粒度圖像病變之間的差異性,抑制無關信息,使網絡更好地學習到DR病變類型之間的細微差異。本研究提出的方法提高了DR模型分類的精確度。
在DR分類中,對于質量較差的原始圖像沒有進行剔除,導致在數據實時擴增階段產生較多的無用特征數據,影響模型的效率和精度,后續(xù)的任務就是研究一套完整的視網膜圖像質量評估方法,將著重注意提高數據集的質量。同時,探討研究更適合圖像差異小的樣本(如視網膜圖像)的注意力機制,進一步提高模型的分類性能。