蔣蕓 譚寧
血管作為血液循環流動的管道,遍布人體的各個部位,尤其是眼底中含有大量的動脈血管,是人身體內唯獨采用無損傷手段就能夠直接觀察到的較深層次的微血管系統,為醫生提供了有關眼睛狀況和一般系統狀態的豐富信息.眼科醫生可以檢測到高血壓和糖尿病引起的全身血管負荷增加以及視網膜血管疾病如視網膜靜脈阻塞和視網膜動脈阻塞等血管結構異常的早期征兆,血管和血管系統引起的疾病會造成患者失明.隨著技術的發展,探索一種自動化方法分割視網膜血管已經被廣泛研究.從而輔助醫師診斷、分析患者病情,對眼底疾病做出盡早的預防和診治,可有效避免病變所引發的視覺損失.目前在國內外的血管分割算法有匹配濾波器法[1]、多閾值的血管檢測[2]、以形態學為基礎技術血管分割[3]、區域生長法、使用神經網絡的血管分割算法[4?5]、多尺度層分解和局部自適應閾值血管分割方法[6]、基于活動輪廓模型的血管分割[7]以及基于模糊聚類的分割方法[8]等.文獻[9]提出了一種基于多尺度2D Gabor 小波變換和形態學重構的血管分割方法.采用不同尺度的2D Gabor 小波對視網膜圖像進行變換,并分別應用形態學重構和區域生長法對變換后的圖像進行分割,最后,對以上兩種方法分割的視網膜血管和背景像素點重新標記識別,得到視網膜血管最終分割結果,但對于血管與背景對比度低的圖片,分割假陽性率高.文獻[10]提出一種融合區域能量擬合信息和形狀先驗的水平集血管分割方法,通過形態學算子去除血管中心亮線,并與原圖像和掩模分別進行減法和點乘運算增強視網膜血管圖像,然后分析Hessian 矩陣的特征值在血管、背景和病灶上不同的幾何性質,利用Hessian 矩陣特征值重構血管響應函數,最大化不同結構的差異,從而獲得視網膜血管初步圖像,但因為高斯卷積算子的影響,導致復雜的血管交叉處分割不足.文獻[11]提出通過三階段對血管進行分割,首先,對眼底圖像的綠色平面進行預處理,并針對血管區域中提取二值圖像,然后,使用基于像素鄰域一階和二階梯度圖像提取的8 個特征集合,使用高斯混合模型分類器對兩個二值圖像中的所有其余像素進行分類,血管的主要部分與分類的血管像素結合,但存在微血管易斷的問題.文獻[12]使用將分割任務重塑為從視網膜圖像到血管圖的跨模態數據轉換的分割監督方法,提出了一種具有較強誘導能力的廣泛深度神經網絡模型,并給出了一種有效的訓練策略.文獻[13]一種將異構情境感知功能與區分性學習框架相結合的方式對眼底血管圖片進行分割.文獻[14]使用監督分割技術,該技術使用在全局對比度歸一化,零相位白化以及使用幾何變換和校正進行預處理的樣本上訓練深度神經網絡,對噪聲有較強的適應能力,但依舊無法克服微血管易斷的問題,分割的準確率也有待提高.綜上所述,雖然國內外研究人員已提出很多血管分割方法,但大部分分割的結果精度不高,性能也有很大的改善空間.針對現有方法對視網膜血管分割不足,準確率不高,對噪聲、病灶敏感等問題,于是使用生成式思想分割出高精度、高準確率的視網膜血管圖像.本文主要工作包括:
1) 對于之前所提出的方法中存在的局限性進行了詳細的分析后,針對之前方法對視網膜血管分割效果不理想的問題,本文使用生成式框架對眼底視網膜血管進行分割,通過生成器和判別器兩者之間進行對抗訓練,相互優化各自的網絡結構,從而實現了一種自動分割視網膜血管的方法.
2) 提出了一個新的網絡結構如圖5,利用殘差網絡的思想,使得網絡結構對輸出的變化和權重的改變變得敏感,從而更好地對權重進行了調整,提高分割的效果,也緩解了梯度減少,解決了梯度消失的問題.在使用3×3 的卷積之前使用1×1 的卷積作為瓶頸層對輸入的特征圖進行降維,然后用3×3 的卷積核對維度進行還原,降低了網絡的復雜度,保持了精度又減少了計算量.
3) 由于編碼器-解碼器這種網絡結構要求所有的信息流通過所有的網絡層,在輸入和輸出之間共享大量本可直接穿過網絡層的低級信息.為了避免出現這種情況,本文使用了U 型網絡結構的思想,對于n層的網絡,將第i層的輸出和第n-i層的輸出進行拼接,作為第n-i+1 層的輸入.

