王棟棟
(上海理工大學機械工程學院,上海 200082)
895817397@qq.com
眼底血管與人體健康息息相關,同時也作為醫生診斷各類眼科疾病以及心腦血管疾病的重要依據。眼底視網膜血管結構特征變化與高血壓、動脈硬化等心腦血管疾病有著密切的聯系,醫生借助計算機圖像處理技術,可以自動獲取到眼底圖像中的血管形態。眼底圖像血管提取的傳統方法有匹配濾波方法、閾值分割方法、形態學處理方法等。這些方法不需要訓練模型,但是血管分割的精度不夠高?;跈C器學習的方法利用人工標記的血管圖像來訓練模型,以實現血管的提取,Staal利用KNN(K-Nearest Neighbor)分類器來區分血管的半徑、亮度和邊緣強度等特征信息。潘林等為了克服光照不均、對比度低以及病灶干擾等問題,提出了Gabor小波和SVM(Support Vector Machines)分類器相結合的方法,利用多種尺度的Gabor濾波特征和綠色通道灰度信息組成特征向量進行降維,然后用SVM分類來區分血管。
近年來,卷積神經網絡在圖像處理領域取得了突破性的進展。在圖像分割等應用上,基于CNN(Convolutional Neural Networks)的圖像處理方法有著比傳統方法更優的表現。圖像語義分割網絡有FCN(Fully Convolutional Networks)、Deeplab和U-net等。U-net在被提出后,在醫學圖像領域展現出優秀的性能。相比于全卷積網絡和Deeplab系列,U-net分層進行了四次上采樣,并在同一個網絡層次上使用了跳級連接結構,避免了直接在高級語義特征上進行損失函數的反向傳播,最后輸出的特征圖融合低層次的特征,使得不同尺度的特征得到了融合,從而可以進行多尺度的預測。U-net因為多次進行的上采樣對圖像邊緣信息更加敏感。
本文研究基于U-net分割算法,對血管分割效果進行評價和分析,并對比基于U-net改進后的算法和原算法的兩種算法的分割效果,驗證改進后的算法分割精度優于原算法。
為了下游分割任務更順利地進行,我們先對圖像進行預處理。文獻[3]單通道能夠更加清晰地體現眼背景差異。因此,在實驗中將3通道圖像按比例轉換為灰度圖像。原始圖像中血管與背景的對比度較弱,血管邊界模糊,眼底圖像對比度較低,不易于人眼分辨。實驗中通過限制對比度自適應直方圖均衡化(Contrast Limited Adaptive Histogram Equalization,CLAHE)進行眼底血管增強,同時弱化不需要的干擾信息。使用OpenCv庫中cv2.createCLAHE(clipLimit,titleGridSize)來實現這一功能。clipLimit是限制對比度閾值,默認為40,直方圖中像素值出現次數大于該閾值,多余的次數會被重新分配;titleGridSize表示圖像進行像素均衡化的網格大小。經過上述操作后,可弱化眼底圖像中的背景,提升圖像中血管區域的灰度,可以更清楚地顯示血管結構。效果圖如圖1所示。

圖1 原圖和預處理后的圖像Fig.1 Original image and preprocessed image
U-net網絡結構呈U字形,由卷積和池化單元構成。左半邊為編碼器即如傳統的分類網絡是下采樣階段,右半邊為解碼器是上采樣階段,中間的箭頭為跳躍連接,將淺層的特征與深層的特征進行拼接。因為淺層提取到圖像的一些簡單特征,比如邊界、顏色等。深層經過的卷積操作多抓取到圖像的一些高級抽象特征。跳躍連接將編碼器中獲得特征信息引入到對應的解碼器中,為上采樣提供了更多低層次的空間與信息。這些低級的信息通常為輪廓和位置等,為后期圖像分割提供多尺度多層次的信息,由此可以得到更精細的分割效果。U-net的網絡結構如圖2所示。

圖2 U-net網絡結構Fig.2 Structure of U-net
U-net為Encoder-Decoder結構。在編碼器部分,采用五個卷積模塊進行特征提取。每個模塊中的卷積層后都緊隨批歸一化層,其作用是調整網絡中的數據分布,防止出現數據的“協變量漂移問題”,防止過度擬合。每個模塊中的卷積層中卷積核的個數分別為32、64、128、256、512。池化層用于對特征進行降維,在保持通道不變的情況下,將尺寸縮小為輸入特征的一半。經過編碼器后,得到輸入圖像的高級特征向量,將特征向量傳入到解碼器中。編碼器部分采用ReLU函數。
在解碼器部分,采用上采樣和卷積組合方法實現反卷積,增大特征圖像的分辨率。在解碼器部分采用四個解碼模塊對特征進行解碼。解碼部分的卷積模塊與編碼器中相同層級的卷積模塊一致。在通道維度上,將編碼器得到的低級特征進行融合(Concatenate),保證對低級特征的充分利用,提高網絡的分割效果。在編碼器中仍采用ReLU作為激活函數。在將特征圖上采樣為原圖大小后,將輸入圖像大小相同的特征圖送入到Softmax層,得到每個像素屬于各個類別的概率,確定輸入各個類別的概率閾值,若高于該閾值則認為該像素屬于此類別。最終,得到圖像分割的結果。
U-net中使用的激活函數為ReLU函數,ReLU函數定義為=max(0,),對于所有正值,ReLU是線性的,對于所有負值,經過ReLU計算后是0。由于沒有復雜的數學運算,收斂更快,模型可以花費更少的時間訓練。對于所有負值均為0的不利之處稱為神經元壞死(Dying ReLU),如果ReLU神經元卡在負側并且始終輸出為0,這樣的神經元在區分輸入基本是無用的。因此本文采用ReLU的一個變種Leaky ReLU來代替ReLU作為激活函數。Leaky ReLU的負值部分會用小斜率的一次函數去進行映射,其定義如下,當<0時,=0.01,當>0時,=。Leaky ReLU函數圖像如圖3所示。

