蔣晨皓馬玉良祝真濱
(杭州電子科技大學自動化學院,浙江 杭州 310018)
視網膜血管是眼底圖像中可以檢測到的主要解剖結構,其結構和特征變化反映了白內障、糖尿病性視網膜病變(DR)、高血壓等疾病的影響[1]。因此醫學上一般通過檢查視網膜結構和血管變化來初步了解患者的健康狀況,有利于輔助醫生完成對相關病癥的初步診斷。提取視網膜血管的基本特征,例如直徑、長度、連通性等,對于篩選、評估和診斷眼部以及人體其他部位的病變程度具有重大意義。但是由于視網膜血管存在分布隨機性強、細小分叉多、直徑大小不一等特點,且醫學影像設備檢測性能和醫學分割人員的專業知識、分割水準均存在局限性和不穩定性,人工分割血管的難度較大、效率較低并且受到軟硬件多方面的限制。在計算機技術的不斷進步和發展、臨床需求的日益強烈等因素的推動下,視網膜血管自動分割技術應運而生。
目前視網膜血管分割的常用算法可分為有監督學習算法和無監督學習算法兩大類。有監督學習算法可細分為基于支持向量機和部分集成算法的機器學習一般算法、基于神經網絡的深度學習算法等。該類方法通常需要大量人工分割、標注的視網膜血管圖像作為數據集,而且一般需要較長的模型訓練時間,但其準確率較高,且在模型微調后可用于不同數據集,可移植性和泛化能力較強。而包括聚類方法、匹配濾波方法、數學形態學方法、血管跟蹤方法等無監督學習算法無需人工標注的圖像數據集,但是需要人為對分類后的不同簇進行類別標記工作,且存在分類偏好性較強、模型精度較不穩定等問題。經過幾年來不同研究者們的推動,兩類方法的分類性能、實用性均有所突破和創新。
在無監督學習算法中,文獻[1]提出了一種以Fréchet概率密度函數為核的新型匹配濾波器方法,較好地實現了血管輪廓與Fréchet模板的匹配。文獻[2]提出了一種結合匹配濾波和模糊C均值聚類的視網膜血管分割方法,該算法采用對比度受限的自適應直方圖均衡化方法增強圖像的對比度,再使用Gabor和Frangi濾波去除圖像的噪聲和背景,然后通過模糊C均值提取初始血管網絡,運用綜合水平集方法進一步細化分割。該算法取得了較好的敏感性和特異性,但是遺漏了部分細小血管。文獻[3]提出了一種多尺度2D Gabor小波的自動分割方法,該算法采用不同尺度的2D Gabor小波對視網膜圖像進行變換,通過形態學重構準確提取血管骨架,應用區域生長法精確分割細小血管,最后用后處理結合粗細血管,減少細小血管的信息丟失和背景像素點的誤分割。該算法實現了較為平滑的血管分割效果,但是對于低對比度下的血管分割效果較差,分割靈敏度較低,同時和文獻[2]一樣,對于細小血管的分割遺漏較多。文獻[4]提出了一種基于灰度-梯度共生矩陣的視網膜血管分割方法,該算法使用二維匹配濾波預處理以增強血管的灰度,結合圖像的灰度和梯度信息使用了灰度-梯度共生矩陣的最大熵閾值化方法。該算法對于管徑急劇變化及血管高度扭曲的視網膜血管圖像分割效果較差,血管分叉部位的分割時常出現斷點。
而對于有監督學習算法,文獻[5]提出了一種新穎的圖搜索元啟發式分割方法。該方法先將復雜的血管樹分為包含動脈和靜脈的多個子樹,并通過隨機森林分類器訓練得出結果。但是因為血管網絡圖形表示以及分類器性能的有限性,該算法破壞了部分血管的連通性和完整性。文獻[6]將遷移學習和傳統UNet相結合,使用ImageNet數據集預訓練好的權重對網絡進行初始化,并且通過BCE和Jaccard兩種損失函數來聯合優化模型,該模型對于細小血管分割的靈敏度較好,但是整體的分割準確率一般。文獻[7]提出的算法將傳統UNet雙卷積結構輸出的不同尺寸特征圖進行稠密連接,取代普通的跳躍連接,貫穿上下采樣的整個過程,較好地提升了整體血管分割的準確性、減短了訓練耗時,但是模型對于細小血管病灶的靈敏度度較為欠缺,對于光照不均勻血管圖像的適應能力較差。文獻[8]在UNet基礎上提出了CENet,該算法將空洞卷積和Inception-ResNet-V2相融合提出了DAC Block,通過增大感受野獲取更多高層的語義信息,同時仿照PSPNet構建了RMP Block,結合不同尺度的空間信息,一定程度上緩解了UNet因為連續的卷積和池化操作導致的血管細節信息丟失問題。文獻[9]在預處理上結合鄰域知識引入光長補償,對血管圖像進行光照校正。將血管分割與動靜脈分割結合作為multi-task,結合空域激活機制設計了multi-task output block以替代UNet的原始輸出模塊,利用相對簡單的血管分割結果提升動脈分割的結果,有利于提升毛細血管的檢測性能。文獻[10]提出了一種結合了UNet、Bi-directional ConvLSTM、稠密連接機制的醫學圖像分割算法,該算法使用雙向BConvLSTM取代了U-Net的跳躍連接中簡單的拼接操作,并且在解碼部分的最后一層卷積使用稠密連接的卷積層,實現了血管特征的傳播和復用,該算法對于血管基本結構的分割性能較好,模型泛化能力較強,但是網絡結構比較復雜,網絡參數量較多。文獻[11]提出了一種基于注意力機制的全注意力網絡,通過雙向注意力模塊獲取水平和垂直方向上密集的血管上下文信息。文獻[12]提出了一種全局上下文的醫學圖像分割方法,該算法由編碼和解碼模塊組成,解碼模塊由全局上下文注意GCA模塊和擠壓激勵金字塔池SEPP模塊組成,GCA模塊將低級特征和高層特征連接起來以產生更具代表性的功能,SEPP模塊則增加了感受野的大小和多尺度特征融合的能力,并且設計了加權交叉熵損失來更好地平衡分割區域和未分割區域,達到更優的分割性能。文獻[13]提出了一種基于多特征和多分類器的視網膜分割算法,該算法結合對比度增強強度、B-COSFIRE濾波器響應、線條強度以及融合的灰色投票結果和2D-Gabor濾波器結果來構建特征向量,再將決策樹和AdaBoost算法分類器結果進行融合。該算法結合了血管的多元特征,取得了較好的血管分類準確度和靈敏度。文獻[14]將視網膜血管分割工作分為厚血管分割、薄血管分割和血管融合三個部分,該算法對厚血管和薄血管進行單獨的分割而獲得更好的判別特征,并在血管融合階段通過進一步識別非血管像素并改善總體血管厚度一致性來改善結果,分割模型由用于粗血管分割的ThickSegmenter、用于細血管分割的ThinSegmenter和用于血管融合的FusionSegmenter三部分組成,但是由于血管細節信息的丟失過多,算法效果較為一般。文獻[15]提出一種結合短連接和密集塊的深度卷積對抗網絡算法,該算法仍然采用U型編碼譯碼結構,并在卷積塊之間增加了短連接塊,防止深度卷積網絡造成梯度色散。鑒別器全部由卷積塊組成,同文獻[7,10]一樣在卷積網絡的中間添加密集連接結構,加強特征的傳播,提高網絡的鑒別能力。算法稠密連接的緊密程度不如文獻[8],但是分割結果的準確率和靈敏度卻優于文獻[7]。
為了解決上述文獻中對于血管分割無法兼顧準確率和靈敏度以及網絡參數較多的問題,提出了一種基于PSPNet改進UNet的輕量級視網膜血管分割算法,該算法由金字塔解析結構、UNet編碼解碼結構、稠密連接、DropBlock正則化方法和空間注意力機制等部分組成,用來實現視網膜血管的高效準確分割。相較于傳統的監督學習和無監督學習方法,本文提出的算法在分割綜合性能、泛化能力以及訓練效率上都有明顯的提升。
本文將數據集中的圖像都轉換為576×576像素的大小,并選用了原圖像的綠色通道作為預處理的輸入圖像,由圖1可知,相比于原始RGB三通道、紅色通道以及藍色通道而言,綠色通道呈現出的血管與圖像背景的對比度更好,血管結構更清晰。

