楊 丹, 劉國如, 任夢成, 裴宏楊
(1.東北大學 信息科學與工程學院, 遼寧 沈陽 110819; 2.東北大學 遼寧省紅外光電材料及微納器件重點實驗室, 遼寧 沈陽 110819; 3.東北大學 智能工業數據解析與優化教育部重點實驗室, 遼寧 沈陽 110819)
視網膜血管的結構形態變化與糖尿病、青光眼、黃斑病變等有著密切的聯系.采用計算機視覺的手段對原始視網膜血管形態進行分割具有十分重要的意義.
目前,視網膜血管分割根據是否需要標簽主要分為有監督和無監督兩種.無監督的方法是利用視網膜血管的結構特征等先驗知識,然后通過常用的匹配濾波法、血管跟蹤以及形態學處理等方法來進行分割.匹配濾波法是使用2維卷積核對視網膜圖像進行卷積,通過濾波器得到的響應值來判斷像素點是背景區域還是血管區域,雖然在健康清晰的眼底視網膜血管圖片上可以取得較好的分割效果,但是對患者的病理圖片分割時假陽性的概率會偏大[1].血管追蹤的方法是采用局部信息來分割兩點間的血管[2],借助局部區域中的種子點檢測血管,通過灰度強度和彎曲度的大小來確定血管縱向截面的中心,這樣可以準確地計算出血管寬度,但基本上不能對沒有種子點的血管進行檢測.形態學處理的方法是使用形變模型[3]和血管輪廓模型[4]等顯式的血管模型來提取眼底視網膜血管特征圖像的.Fraz等[5]采用視網膜血管中心線檢測和圖像形態學變換的方法對視網膜血管結構進行分割.Espona等[6]使用蛇模型算法對眼底視網膜血管進行分割,并在該模型中引入了圖像形態學操作以及對能量參數的調整.該模型的設計是基于血管中心線,利用形態學方法對視網膜血管分割進行輔助.
相比于無監督的方法,有監督方法首先對視網膜特征進行選擇提取,然后以人工標記的Label圖像對分類器進行訓練,最后生成相應的分類模型對視網膜血管進行分割.特征提取通常采用Gabor變換、離散小波變換、血管濾波、高斯濾波等方法.分類階段時,大部分采用k-近鄰算法、支持向量機算法和人工神經網絡[7]作為分類器.Staal等[8]提出一種基于脊線的有監督模型對視網膜血管進行自動分割.該方法采用順序前向選擇算法得到脊線上像素點的最佳特征值,然后使用k-近鄰算法對每個像素點進行分類.Ricci等[9]提出了將線操作與支持向量機算法相結合的視網膜血管分割方法.該方法使用兩個正交檢測器與像素的灰度值相結合的方式對特征圖像進行提取,然后應用支持向量機算法完成像素的分類.Wilfred等[10]采用了多隱藏層人工神經網絡的結構對視網膜血管結構進行分割.實驗表明該方法在DRIVE數據集上的準確率達到了較好的效果.
近年來,深度學習在目標檢測[11]、圖像識別[12]等計算機視覺領域取得了很大突破,因此現在越來越多的研究人員采用深度學習的方法進行眼底視網膜血管分割.Ronneberger等[13]提出了一種用于生物醫學圖像分割的U-Net模型,該模型采用多級跳躍連接和編解碼器結構提高了像素定位和提取局部特征的能力.Zhuang[14]提出了一種可以被看作多重U-Net的LadderNet模型用于視網膜血管分割,該模型有多對編碼器-解碼器支路,且每層每對相鄰的解碼器和解碼器支路之間都有跳躍連接.Wang等[15]提出了一種基于patch學習策略的Dense U-Net視網膜血管分割框架.該框架采用隨機抽取、隨機變換的策略提取擴充patch,并利用重疊patch進行圖像重建.Jin等[16]利用血管的局部特征以端到端的形式提出了一種可變形的視網膜血管分割網絡DUNet,該網絡將帶有提高輸出分辨率的上采樣操作用于提取上下文信息,并通過結合低級特征和高級特征來實現精確定位.
盡管上述方法在視網膜血管分割領域已經取得了較好的結果,但對于微小血管和對比度較差圖像的分割仍需繼續改善.本文提出一種多尺度卷積核U-Net[13]視網膜血管分割方法.實驗中首先通過對圖像進行旋轉、平移等操作擴充數據集;然后采用CLAHE算法提升圖像的對比度;最后,使用處理好的圖像對本文設計的多尺度卷積核U-Net模型進行訓練.經過測試,可以發現本文提出的視網膜分割方法在靈敏性、特異性和準確率方面有著較好的表現,能夠更好地分割微細血管.
本文提出的多尺度卷積核U-Net卷積神經網絡的視網膜血管分割方法可分為兩個階段,分別為訓練階段和測試階段.訓練階段可分為5個步驟:
1) 選用視網膜血管公開數據集DRIVE的20張圖像作為訓練數據集,通過旋轉、鏡像、平移以及剪切的方法對數據集進行擴充;
2) 采用CLAHE算法對擴充后的數據集進行圖像預處理;
3) 使用處理好的數據集對本文設計的多尺度卷積核U-Net卷積神經網絡模型進行訓練;
4) 對訓練得到的雙通道特征圖進行Softmax歸一化;
5) 通過改進的損失函數對歸一化結果進行迭代優化,得到完整的視網膜血管分割模型.
測試階段時,首先對測試圖像進行預處理;然后將處理過的圖像送入訓練好的多尺度卷積核U-Net網絡模型進行特征提取,并對提取到的特征圖歸一化操作;最后確定閾值進行分割,得到的黑白輪廓圖即為結果圖像.流程示意圖如圖1所示.

