?

基于改進SegNet的眼底圖像血管分割

2020-11-17 06:55孟嫻靜呂曉琪
計算機工程與設計 2020年11期
關鍵詞:解碼器解碼像素

孟嫻靜,李 菁+,呂曉琪,2,3,谷 宇,3

(1.內蒙古科技大學 信息工程學院 模式識別與智能圖像處理重點實驗室,內蒙古 包頭 014010; 2.內蒙古工業大學 信息工程學院,內蒙古 呼和浩特 010051; 3.上海大學 計算機工程與科學學院,上海 200444)

0 引 言

眼底圖像中血管的不同形態(如直徑、長度、分支、曲折等)具有醫學診斷價值,可以用于心腦血管疾病和眼科疾病的檢測、評估以及治療階段。利用計算機輔助從眼底圖像中分割出血管是眼底圖像分析的第一步,然而,由于眼底血管復雜的分支結構、嘈雜的背景和不同光照的差異,難度很大。

基于是否需要帶人工標記的訓練集,眼底血管分割方法可大致分為兩類:無監督方法和監督方法。無監督方法不使用人工標記圖像,工作量較小,但分割效果依賴于人工選取特征,準確率較低。Na等[1]提出了基于超像素的線操作器以區分線和邊緣來分割眼底血管。Lazar等[2]提出了一種區域生長法結合相鄰像素的響應矢量相似性的分割方法。監督方法以人工分割的標準圖像作為訓練集,并結合血管的特點,訓練得到最后的分類器,往往能取得不錯的效果。Soomro等[3]設計了一個完全卷積神經網絡,并對其進行訓練以提取血管。Dasgupta等[4]使用了卷積神經網絡和結構化預測相結合的方法分割血管。Zhang等[5]提出了用具有殘余連接的U-Net來進行血管分割的方法。

本文使用監督方法進行圖像像素到像素的分割,基于SegNet網絡,提出一種編碼-多次解碼的BVSNet,并設計出具有不同感受野的編碼塊、解碼塊結構,構建出不同的網絡模型,通過大量實驗訓練得到具有最佳分割效果的網絡。

1 方 法

1.1 SegNet

卷積神經網絡(convolutional neural networks,CNN)在圖像分割領域有著廣泛的應用[6]。Long等[7]提出了完全卷積網絡(fully convolutional networks),使用卷積層代替全連接層進行圖像分割,自此,使用CNN進行圖像分割逐漸成為熱點。常用的CNN圖像分割模型遵循如圖1中SegNet[8]的編碼器-解碼器網絡結構。

圖1 SegNet網絡結構

SegNet是一個包括編碼器(Encoder)和解碼器(Decoder)的對稱分割網絡。編碼器使用VGG網絡的前13層,包括數個卷積層、BN層、ReLU和池化層;每個編碼器層對應一個解碼器層,解碼器對特征圖進行上采樣。SegNet的重點在于解碼器對其較低分辨率的輸入特征圖進行上采樣的方式。

由于SegNet適合訓練尺寸較大的圖像(360×480像素),并不適用于本實驗的小尺寸圖像,因此需要將SegNet進行改進。

1.2 血管分割網絡blood vessel segmentation network (BVSNet)

本文基于SegNet構建一種編碼-多次解碼的血管分割網絡BVSNet(blood vessel segmentation network),BVSNet的結構如圖2所示。

圖2 BVSNet結構

BVSNet是編碼-多次解碼的架構。編碼結構有一條路徑,對應多條解碼路徑,并在最后把所有的解碼路徑連接起來,輸出最終分割結果。圖2中的卷積塊(ConvBlock)包括3×3的卷積層(Conv 3×3)、批歸一化層(BN)、修正線性單元(ReLU),并設置了隨機失活(Dropout)。BVSNet編碼部分由卷積塊、池化層(MaxPooling 2×2)組成,卷積塊通過卷積操作對圖像進行特征學習,池化層對圖像進行尺寸減半的操作。池化操作可以增加視野,產生分辨率更低、較抽象的特征圖,但是會造成空間信息、邊界細節信息丟失。因此,在解碼部分使用了多次解碼,目的在于恢復在編碼中降低分辨率時丟失的信息。

BVSNet的解碼網絡由卷積塊、上采樣層(UpSampling 2×2)構成。上采樣對圖像進行尺寸翻倍。解碼階段共有4條上采樣路徑,對編碼階段每次池化后的圖像分別進行上采樣,恢復成原尺寸。最終對所有解碼路徑獲得的特征信息進行合并。BVSNet在輸出時,使用2通道的1×1卷積層,并設置激活函數為softmax,產生一個二路輸出,對應背景像素和血管像素的概率。BVSNet的優化算法是隨機梯度下降法(stochastic gradient descent,SGD)。

1.3 編碼塊、解碼塊的設計

