王棟棟
(上海理工大學(xué)機(jī)械工程學(xué)院,上海 200082)
895817397@qq.com
眼底血管與人體健康息息相關(guān),同時(shí)也作為醫(yī)生診斷各類眼科疾病以及心腦血管疾病的重要依據(jù)。眼底視網(wǎng)膜血管結(jié)構(gòu)特征變化與高血壓、動(dòng)脈硬化等心腦血管疾病有著密切的聯(lián)系,醫(yī)生借助計(jì)算機(jī)圖像處理技術(shù),可以自動(dòng)獲取到眼底圖像中的血管形態(tài)。眼底圖像血管提取的傳統(tǒng)方法有匹配濾波方法、閾值分割方法、形態(tài)學(xué)處理方法等。這些方法不需要訓(xùn)練模型,但是血管分割的精度不夠高?;跈C(jī)器學(xué)習(xí)的方法利用人工標(biāo)記的血管圖像來訓(xùn)練模型,以實(shí)現(xiàn)血管的提取,Staal利用KNN(K-Nearest Neighbor)分類器來區(qū)分血管的半徑、亮度和邊緣強(qiáng)度等特征信息。潘林等為了克服光照不均、對(duì)比度低以及病灶干擾等問題,提出了Gabor小波和SVM(Support Vector Machines)分類器相結(jié)合的方法,利用多種尺度的Gabor濾波特征和綠色通道灰度信息組成特征向量進(jìn)行降維,然后用SVM分類來區(qū)分血管。
近年來,卷積神經(jīng)網(wǎng)絡(luò)在圖像處理領(lǐng)域取得了突破性的進(jìn)展。在圖像分割等應(yīng)用上,基于CNN(Convolutional Neural Networks)的圖像處理方法有著比傳統(tǒng)方法更優(yōu)的表現(xiàn)。圖像語義分割網(wǎng)絡(luò)有FCN(Fully Convolutional Networks)、Deeplab和U-net等。U-net在被提出后,在醫(yī)學(xué)圖像領(lǐng)域展現(xiàn)出優(yōu)秀的性能。相比于全卷積網(wǎng)絡(luò)和Deeplab系列,U-net分層進(jìn)行了四次上采樣,并在同一個(gè)網(wǎng)絡(luò)層次上使用了跳級(jí)連接結(jié)構(gòu),避免了直接在高級(jí)語義特征上進(jìn)行損失函數(shù)的反向傳播,最后輸出的特征圖融合低層次的特征,使得不同尺度的特征得到了融合,從而可以進(jìn)行多尺度的預(yù)測(cè)。U-net因?yàn)槎啻芜M(jìn)行的上采樣對(duì)圖像邊緣信息更加敏感。
本文研究基于U-net分割算法,對(duì)血管分割效果進(jìn)行評(píng)價(jià)和分析,并對(duì)比基于U-net改進(jìn)后的算法和原算法的兩種算法的分割效果,驗(yàn)證改進(jìn)后的算法分割精度優(yōu)于原算法。
為了下游分割任務(wù)更順利地進(jìn)行,我們先對(duì)圖像進(jìn)行預(yù)處理。文獻(xiàn)[3]單通道能夠更加清晰地體現(xiàn)眼背景差異。因此,在實(shí)驗(yàn)中將3通道圖像按比例轉(zhuǎn)換為灰度圖像。原始圖像中血管與背景的對(duì)比度較弱,血管邊界模糊,眼底圖像對(duì)比度較低,不易于人眼分辨。實(shí)驗(yàn)中通過限制對(duì)比度自適應(yīng)直方圖均衡化(Contrast Limited Adaptive Histogram Equalization,CLAHE)進(jìn)行眼底血管增強(qiáng),同時(shí)弱化不需要的干擾信息。使用OpenCv庫中cv2.createCLAHE(clipLimit,titleGridSize)來實(shí)現(xiàn)這一功能。clipLimit是限制對(duì)比度閾值,默認(rèn)為40,直方圖中像素值出現(xiàn)次數(shù)大于該閾值,多余的次數(shù)會(huì)被重新分配;titleGridSize表示圖像進(jìn)行像素均衡化的網(wǎng)格大小。經(jīng)過上述操作后,可弱化眼底圖像中的背景,提升圖像中血管區(qū)域的灰度,可以更清楚地顯示血管結(jié)構(gòu)。效果圖如圖1所示。
圖1 原圖和預(yù)處理后的圖像Fig.1 Original image and preprocessed image
U-net網(wǎng)絡(luò)結(jié)構(gòu)呈U字形,由卷積和池化單元構(gòu)成。左半邊為編碼器即如傳統(tǒng)的分類網(wǎng)絡(luò)是下采樣階段,右半邊為解碼器是上采樣階段,中間的箭頭為跳躍連接,將淺層的特征與深層的特征進(jìn)行拼接。因?yàn)闇\層提取到圖像的一些簡(jiǎn)單特征,比如邊界、顏色等。深層經(jīng)過的卷積操作多抓取到圖像的一些高級(jí)抽象特征。跳躍連接將編碼器中獲得特征信息引入到對(duì)應(yīng)的解碼器中,為上采樣提供了更多低層次的空間與信息。這些低級(jí)的信息通常為輪廓和位置等,為后期圖像分割提供多尺度多層次的信息,由此可以得到更精細(xì)的分割效果。U-net的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 U-net網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Structure of U-net
U-net為Encoder-Decoder結(jié)構(gòu)。在編碼器部分,采用五個(gè)卷積模塊進(jìn)行特征提取。每個(gè)模塊中的卷積層后都緊隨批歸一化層,其作用是調(diào)整網(wǎng)絡(luò)中的數(shù)據(jù)分布,防止出現(xiàn)數(shù)據(jù)的“協(xié)變量漂移問題”,防止過度擬合。每個(gè)模塊中的卷積層中卷積核的個(gè)數(shù)分別為32、64、128、256、512。池化層用于對(duì)特征進(jìn)行降維,在保持通道不變的情況下,將尺寸縮小為輸入特征的一半。經(jīng)過編碼器后,得到輸入圖像的高級(jí)特征向量,將特征向量傳入到解碼器中。編碼器部分采用ReLU函數(shù)。
在解碼器部分,采用上采樣和卷積組合方法實(shí)現(xiàn)反卷積,增大特征圖像的分辨率。在解碼器部分采用四個(gè)解碼模塊對(duì)特征進(jìn)行解碼。解碼部分的卷積模塊與編碼器中相同層級(jí)的卷積模塊一致。在通道維度上,將編碼器得到的低級(jí)特征進(jìn)行融合(Concatenate),保證對(duì)低級(jí)特征的充分利用,提高網(wǎng)絡(luò)的分割效果。在編碼器中仍采用ReLU作為激活函數(shù)。在將特征圖上采樣為原圖大小后,將輸入圖像大小相同的特征圖送入到Softmax層,得到每個(gè)像素屬于各個(gè)類別的概率,確定輸入各個(gè)類別的概率閾值,若高于該閾值則認(rèn)為該像素屬于此類別。最終,得到圖像分割的結(jié)果。
U-net中使用的激活函數(shù)為ReLU函數(shù),ReLU函數(shù)定義為=max(0,),對(duì)于所有正值,ReLU是線性的,對(duì)于所有負(fù)值,經(jīng)過ReLU計(jì)算后是0。由于沒有復(fù)雜的數(shù)學(xué)運(yùn)算,收斂更快,模型可以花費(fèi)更少的時(shí)間訓(xùn)練。對(duì)于所有負(fù)值均為0的不利之處稱為神經(jīng)元壞死(Dying ReLU),如果ReLU神經(jīng)元卡在負(fù)側(cè)并且始終輸出為0,這樣的神經(jīng)元在區(qū)分輸入基本是無用的。因此本文采用ReLU的一個(gè)變種Leaky ReLU來代替ReLU作為激活函數(shù)。Leaky ReLU的負(fù)值部分會(huì)用小斜率的一次函數(shù)去進(jìn)行映射,其定義如下,當(dāng)<0時(shí),=0.01,當(dāng)>0時(shí),=。Leaky ReLU函數(shù)圖像如圖3所示。
圖3 Leaky ReLU函數(shù)圖像Fig.3 Leaky ReLU function image
相比于ReLU,Leaky ReLU沒有零斜率部分,因此可以解決“Dying ReLU”問題。
算法模型需要選擇合適的優(yōu)化器進(jìn)行參數(shù)的學(xué)習(xí)來使損失函數(shù)不斷減小。現(xiàn)有的U-net分割模型使用的是隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD),梯度通過每一次的迭代下降來更新網(wǎng)絡(luò)中的參數(shù)。但是SGD的缺點(diǎn)是難以選擇合適的學(xué)習(xí)率,并且容易收斂到局部最優(yōu)點(diǎn)。
為了解決上述問題,本文使用Adam優(yōu)化器替代SGD來進(jìn)行模型參數(shù)權(quán)重的更新。Adam算法集成Adagrad和Rmsprop兩種學(xué)習(xí)策略的思路與優(yōu)勢(shì)。Adam算法利用了梯度的一階矩和二階矩的信息,計(jì)算出更新步長(zhǎng)。算法本身具有一定自適應(yīng)性,能計(jì)算并估計(jì)每個(gè)參數(shù)的學(xué)習(xí)率,參數(shù)的更新會(huì)避免收到梯度的伸縮變換影響,這樣模型在訓(xùn)練時(shí)會(huì)有更高的收斂速度和效率,如式(1)—式(3)所示。
語義分割通常使用平均交并比這個(gè)指標(biāo)來評(píng)估語義分割算法的性能。交并比(Intersection over Union,IoU)表示的含義是模型對(duì)某一類別預(yù)測(cè)結(jié)果和真實(shí)值的交集與并集的比值。IoU的計(jì)算公式如下:
式中,表示正確識(shí)別為正類的像素個(gè)數(shù);表示錯(cuò)誤識(shí)別為正類的像素個(gè)數(shù);表示錯(cuò)誤識(shí)別為負(fù)類的像素個(gè)數(shù)。然后重復(fù)計(jì)算其他類別的IoU,再計(jì)算它們的平均數(shù),計(jì)算公式如下:
眼底血管分割程序運(yùn)行環(huán)境為Ubuntu 18.04,使用Pytorch作為深度學(xué)習(xí)框架,VsCode作為程序編輯器;硬件平臺(tái)為AMD Ryzen 16核CPU,主頻3.6 GHz,顯卡是4 張GeForce RTX 2080Ti,每張卡顯存為12 GB。
眼底圖像數(shù)據(jù)分別選取開源數(shù)據(jù)集CHASE和DRIVE數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),從兩個(gè)數(shù)據(jù)集中分別選取100 對(duì)左右眼共計(jì)400幅圖像。然后統(tǒng)一將大圖分割為256×256的小塊,一是為了增加數(shù)據(jù)量,二是通過裁減而不是采樣的方式可以保留原圖的細(xì)節(jié)特征。最終獲得1,600 幅圖像。再按照8:2將上述圖像劃分為訓(xùn)練集和測(cè)試集。
設(shè)置batch_size=4,初始學(xué)習(xí)率取0.001。同時(shí)為了防止過擬合,本文采用L2正則化,將權(quán)重衰減稀疏設(shè)置為0.0001。然后訓(xùn)練本文算法模型,訓(xùn)練過程中的損失函數(shù)變化情況如圖4所示。由圖4顯示的訓(xùn)練過程迭代次數(shù)損失曲線發(fā)現(xiàn),訓(xùn)練迭代3萬次后,損失值基本圍繞0.15進(jìn)行上下波動(dòng),隨著迭代次數(shù)的增加,波動(dòng)減小,損失值趨于穩(wěn)定。
圖4 訓(xùn)練損失變化曲線Fig.4 Training loss curve
為了驗(yàn)證本文提出的算法在眼底血管分割上是否具有優(yōu)勢(shì),實(shí)驗(yàn)選取了與FCN及U-net算法進(jìn)行對(duì)比。表1中給出了本文算法與其他算法的分割效果對(duì)比。
表1 三種算法測(cè)試結(jié)果Tab.1 Test results of three algorithms
實(shí)驗(yàn)表明,采用本文改進(jìn)的U-net算法模型表現(xiàn)相對(duì)較好,在原始U-net網(wǎng)絡(luò)進(jìn)行低級(jí)語義信息和高級(jí)語義信息融合階段,使用Leaky ReLU函數(shù)有效避免了神經(jīng)元趨于“壞死”的問題,改善了算法模型的稀疏性,從而在訓(xùn)練集和測(cè)試集上MIoU值均有一定的提升,獲取了更好的語義分割結(jié)果。另外,從實(shí)驗(yàn)結(jié)果看,U-net算法分割的MIoU值遠(yuǎn)高于FCN算法,可見U型網(wǎng)絡(luò)結(jié)構(gòu)更適用于醫(yī)療圖像的分割任務(wù)。
因?yàn)橛?xùn)練前將圖像分割成許多塊,所以在模型預(yù)測(cè)完成后需要將預(yù)測(cè)結(jié)果進(jìn)行合并,獲取完整的推理圖像,然后與label進(jìn)行比較。拼接后的分割結(jié)果如圖5所示,圖5(a)、圖5(b)、圖5(c)、圖5(d)依次是原圖、預(yù)處理圖、標(biāo)記圖和預(yù)測(cè)圖。
圖5 分割結(jié)果可視化圖Fig.5 Visualization of segmentation results
根據(jù)圖5所示,模型基本提取了與原標(biāo)記一致的血管圖像。模型充分利用了細(xì)節(jié)特征,能夠捕捉到難以提取的交叉點(diǎn)細(xì)節(jié),這與所選用的Leaky ReLU函數(shù)保留負(fù)值特征信息是密切相關(guān)的。利用Adam優(yōu)化器使得網(wǎng)絡(luò)學(xué)習(xí)時(shí)的搜索策略傾向關(guān)注全局最優(yōu)點(diǎn),擬合出來的神經(jīng)網(wǎng)絡(luò)更貼近真實(shí)值,因此分割出來的結(jié)果更加準(zhǔn)確。
本文基于U-net圖像分割算法,對(duì)于眼底圖像中的血管進(jìn)行提取。首先,從兩種開源的數(shù)據(jù)集中選取數(shù)據(jù)制作數(shù)據(jù)集,其目的是豐富數(shù)據(jù)集的多樣性,提高模型的泛化能力。然后,針對(duì)U-net特征提取層中ReLU函數(shù)在模型訓(xùn)練時(shí)可能存在的“神經(jīng)元壞死”的情況,使用Leaky ReLU替代ReLU函數(shù),保留了特征中的負(fù)值信息,可以讓模型學(xué)習(xí)到更多的細(xì)節(jié)信息。最后,在訓(xùn)練階段,使用Adam優(yōu)化器代替梯度下降法進(jìn)行搜索,優(yōu)化模型的學(xué)習(xí)策略,使得模型學(xué)習(xí)結(jié)果避免收斂于局部最優(yōu)點(diǎn)。經(jīng)過上述改進(jìn)后,本文算法較原U-net算法在眼底圖像數(shù)據(jù)集分割任務(wù)上取得較好的效果,在測(cè)試集上MIoU更是提高了近3 個(gè)百分點(diǎn)。利用本文算法可以較優(yōu)地完成眼底圖像中血管的提取任務(wù)。