孟嫻靜,李 菁+,呂曉琪,2,3,谷 宇,3
(1.內(nèi)蒙古科技大學(xué) 信息工程學(xué)院 模式識別與智能圖像處理重點(diǎn)實(shí)驗(yàn)室,內(nèi)蒙古 包頭 014010; 2.內(nèi)蒙古工業(yè)大學(xué) 信息工程學(xué)院,內(nèi)蒙古 呼和浩特 010051; 3.上海大學(xué) 計(jì)算機(jī)工程與科學(xué)學(xué)院,上海 200444)
眼底圖像中血管的不同形態(tài)(如直徑、長度、分支、曲折等)具有醫(yī)學(xué)診斷價(jià)值,可以用于心腦血管疾病和眼科疾病的檢測、評估以及治療階段。利用計(jì)算機(jī)輔助從眼底圖像中分割出血管是眼底圖像分析的第一步,然而,由于眼底血管復(fù)雜的分支結(jié)構(gòu)、嘈雜的背景和不同光照的差異,難度很大。
基于是否需要帶人工標(biāo)記的訓(xùn)練集,眼底血管分割方法可大致分為兩類:無監(jiān)督方法和監(jiān)督方法。無監(jiān)督方法不使用人工標(biāo)記圖像,工作量較小,但分割效果依賴于人工選取特征,準(zhǔn)確率較低。Na等[1]提出了基于超像素的線操作器以區(qū)分線和邊緣來分割眼底血管。Lazar等[2]提出了一種區(qū)域生長法結(jié)合相鄰像素的響應(yīng)矢量相似性的分割方法。監(jiān)督方法以人工分割的標(biāo)準(zhǔn)圖像作為訓(xùn)練集,并結(jié)合血管的特點(diǎn),訓(xùn)練得到最后的分類器,往往能取得不錯(cuò)的效果。Soomro等[3]設(shè)計(jì)了一個(gè)完全卷積神經(jīng)網(wǎng)絡(luò),并對其進(jìn)行訓(xùn)練以提取血管。Dasgupta等[4]使用了卷積神經(jīng)網(wǎng)絡(luò)和結(jié)構(gòu)化預(yù)測相結(jié)合的方法分割血管。Zhang等[5]提出了用具有殘余連接的U-Net來進(jìn)行血管分割的方法。
本文使用監(jiān)督方法進(jìn)行圖像像素到像素的分割,基于SegNet網(wǎng)絡(luò),提出一種編碼-多次解碼的BVSNet,并設(shè)計(jì)出具有不同感受野的編碼塊、解碼塊結(jié)構(gòu),構(gòu)建出不同的網(wǎng)絡(luò)模型,通過大量實(shí)驗(yàn)訓(xùn)練得到具有最佳分割效果的網(wǎng)絡(luò)。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)在圖像分割領(lǐng)域有著廣泛的應(yīng)用[6]。Long等[7]提出了完全卷積網(wǎng)絡(luò)(fully convolutional networks),使用卷積層代替全連接層進(jìn)行圖像分割,自此,使用CNN進(jìn)行圖像分割逐漸成為熱點(diǎn)。常用的CNN圖像分割模型遵循如圖1中SegNet[8]的編碼器-解碼器網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 SegNet網(wǎng)絡(luò)結(jié)構(gòu)
SegNet是一個(gè)包括編碼器(Encoder)和解碼器(Decoder)的對稱分割網(wǎng)絡(luò)。編碼器使用VGG網(wǎng)絡(luò)的前13層,包括數(shù)個(gè)卷積層、BN層、ReLU和池化層;每個(gè)編碼器層對應(yīng)一個(gè)解碼器層,解碼器對特征圖進(jìn)行上采樣。SegNet的重點(diǎn)在于解碼器對其較低分辨率的輸入特征圖進(jìn)行上采樣的方式。
由于SegNet適合訓(xùn)練尺寸較大的圖像(360×480像素),并不適用于本實(shí)驗(yàn)的小尺寸圖像,因此需要將SegNet進(jìn)行改進(jìn)。
本文基于SegNet構(gòu)建一種編碼-多次解碼的血管分割網(wǎng)絡(luò)BVSNet(blood vessel segmentation network),BVSNet的結(jié)構(gòu)如圖2所示。
圖2 BVSNet結(jié)構(gòu)
BVSNet是編碼-多次解碼的架構(gòu)。編碼結(jié)構(gòu)有一條路徑,對應(yīng)多條解碼路徑,并在最后把所有的解碼路徑連接起來,輸出最終分割結(jié)果。圖2中的卷積塊(ConvBlock)包括3×3的卷積層(Conv 3×3)、批歸一化層(BN)、修正線性單元(ReLU),并設(shè)置了隨機(jī)失活(Dropout)。BVSNet編碼部分由卷積塊、池化層(MaxPooling 2×2)組成,卷積塊通過卷積操作對圖像進(jìn)行特征學(xué)習(xí),池化層對圖像進(jìn)行尺寸減半的操作。池化操作可以增加視野,產(chǎn)生分辨率更低、較抽象的特征圖,但是會(huì)造成空間信息、邊界細(xì)節(jié)信息丟失。因此,在解碼部分使用了多次解碼,目的在于恢復(fù)在編碼中降低分辨率時(shí)丟失的信息。
BVSNet的解碼網(wǎng)絡(luò)由卷積塊、上采樣層(UpSampling 2×2)構(gòu)成。上采樣對圖像進(jìn)行尺寸翻倍。解碼階段共有4條上采樣路徑,對編碼階段每次池化后的圖像分別進(jìn)行上采樣,恢復(fù)成原尺寸。最終對所有解碼路徑獲得的特征信息進(jìn)行合并。BVSNet在輸出時(shí),使用2通道的1×1卷積層,并設(shè)置激活函數(shù)為softmax,產(chǎn)生一個(gè)二路輸出,對應(yīng)背景像素和血管像素的概率。BVSNet的優(yōu)化算法是隨機(jī)梯度下降法(stochastic gradient descent,SGD)。
根據(jù)實(shí)驗(yàn)數(shù)據(jù)特征以及感受野的大小,BVSNet設(shè)計(jì)了不同的編碼塊、解碼塊結(jié)構(gòu)。
在CNN中,感受野是每一層輸出的特征圖上的像素點(diǎn)在對應(yīng)輸入圖上的大小。設(shè)置卷積核是3×3,stride=1,padding=0,圖像經(jīng)過一次卷積,輸出圖像每個(gè)像素點(diǎn)的感受野是3×3,如圖3(a)所示。兩次卷積后輸出圖像像素點(diǎn)對應(yīng)的輸入圖像的感受野是5×5,如圖3(b)所示。3次卷積后輸出像素點(diǎn)對應(yīng)的感受野就是7×7,如圖3(c)所示。
圖3 不同層數(shù)卷積的感受野大小
從圖2的BVSNet網(wǎng)絡(luò)結(jié)構(gòu)中,提取如圖4(b)中的編碼塊結(jié)構(gòu),則編碼器可以被看作是4個(gè)編碼塊的疊加,每個(gè)編碼塊由若干個(gè)卷積塊和池化層組成。如圖4所示,在編碼塊(b)的基礎(chǔ)上,減少或增加一個(gè)卷積塊就得到了編碼塊(a)、(c)。同樣,把解碼器看作4個(gè)解碼塊的疊加,每個(gè)解碼塊由若干個(gè)卷積塊和上采樣層組成,如圖5所示,其中圖5(a)是BVSNet中的解碼塊結(jié)構(gòu)。在解碼塊(a)的基礎(chǔ)上,增加一個(gè)或兩個(gè)卷積塊就得到了解碼塊(b)、(c)。一層卷積塊圖4(a)、圖5(a)對應(yīng)3×3感受野,兩層卷積塊圖4(b)、圖5(b)對應(yīng)5×5感受野,三層卷積塊圖4(c)、圖5(c)對應(yīng)7×7感受野。
圖4 編碼塊結(jié)構(gòu)
圖5 解碼塊結(jié)構(gòu)
CNN在訓(xùn)練數(shù)據(jù)不夠多或者訓(xùn)練過度時(shí),經(jīng)常會(huì)出現(xiàn)過擬合的現(xiàn)象,訓(xùn)練集上的誤差逐漸減小,但在驗(yàn)證集上的誤差卻逐漸增大。為了防止訓(xùn)練過擬合,采用如下方法:
(1)隨機(jī)失活(Dropout)。Dropout的方法是:當(dāng)圖像經(jīng)過某層卷積的時(shí)候,使卷積上的一部分神經(jīng)元暫時(shí)失活,讓另一部分神經(jīng)元進(jìn)行卷積運(yùn)算。Dropout使網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)量減少,同時(shí)也減少了過擬合的可能性。
(2)數(shù)據(jù)集擴(kuò)增(Data Augmentation)。眼底數(shù)據(jù)庫圖像特點(diǎn):數(shù)量少,圖像尺寸大,且血管形態(tài)是不斷重復(fù)的圖案。根據(jù)這些特點(diǎn),BVSNet采用隨機(jī)截取圖像的方式擴(kuò)增數(shù)據(jù)。如圖6所示,截取時(shí)有重疊部分。每張?jiān)紙D像擴(kuò)增為10 000張64×64像素的圖像塊,訓(xùn)練集擴(kuò)增為20萬張。
圖6 截取圖像方式的數(shù)據(jù)擴(kuò)增方法
本文實(shí)驗(yàn)是基于Tensorflow+Keras的深度學(xué)習(xí)框架。實(shí)驗(yàn)硬件配置為Docker集群,CPU:Intel Xeon E5-2698 v4 2.2 GHz(20-core),GPUs:NVIDIA Tesla V100,訓(xùn)練時(shí)使用其中一塊32 G的GPU,并使用CuDNN加速;軟件環(huán)境為Ubuntu OS。
實(shí)驗(yàn)使用的數(shù)據(jù)庫是公開眼底數(shù)據(jù)庫DRIVE(digital retinal images for vessel extraction)以及STARE(structured analysis of the retina)[1]。
DRIVE由佳能CR5 3CCD相機(jī)拍攝的40幅圖像組成,包括20幅訓(xùn)練集圖像和20幅測試集圖像,圖像尺寸為768×584像素。在訓(xùn)練時(shí),訓(xùn)練集用來訓(xùn)練網(wǎng)絡(luò)權(quán)重;測試集用來測試BVSNet的分割準(zhǔn)確度。
STARE中有20幅用于血管分割的視網(wǎng)膜圖像,其中10幅為訓(xùn)練集圖像,10幅為測試集圖像,圖像尺寸均為605×700像素。
眼底彩色圖像對比度、亮度、模糊程度都會(huì)對血管的分割產(chǎn)生影響。預(yù)處理可以在一定程度上排除這些信息的干擾,提高血管分割的準(zhǔn)確性。實(shí)驗(yàn)采用以下幾種預(yù)處理方法:
(1)提取圖像的綠色通道分量。綠色通道在照片中的血管對比度最高,最容易辨識,因此選取眼底彩色圖像的綠色分量進(jìn)行訓(xùn)練。
(2)歸一化處理。歸一化是將RGB圖像0-255的值歸一化,轉(zhuǎn)換到0-1之間,作用是保證所有維度上的數(shù)據(jù)都在一個(gè)變化幅度上。
(3)直方圖均衡化(histogram equalization,HE)。HE是將一幅圖像的直方圖分布變成近似均勻分布,從而增強(qiáng)圖像的對比度。
BVSNet首先把圖像數(shù)據(jù)進(jìn)行數(shù)據(jù)擴(kuò)增,將圖像切割成64×64像素的圖像塊,這些圖像塊最終將拼成原尺寸圖像。實(shí)驗(yàn)結(jié)果采用準(zhǔn)確率(accuracy,Acc)、敏感性(sensitivity,Sen)、特異性(specificity,Spe)和接受者操作特性曲線線下面積AUC這4個(gè)常用血管分割指標(biāo)來對BVSNet的性能進(jìn)行評估,4個(gè)指標(biāo)的值越大,說明分割效果越好。
實(shí)驗(yàn)1是使用DRIVE數(shù)據(jù)庫來確定最佳的BVSNet結(jié)構(gòu)。把編碼塊、解碼塊單獨(dú)分離出來,按不同方式組合編碼塊、解碼塊,就可以得到4種可用的網(wǎng)絡(luò)模型:Model1、Model2、Model3以及BVSNet。圖7展示了不同的編碼塊+解碼塊組合的網(wǎng)絡(luò)結(jié)構(gòu)。
圖7 Model1、Model2、Model3的網(wǎng)絡(luò)結(jié)構(gòu)
表1顯示了實(shí)驗(yàn)1不同網(wǎng)絡(luò)模型的分割性能結(jié)果。從4個(gè)指標(biāo)結(jié)果得出Model1的準(zhǔn)確率(Acc)最差,但特異性(Spe)最好。BVSNet的準(zhǔn)確率(Acc)、敏感性(Sen)和AUC數(shù)值最高,在4組實(shí)驗(yàn)?zāi)P椭薪Y(jié)果最好。
表1 不同編碼器結(jié)構(gòu)+解碼器結(jié)構(gòu)的結(jié)果對比
圖8是上述各網(wǎng)絡(luò)模型的分割結(jié)果,圖8(a)、圖8(b)分別是DRIVE測試圖像的灰度圖像以及相應(yīng)的Ground Truth,右側(cè)4列分別是4種網(wǎng)絡(luò)模型對應(yīng)的分割結(jié)果。如圖8所示,Model1的分割結(jié)果最差,圖8(c)中視盤區(qū)域的血管沒有分割出來;Model2結(jié)果好于Model1,但圖8(d)中仍有血管邊緣缺失情況;Model3和BVSNet都取得了相對更好的結(jié)果。BVSNet的細(xì)節(jié)分割得更加細(xì)致,分割效果最好。
圖8 實(shí)驗(yàn)1中各模型的分割結(jié)果
Model1中編碼器與解碼器都用了三層卷積塊(7×7感受野),特征圖像相對于7×7的感受野而言,尺寸過小,網(wǎng)絡(luò)學(xué)習(xí)到的信息不足,直接導(dǎo)致分割效果不佳。BVSNet和Model2、Model3對比得出,解碼器中使用一層卷積塊(3×3感受野)比使用兩層卷積塊(5×5感受野)的分割效果好;編碼器中兩層卷積塊比一層的分割效果好。
圖9是BVSNet的兩組分割結(jié)果。如圖所示,圖9(a)是原圖,圖9(b)是經(jīng)過預(yù)處理后的灰度圖像,圖9(c)是Ground Truth,圖9(d)顯示BVSNet的最終分割結(jié)果圖??梢钥闯觯蟛糠盅芏伎梢詼?zhǔn)確分割出來,只有部分細(xì)小血管仍有未分割出來。
圖9 BVSNet分割結(jié)果
實(shí)驗(yàn)2是一組在相同的實(shí)驗(yàn)環(huán)境下在DRIVE數(shù)據(jù)庫上訓(xùn)練、測試的對比實(shí)驗(yàn),其結(jié)果見表2。首先將BVSNet模型與原始SegNet模型進(jìn)行對比,接著選取當(dāng)前分割效果較好的U-Net模型進(jìn)行對比,表2中BVSNet的4種指標(biāo)的數(shù)值都有提高。實(shí)驗(yàn)結(jié)果表明改進(jìn)的方法在眼底血管分割上優(yōu)于SegNet和U-Net。
表2 BVSNet與SegNet、U-Net分割結(jié)果對比
表3對比了在數(shù)據(jù)庫DRIVE和STARE上BVSNet方法與其它眼底血管分割方法(包括無監(jiān)督方法和有監(jiān)督方法)的分割性能。DRIVE數(shù)據(jù)庫上,無監(jiān)督方法中,區(qū)域生長[2]、B-cosfire濾波[10]、Frangi濾波器[11]等方法準(zhǔn)確率都在93%以上;有監(jiān)督方法中,基于全卷積神經(jīng)網(wǎng)絡(luò)[4]以及回聲狀態(tài)網(wǎng)絡(luò)[12]準(zhǔn)確率到達(dá)94%以上。本文算法在準(zhǔn)確率、特異性以及AUC上均高于其它算法。STARE數(shù)據(jù)庫上,區(qū)域生長[2]的方法敏感性高于BVSNet,但其它3項(xiàng)指標(biāo)均低于BVSNet;Frangi濾波器[12]的方法4項(xiàng)指標(biāo)均低于BVSNet。結(jié)果表明,BVSNet方法同樣適用于其它眼底圖像數(shù)據(jù)庫,具有良好的魯棒性。
表3 DRIVE、STARE數(shù)據(jù)庫上不同眼底血管分割方法性能比較
本文提出了BVSNet來對眼底圖像進(jìn)行血管分割。首先,對數(shù)據(jù)集進(jìn)行預(yù)處理,再將圖像切分成小尺寸圖像塊。對SegNet進(jìn)行了改進(jìn),通過編碼-多次解碼的方式,進(jìn)行圖像像素-到像素的分割。然后,研究了具有不同感受野的編碼塊、解碼塊對分割效果的影響,實(shí)驗(yàn)結(jié)果表明,編碼器使用兩層卷積塊、解碼器使用一層卷積塊分割效果最好。最后,將BVSNet與其它方法在DRIVE、STARE數(shù)據(jù)庫上的分割結(jié)果進(jìn)行對比,BVSNet在準(zhǔn)確率(Acc)、特異性(Spe)和AUC高于其它分割網(wǎng)絡(luò),表明本分割方法準(zhǔn)確率高。
BVSNet可以精準(zhǔn)地完成從眼底圖像中分割出血管的任務(wù),比傳統(tǒng)分割方法更準(zhǔn)確、效果更好,能夠?yàn)榛谘鄣讏D像的疾病篩查如:青光眼、視網(wǎng)膜靜脈堵塞、白內(nèi)障等提供技術(shù)支持;同時(shí)可以應(yīng)用于糖尿病視網(wǎng)膜病變、心腦血管疾病的診斷,具有臨床應(yīng)用價(jià)值。BVSNet的方法適用于少量圖像的數(shù)據(jù)集進(jìn)行訓(xùn)練,在其它圖像分割上也有一定的適用性。文中方法為以后深度學(xué)習(xí)方法的研究提供了新思路。