圖3 Leaky ReLU函數圖像Fig.3 Leaky ReLU function image
相比于ReLU,Leaky ReLU沒有零斜率部分,因此可以解決“Dying ReLU”問題。
算法模型需要選擇合適的優化器進行參數的學習來使損失函數不斷減小?,F有的U-net分割模型使用的是隨機梯度下降法(Stochastic Gradient Descent,SGD),梯度通過每一次的迭代下降來更新網絡中的參數。但是SGD的缺點是難以選擇合適的學習率,并且容易收斂到局部最優點。
為了解決上述問題,本文使用Adam優化器替代SGD來進行模型參數權重的更新。Adam算法集成Adagrad和Rmsprop兩種學習策略的思路與優勢。Adam算法利用了梯度的一階矩和二階矩的信息,計算出更新步長。算法本身具有一定自適應性,能計算并估計每個參數的學習率,參數的更新會避免收到梯度的伸縮變換影響,這樣模型在訓練時會有更高的收斂速度和效率,如式(1)—式(3)所示。

語義分割通常使用平均交并比這個指標來評估語義分割算法的性能。交并比(Intersection over Union,IoU)表示的含義是模型對某一類別預測結果和真實值的交集與并集的比值。IoU的計算公式如下:

式中,表示正確識別為正類的像素個數;表示錯誤識別為正類的像素個數;表示錯誤識別為負類的像素個數。然后重復計算其他類別的IoU,再計算它們的平均數,計算公式如下:

眼底血管分割程序運行環境為Ubuntu 18.04,使用Pytorch作為深度學習框架,VsCode作為程序編輯器;硬件平臺為AMD Ryzen 16核CPU,主頻3.6 GHz,顯卡是4 張GeForce RTX 2080Ti,每張卡顯存為12 GB。
眼底圖像數據分別選取開源數據集CHASE和DRIVE數據集進行實驗,從兩個數據集中分別選取100 對左右眼共計400幅圖像。然后統一將大圖分割為256×256的小塊,一是為了增加數據量,二是通過裁減而不是采樣的方式可以保留原圖的細節特征。最終獲得1,600 幅圖像。再按照8:2將上述圖像劃分為訓練集和測試集。
設置batch_size=4,初始學習率取0.001。同時為了防止過擬合,本文采用L2正則化,將權重衰減稀疏設置為0.0001。然后訓練本文算法模型,訓練過程中的損失函數變化情況如圖4所示。由圖4顯示的訓練過程迭代次數損失曲線發現,訓練迭代3萬次后,損失值基本圍繞0.15進行上下波動,隨著迭代次數的增加,波動減小,損失值趨于穩定。

圖4 訓練損失變化曲線Fig.4 Training loss curve
為了驗證本文提出的算法在眼底血管分割上是否具有優勢,實驗選取了與FCN及U-net算法進行對比。表1中給出了本文算法與其他算法的分割效果對比。

表1 三種算法測試結果Tab.1 Test results of three algorithms
實驗表明,采用本文改進的U-net算法模型表現相對較好,在原始U-net網絡進行低級語義信息和高級語義信息融合階段,使用Leaky ReLU函數有效避免了神經元趨于“壞死”的問題,改善了算法模型的稀疏性,從而在訓練集和測試集上MIoU值均有一定的提升,獲取了更好的語義分割結果。另外,從實驗結果看,U-net算法分割的MIoU值遠高于FCN算法,可見U型網絡結構更適用于醫療圖像的分割任務。
因為訓練前將圖像分割成許多塊,所以在模型預測完成后需要將預測結果進行合并,獲取完整的推理圖像,然后與label進行比較。拼接后的分割結果如圖5所示,圖5(a)、圖5(b)、圖5(c)、圖5(d)依次是原圖、預處理圖、標記圖和預測圖。

圖5 分割結果可視化圖Fig.5 Visualization of segmentation results
根據圖5所示,模型基本提取了與原標記一致的血管圖像。模型充分利用了細節特征,能夠捕捉到難以提取的交叉點細節,這與所選用的Leaky ReLU函數保留負值特征信息是密切相關的。利用Adam優化器使得網絡學習時的搜索策略傾向關注全局最優點,擬合出來的神經網絡更貼近真實值,因此分割出來的結果更加準確。
本文基于U-net圖像分割算法,對于眼底圖像中的血管進行提取。首先,從兩種開源的數據集中選取數據制作數據集,其目的是豐富數據集的多樣性,提高模型的泛化能力。然后,針對U-net特征提取層中ReLU函數在模型訓練時可能存在的“神經元壞死”的情況,使用Leaky ReLU替代ReLU函數,保留了特征中的負值信息,可以讓模型學習到更多的細節信息。最后,在訓練階段,使用Adam優化器代替梯度下降法進行搜索,優化模型的學習策略,使得模型學習結果避免收斂于局部最優點。經過上述改進后,本文算法較原U-net算法在眼底圖像數據集分割任務上取得較好的效果,在測試集上MIoU更是提高了近3 個百分點。利用本文算法可以較優地完成眼底圖像中血管的提取任務。