圖1 彩色眼底圖像和不同通道
為了進一步提升圖像的對比度,改善圖像整體較暗的問題,使得血管特征更便于模型進行分割預測,使用了對比度受限的自適應直方圖均衡化方法(Contrast Limited Adaptive Histogram Equalization,CLAHE)增強血管部分與無血管部分的對比度,將血管的基本骨架和細小分叉更清晰地呈現出來。為了解決訓練集樣本過少不利于提高模型通用性的問題,分別使用了隨機角度旋轉、色彩抖動、添加Drop-Block噪聲、隨機翻轉方法對原始訓練集進行數據擴增。針對DRIVE數據集,先將訓練集復制5次,每組都包含訓練集中全部20張圖像,第1組只進行隨機角度旋轉,第2組只進行色彩抖動,第3組只添加DropBlock噪聲,第4組只進行隨機翻轉,第5組則對每張圖像集中使用上述四種方法進行數據擴增。針對STARE數據集,則先將訓練集復制10次,每兩組為一個單位,重復上述操作。
其中,添加DropBlock噪聲的方法運用了卷積神經網絡中DropBlock正則化的思想。本文算法先隨機生成圖像的一個有效坐標,將以該點為中心的N×N個像素點的值都轉換為255。該方法根據卷積的特點,通過遮擋部分可使用卷積獲得的語義信息來激勵網絡自主學習,提高網絡對于細小血管結構的分割能力和整體泛化能力。最后,經數據擴增處理后的部分圖像如圖2所示,總共生成100張除了原始圖像以外的增強圖像。