根據實驗數據特征以及感受野的大小,BVSNet設計了不同的編碼塊、解碼塊結構。

在CNN中,感受野是每一層輸出的特征圖上的像素點在對應輸入圖上的大小。設置卷積核是3×3,stride=1,padding=0,圖像經過一次卷積,輸出圖像每個像素點的感受野是3×3,如圖3(a)所示。兩次卷積后輸出圖像像素點對應的輸入圖像的感受野是5×5,如圖3(b)所示。3次卷積后輸出像素點對應的感受野就是7×7,如圖3(c)所示。

圖3 不同層數卷積的感受野大小

從圖2的BVSNet網絡結構中,提取如圖4(b)中的編碼塊結構,則編碼器可以被看作是4個編碼塊的疊加,每個編碼塊由若干個卷積塊和池化層組成。如圖4所示,在編碼塊(b)的基礎上,減少或增加一個卷積塊就得到了編碼塊(a)、(c)。同樣,把解碼器看作4個解碼塊的疊加,每個解碼塊由若干個卷積塊和上采樣層組成,如圖5所示,其中圖5(a)是BVSNet中的解碼塊結構。在解碼塊(a)的基礎上,增加一個或兩個卷積塊就得到了解碼塊(b)、(c)。一層卷積塊圖4(a)、圖5(a)對應3×3感受野,兩層卷積塊圖4(b)、圖5(b)對應5×5感受野,三層卷積塊圖4(c)、圖5(c)對應7×7感受野。

圖4 編碼塊結構

圖5 解碼塊結構

1.4 網絡優化方法

CNN在訓練數據不夠多或者訓練過度時,經常會出現過擬合的現象,訓練集上的誤差逐漸減小,但在驗證集上的誤差卻逐漸增大。為了防止訓練過擬合,采用如下方法:

(1)隨機失活(Dropout)。Dropout的方法是:當圖像經過某層卷積的時候,使卷積上的一部分神經元暫時失活,讓另一部分神經元進行卷積運算。Dropout使網絡訓練數據量減少,同時也減少了過擬合的可能性。

(2)數據集擴增(Data Augmentation)。眼底數據庫圖像特點:數量少,圖像尺寸大,且血管形態是不斷重復的圖案。根據這些特點,BVSNet采用隨機截取圖像的方式擴增數據。如圖6所示,截取時有重疊部分。每張原始圖像擴增為10 000張64×64像素的圖像塊,訓練集擴增為20萬張。

圖6 截取圖像方式的數據擴增方法

2 實 驗

本文實驗是基于Tensorflow+Keras的深度學習框架。實驗硬件配置為Docker集群,CPU:Intel Xeon E5-2698 v4 2.2 GHz(20-core),GPUs:NVIDIA Tesla V100,訓練時使用其中一塊32 G的GPU,并使用CuDNN加速;軟件環境為Ubuntu OS。

2.1 數據集

實驗使用的數據庫是公開眼底數據庫DRIVE(digital retinal images for vessel extraction)以及STARE(structured analysis of the retina)[1]。

DRIVE由佳能CR5 3CCD相機拍攝的40幅圖像組成,包括20幅訓練集圖像和20幅測試集圖像,圖像尺寸為768×584像素。在訓練時,訓練集用來訓練網絡權重;測試集用來測試BVSNet的分割準確度。

STARE中有20幅用于血管分割的視網膜圖像,其中10幅為訓練集圖像,10幅為測試集圖像,圖像尺寸均為605×700像素。

2.2 預處理

眼底彩色圖像對比度、亮度、模糊程度都會對血管的分割產生影響。預處理可以在一定程度上排除這些信息的干擾,提高血管分割的準確性。實驗采用以下幾種預處理方法:

(1)提取圖像的綠色通道分量。綠色通道在照片中的血管對比度最高,最容易辨識,因此選取眼底彩色圖像的綠色分量進行訓練。

(2)歸一化處理。歸一化是將RGB圖像0-255的值歸一化,轉換到0-1之間,作用是保證所有維度上的數據都在一個變化幅度上。

(3)直方圖均衡化(histogram equalization,HE)。HE是將一幅圖像的直方圖分布變成近似均勻分布,從而增強圖像的對比度。

2.3 實驗設計及實驗結果分析

BVSNet首先把圖像數據進行數據擴增,將圖像切割成64×64像素的圖像塊,這些圖像塊最終將拼成原尺寸圖像。實驗結果采用準確率(accuracy,Acc)、敏感性(sensitivity,Sen)、特異性(specificity,Spe)和接受者操作特性曲線線下面積AUC這4個常用血管分割指標來對BVSNet的性能進行評估,4個指標的值越大,說明分割效果越好。

實驗1是使用DRIVE數據庫來確定最佳的BVSNet結構。把編碼塊、解碼塊單獨分離出來,按不同方式組合編碼塊、解碼塊,就可以得到4種可用的網絡模型:Model1、Model2、Model3以及BVSNet。圖7展示了不同的編碼塊+解碼塊組合的網絡結構。