圖1 實驗流程示意圖
1) 總體設計.本實驗中所提出的多尺度卷積核U-Net卷積神經網絡模型由編碼器和解碼器兩部分組成,主要結構如圖2所示.編碼器部分采用改進的Inception卷積網絡結構,從圖像中提取空間特征.這個模塊采用不同尺寸的卷積內核,可以提高網絡的泛化能力和表現力.編碼器部分重復應用了兩個Inception結構和一個用于向下采樣的最大池化操作,其中每個卷積后面都有批量歸一化BN層和激活函數層,池化核的大小為2×2,步長為2,重復的次數是4.在下采樣的每一步中,都將特征通道的數量增加一倍.另一方面,根據編碼器獲得的特征利用解碼器構造分割圖.它包括應用2×2轉置卷積將特征通道數減少一半的上采樣操作,并在其中引入了最大值池化索引參數,可以準確地保存目標特征的位置信息.此外,解碼器部分還涉及兩個3×3卷積,每個卷積后面都有一個與編碼器相同的BN層和激活函數,并且在編碼器路徑上生成的每一組特征映射都被連接到解碼器路徑上的對應特征映射.在最后一層,使用 1×1 大小的卷積生成一個與原始圖像大小相同的雙通道特征圖.

圖2 多尺度卷積核的U-Net模型結構
2) 編碼器結構設計.本實驗編碼階段采用的設計思想為將原始U-Net模型的3×3卷積操作替換為改進的Inception結構.這個結構可以追溯到GoogleNet[17],它是用來解決在制作更深層次網絡過程中增加的高計算成本問題.其體系結構通過增加網絡的深度和寬度,同時保持計算預算不變,從而提高了網絡中計算資源的利用率.將不同大小的濾波器應用于同一層,對不同尺度的信息進行處理,然后將同一層進行聚合,在下一階段中可以同時提取出不同尺度的特征.
本設計中,Inception結構保留了U-Net模型中的3×3卷積核,加入了一個1×1,兩個3×3大小的卷積核,其中后者相當于經典Inception結構中采用的一個5×5大小的卷積核[18].因為這兩種方案所得到的特征圖像上每個像素點的感受野大小是完全相同的,而兩個3×3卷積核串聯所需要的參數相比于5×5的卷積核少,從而在模型訓練的過程中減少了計算量,實現模型訓練效率的提升.具體的Inception模塊的設計如圖3所示.

