龍勝春 陳嘉莉 黃肖肖 陳芝清
1(浙江工業大學計算機科學與技術學院,杭州 310023)2(浙江大學附屬第二醫院眼科中心,杭州 310009)
糖尿病視網膜病變(DR)是糖尿病的主要并發癥之一,會導致視力嚴重下降甚至完全喪失。近幾年,DR的發病率呈指數級增長,預計到2030年,DR患者的全球人口將增長到1.91億[1]。定期篩查可以及時發現視網膜病變,降低患者失明的風險,對于及時掌握治療時機具有重要意義。DR的病變主要表現為動脈瘤、出血斑點、硬性滲出、棉絨斑以及黃斑水腫等。已知硬性滲出(HE)是視力喪失的主要威脅之一,特別是當它們出現在視網膜中央附近或中央凹上時,對視力的影響更加明顯[2]。HE出現在非增殖性DR(NPDR)的后期(見圖1),呈明顯的淡黃色或白色,其形狀大小位置皆不一,大小由幾個像素到幾千個像素。彩色眼底圖像中HE的檢測在DR診斷和監測治療進展中起著至關重要的作用,因此HE檢測是本研究的重點。

圖1 眼底圖像滲出Fig.1 Retinal fundus image with exudates regions
現階段的HE篩查通常是由眼科醫生肉眼觀察并進行診斷分級,這是相當費時且容易受到觀察者主觀性的影響,診斷結果也缺乏定量信息,而HE的計算機輔助檢測有助于實現快速且準確的診斷。已發表的HE檢測算法主要集中為以下4種:閾值法、邊緣檢測法、區域生長法和分類法。由于滲出物在彩色圖像中的強度不均勻且與圖像背景的對比度低,所以采用閾值法和邊緣檢測法準確實現滲出物檢測是非常具有挑戰性的。近來,有研究者提出了用機器學習方法來實現全自動檢測硬性滲出。Niemeijer等提出了一種結合KNN分類器的有監督機器學習方法來實現HE檢測[3];Akram等利用貝葉斯分類器,區分滲出物和非滲出物區域[4];Osareh等分別利用SVM和MLP兩種分類器,實現了滲出物的提取[5];還有一些其他方法,包括分水嶺分割[6]和k均值聚類[7],均被應用于視網膜圖像的病變檢測。但傳統機器學習方法不能準確地提取所有有效的特征,且視網膜眼底圖像的質量不一,上述應用于HE檢測的算法分類效果在臨床上均不夠令人滿意。而深度學習作為機器學習領域的一個新分支,近年來在計算機視覺、醫學影像處理、語音識別與生物信息學等領域都取得了突破性進展。深度學習通過模擬人腦建立分層模型,從數據中獲得不同層面的抽象特征并用于分類預測,其最大的優點就在于用非監督式或半監督的特征學習和分層特征提取算法,而非手工設計的特征。深度學習由于基于的是對樣例的學習,因此需要大量的醫學圖像作為基礎。目前,深度學習方法的研究主要集中在有較大數據量的幾大病癥,如肺癌、乳腺癌等。Prentasic等利用卷積神經網絡,對彩色眼底圖像進行分割,并檢測眼底圖像中的滲出物[8]。Melinsca等提出,利用深度卷積神經網絡實現視網膜血管提取[9]。 Son等針對彩色眼底圖像數據集少的問題,提出了用生成對抗網絡(GANs)來提取視網膜血管[10]。其中,GANs提供了一種不需要大量標注訓練數據就能學習深度表征的方式[11]。學習的表征可用于多種應用,包括圖像合成、圖像超分辨率技術和語義圖像編輯等眾多領域。
針對已有方法的不足以及標準訓練數據少的問題,本研究提出了一種基于生成對抗網絡的眼底視網膜圖像硬性滲出的自動檢測方法。首先對彩色眼底圖像進行預處理,利用定向局部對比度法(DLC)提取視網膜粗血管網絡,根據血管分布信息以及視盤周圍的亮度特征準確定位視盤中心,再掩蓋視盤以消除對后續HE檢測的影響;然后,訓練GANs實現硬性滲出的提取。GANs有兩個主要組成部分:生成器神經網絡(G)和判別器神經網絡(D)。將預處理后的整幅圖像輸入到生成網絡G中,交替迭代訓練生成網絡G和判別網絡D,最后得到分割效果最佳的模型并保存。該方法能夠精確并快速地檢測彩色眼底圖像中的硬性滲出,在e-ophtha EX數據庫和DIARETDB1數據庫上都得到很好的檢測效果。結果表明,相比一般的卷積神經網絡(CNN),生成對抗網絡的博弈模式使得生成網絡G能夠更好地檢測硬性滲出。此外,還對實驗結果進行了像素級評估,為實現更加精準的滲出提取提供了檢驗標準。
生成對抗網絡(generative adversarial networks, GANs)是一種深度學習模型,是近年來深度學習最具前景的方法之一。該方法由Lan Goodfellow等于2014年提出[11],其優秀的性能很快得到了學術界的普遍關注。當前,GANs被應用于各個領域,如通過文本描述合成圖像、圖像語義編輯等。
1.1.1理論基礎