圖2 CLAHE和數據擴增后
本文將數據擴增處理后的100張圖像作為訓練集,未經數據擴增處理(僅僅提取綠色通道、使用直方圖均衡化)的原始圖像作為驗證集。為了提取到更精細的血管特征,本文將擴增后數據集的每張圖像分為81個不重復的分辨率為64×64像素的patch,把小尺寸的patch作為網絡的初始輸入進行訓練,網絡輸出相應也為64×64像素大小,最后通過patch的拼接以及圖像閾值處理獲得最終的二值分割結果。
本文用圖3所示的密集連接的三卷積層代替了傳統UNet編解碼器雙卷積層結構。而在DenseNet中,每一層隱藏層的輸入采用前面所有層輸出的集合,增強前層與后層之間的聯系,這樣網絡中如果有N個隱藏層就存在N×(N+1)/2個連接,有利于緩解梯度消失。DenseNet能綜合利用靠近輸入層中具有低復雜度的特征,使得網絡更容易得到一個具有更好泛化性能的決策函數。本文借鑒了DenseNet的稠密連接思路,在其基礎結構之上,加入了DropBlock層和批歸一化層(BN),并且相對應地調整了密集連接的具體方式。如圖4所示,DropBlock是Dropout的結構化形式,防止卷積神經網絡過擬合效果更佳,特別是針對于語義分割問題。DropBlock和Dropout的主要區別在于,DropBlock從一層的feature map中丟棄卷積狀的連續區域,一定程度上等同于舍棄了部分語義特征,而Dropout丟棄的是隨機且相對獨立的特征單元。使用DropBlock的模型更容易適應不同的語義分割場景,魯棒性和靈敏度更強,比如應對視網膜血管分割中經常出現的圖像某塊區域亮度不足、清晰度較差以及血管細小分叉難以捕捉等情形時,模型更容易學習到較完整的血管結構以及細小血管的分叉特征。BN層用于保持輸入輸出數據分布的穩定性,減少對于初始輸入數據的依賴性。本文密集連接卷積塊包括了三個子卷積結構,每一個都由3×3-Conv、DropBlock、BN、ReLU順序組成;將每個子結構BN層的輸出加入到接下來N個子結構的ReLU層的輸入集合中,這一做法有利于減緩由于數據的分布逐漸向非線性函數的兩端靠攏帶來的梯度消失問題,而不同BN層輸出的集合結合了多層次的歸一化后的特征,較好地提升了梯度下降的速度,使得模型可以用較少的迭代次數尋找到更接近最優解的局部最優解;再將經過DropBlock隨機丟棄語義特征后的不同數據仿射變換至一個分布穩定的特征空間中,有利于增強梯度下降的穩定性、加快收斂速度;除此之外,本文還用1×1-Conv對輸入集合進行特征映射,不僅降低特征維度和網絡參數量,還能夠實現跨通道的信息交互,結合各個通道的特征信息;最后再輸入到ReLU層。