圖3 Inception卷積模塊
首先對前層特征圖像進行3組不同的卷積操作,得到3組具有不同感受野的特征圖,然后將其在最后一層進行拼接,得到后層特征圖像.
3) 解碼器結構設計.這部分的設計思想為在原始U-Net模型的上采樣階段融入最大值池化索引參數.這項操作源于SegNet模型,它是Badrinarayanan等[19]提出的一種端到端的卷積神經網絡模型,可以實現圖像像素級別的語義分割.
如圖4所示,a,b,c,d分別表示2×2區域內的最大值,在池化的過程中會保存它們的位置信息,在上采樣的過程中將在對應的位置上直接保留運算之后的值,在沒有位置信息的地方采用補0的方式進行填充.通過最大索引上采樣的方式可以獲得淺層網絡中特征圖的邊緣和紋理信息,深度網絡可以學習圖像的語義信息.而且這個結構具有一個更大的接受域,實現了低層信息和高層信息的融合,使網絡具有更豐富的特征學習能力.此外,這種結構不會顯著增加計算復雜度和模型復雜度,允許梯度在網絡中有效傳播.

圖4 最大值池化索引結構
在設計的解碼器結構中,如圖5所示,通過反卷積、最大值索引上采樣以及淺層輪廓信息復制這三種方式所得到的特征圖,大小一致,通道數一致,在最后一個維度上進行拼接,得到后層的輸入數據.最后再經過兩層3×3卷積操作,使模型可以充分學習融合后的細節特征,提升網絡的整體識別效率.

圖5 上采樣模塊
4) 激活函數層設計.卷積操作之后加入的激活函數,可以將非線性的特性引入到神經網絡中,讓模型可以擬合出更加復雜的函數.本文采用的是leaky ReLU函數,其表達式為

(1)
其中ε是一個很小的常數,這樣就可以使得輸入小于0時也有一個小的梯度,解決了ReLU函數梯度死亡的問題.
實驗中采用Softmax進一步操作,將網絡結構輸出的結果歸一化到0~1之間的一個數值.這樣,每個像素點輸出的兩個值均為介于0~1之間的數,且和為1,因此這兩個值的大小表示了該像素點屬于背景或者血管結構的概率.
設定閾值為θ,當經過Softmax后的值大于θ時則該值轉為1,將該像素點分類為血管像素;反之小于θ時則該值轉為0,將其分類為背景像素.本實驗中,θ為0.5.因此,最終的結果數據為只包含0或者1的二值圖像.取輸出通道中第一個通道的結果,輸出的黑白圖像就是最終分割后的結果圖像.
本文設計損失函數時采用Dice損失與交叉熵損失結合的方式進行設計.并且為解決因樣本量較少出現的擬合不足問題,在交叉熵損失函數中加入了代價敏感矩陣.總體的損失函數表示為

(2)
式中:D(·)表示Dice損失函數;W,b表示模型中需要訓練的參數;x表示模型的輸入值;y表示樣本的標簽值;p為模型的預測值;y(k)表示第k個樣本的標簽值;p(k)為第k個模型的預測值;m表示樣本總數目;α為Dice與交叉熵損失之間的權重系數,實驗中可使用BP算法對目標函數J(W,b,x,y)反向鏈式求解關于W和b的偏導數得到,取值在0~1之間.其中,交叉熵損失函數Lce的公式為
Lce=-∑ABC.
(3)