圖2 基于生成對抗網絡的硬性滲出檢測算法框架Fig.2 The proposed Generative Adversarial Networks(GANs)framework for hard exudates detection
GANs啟發自博弈論中的二人零和博弈,GANs模型中的兩位博弈方分別由生成式模型(generative model)和判別式模型(discriminative model)充當。生成式模型G類似于一個“仿制者”,需要捕捉樣本數據的分布來生成一個類似真實訓練數據的樣本,并且能夠盡量不被判別式模型識破;判別式模型D則類似于“警察”,是一個二分類器,需要估計一個樣本來自訓練數據而非生成數據的概率,如果樣本來自真實的訓練數據,D就輸出大概率,否則D輸出小概率。生成網絡G和判別網絡D在訓練過程中,固定一方的權重再更新另一方的網絡權重,交替迭代。在這個過程中,生成網絡G和判別網絡D雙方都極力優化自己的網絡。當固定判別網絡D時,生成網絡G就優化自己的網絡,使自己輸出盡可能和真實數據一樣的樣本,并使生成的樣本經過判別網絡D之后,D會輸出高概率。當固定生成網絡G時,若輸入為真實訓練數據時,D優化網絡結構使自己輸出1;若輸入為生成數據時,D優化網絡結構使自己輸出0。這兩者之間的博弈與競爭,使得兩個模型的能力都不斷增強,直到判別網絡D無法區分真實樣本和生成式模型生成的假樣本為止,即達到一個動態的平衡(納什平衡)。圖2為本研究所提出的基于生成對抗網絡的硬性滲出檢測算法框架。
1.1.2網絡結構
在本研究中,用到的深度卷積對抗網絡不同于樸素GANs,生成網絡G和判別網絡D均是由卷積神經網絡(CNN)構成的。輸入彩色眼底圖像,通過生成網絡G生成與原圖像相同尺寸的視網膜硬性滲出概率圖,并將生成的概率圖輸入至判別網絡D中進行判別。其中,概率圖中的每個像素值的范圍為0~1,其值的大小表示該像素點為硬性滲出的概率。值越大,表示該像素點為硬性滲出的可能性越大;值越小,表示該像素點為硬性滲出的可能性越小。判別網絡D的任務:鑒別輸入的滲出圖像是專家標定的標準滲出圖像,還是由生成網絡G所生成的滲出概率圖。對于一幅彩色眼底圖像,需要預測圖像中每個像素屬于的類別,一般的卷積神經網絡(CNN)是預測一張圖片的類別,因此本研究中的生成網絡G用到的是U-net網絡。U-net是基于全卷積神經網絡(FCN)的一種網絡框架,沒有全連接層,輸入和輸出均是圖像。它是2015年由Ronneberger等提出的[12],用于生物圖像分割的網絡,現也被廣泛應用于其他領域。U-net網絡結構包括收縮(卷積)和對應的擴展(上采樣),收縮主要用于捕捉上下文特征,包括邊緣、亮度等,有利于硬性滲出的精確分割,擴展則是用于恢復圖像大小。當前專家精確標定的視網膜硬性滲出圖像很少,而U-net網絡需要很少的訓練集即可完成訓練,且容易收斂,能夠很好地解決訓練集小的問題。
1.1.3目標函數
GANs的訓練目的就是獲得令判別網絡D分類準確率最大化的參數,以及獲得最大化欺騙判別網絡D的生成網絡G的參數。對于訓練生成網絡G,輸入彩色眼底圖像x,生成網絡G輸出硬性滲出概率圖G(x)。生成網絡G的訓練目的就是優化網絡結構,使得G(x)與專家標定的標準滲出圖像y盡可能相似。判別網絡D對于輸入y,D(y)的輸出是0~1范圍內的一個實數,用來判斷這個輸入圖片是一個真實圖像的概率。令pr和pg分別代表真實圖像的分布和生成圖像的分布,判別網絡D的目標函數[11],可表示為
(1)
判別網絡D的訓練目標是:當輸入為專家標定的標準數據集圖像y時,Dx,y需要被最大化;當輸入為由生成網絡G所生成的滲出概率圖G(x)時,Dx,G(x)應該被最小化。類似地,生成網絡G的目標就是讓判別網絡D無法區分真實圖像和生成圖像,那么GANs的優化目標函數如下:
(2)
為了計算生成網絡和判別網絡的效率,需要加入損失函數,其定義如下:
LSEGG=Ex~Pr-ylogGx-
(1-y)log1-Gx
(3)
最后,整個GANs的目標函數如下:
(4)
式中,λ為正則項系數,這里設定為0.1。
視網膜圖像往往具有較差的對比度,原因包括成像采集過程中引入的噪聲,以及相機閃光等因素。另外,不均勻的光照會增加視盤附近的亮度,而削弱遠離視盤位置的亮度,這些因素對HE的檢測都有著顯著的影響。首先,需要將所有圖像大小統一為800像素×800像素。Clara等提出通過增強YIQ顏色空間中的亮度來改善上述光照不均勻問題[13],過程如下:
Ymod=aY+bI+cQ
(5)
再將修改后圖像轉換回RGB顏色模型,其中a、b、c分別設定為1.8、-0.9和-0.9。
1.2.1血管提取
從綠色通道可以看出,圖像中血管亮度一般要比鄰近的背景區域暗,且血管邊緣處的灰度變化最為明顯,而背景和病變區域的亮度則比較亮。將梯度向量場原理應用于綠色通道圖像,計算各像素的向量場散度值。從梯度向量場分布圖中可以看出,非血管區域的散度值等于或小于零,梯度向量場無變化或向內收縮。在血管區域,靠近中心線的梯度向量向外發散的數量較多,因此散度值大于零且值較大。通過計算圖像向量場散度值的正負符號可以判斷對比度明顯的血管,即可提出較完整的視網膜圖像血管中心線。獲得大部分中心線后,接著采用定向局部對比度(DLC)方法來檢測中心線兩側的血管像素。
關于DLC算法的定義和性質描述如下:假設像素p的亮度為Ip,沿著方向角θ的像素p的DLC定義為