圖7 Model1、Model2、Model3的網絡結構

表1顯示了實驗1不同網絡模型的分割性能結果。從4個指標結果得出Model1的準確率(Acc)最差,但特異性(Spe)最好。BVSNet的準確率(Acc)、敏感性(Sen)和AUC數值最高,在4組實驗模型中結果最好。

表1 不同編碼器結構+解碼器結構的結果對比

圖8是上述各網絡模型的分割結果,圖8(a)、圖8(b)分別是DRIVE測試圖像的灰度圖像以及相應的Ground Truth,右側4列分別是4種網絡模型對應的分割結果。如圖8所示,Model1的分割結果最差,圖8(c)中視盤區域的血管沒有分割出來;Model2結果好于Model1,但圖8(d)中仍有血管邊緣缺失情況;Model3和BVSNet都取得了相對更好的結果。BVSNet的細節分割得更加細致,分割效果最好。

圖8 實驗1中各模型的分割結果

Model1中編碼器與解碼器都用了三層卷積塊(7×7感受野),特征圖像相對于7×7的感受野而言,尺寸過小,網絡學習到的信息不足,直接導致分割效果不佳。BVSNet和Model2、Model3對比得出,解碼器中使用一層卷積塊(3×3感受野)比使用兩層卷積塊(5×5感受野)的分割效果好;編碼器中兩層卷積塊比一層的分割效果好。

圖9是BVSNet的兩組分割結果。如圖所示,圖9(a)是原圖,圖9(b)是經過預處理后的灰度圖像,圖9(c)是Ground Truth,圖9(d)顯示BVSNet的最終分割結果圖??梢钥闯?,大部分血管都可以準確分割出來,只有部分細小血管仍有未分割出來。

圖9 BVSNet分割結果

實驗2是一組在相同的實驗環境下在DRIVE數據庫上訓練、測試的對比實驗,其結果見表2。首先將BVSNet模型與原始SegNet模型進行對比,接著選取當前分割效果較好的U-Net模型進行對比,表2中BVSNet的4種指標的數值都有提高。實驗結果表明改進的方法在眼底血管分割上優于SegNet和U-Net。

表2 BVSNet與SegNet、U-Net分割結果對比

表3對比了在數據庫DRIVE和STARE上BVSNet方法與其它眼底血管分割方法(包括無監督方法和有監督方法)的分割性能。DRIVE數據庫上,無監督方法中,區域生長[2]、B-cosfire濾波[10]、Frangi濾波器[11]等方法準確率都在93%以上;有監督方法中,基于全卷積神經網絡[4]以及回聲狀態網絡[12]準確率到達94%以上。本文算法在準確率、特異性以及AUC上均高于其它算法。STARE數據庫上,區域生長[2]的方法敏感性高于BVSNet,但其它3項指標均低于BVSNet;Frangi濾波器[12]的方法4項指標均低于BVSNet。結果表明,BVSNet方法同樣適用于其它眼底圖像數據庫,具有良好的魯棒性。

表3 DRIVE、STARE數據庫上不同眼底血管分割方法性能比較

3 結束語

本文提出了BVSNet來對眼底圖像進行血管分割。首先,對數據集進行預處理,再將圖像切分成小尺寸圖像塊。對SegNet進行了改進,通過編碼-多次解碼的方式,進行圖像像素-到像素的分割。然后,研究了具有不同感受野的編碼塊、解碼塊對分割效果的影響,實驗結果表明,編碼器使用兩層卷積塊、解碼器使用一層卷積塊分割效果最好。最后,將BVSNet與其它方法在DRIVE、STARE數據庫上的分割結果進行對比,BVSNet在準確率(Acc)、特異性(Spe)和AUC高于其它分割網絡,表明本分割方法準確率高。

BVSNet可以精準地完成從眼底圖像中分割出血管的任務,比傳統分割方法更準確、效果更好,能夠為基于眼底圖像的疾病篩查如:青光眼、視網膜靜脈堵塞、白內障等提供技術支持;同時可以應用于糖尿病視網膜病變、心腦血管疾病的診斷,具有臨床應用價值。BVSNet的方法適用于少量圖像的數據集進行訓練,在其它圖像分割上也有一定的適用性。文中方法為以后深度學習方法的研究提供了新思路。

猜你喜歡
解碼器解碼像素
《解碼萬噸站》
像素前線之“幻影”2000
科學解碼器(一)
科學解碼器(二)
科學解碼器(三)
線圣AudioQuest 發布第三代Dragonfly Cobalt藍蜻蜓解碼器
解碼eUCP2.0
“像素”仙人掌
NAD C368解碼/放大器一體機
Quad(國都)Vena解碼/放大器一體機
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合