圖3 密集連接卷積結構

圖4 Dropout(左)和DropBlock(右)
眾所周知,全局平均池化(AvgPool)作為全局上下文先驗是一種很好的基線模型,被成功地應用于語義分割[16]。原始的PSPNet先使用預訓練的Res-Net101和空洞卷積來提取特征圖,再將特征圖經過PSP Module融合局部和全局的上下文信息,最后通過一個卷積層獲得輸出。而本文以UNet為基礎框架應用PSP Module,并根據視網膜圖像的尺寸特征,改進了PSPNet的結構并提出了如圖5所示的金字塔池化模塊(以16×64×64的輸入為例)。首先利用全局平均池化,將輸入特征映射到1×1、2×2、4×4、8×8四個不同的金字塔尺度;再利用1×1-Conv進行特征提取,對每個金字塔尺度特征的內部進行跨通道的信息傳遞;然后運用雙線性插值將低維特征圖上采樣到與原始輸入特征圖相同大小,以便于多層次特征的通道連接。最后將不同層次的特征以及原始的輸入特征連接為最終的金字塔池全局特征,并通過1×1-Conv將金字塔全局特征映射為原始輸入特征的大小。該結構通過全局平均池化,構造了四種尺度的感受野以檢測不同大小的血管特征,充分結合了上下文的有效信息進行合理分割,盡可能減少了血管分割的基礎性錯誤,保證了視網膜血管基本骨架的分割完整性,明確了部分細小血管及其分叉的區域信息以及大致的分割方向。同時,本文將該結構應用在密集卷積模塊后,對每次提取后的特征圖都進行局部和全局信息的整理和融合。

圖5 金字塔池化結構
空間注意力機制作為卷積神經網絡注意模塊的重要部分,可用于分類、分割和檢測??臻g注意力機制利用特征之間的空間關系來生成空間注意力圖,賦予每個特征單元以不同的權值來表示該區域血管特征的密集性和結構性。為了計算空間注意力,如圖6所示,該結構先對于輸入特征:F∈RH×W×C的通道軸分別進行平均池化(AvgPool)和最大池化(MaxPool)操作,再 將 輸 出 的 兩 個 特 征 圖(FMp∈RH×W×1、FAp∈RH×W×1)進行連接以獲得有效的特征描述的空間信息,然后用3×3-Conv對于級聯特征描述圖進行特征提取,最后通過Sigmoid激活函數生成空間注意力分布圖MS(F)∈RH×W×1,并與輸入特征圖相乘獲得新的特征輸出FS∈RH×W×C。計算公式如下所示:

圖6 空間注意力機制