在神經網絡模型中W的值越大過擬合現象越嚴重,因此在式(2)中加入L2正則化,可表示為
(4)
其中,λ表示正則化系數.該方法可以明顯加快網絡的收斂速度.經過一定次數的迭代,分割結果更接近真實值,網絡模型參數收斂到最優值.
DRIVE數據集中的眼底視網膜血管圖像來自荷蘭Niemeijer’s團隊的糖尿病性視網膜病變篩查項目[8].篩查對象為400多名年齡在25到90歲之間的糖尿病患者.數據集總共有40張眼底圖像照片,由佳能CR53相機拍攝,以JPEG的形式壓縮和保存,圖片像素大小為565×584.數據集被人工隨機分成訓練集、測試集兩個部分,每部分有20張眼底視網膜圖像.有兩組醫學專家對測試集中的視網膜血管進行了手工標注分割,在一組專家的分割結果中,血管像素占總像素的12.7%,稱為集合A;在另一組專家的分割結果中,血管像素占總像素的12.3%,稱為集合B.本文選用集合A中專家的標注作為參考標準.
考慮到訓練集的數量太少,模型容易過度擬合,以至于分類性能較差.因此,需要進行數據擴充.本文采用的擴充方法分別為旋轉、鏡像、平移以及剪切等方法.具體步驟:首先對每張圖像間隔30°旋轉一次,然后進行鏡像翻轉操作,接著是分別向4個角平移20到50個像素點,最后對每張平移后的圖像進行4次隨機裁剪,共得到17 280張512×512大小的圖像塊.
視網膜血管的原始圖像對比度低,血管特征不明顯.為了提高模型的性能,本文采用圖像對比度增強技術進行圖像預處理.通過實驗發現彩色視網膜圖像的綠色通道血管與背景對比度最高.因此,預處理的第一步提取原始圖像的綠色通道,第二步使用CLAHE算法[20]進行圖像對比度提升,其原理為通過限制局部直方圖高度來限制局部對比度增強幅度,從而限制噪聲放大以及局部對比度的過度增強.處理過程中先將原圖劃分為若干個子塊,對每個子塊直方圖設定閾值進行裁剪、均衡處理,然后對每一個像素點采用插值法進行灰度值重構.結果如圖6所示.
可以看出,通過CLAHE算法處理后的圖像對比度得到明顯加強,原本大量聚集在0到10之間的像素值分布到更大的范圍內.
經過預處理后的圖像作為多尺度卷積核的U-Net 卷積神經網絡的輸入,進行模型的訓練.
本實驗的硬件環境為型號i7-6700k處理器,16 GB的內存,使用型號為RTX2070S的GPU加速圖像處理,卷積神經網絡在TensorFlow1.4的開源深度學習框架下實現,使用Python編程語言,使用的編譯器為Pycharm,另外還使用Numpy科學計算庫、OpenCV中的圖像處理的一些方法以及sklearn機器學習中的一些庫.
在模型的訓練過程中利用隨機梯度下降優化算法對網絡進行迭代求解.訓練輪數設置為100,批大小取20,每個訓練輪數可以完成訓練集中所有的數據的學習.初始學習率被設置為0.001,每20個訓練輪數學習率變為當前的0.1倍,直到模型最終迭代完100個訓練輪數時訓練停止.學習率公式為
Ir=lr,s×0.1(f(n/N)).
(5)
式中:lr,s為初始化學習率,取值為0.001;n為當前迭代次數;N為學習率下降周期,取值為17 280;f為向下取整函數.最終算法運行的時間為60 h左右.