圖1 視網膜血管圖像分割模型Fig.1 Retinal vessels image segmentation model
近些年來,無監督學習已經成為了研究的熱點,變分自編碼器[15]、生成對抗網絡(Generative adversarial networks,GAN)[16]等無監督模型受到越來越多的關注.在人工智能高速發展的時代,GAN的提出不僅滿足了相關領域的研究和應用和需求,也帶來了新的發展動力[17].特別是在圖像和視覺領域中對GAN 的研究和應用最為廣泛,已經可以通過隨機數字生成人臉、從低分辨率圖像生成高分辨率圖像等.此外,GAN 已經開始逐漸應用到醫學圖像處理中:模擬超聲探頭的空間位置上有條件地對解剖學精確的圖像進行采樣[18]、檢測惡性前列腺癌[19]等問題的研究中.
生成對抗網絡由生成器(G) 和判別器(D) 兩部分組成,生成器主要負責通過隨機噪聲生成服從真實數據分布的樣本,判別器負責通過識別輸入的數據樣本來自生成器還是真實數據,兩者相互迭代優化提升各自的性能,最終使得判別器無法判別輸入的數據來源時,則認為生成器已經學習到了真實數據的分布.其損失函數為:

條件生成對抗網絡(Conditional generative adversarial networks,CGAN) 是在GAN 的基礎上加入了輔助信息y,通過額外的輔助信息y控制生成器對數據的生成.y可以是任何類型的輔助信息,比如類標簽.其模型結構如圖2 所示:

圖2 條件生成對抗網絡模型Fig.2 Condition generation adversarial networks model
損失函數表示為:

本文通過結合深度卷積生成對抗網絡(Deep convolutional generative adversarial networks,DCGAN)[20]和U 形卷積神經網絡[21]的特點,在生成器使用U 型卷積神經網絡模型的思想,利用U 型卷積網絡的邊緣檢測能力對視網膜圖像中的血管進行分割,將分割出的視網膜血管圖像和原圖像一同輸入判別器中進行判斷,最后直到判別器無法正確區分輸入的視網膜血管圖像的來源(專家分割或者生成器分割).
生成對抗神經網絡的學習優化過程是尋找到生成器和判別器之間的一個納什均衡,生成對抗網絡分割眼底視網膜問題的目標函數如下所示:

其中,x為輸入的視網膜圖像,y為專家分割的視網膜血管圖像,D(x,y) 表示視網膜血管圖像來源于專家分割的概率,D(x,G(x)) 表示視網膜血管圖像來自生成器分割的概率.生成器(G) 嘗試最小化目標函數,判別器(D) 嘗試最大化目標函數,GAN 通過對下面的函數進行優化:

通過實驗發現,將現有的GAN 目標函數與傳統的損失(例如L1 距離函數) 相結合時,生成出的視網膜血管圖像更加趨近于專家分割的視網膜血管圖像,判別器的作用保持不變,但生成器的任務不僅要欺騙判別器,而且要最小化生成的視網膜血管圖像與人工分割出的視網膜血管圖像直接的L1 距離.

通過將GAN 的目標函數與L1 距離函數進行結合,最終的目標函數如下:

λ用于平衡兩個目標函數,推薦λ的值為100.
分割視網膜血管的模型如圖1 所示,通過輸入一張視網膜圖像x到生成器(G) 中,生成器通過學習到從眼底視網膜圖像x到眼底血管圖像y之間的映射關系,G:x →y最終輸出一張分割后的視網膜血管圖像.判別器(D) 通過學習輸入圖像對{x,y}與{x,G(x)} 之間的分布差異從而正確判別輸入圖像對來源的二分類器{0,1},判別器輸出1 表示輸入的視網膜血管圖像來源于人工分割,輸出0 表示視網膜血管圖像來源于生成器.
在一定程度上,隨著網絡結構深度的增加,會出現梯度消失和梯度爆炸的問題使模型出現退化的情況[22],為了避免這情況,通過使用跳躍連接(Skipconnection),將某一層的特征圖反饋給下一層,甚至更深層,其過程通過如下公式所示:

其中,H(x) 代表下一個殘差模塊的輸入,L代表跳躍的層數,F(xk)代表對Ck進行激活后的輸出,代表第k層的特征圖的第m個通道,f(·) 稱為激活函數,Xm表示用于計算的輸入特征圖子集,代表卷積核矩陣,?代表卷積.
圖3(a) 是跳躍兩層(L=2) 卷積層的殘差模塊,其函數表達式為:H(x)=x+F(x),圖3(b) 是標準的卷積層,其函數表達式為:H(x)=F(x).

圖3 卷積層Fig.3 Convolution layer
殘差模塊與標準的卷積模塊相比較具有如下優勢:1) 在前向傳播中,假如圖3(a) 中卷積層中的權重沒有學習到任何信息,相當于進行了恒等變換,如果卷積層學到了一些有用信息,那么可能比學習恒等函數表現更好.2) 在反向傳播中,引入殘差模塊后對輸出的變化更敏感,可以比標準的卷積層更細微的調整權重.
隨著網絡層數的增加,使用標準的卷積層將要訓練大量的參數,模型的參數越多,運行所需要的計算資源和存儲資源越多,且會增加訓練的時間,為了在減少參數的情況下不影響模型的效果,因此通過將標準的卷積層和1×1 卷積相結合如圖4(b) 所示,通過中間產生一個瓶頸層,達到減少參數和計算量,加快網絡模型的收斂.
模塊A1 將一個H ×W ×C大小的特征圖作為輸入,直接輸出一個大小為H ×W ×2C的特征圖.模塊A2 通過在中間加入一個卷積核為1×1 的卷積層作為瓶頸層,先縮小特征圖的通道數,然后再輸出大小為H ×W ×2C的特征圖.H和W為輸入和輸出的特征圖的尺寸.C代表輸入和輸入特征圖的通道數.

圖4 卷積層Fig.4 Convolution layer
模塊A1 的計算量為:

參數的數量為:

加入1×1 卷積核后的模塊A2 的計算量為:

其中,k為卷積核的尺寸,參數的數量為:

使用結合1×1 卷積核后的模塊A2 替換標準網絡結構中的模塊A1,計算量比值以及參數數量的比值均為:

當使用3×3 大小的卷積核時(k=3),模塊A2計算量和參數大概是模塊A1 的5/18.
生成器中使用x ∈Rw×h×c作為輸入圖像,w=n=512,c=3,網絡結構(27 層) 如圖5 所示,之前許多分割方法的網絡結構使用編碼器-解碼器(Encoder-decoder)[23],這種網絡結構通過不斷地向下采樣,直到達到一個瓶頸層,將提取的信息變為一個一維向量,然后在這一點上進行反卷積,逐漸向上采樣,最后還原成圖像.這樣的網絡結構要求所有的信息流通過所有的網絡層,包括瓶頸層.在許多圖像分割問題中,輸入和輸出之間共享大量本可直接穿過網絡層的低級信息.為了使生成器能夠避免出現這種情況,本文使用了U 型網絡結構的思想,對于n層的網絡結構,將第i層網絡的輸出和第n-i層的輸出進行連接,作為第n-i+1 層節點的輸入.在編碼層使用Leaky-ReLU 作為非線性激活函數,每層都使用批量歸一化(Batch normalization,BN)[24].通過歸一化當前層輸入(μ=0,σ=1),有利于加速整個網絡的收斂,提高層與層之間的獨立性.解碼層使用ReLU 作為非線性函數,在最后一層使用Tanh 激活函數生成圖像.為了提高模型分割的準確率,我們在生成器中加入殘差網絡結構,結構如圖6(a) 所示,由于殘差可以緩解梯度減少,解決梯度消失的問題,提高對網絡結構對權重改變的敏感度,使得生成器能夠充分學習到視網膜血管圖像的分布,從而提高分割的效果.為了降低模型的復雜度,減少計算量和訓練的參數數量,在每次使用3×3 的卷積核之前加入1×1 卷積核作為瓶頸層對輸入的特征層進行降維.將通道數目降為原來的一半,然后通過3×3 卷積核恢復到原來的通道數,具體結構如圖6(b) 所示.