式中:σ符號代表了包括拼接用3×3卷積進行特征提取,使用Sigmoid函數等將FMP和FAP轉換成空間注意力圖的一系列操作。
空間注意力機制將原始特征映射到另一個特征空間,保留并強化了原始特征的關鍵信息。由于該結構具有旋轉、縮放變換的功能,所以同一血管特征即使經過不同位置變換,模型提取出的血管結構也相同。結合空間注意力分布圖,模型對于關鍵信息的關注度相應提高。本文主要將空間注意力機制和UNet跳躍連接相結合,將尺寸相同但包含語義信息不同的特征先進行通道融合;再將融合后的輸出通過空間注意力機制進行關鍵性分析,收集更多通道的有效描述信息;本文利用感受野較小的3×3-Conv連續檢索細小血管的關鍵信息,提升細小血管的分割關注度,從而提高網絡對于血管細節特征的分割靈敏性。
本文提出的PDA-UNet的基本網絡結構如圖7所示,PDA-UNet由編碼器和解碼器兩部分組成。編碼器遵循典型的卷積結構,它由一個密集連接卷積結構和一個PSP金字塔池化結構組成,再通過2×2的最大池化操作進行下采樣,并且將特征通道加倍,各部分特征通道數分別為16、32、64、128。解碼器將特征先通過2×2的轉置卷積進行上采樣,壓縮特征通道,再將壓縮后的特征與編碼器中通道數相同的特征進行跳躍連接,然后利用空間注意力機制進行特征映射、提取出關鍵信息,并通過密集連接卷積結構和金字塔池化結構提取血管特征。最后使用Sigmoid激活函數輸出每個特征單元的激活值。

圖7 PDA-UNet網絡結構
為了驗證算法的有效性,本文選用了常用的公開數據集DRIVE和STARE來進行訓練和測試。DRIVE數據集來自于荷蘭糖尿病視網膜病變篩查計劃,包括了40張彩色視網膜眼底圖像,標號21~40的圖像作為訓練集,標號1~20的圖像作為測試集,每張圖像分辨率為584×565像素;STARE數據集來自于兒童心臟和健康研究,包含了20張彩色視網膜眼底圖像,分辨率為605×700像素,該數據集沒有官方給定的訓練集和測試集,本文為了方便對比,將標號1~10的圖像作為訓練集,標號11~20的圖像作為測試集,且使用manual1作為訓練標簽。以上兩個數據集都含有兩組由兩位專業醫生手動分割的視網膜血管圖像標簽。
在DRIVE數據集和STARE數據集的實驗過程中,本文設置的batch size為81(81個64×64像素的patch,即保持與原始圖像576×576像素相同);采用的損失函數是二元交叉熵損失函數(binary cross entropy loss),使用的優化器是Adam優化器;考慮到本文訓練使用的單個path大小為64×64像素的小尺寸圖,對于所有DropBlock設置其保留率為0.75,丟棄塊尺寸為3×3像素;對于空間注意力機制設置其卷積尺寸為3×3像素;訓練迭代次數(Epoch)設置為100,使用的固定學習率為0.01,設置early stop=25。
該實驗的代碼實現基于深度學習框架Pytorch,所有實驗都是在單塊NVIDIA GeForce GTX1050(顯存為4GB)顯卡上運行。因為PDA-UNet是一個輕量級的網絡,其輸入的特征通道數較少,使得整體網絡的參數都較少,所以本實驗的訓練時間控制在3 h以內。
為了評價該算法的性能,本文使用了4種常見的評價指標,分別是準確度(ACC),靈敏度(SE),特異性(SP),F1值(F1-score),其計算公式如表1所示:

表1 評價指標
其中TP(真陽性)表示分割正確的血管點,TN(真陰性)表示分割正確的背景點,FP(假陽性)表示分割錯誤的背景點,FN(假陰性)表示分割錯誤的血管點。準確度(ACC)表示算法分割的精確度,衡量的是分割結果和真實標簽之間的差異;靈敏度(SE)表示血管和背影的分割程度,體現的是算法對于細小血管的分割情況,更高的靈敏度意味著算法分割出了更多的細小血管;特異性(SP)表示識別背景元素的能力;F1值(F1-score)表示算法分割血管的綜合性能。
為了說明本文提出的PDA-UNet的分割效果,本文在表2、表3中列舉了近幾年來不同文獻在DRIVE、STARE數 據 集 上 的 分 割 結 果[10,17-25]。從表2中可知,在DRIVE數據集上,本文相較于傳統UNet,分割結果的各項指標均有一定提升,特別是在靈敏度和F1-score上,分別提升了3.36%和1.99%;文獻[17]、文獻[18]方法的分割準確度以及F1-score都和本文相近,但是靈敏度差距較大,算法對于細小血管的分割情況較差;而文獻[19]在分割靈敏度、特異性、F1-score上均達到本文相近水平,但是在精確度上還存在改進空間。從表3中可知,在STARE數據集上,本文算法相較于傳統UNet,在靈敏度和F1-score上的提升分別達到了11.65%和4.05%;與其他文獻相比,本文算法的分割結果在保證了準確度和特異性的同時,達到了較優的分割靈敏度和F1-score。本文選擇DRIVE數據集測試集中標號為19_test的圖像來顯示分割結果,如圖8所示。傳統UNet基本實現了對于血管基本骨架的分割,但是由于傳統UNet連續卷積和池化操作導致了特征丟失,使其在細小血管分叉和連接處的分割效果與本文分割結果相形見絀。文獻[19]、文獻[24]與本文的分割效果相近,但是文獻[19]對于細小血管的分割存在部分遺漏的問題,文獻[24]對于血管分叉的敏感性上與本文相比仍顯不足。

