谷鵬輝,肖志勇
江南大學(xué) 人工智能與計算機(jī)學(xué)院,江蘇 無錫214122
眼底視網(wǎng)膜血管分割在糖尿病、高血壓、早產(chǎn)兒等眼部相關(guān)疾病的診斷中具有重要作用。然而,傳統(tǒng)的需要專業(yè)醫(yī)生進(jìn)行手工標(biāo)注血管的方法不僅任務(wù)量大,而且耗時且容易出錯。
在過去的幾十年里,為了解決這個問題,許多算法被提了出來,所提算法可以分為兩大類。一類是非監(jiān)督學(xué)習(xí)算法。例如Azzopardi 等人設(shè)計出了BCOSFIRE 濾波器,該濾波器可以對不同方向上的血管主干和末端進(jìn)行精確檢測,尤其對細(xì)小的血管有很好的檢測效果。另一類是監(jiān)督學(xué)習(xí)的算法,利用事先標(biāo)記好的血管點和背景點,再通過構(gòu)造好的模型來學(xué)習(xí)輸入到輸出間的映射關(guān)系,不斷調(diào)整模型。例如Lupascu 等人首先為視網(wǎng)膜圖像中的每個像素點構(gòu)造一個對應(yīng)的特征向量,然后用訓(xùn)練樣本訓(xùn)練了一個AdaBoost 分類器,最后用訓(xùn)練好的分類器將像素點進(jìn)行分類。
近年來,隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,在醫(yī)學(xué)圖像處理領(lǐng)域深度神經(jīng)網(wǎng)絡(luò)也取得了良好的效果。Ronneberger 等人提出了一種具有跳躍連接結(jié)構(gòu)的U-Net,讓解碼層更好地利用編碼層獲得的特征信息;然而U-Net 的跳躍結(jié)構(gòu)并不能有效利用這些結(jié)構(gòu)信息,會影響血管分割的性能。代洋洋等人提出了UU-Net,借鑒了級聯(lián)U-Net 的構(gòu)想,以U-Net 為核心模塊構(gòu)建的U 形網(wǎng)絡(luò),在U-Net 內(nèi)部引入殘差結(jié)構(gòu)代替普通卷積,使得網(wǎng)絡(luò)深度增加,能獲取更多的信息,同時延緩模型訓(xùn)練中的梯度消失;在U-Net 模塊之間對特征圖進(jìn)行Addition 或者Concatenation 操作,構(gòu)建出多條傳遞信息的路徑,每一條傳遞信息的路徑實質(zhì)是一個FCN(fully convolution network)變體。Zhang 等人提出AG-Net,將注意力機(jī)制加入了傳統(tǒng)的指導(dǎo)濾波器形成注意指導(dǎo)濾波器,可以從不同分辨率的特征圖中恢復(fù)空間信息和合并結(jié)構(gòu)信息,去除引入的復(fù)雜背景中的噪聲成分。Liu 等人提出了一種無監(jiān)督集成策略,通過無監(jiān)督集成網(wǎng)絡(luò)將多個基礎(chǔ)網(wǎng)絡(luò)所得到的血管分割結(jié)果融合起來得到更好的分割效果。Li 等人提出IterNet,用標(biāo)準(zhǔn)U-Net 作為一個基礎(chǔ)架構(gòu),然后通過迭代的精簡U-Net 去發(fā)現(xiàn)更多的血管細(xì)節(jié),可以將斷著的血管連接起來。
上述方法能夠有效地分割血管的主要部分,但是不能夠解決由于血管邊界非血管像素部分包含血管像素的一部分而使網(wǎng)絡(luò)誤將其分類為血管的問題。本文提出了一種基于編/解碼模式的眼底血管分割算法。通過在編碼階段使用GCN(global convolutional network)模塊和BR(boundary refinement)模塊替換傳統(tǒng)的卷積操作來解決血管邊界非血管像素誤分為血管的問題;為了改善低對比度下血管分割的效果,本文將文獻(xiàn)[10]中的注意力模塊進(jìn)行了改進(jìn),在跳躍連接部分添加了改進(jìn)后的位置注意模塊(position attention,PA)和通道注意模塊(channel attention,CA);還在編碼部分使用DenseNet,受劉辰等人將ConvLSTM 應(yīng)用在醫(yī)學(xué)圖像分割,并且取得良好性能的啟發(fā),在解碼階段使用ConvLSTM來更好地獲取特征信息,得到更好的分割效果。
由于普通的循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)無法解決長時依賴問題,還可能帶來梯度消失或梯度爆炸問題,為此Hochreiter 等人提出了長短記憶網(wǎng)絡(luò)(long short-term memory,LSTM)。已經(jīng)證明,LSTM 能夠有效解決長序列依賴問題。
傳統(tǒng)的LSTM 在數(shù)據(jù)的處理上能力非常強(qiáng),但是如果時序數(shù)據(jù)是圖像,傳統(tǒng)的LSTM 由于在輸入到端和端到端的轉(zhuǎn)換中使用的是全連接操作,不能夠有效獲取圖像的空間信息。為了解決這個問題,Shi 等人提出了ConvLSTM 模型,用卷積操作來替換全連接操作去實現(xiàn)從輸入到端和端到端的轉(zhuǎn)換。ConvLSTM的定義如下,其中,*表示卷積函數(shù),°表示哈達(dá)瑪函數(shù),是Sigmoid 函數(shù),x是輸入張量、C是記憶張量、h是隱藏張量,b、b、b、b是輸入、遺忘、激活和輸出狀態(tài)的偏置項,W是對應(yīng)于輸入狀態(tài)的權(quán)重矩陣,W是對應(yīng)于隱藏狀態(tài)的權(quán)重矩陣,tanh 是雙曲正切函數(shù)。
在傳統(tǒng)的U-Net 中包含一系列的卷積操作來學(xué)習(xí)不同類型的特征,然而在這樣連續(xù)的卷積操作中會學(xué)習(xí)到一些冗余的特征,為了緩和這個問題,Huang等人提出了DenseNet結(jié)構(gòu)。
DenseNet是受到殘差網(wǎng)絡(luò)(residual network,ResNet)的啟發(fā)而設(shè)計出來的。與殘差網(wǎng)絡(luò)的相同之處在于每一層的輸入與前邊層有關(guān)。主要不同之處是,ResNet 對于每一層,其輸入的特征是之前有限層的輸出。而DenseNet 對于每一層,其輸入的特征是之前所有層的輸出。并且每一層的輸出特征則作為之后所有層的輸入。DenseNet的結(jié)構(gòu)如圖1所示。
圖1 五層的DenseNet模塊Fig.1 Five layers of DenseNet modules
圖1 顯示了一個包含五層,層寬度為=4 的稠密模塊,層與層之間的激勵函數(shù)(即H(·))為BNReLU-Conv(3×3)的結(jié)構(gòu)。第層將它之前-1 層所輸出的特征圖[,,…,x]作為輸入:
其中,~x代表前面層的輸出。
為了同時提升網(wǎng)絡(luò)在視網(wǎng)膜血管分割的定位和分類能力,本文引入了GCN 模塊,其結(jié)構(gòu)如圖2 所示:它使用由1×與×1 和×1 與1×的卷積操作的結(jié)合來代替用×的卷積核進(jìn)行卷積。其中、為圖片寬度和高度,為輸入圖片的通道數(shù),為輸出圖片的通道數(shù)。與普通的×卷積相比,GCN 的計算復(fù)雜度和參數(shù)量只為(2/),得到了縮減。在本實驗中,的值為3,激活函數(shù)為ReLU。
圖2 全局卷積網(wǎng)絡(luò)Fig.2 Global convolutional network
因為血管邊界非血管像素含有部分血管像素,所以網(wǎng)絡(luò)將其誤分為血管像素等現(xiàn)象會使得血管邊界難以識別。為了提升網(wǎng)絡(luò)在血管邊界的分割能力,引入了BR 模塊,其結(jié)構(gòu)如圖3 所示:其中、為輸入圖片的寬度和高度,為輸入圖片的通道數(shù),為所用卷積操作對應(yīng)的卷積核的大小,本文定義*為得到的特征圖*=+(),其中為輸入的特征圖,(·)是一個卷積核為×激活函數(shù)為ReLU 的卷積操作和一個卷積核為×沒有激活函數(shù)的卷積操作。經(jīng)過(·) 得到的特征圖與輸入的特征圖進(jìn)行Add 操作得到最終的特征圖。
圖3 邊界細(xì)化Fig.3 Boundary refinement
本文提出的AtGBU-Net(Attention_GCN_BR_UNet)框架,如圖4 所示。本文算法采用編/解碼模式的網(wǎng)絡(luò)架構(gòu),因為傳統(tǒng)U-Net 的卷積操作不能精確地對血管邊界進(jìn)行分割,并且不能兼顧在眼底血管分割任務(wù)中同時需要的定位和分類能力,所以在編碼部分用GCN+BR 來替換傳統(tǒng)的卷積運算。為了解決在低對比度情況下將血管與背景分隔開,本文采用了兩種方式:一種是對圖像進(jìn)行了預(yù)處理,提高了圖像的對比度并且緩解了中心血管線反射的現(xiàn)象;另外一種是在跳躍連接部分加入了改進(jìn)的自適應(yīng)注意力機(jī)制,將包含更豐富空間信息和語義信息的特征圖結(jié)合起來,從而去除背景中的噪聲部分。為了防止過擬合,在編碼的最后一層采用DenseNet的思想。為了更好地提取特征,在解碼部分加入了ConvLSTM。
圖4 網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Network mechanism
編碼部分主要負(fù)責(zé)對特征圖進(jìn)行特征提取。主要包括四層:前三層的每一層由一個GCN 模塊和BR模塊構(gòu)成;再加上批歸一化層(batch normalization,BN),BN 有助于加快網(wǎng)絡(luò)的訓(xùn)練速度,并且提高模型的訓(xùn)練精度,歸一化的結(jié)果再通過最大池化將特征映射輸出到下一層;最后一層使用DenseNet 模塊,它能夠通過信息的流動性和重復(fù)利用性來提高網(wǎng)絡(luò)的表示能力,而且可以從之前產(chǎn)生的所有特征中受益,使網(wǎng)絡(luò)避免梯度爆炸或者消失的風(fēng)險。在本文中,將兩個連續(xù)的卷積作為一個Dense 塊,Dense 塊的個數(shù)為3,也就是圖4 中的值為3,對上一層的特征映射經(jīng)過3 個Dense 塊,其中每個Dense 塊中的卷積核尺寸為3×3,使用ReLU 作為激活函數(shù),在每經(jīng)過一個Dense 塊后都進(jìn)行一次Dropout 操作。解碼部分主要負(fù)責(zé)對提取后的特征進(jìn)行上采樣。在本文中,將上采樣和對應(yīng)編碼層的特征圖分別執(zhí)行改進(jìn)的PA 和CA 操作,然后進(jìn)行級聯(lián)操作;在級聯(lián)操作后,進(jìn)行一次ConvLSTM 操作和2 個卷積操作;其中ConvLSTM和卷積操作的激活函數(shù)為ReLU,卷積核的尺寸為3×3;經(jīng)過上采樣之后,得到和輸入圖像分辨率相同的特征圖,再經(jīng)過1 個卷積核數(shù)目為2,卷積核尺寸為3×3,激活函數(shù)為ReLU 的卷積操作,和1 個卷積核數(shù)目為1,激活函數(shù)為Sigmoid,卷積核尺寸為1×1 的卷積操作獲得最終的分割結(jié)果,實現(xiàn)端到端的分割。
Fu 等人提出了一種具有自注意機(jī)制的雙注意網(wǎng)絡(luò)(dual attention network,DANet),通過位置注意模塊來學(xué)習(xí)特征的空間相關(guān)性,通過通道注意模塊來學(xué)習(xí)通道相關(guān)性。為了更好地提升眼底血管的分割效果,本文對以上兩個模塊進(jìn)行了改進(jìn),取消模塊的自適應(yīng)機(jī)制,還可以得到包含更多語義信息和空間信息的特征圖,與原始的模塊相比,網(wǎng)絡(luò)的復(fù)雜度也得到了降低。
為了使上采樣獲取的特征圖包含更多的語義信息,本文在進(jìn)行反卷積操作后加入了PA 模塊。與文獻(xiàn)[10]中的PA 不同,本文取消了PA 中的自適應(yīng)操作,PA 模塊結(jié)構(gòu)如圖5 所示,特征圖∈R直接通過Reshape 操作得到∈R和∈R,取消卷積操作;和進(jìn)行矩陣相乘得到包含豐富語義信息的特征圖∈R;將與進(jìn)行矩陣相乘并進(jìn)行Reshape 操作得到∈R;將得到的與直接進(jìn)行Add 操作和BN 操作得到最終的特征圖∈R。
圖5 位置注意模塊Fig.5 Position attention module
為了使對應(yīng)編碼器的特征圖包含更多的空間信息,本文在進(jìn)行跳躍連接前加入了CA 模塊。與文獻(xiàn)[10]中的CA 不同,本文主要采用與提出的CA 類似的操作,其結(jié)構(gòu)如圖6 所示,將特征圖∈R直接通過Reshape操作得到∈R和∈R;和進(jìn)行矩陣相乘得到包含豐富空間信息的特征圖∈R;將與進(jìn)行矩陣相乘得到∈R;將得到的與直接進(jìn)行Add 操作和BN操作得到最終的特征圖∈R。
圖6 通道注意模塊Fig.6 Channel attention module
在DRIVE、CHASE_DB1兩個視網(wǎng)膜眼底血管的公共數(shù)據(jù)集上對本文方法進(jìn)行訓(xùn)練和測試。
DRIVE 數(shù)據(jù)集包括視網(wǎng)膜的40 幅彩色眼底圖像,這些圖像來自荷蘭的一個糖尿病視網(wǎng)膜病變篩查項目,每幅圖像的像素為584×565。本文將40 幅圖像的前20 幅圖像用于訓(xùn)練,其余20 幅圖像用于測試。對數(shù)據(jù)集中的每幅圖像都提供了二值視場mask和GT 圖像。
CHASE_DB1 數(shù)據(jù)集有28 張視網(wǎng)膜彩色圖像,每幅圖像的像素大小為999×960。本文中,前14張圖像用于訓(xùn)練,其余14 張圖像用于測試。對CHASE_DB1中的28 幅圖像都提供了分割的GT 圖像。
由于眼底視網(wǎng)膜數(shù)據(jù)集的數(shù)據(jù)量較少,而深度學(xué)習(xí)需要大量的數(shù)據(jù)集才能有更好的效果,本文對訓(xùn)練集進(jìn)行了數(shù)據(jù)增強(qiáng),包括旋轉(zhuǎn)和鏡像操作。對于DRIVE 數(shù)據(jù)集的20 張訓(xùn)練集圖像和CHASE_DB1 的14 張訓(xùn)練集圖像,擴(kuò)充后,整個訓(xùn)練集分別有1 200張584×565 圖像和1 680 張999×960 圖像,并且對訓(xùn)練集的圖片進(jìn)行了分割,每張圖片都切割為64×64 尺寸的patch塊;最后將DRIVE訓(xùn)練集擴(kuò)充成了120 000張64×64 尺寸的patch 塊,將CHASE_DB1 訓(xùn)練集擴(kuò)充成了168 000 張64×64 尺寸的patch 塊。對于擴(kuò)充后的訓(xùn)練數(shù)據(jù)集,其中80%用于訓(xùn)練,20%用于驗證。測試集圖片只進(jìn)行了圖像預(yù)處理和切片操作,沒有進(jìn)行數(shù)據(jù)增強(qiáng),算法得到的64×64 尺寸的patch 塊再合并成對應(yīng)的圖片。
本文實驗是在Keras2.3.1 下進(jìn)行的。使用he_normal 方法對權(quán)重進(jìn)行初始化,采用二分類交叉熵?fù)p失函數(shù),學(xué)習(xí)率使用Keras 中的回調(diào)函數(shù)ReduceLROnPlateau 來進(jìn)行調(diào)整,通過檢測值的變化幅度來調(diào)整分辨率,本文的檢測值是驗證集損失;采用Adam 優(yōu)化器更新參數(shù);并用Keras 中的回調(diào)函數(shù)ModelCheckpoint 來保存最優(yōu)模型,它的原理是通過判斷一個指標(biāo)來決定是否更新模型參數(shù);本文中取驗證集損失最小的模型;訓(xùn)練與測試的Batchsize 分別取8 和16。
為了評估本文算法的性能,選用敏感性()、準(zhǔn)確性()和1-來評價本文算法的性能,評價指標(biāo)的定義如下:
其中,真陽性(true positive,TP)表示將血管正確分類的像素點數(shù);真陰性(true negative,TN)表示將背景正確分類的像素點數(shù);假陽性(false positive,F(xiàn)P)表示將背景錯誤分類的像素點數(shù);假陰性(false negative,F(xiàn)N)表示將血管錯誤分類的像素點數(shù)。
還通過受試者工作特征(receiver operating characteristic,ROC)曲線來評價。ROC 曲線以真陽性率為縱坐標(biāo),假陽性率為橫坐標(biāo)。(area under ROC curve)面積是ROC 曲線與橫軸之間的面積,的值越接近1 表示模型的分割能力越好。
韓鋮惠等人通過對圖像進(jìn)行預(yù)處理增加前背景對比度,來提高分割性能。由于在采集視網(wǎng)膜圖像的時候會受到光照不均勻等因素的影響,從而造成血管與圖像背景的對比度較低,而且有血管中心線反射等問題,因此本文對眼底視網(wǎng)膜圖像進(jìn)行圖像預(yù)處理來提高血管與背景的對比度。具體步驟如下:
(1)將RGB 形式的眼底視網(wǎng)膜血管圖像轉(zhuǎn)換為對應(yīng)的灰度圖像。
(2)將灰度圖像進(jìn)行自適應(yīng)直方圖均衡化,去提升血管與背景的對比度并且抑制噪聲。本文中,顏色對比度的閾值設(shè)置為10.0,進(jìn)行像素均衡化的網(wǎng)格大小設(shè)置為(8,8)。
(3)利用局部自適應(yīng)伽馬矯正,將視網(wǎng)膜圖像進(jìn)行矯正,使得光照不均勻因素與中心線反射現(xiàn)象加以抑制。本文中,伽馬因子設(shè)置為1.0。
經(jīng)過預(yù)處理,圖像變?yōu)榱嘶叶葓D像,血管與背景的對比度增加,血管中心線反射的問題得到了抑制。預(yù)處理結(jié)果如圖7 所示。圖7 左為原始圖片,圖7 右為預(yù)處理后的圖片。
圖7 預(yù)處理結(jié)果Fig.7 Preprocessing results
在數(shù)據(jù)集上是否預(yù)處理結(jié)果如表1 所示。通過預(yù)處理提高了血管和背景的對比度,網(wǎng)絡(luò)可以更容易地學(xué)習(xí)血管和背景的區(qū)別,從而將背景誤分為血管的像素點數(shù)減少,因此預(yù)處理后的精度明顯高于未預(yù)處理的精度,尤其是敏感性指標(biāo)上。
由于網(wǎng)絡(luò)得到的是一張二維的灰度圖,是血管分布的概率圖,本文通過最大類間方差算法自動地尋找最佳閾值,來進(jìn)行閾值分割實現(xiàn)二值化。通過后處理,背景被誤認(rèn)為血管的像素減少,缺點是會把部分血管誤認(rèn)為背景,但是后處理之后的圖像,血管部分與GT 相比差距不大,與后處理前的圖像相比噪聲問題也得到了有效的解決,后處理前后對比如圖8所示,其中圖(a)、圖(b)和圖(c)分別是GT 和后處理前后的結(jié)果,可以看出圖(c)相比于圖(b)少了很多的噪聲點,可是也會把一部分血管像素給去除掉。后處理結(jié)果如表1 所示,通過后處理,算法的性能得到了提升,進(jìn)一步驗證了后處理的效果。
表1 預(yù)/后處理結(jié)果比較Table 1 Comparison of pre/post processing results %
圖8 后處理結(jié)果Fig.8 Post-processing results
為了驗證本文提出的改進(jìn)策略可以有效提高算法在視網(wǎng)膜血管上的分割性能,本文做了三組對比實驗來說明GCN+BR、ConvLSTM、CA+PA 可以在一定程度上提高算法的分割性能。
多種改進(jìn)策略結(jié)果如表2 所示。本文利用對稱的可分離的濾波器GCN 和BR 模塊作為一個邊界對齊的殘差模塊來代替?zhèn)鹘y(tǒng)的卷積操作提升算法在血管邊界的分割能力,性能得到了較大的提升,尤其是和指標(biāo)。本文在解碼部分通過利用ConvLSTM 的長時記憶能力來解決算法的梯度消失問題,使算法更好地提取特征信息,從而提升分割性能。為進(jìn)一步提升算法的分割性能,通過加入CA 使解碼器以不同程度的權(quán)重利用到編碼的所有信息,并且在上采樣部分加入PA 來提升所獲特征圖的語義信息。為了防止過擬合問題,在編碼層的最后一層使用密集卷積網(wǎng)絡(luò)的思想。表2 的結(jié)果驗證了本文算法的有效性。
表2 多種改進(jìn)策略的分割算法的比較Table 2 Comparison of segmentation algorithms of several improved strategies %
為了更好地驗證本文算法的性能,本文將在DRIVE 數(shù)據(jù)集和CHASE_DB1 數(shù)據(jù)集上把提出的分割算法與一些最先進(jìn)的算法進(jìn)行比較,算法性能都是算法對應(yīng)論文中的性能,不同分割算法在DRIVE數(shù)據(jù)集和CHASE_DB1 數(shù)據(jù)集上的比較結(jié)果分別如表3、表4 所示。
表3 DRIVE 數(shù)據(jù)集不同算法的結(jié)果Table 3 Results of different algorithms on DRIVE dataset
表4 CHASE_DB1 數(shù)據(jù)集不同算法的結(jié)果Table 4 Results of different algorithms on CHASE_DB1 dataset
由表3 可以看出,本文在DRIVE 數(shù)據(jù)集上的、、和1的評價結(jié)果分別達(dá)到83.24%、96.99%、98.77%、82.91%,均優(yōu)于其他算法。和基準(zhǔn)的U-Net 相比,所有指標(biāo)都取得了更好的性能,而且有較大的差距。由表4 可以看出,本文在CHASE_DB1 數(shù)據(jù)集上的、和1的評價結(jié)果分別達(dá)到97.51%、99.01%、83.55%,均優(yōu)于其他算法。與基準(zhǔn)的U-Net 相比,4 個指標(biāo)中的三方面都取得了更好的性能,除了有些低于U-Net。為了更好地說明本文算法的有效性,圖9 顯示了本文方法在兩個數(shù)據(jù)集上的可視化分割結(jié)果。其中,第一列為原始RGB 眼底視網(wǎng)膜測試圖像,第二列為GT 圖片,第三列為U-Net 的分割結(jié)果,第四列為本文算法結(jié)果,前兩行為在DRIVE 數(shù)據(jù)集上的預(yù)測結(jié)果,后兩行為在CHASE_DB1 數(shù)據(jù)集上的預(yù)測結(jié)果。可以發(fā)現(xiàn),本文算法能夠識別血管的主要部分,相較于U-Net,可以發(fā)現(xiàn)更多的血管末梢部分。以上結(jié)果說明了本文算法在血管分割方面的強(qiáng)大能力。
圖9 不同模型的分割結(jié)果Fig.9 Segmentation results of different models
針對視網(wǎng)膜血管分割中分割血管邊界和低對比度區(qū)域的問題,本文提出了一種引進(jìn)注意力機(jī)制的邊界細(xì)化網(wǎng)絡(luò)。在下采樣過程中將原始的卷積層替換為全局卷積和邊界細(xì)化,使網(wǎng)絡(luò)更好地分割血管邊界,同時也提升網(wǎng)絡(luò)的定位和分類能力;在跳躍連接部分引入注意力,將血管與背景的差別變大,提高血管的分割效果;在編碼的最后一層使用DenseNet思想緩解過擬合問題,在上采樣過程使用ConvLSTM提升網(wǎng)絡(luò)的特征提取能力。實驗結(jié)果表明,本文在DRIVE 和CHASE_DB1 這兩個數(shù)據(jù)集上相較于傳統(tǒng)U-Net能夠取得更好的分割效果。