圖5 生成器網絡結構Fig.5 Generator network structure

圖6 卷積的不同變體Fig.6 Different variants of convolutional

圖7 判別器網絡結構Fig.7 Discriminator network structure
本論文工作基于深度卷積對抗神經網絡(DCGAN) 和條件生成對抗神經網絡(CGAN)[25]實現,使用DCGAN 中推薦的訓練參數進行訓練,訓練時使用Adam 優化方式進行梯度下降(β1=0.5,β2=0.999,ε=10?8),學習率為lr=0.0002,mini-batch=1,卷積提取特征時使用Leaky-ReLU作為激活函數,Leak 斜率α設置為0.2,反卷積還原圖像時,使用ReLU 激活函數.訓練時總共迭代800個周期,輸出的分割圖像的大小為512×512×1.
生成器的訓練過程如圖8 所示,主要通過兩個途徑調整權重:1) 通過比較生成器分割出的視網膜圖像G(x) 與專家分割出的血管圖像y之間的差值,通過差值調整權重,使||y-G(x)||的值最小化;2)將視網膜圖像與生成器分割出的血管圖像G(x) 輸入到判別器中,根據判別器輸出的結果D(G(x),y)與1 之間的差值對生成器的權重進行調整.通過上面兩種方式對生成器權值的調整,使生成器分割出的視網膜血管圖像更加接近專家分割后的血管圖像.

圖8 生成器訓練的過程Fig.8 Generative training process
判別器的訓練過程如圖9 所示,也是通過兩個途徑調整權重:1) 輸入視網膜圖像和專家分割的視網膜血管圖像,通過比較判別器輸出的值D(x,y)與標準值1 直接差值調整權重,使判別器輸出的值更加接近1;2) 輸入視網膜圖像和生成器分割出的血管圖像G(x),比較判別器輸出的結果D(G(x),y)與0 之間的差值,通過差值調整權重.通過這兩種方式對權值的調整,使得判別器能更準確地區分視網膜血管圖像是通過專家分割的還是來自生成器分割.

圖9 判別器訓練的過程Fig.9 Discriminator training process
我們在兩個公開的眼底視網膜數據集(STARE[9]和DRIVE[26]) 上對我們的方法進行了測試,在DRIVE 數據集中,總共包含40 張視網膜圖像和對應的視網膜血管圖像,用前20 張圖像做訓練樣本集,后20 張圖像做測試樣本集,我們在第一類視網膜血管標簽圖像上進行訓練和測試.在STARE 數據集中我們用前10 張圖像做訓練樣本集,后10 張圖像當測試集.由于數據集中只有少量的樣本集對網絡結構進行訓練,但深度神經網絡對參數的訓練需要大量的訓練樣本,因此我們通過對圖像的旋轉、水平翻轉、垂直翻轉、平移變換、圖像灰度值的變化等方法對訓練數據集進行擴充,這對于提高分割的準確率、防止過擬合和網絡的魯棒性至關重要.
為了評估分割的效果,我們通過對靈敏性(Sensitivity),特效性(Specificity),準確率(Accuracy),F度量(F-measure) 等評估指標進行了比較.