Npθ,r=xq,yq)|xq=xq-ksinθ,
yq=yq+kcosθ,k=1,…,r
(8)
DLC為負值表明當前檢測到的像素灰度值要低于鄰域平均灰度值,而圖像中血管像素灰度值一般低于鄰域背景灰度值,因此能滿足如下公式則表明當前檢測到的像素為血管像素,有
DLCqθ≤T
(9)
式中,T為指定的非正閾值。
圖3為兩幅眼底圖像血管提取結果。

圖3 兩幅質量不同的眼底圖像血管的提取結果。(a)和(c)原圖;(b)和(d)相應的血管提取結果Fig.3 Examples of retinal blood vessels extraction on two retinal images with different illumination conditions. (a)(c)Original images; (b)(d)Results of blood vessels extraction
1.2.2視盤定位
視盤(OD)是視神經的始端,也是眼底血管的起始點。在正常的彩色眼底圖像中,視盤通常是呈亮黃色或白色的圓盤狀結構,直徑約1.5 mm,其顏色特征和硬性滲出十分相似。為避免對后續HE檢測的干擾,本研究對彩色眼底圖像中的視盤進行掩蓋。通過觀察發現,視盤中心位置的血管最密集且亮度較大。結合視網膜血管分布信息和灰度值信息,可以準確定位視盤中心點,具體操作如下:
IOD(r,c)=IBV′r,c-1.2IG′r,c
(10)
式中,IG'是對綠色通道圖像IG進行均值濾波后的圖像。
再對血管圖像IBV求滑動窗口大小為N×M像素內的灰度均值,得到IBV′。首先,根據多次實驗,N設定在50~60像素之間、M設定在20~25像素之間效果最佳。然后,遍歷上述所得到的圖IOD,其值最小的像素點即為視盤中心位置。根據所得到的視盤中心位置,得到以OD為中心的感興趣區域(ROI)。最后,應用霍夫圓檢測算法來檢測OD邊界,再掩蓋視盤,以避免對后續HE檢測的干擾。
1.3.1材料及實驗設備
本實驗選用了兩個公開的視網膜圖像數據庫(DIARETDB1[14]和e-ophtha EX[15])所提供的眼底圖像。DIARETDB1數據庫包含89張彩色眼底圖像,分辨率為1 500像素×1 152像素,50°視場(FOV)。在這個數據庫中,每個圖像的不同區域由4名專家手動標記,以確定視網膜圖像是否包含滲出物。e-ophtha EX數據庫包含47張具有滲出區域的圖像和35張沒有滲出的圖像,本研究僅使用47張具有滲出區域的圖像。由于DIARETDB1數據庫中的人工標定是基于圖像層次的,e-ophtha EX是唯一一個公開提供用于硬性滲出分割的像素級標定的數據庫,所以選擇e-ophtha EX數據庫中的28張圖像來訓練生成對抗網絡模型,剩余19張圖像用于驗證本研究所提出算法的性能,而DIARETDB1數據庫則被用于另外的獨立測試來檢測視網膜圖像是否包含滲出物。實驗系統配置為Windows 10操作系統,2.9 GHz Intel Core i5 CPU和16 GB內存的計算機,編程語言Python3.6,基于Tensorflow框架,所有的卷積運算均在顯卡NVIDIA Tesla K80 下進行。
1.3.2實驗操作過程
本研究選擇e-ophtha EX數據庫中的28張圖像來訓練生成對抗網絡模型,剩余19張圖像以及DIARETDB1數據庫的全部圖像用于驗證所提出的算法性能。首先,對每一張訓練集圖像進行歸一化操作,將圖像每個像素點的值轉換到0~1之間;再將歸一化的圖像通過翻轉和旋轉(旋轉步長設定為15°)來達到數據集擴增的目的,其中彩色眼底圖像和對應的人工標定滲出圖都需要旋轉。擴增后的訓練集總共包含437張圖像,按照20∶1的比例分為訓練集和驗證集,迭代循環訓練生成網絡G和判別網絡D。每次循環先經過生成網絡生成滲出概率圖,判別網絡再進行判別。然后計算損失函數,并通過反向傳播算法優化權重參數,開始下一次循環。本研究采用Kingma等提出的Adam優化算法[17]來優化學習率的梯度方向,因為它是一種可以替代傳統隨機梯度下降過程的一階優化算法,能基于訓練數據迭代更新神經網絡權重,并最小化下一步損失。本研究學習Hinton等提出的通過防止特征檢測器的共適應[18]來改善神經網絡,采用固定學習率0.000 2(即學習率在訓練過程中并不會改變),通過Adam優化器生成梯度的方向。下一步輸入損失函數和權重參數,通過更新權重參數來最小化損失值,同時把更新好的權重參數用于下一次卷積運算。這樣,通過反向傳播算法,每次結合學習率更新梯度,然后根據模型損失,最小化下一次循環的模型損失。最后,保存在驗證集上分割效果最佳的模型。經過多次實驗總結,本實驗設定的最大迭代次數為2萬次,總共重復實驗5次,每次平均訓練時間為9 h。對于生成網絡G輸出的滲出概率圖,采用Otsu閾值法對其進行閾值分割,得到最后的滲出檢測結果。
HE檢測的評價標準可以分為兩個級別:像素級別和圖像級別。e-ophtha EX數據庫提供了像素級的人工標定,因此可以將實驗結果圖像的每個像素與數據庫提供的人工標定圖像進行比較。在圖像級HE檢測中,基于分類結果是否存在HE來確定DIARETDB1數據庫中的圖像是否具有硬性滲出。
1.4.1e-ophtha EX數據庫評估
典型的像素級評估方法是計算正確分類像素的數量,然而不適合硬性滲出檢測的評估。在不同觀察者的測定之間,滲出物的輪廓并不一定完全匹配,導致滲出物檢測的一致性不足。在這項研究中,使用了一種混合驗證方法,需要計算人工標定結果和實驗所得結果之間的最小重疊比率。
給定實驗結果滲出連通區域集D1,D2,…,DN和人工標定滲出連通區域集G1,G2,…,GM,若滿足下列公式,則這個像素被認為真陽(TP),即
(11)
式中,·表示一個集合的基數,σ是一個范圍0~1的參數,這里σ被設置為0.2[14]。
若滿足式(12),則這個像素被認為假陽(FP);若滿足式(13),則這個像素被認為假陰(FP);而其余的像素被認為是真陰(TN),有
(12)
(13)
式中,?表示為空集。