圖6 CLAHE處理后的結果對比圖
本實驗采用了3個評價指標來進行分析,其中S為靈敏性,衡量準確檢測的屬于血管像素的數量占真實血管像素數量的比率;T為特異性,衡量準確檢測的屬于非血管像素的數量占真實非血管像素數量的比率;A為準確率,衡量準確分類的像素數量占圖像中總像素數量的比率.公式為
(6)
(7)
(8)
式中:PTP為真正例數,表示樣本真實為正例,預測值也為正例;PTN為真負例數,表示樣本真實為負例,預測值也為負例;PFP為假正例數,表示樣本真實為負例,預測值為正例;PFN為假負例數,表示樣本真實為正例,預測值為負例.在本文的模型中正例為血管像素,負例為背景像素.
為了驗證模型的有效性,將視網膜血管分割結果與U-Net模型進行了比較.考慮到實驗的嚴謹性,實驗中U-Net模型的訓練采用了相同的訓練圖像、數據擴充和預處理的方法以及環境配置.圖7為本文所提模型與U-Net模型對測試集中第1張視網膜圖像的分割結果,其中第二排和第三排的圖像是第一排的局部細節.可以看出,U-Net模型在微細血管的位置,所得結果存在分裂;密集的地方,所得結果存在錯誤識別的問題,如圓圈標識位置所示,錯誤地將背景像素檢測為血管像素了.而采用本文所設計的模型則基本沒有上述問題.這表明雖然U-Net模型可以檢測到大多數視網膜血管,但微血管和密集血管的檢測效果很差,本文提出的模型則具有較好的分類性能和探測更小血管的能力.因此,該模型在視網膜血管分割上的性能優于U-Net模型.圖8展示了對測試集的全部分割結果.
為了進一步證明所提方法視網膜血管分割的性能,與其他幾種現存方法進行了定量分析,表1中列出了2014~2020年的幾種使用圖像語義分割類的方法對DRIVE數據集中視網膜血管圖像進行分割的評估指標對比.可以看出,本文方法的靈敏度為0.776 2,特異性為0.983 5,準確率為0.969 4;相比于U-Net,DeepVessel,Res-UNet和專家手工分割的結果(Human observer)在各項評價指標上均取得了更進一步的效果.而且,本文所提方法的特異性和準確率更是在表中排在首位,靈敏性方面可以與Deep FCN和R2U-Net相媲美,但分別低于DRIU 0.049 9,LadderNet 0.009 4,Dense U-Net 0.022 4,和DUNet 0.020 1.其中DRIU由于分割得到的圖像含有大量的噪聲,分割后的血管比真實的血管更粗,一些背景像元也被檢測為血管像元,因此靈敏度高,特異度低.而本文模型利用Inception結構在多尺度下更充分地提取深層特征,接受域更大,可以很好地分割病理區域微細血管.除此,圖像預處理、最大值上采樣和加入了敏感矩陣的損失函數也做出了重要貢獻.其余三種方法雖然在靈敏性的檢測上相比本文取得了較好的結果,但是在視網膜血管分割方法性能的分析中,本文方法測得的較高準確率與之相比更有說服力,這證明了所提方法可以更好地對背景像素和血管像素進行分類,在DRIVE數據集上有較強的魯棒性,相比現存其他方法具有一定的競爭力.

圖7 本文所提模型與U-Net模型在測試集的分割結果對比

圖8 對測試集圖像的全部分割結果

表1 與其他方法在DRIVE上結果對比
本文提出了多尺度卷積核U-Net模型的視網膜血管分割方法.結合Inception模塊設計出多尺度卷積核的特征提取結構,對不同寬度血管結構進行特征學習;在上采樣過程中,融入了最大池化索引值,將深層語義特征、淺層輪廓特征以及采樣圖位置特征進行融合,增加了模型對視網膜血管特征的學習能力;在損失函數上,采用了將Dice損失和交叉熵損失結合并加入代價矩陣的方法,改善了圖像中血管結構像素點數量與背景像素點數量不均衡的問題.并以靈敏性、特異性和準確率為評價指標在DRIVE數據集上進行了測試.結果表明,本文所提方法能獲得比專家更好的分割結果,在這些評估指標上與其他現存方法相比是有競爭力的,具有應用于疾病早期診斷的潛力.