其中,TP為被正確分割的血管像素的數目,TN為正確分割的背景像素數目,FP為錯誤分割為血管像素的背景像素,FN為被錯誤標記為背景像素的血管像素.
為了驗證引用的結構對改進模型的有效性,我們對本文所使用的網絡結構在引用前和引用后對視網膜血管分割的效果進行了對比,主要對比了如表1中的4 種結構:1) 不做任何改進的情況下,單獨使用U 型網絡結構.2) 生成對抗網絡結構中的生成器使用U 型網絡結構.3) 在U 型網絡結構中加入殘差模塊.4) 生成對抗網絡中的生成器中使用結合了殘差模塊的U 型網絡結構.通過對這4 種方式進行實驗,結果表明第4 種結構的性能最好.因此可以看出,殘差模塊對權重改變的敏感性能對梯度進行更好的調整,以及生成對抗網絡模型中判別器與生成器的相互對抗,相互學習,使得生成器的網絡結構能夠對視網膜血管進行更準確的分割.
為了證明第3.2 節中使用瓶頸層減少參數后對模型準確率的影響,我們通過對分別使用圖4(a) 的結構和使用圖4(b) 中的結構后模型對眼底視網膜圖像分割后的結果進行對比.通過實驗可以證明(表2),使用1×1 卷積核的瓶頸層在減少參數和計算量的情況下基本不會影響模型對視網膜血管圖像分割的準確率.
我們分別在STARE、DRIVE 數據集上進行了大量的血管分割實驗來證明方法的可行性,圖10 和圖11 分別展示了在DRIVE 數據集上和STARE 數據集上文獻[14]、文獻[27]與本文方法對其中兩張視網膜圖像的分割結果的對比,在圖10 和圖11 中,(a) 為原始視網膜圖像,(b) 為專家分割的視網膜血管圖像,(c) 和(d) 分別為文獻[14]和文獻[27]的分割結果,其中圖11(a) 中第一張和第二張分別為健康人,青光眼視網膜圖像,盡管圖11(a) 的第二張圖像中有血管有病變,存在病灶,但本文的方法可以較好的克服這些因素,分割出一張準確的血管圖像,從圖10 和圖11 中的(c) 和(d) 中可以看出文獻[14]和文獻[27]分割的視網膜血管圖像中包含了大量的噪聲,易受病變視網膜圖像中病灶的影響,對細小的血管分割比較模糊,且(d) 中分割出的血管尺寸比標準圖像中血管尺寸偏大.這些細小的血管對于分析視網膜疾病有著重要的意義.為了對細小的血管進行準確的分割,本文使用了生成對抗網絡,通過判別器不斷地對生成器進行優化,兩者相互對抗學習,提高模型的分割效果.并且生成器中使用的U型網絡結構克服了無法對細小的血管進行分割準確分割的缺陷.與以上兩種方法相比可知,本文方法所分割出的眼底血管圖像中的噪聲水平更低,對細小的血管分割更加全面,且比較清晰,有更好的魯棒性和精度.

表1 模型改進前后分割的結果Table 1 The segmentation results before and after model improvement

表2 使用瓶頸層前后分割的結果Table 2 The result of segmentation before and after using the bottleneck layer

圖10 DRIVE 數據庫視網膜血管分割結果比較Fig.10 Comparisons of segmentation results on DRIVE database

圖11 STARE 數據庫視網膜血管分割結果比較Fig.11 Comparisons of segmentation results on STARE database