1.4.2DIARETDB1數據庫評估
從臨床角度來看,圖像級評估滲出物的存在也是有意義的,特別是對于DR篩選的應用。為了評估算法魯棒性,本研究提出的算法在DIARETDB1數據庫中被獨立地測試,以確定測試圖像是否包含滲出物。如圖4所示,數據庫中每個圖像由4位專家標記,如果人工標定置信度大于或等于75%,則圖像被診斷含HE。在圖像級別上,如果本算法和專家人工標定的圖像都含有滲出物區域,則將該視網膜圖像的分類結果作為TP來記錄。然后,使用3種不同的評估參數,包括靈敏度(SE)、特異性(SP)和準確性(AC)來確定HE檢測的總體性能,計算公式如下:

圖4 專家標定示例。(a)彩色眼底圖像; (b)DIARETDB1數據庫人工標定圖像Fig.4 Example of ground truth. (a)color retinal image; (b)The ground truth image in DIARETDB1 database
(14)
(15)
圖5(a)是經過本文第1.3.2節的步驟迭代循環2000次的結果,其中除了硬性滲出,還有一些眼底圖像的邊緣及背景被提取。經過14 000次循環的結果如圖5(f)所示,此時能夠有效地辨識眼底圖像中的局部亮斑和硬性滲出之間的差異,實現硬性滲出的精確提取。在圖6中,(a)給出了一張眼底圖像的部分滲出區域,(b)為專家人工標定結果,(c)為本方法的檢測結果,(d)為像素級評估的結果。其中,(d)中的綠色、紅色、藍色和黑色分別代表TP、FP、FN、TN,分別由本文第1.4.1節所給出的評估公式(式(11)~(13))計算得到。從圖6(d)結果可以看出,僅有一些細小且較暗的硬性滲出未被檢測出(圖中藍色部分),有少量的非滲出物質被識別為硬性滲出(圖中紅色部分)。表1(右)還顯示本算法在相同的e-ophtha EX數據庫上與其他公布的算法結果相比,3個評估指標(SE、PPV、F-Score)都比其他現有的算法好,結果表明本方法可以更有效地區分HE和其他明亮的病變,體現了本算法的可行性和優越性。表1(左)列出了本研究提出的算法在DIARETDB1數據庫中的整體評估性能,其中整體平均靈敏度(SE)、特異性(SP)和準確性(AC)分別為100%、96.2%和97.8%,由本文第1.4.2節所給出的評估公式((式(14)、(15))計算得到。

圖5 不同訓練次數的結果。(a)輸入到生成網絡的彩色眼底圖像;(b)生成對抗網絡訓練2 000次的結果;(c)~(h)分別為生成對抗網絡訓練5 000、8 000、11 000、14 000、17 000和20 000次的結果Fig.5 The results of different training times. (a)The input of generator G; (b)The result of training 2 000 times; (c)~(h)The result of training 5 000, 8000, 11 000, 14 000, 17 000 and 20 000times

圖6 像素級評估。(a)原圖;(b)專家標定結果;(c)本方法的檢測結果;(d)像素級評估結果Fig.6 Example of pixel level validation. (a)Original image; (b)The ground truth image in e-ophtha EX dataset; (c)The segmented result with our algorithm; (d)The result of pixel level validation

表1 不同方法對DIARETDB1數據庫圖像以及e-ophtha EX數據庫圖像的檢測結果Tab.1 Detection results of DIARETDB1 database and e-ophtha EX dataset with different methods
生成對抗網絡模型(GANs)是基于深度學習的一種強大的生成模型。相比較樸素GANs,將卷積神經網絡引入生成器和判別器的深度卷積對抗網絡具有更強的特征表達能力,極大增強了GANs的數據生成質量。本研究基于深度卷積生成對抗網絡,提出了一種新穎且有效的視網膜眼底圖像硬性滲出檢測方法,并通過多次重復實驗來研究其有效性。在預處理階段,由于視盤OD和硬性滲出HE的顏色和亮度都很相似,因此在進一步檢測滲出之前掩蓋OD是十分重要的步驟,這將提高HE檢測的準確度。本研究通過觀察眼底圖像的灰度信息以及視網膜血管的分布,提出了一種快速且精確的OD定位方法。本方法受Medhi等的研究[19]啟發,他們利用垂直sobel算子來檢測血管,將垂直像素最多的區域視為OD。相比其他方法,本方法只需遍歷兩次圖像,找到灰度值最大、血管最密集的像素,就實現了OD的快速定位,準確率達到93.5%。在滲出檢測階段,筆者受Jaemin son等研究[10]的啟發,將GANs應用到硬性滲出檢測中去。目前,GANs已在計算機圖像生成等任務中取得了極大的成功,并且正在不斷地深入,從傳統的計算機視覺向其他領域擴展。最重要的是,GANs不需要大量標注訓練數據就能學習圖像的深度表征,能夠很好地進行圖像分割。因此,在基于視網膜病變圖像集很少的前提下,GANs比其他深度學習展現出更大的優勢。此外,在本研究的生成對抗網絡中,生成網絡G用到的是U-net網絡,而U-net在圖像分割中十分受歡迎,經常用于生成器的體系結構。表1顯示,在相同的數據庫中,本研究提出的基于深度卷積對抗網絡的硬性滲出檢測算法比其他已有的算法更加有效,體現了該算法的優越性和可行性。
本研究所提出的方法雖然取得了一定的成效,但仍然存在一些不足之處。首先,在預處理階段,采用霍夫圓檢測對視盤進行掩蓋。若視盤周邊出現硬性滲出,則會被掩蓋而不能檢測到。其次,所提出的算法只在e-ophtha EX和DIARETDB1兩個數據集上進行了測試,沒在其他數據集上進一步驗證算法的泛化能力。
本研究開發并評估了一種視盤定位和硬性滲出自動檢測算法,利用生成對抗網絡來檢測眼底圖像中的硬性滲出。實驗結果表明,所提出的基于生成對抗網絡的硬性滲出自動檢測方法在兩個公開獲得的數據庫(DIARETDB1和e-ophtha EX)都取得了非常好的檢測效果,說明該算法具有很大的應用價值。本研究對提出的算法進行了多次實驗,證明該算法在重復性方面可靠;并對結果進行了像素級和圖像級評估,結果表明該算法實現了精確檢測HE,這將為臨床DR診斷提供有效的科學依據。