圖8 DRIVE數據集上不同方法的比較

表2 DRIVE數據集分割結果比較

表3 STARE數據集分割結果比較
如圖9所示,本文選擇了STARE數據集中標號為12的圖像的分割結果進行對比,傳統UNet忽略了部分粗血管的基本結構,沒有保證視網膜血管的完整性,且細節存在較多的漏分、誤分問題;文獻[20]和文獻[24]雖然保證了基本的血管脈絡,但是對部分粗血管分叉為多個細小血管的情況分割結果不清晰,不能還原血管的真實長度和連接情況,與本文的分割效果相比仍存在一定差距。相比于現有的分割方法,本文所提出的PDA-UNet既完好地保留了粗血管的形狀和連通性,又擴展了網絡對于細小血管分叉的敏感性和一定的分割精準性,在兩個公開數據集上均有優秀的分割表現。

圖9 STARE數據集上不同方法的比較
本文提出了一種基于PSPNet改進UNet的輕量級視網膜分割算法——PDA-UNet。在數據預處理上,為了鍛煉模型的魯棒性,本文借助DropBlock正則化的思路,采用隨機丟棄部分結構化語義信息的方式對數據進行增強。在模型構建上,為了融合多層次的語義特征、充分利用特征信息,本文用基于DenseNet的密集連接卷積塊代替傳統UNet的雙卷積結構;然后用隨機丟棄塊狀信息的DropBlock取代隨機丟棄像素級信息的Dropout,激勵網絡結合多種不同的特征來學習血管的基本結構,盡可能多地預測出光照不均處血管的脈絡;再將PSPNet中的金字塔解析池化結構應用至密集連接卷積塊,在不同層級對特征信息進行循環利用,實現全局信息和局部信息的融合;最后將空間注意力機制和傳統UNet跳躍連接聯系起來,使得模型聚焦于細小血管的基本特征。實驗結果表明,本文提出的PDA-UNet在兩個公開數據集——DRIVE和STARE上的準確率、靈敏度、特異性、F1-score分別達到0.959 0、0.832 4、0.977 1、0.832 8和0.969 1、0.851 0、0.982 4、0.843 2,其中在靈敏度和F1-score這兩項指標上本文所提方法與文獻相比有較大的提升,實驗證明本文算法通過對于小尺寸圖像輸入(64×64)中有限信息的重復利用,在實現較好分割效果的同時減少了參數量,既提高了網絡的訓練效率,又完整地勾勒出了血管的基本結構、優化了對于細小血管的分割性能。由于本文沒有對數據集進行過多的預處理,圖像基本的清晰度和亮度在一定程度上限制了模型的分割效果。同時使用DropBlock會出現部分細小血管信息缺失,導致部分血管被誤分為背景。而過多跳躍連接的使用容易導致分割邊界不清晰、血管過度分割。因此,如何通過更加細致的預處理提升圖像的分割質量、構建自適應的DropBlock、減少跳躍連接的依賴性使用,提高模型在面對不同分割任務時的適應度將會是未來一個不錯的研究方向。