圖12 不同算法的視網膜血管分割局部放大圖Fig.12 Different methods of partial retinal vessel segmentation
為了更加突出本文方法分割視網膜血管的優勢,我們對STARE 數據集中編號為im0240 的視網膜圖像使用不同方法分割后的結果進行局部放大,如圖12 所示.其中圖12(a)、(c)、(e)、(g)、(i) 分別為文獻[14]、文獻[27]、文獻[28]、本文方法和專家分割的結果,圖12(b)、(d)、(f)、(h)、(j)為與之對應的對右下角部分進行放大后的圖像,圖中的白色圓圈表示不準確的分割,字母A 和字母B 分別表示鄰近的血管和細小的血管.比較圖12(a)、(c)、(e)、(g)可看出,本文的方法分割出的血管更加的清晰,血管的尺寸也比較合適,包含的噪聲更少.從圖12(a) 中可以看到文獻[14]分割出的血管比較虛幻,且不能完整的分割,含有大量的噪聲.圖12(b) 為文獻[27]分割的結果,噪聲比前面兩種方法要少,分割的結果相對要好,但分割效果還是不理想.從圖12(f) 中可以看到文獻[28]的分割的血管比實際的血管要大,血管周圍出現了大量的噪聲使血管比較模糊.在圖12(b)、(d)、(f) 中可以看到其他的方法在A 處對血管分割不全,無法進行準確的分割,在B 處都出現錯誤的分割.為了減少這種錯誤的分割我們加入殘差模塊,利用其對權重改變的敏感性使得生成器能夠更加充分地學習到眼底視網膜圖像與眼底血管圖像之間的映射關系,提取更多用于分割血管的特征,從而進行更加準確的分割,減少誤分割和漏分割,從圖12(h) 可以看到,本文分割出的視網膜血管圖像中基本上沒有噪聲、更加清晰,血管的大小也接近標準大小,含有的錯誤分割少,更加接近標準的視網膜血管圖像.
為了進一步證明本文算法對視網膜血管分割的有效性,在STARE、DRIVE 數據集上將本文的方法分別與文獻[5]、文獻[6]、文獻[12]、文獻[13]、文獻[28-33]中的方法在敏感性、特效性、準確率、F度量等幾個指標對視網膜血管分割的性能進行了比較.其中靈敏度表示正確分割出的血管像素占真實血管像素的百分比,特異性為正確分割的背景像素占真實背景像素的百分比,準確率為正確分割血管和背景像素占整個圖像的百分比,F度量表示精度和召回率直接的調和均值.表3 和表4 分別給出了不同方法在DRIVE 和STARE 數據集上視網膜分割的準確率.從表3 和表4 中可知,本文算法在不同的數據集上靈敏性、準確率、F度量等都比文獻[5]、文獻[6]、文獻[12]、文獻[13]、文獻[29]、文獻[30]要高.雖然文獻[27]、文獻[28]、文獻[33]的靈敏度比本文方法要高,但是分割出的血管尺寸比實際的要大,分割出的血管包含比較多的噪聲,且本文算法有最高的F度量,靈敏性和特效性都保持相對穩定,分割圖像中含有的噪聲比較少,但對細小血管分割效果不是很好,有時會出現斷裂的情況.對于DRIVE 數據集,本文方法對視網膜血管分割的F度量達到82.08%,比文獻[33]高了0.37%,靈敏性度比文獻[33]高了4.82%.在STARE 數據集上,我們的方法在F度量、靈敏度上比文獻[33]分別高了0.27%、2.4%.因此由表3 和表4 中血管分割的評估指標展示可知,在DRIVE 和STARE 數據集上,本文的方法對血管、背景的識別和提取不同特征能力均優于其他有監督血管分割方法.
圖13 給出了本文方法和其他方法的F度量性能評價曲線,在DRIVE 數據集上分別與文獻[14]、文獻[27]、文獻[28]、文獻[30]進行了比較,在STARE 數據集上分別與文獻[27]、文獻[28]、文獻[30]進行了比較.從圖13 可以看出,在DRIVE 數
據集和STARE 數據集上,本文方法比文獻[14]、文獻[27]、文獻[28]、文獻[30]中的方法效果都要好,且波動比較小,模型的泛化性比較強,對特征的提取和識別能力比其他方法更好,能對各種眼底圖像的血管進行很好的分割,無論在健康還是病變的視網膜圖像上,都能進行保持相對穩定的分割效果,能夠很好地克服病灶的影響.

表3 DRIVE 數據庫視網膜血管分割結果Table 3 Segmentation performance of retinal vessel on the DRIVE database

表4 STARE 數據庫視網膜血管分割結果Table 4 Segmentation performance of retinal vessel on the STARE database

圖13 不同算法的F 度量性能評價曲線Fig.13 Different methods of F-measure performance evaluation curve
視網膜血管的正確分割對幫助醫生進行眼底疾病的診斷具有重大的實際意義.本文使用條件深度卷積生成對抗網絡對眼底視網膜進行分割,在生成器中使用卷積對圖像的特征進行了若干次提取后通過反卷積生成對應的視網膜的血管圖像,我們在生成器中加入殘差網絡模塊,由于殘差網絡對特征值的改變非常敏感性,使得提取的特征更加準確.為了降低模型的規模,在每次進行3×3 的卷積之前通過1×1 的卷積進行降維,在保證分割的準確性的情況下減少了參數的數量和計算量.我們分別DRIVE和STARE 數據集上對本文提出的方法的可行性進行了驗證,在DRIVE 和STARE 數據集上的準確率分別達到了96.08% 和97.71%,F度量分別達到了82.08% 和85.02%,通過對分割出的視網膜血管圖像進行分析和比較,本文提出的方法與其他方法相比更具有優勢.