尹雅晴,郭 瑩
(沈陽工業大學信息科學與工程學院,沈陽 110870)
青光眼是僅次于白內障的第二大致盲疾病,是導致不可逆性視力喪失的主要原因之一,又被稱為“無聲的視力竊賊”[1]。在當前的醫學檢查中,青光眼疾病的發展具有較強的隱蔽性,一旦確診,很難完全治愈;早期輔助診斷是避免青光眼失明的關鍵。雖然目前尚無成熟的青光眼診斷方法,但早期治療已被證明可將致盲率降低50%左右。因此,早期診斷出青光眼疾病并及時治療,可以進一步控制疾病惡化,是預防青光眼疾病的必由之路。
近年來,一些國內外學者進行了深入研究。文獻[2]提出一種基于集成學習的卷積神經網絡方法,使用熵采樣來選擇信息點,優于均勻采樣,同時降低了計算復雜度。付華柱等人[2]將視盤(OD)和視杯(OC)采用多標簽深度網絡進行聯合分割,然后計算CDR 值以驗證青光眼的檢測。Abbas 等人[4]通過將眼底圖像輸入卷積神經網絡(CNN)來提取各層相關特征,并采用有監督的網絡來優化模型提取特征過程,然后對比使用支持向量機(SVM)和Softmax 分類器進行青光眼分類,該方法需要對OD 和OC 區域進行分割,因此不僅需要大量的圖像處理技術,還需要具備專家知識來選擇最具鑒別能力的特征。為解決小樣本學習能力不足、分類精度低等問題,文 獻 [5]采用深度學習網絡結構,對眼底圖像進行青光眼檢測,經實驗,該方法在分類性能上有所提高,但網絡結構較復雜且耗時較長。
根據現有研究,目前基于深度學習的青光眼診斷方法有了很大進展,但仍存在一些問題,需要大量的數據集進行模型評估。與自然圖像相比,醫學中缺乏對大規模的青光眼數據集進行臨床評估的測試。因此,為了更好地為青光眼診斷提供臨床輔助信息,在此設計一種模型,針對公開的具有少量標注的青光眼圖像進行數據增強處理,然后利用遷移學習的思想對CNN 網絡結構進行青光眼診斷,使其能夠實際應用于臨床系統。
為驗證方法的可靠性和魯棒性,選取Drishti-GS1[6]和REFUGE[7]兩個公開數據庫來驗證模型的分類性能。其中Drishti-GS1 數據庫包含101 張眼底圖像、70 張青光眼圖像、21 張正常眼,分辨率約2047×1760 像素,且每幅圖像由4 位專家對青光眼像素的CDR 值進行注釋。REFUGE 數據庫包含1200 張眼底圖像、120 張青光眼圖像、1080 張正常眼,分辨率包含2124×2056 像素和1624×1624 像素。該數據庫包含用于青光眼識別的基于地面的真實視盤和視杯分割、黃斑定位的可靠參考標準。
為解決數據量過少的問題,改善CNN 診斷青光眼方法的效果,提高模型的準確性和魯棒性,設計對Drishti-GS1 數據庫和REFUGE 數據庫圖像分別采用多種圖像處理方法進行數據擴充,以避免出現過擬合情況,這些方法包括:
縮放:將原始圖像尺寸統一為540×540 像素;
平移:將圖像按上下左右4 個方向分別移動20個像素;翻轉:對圖像進行水平、垂直、水平垂直翻轉;旋轉:將圖像在[0°,260°]區間內以15°間隔進行順時針旋轉。
通過前三種數據增強方法,每張圖像相當于擴充為9 倍;而使用上述四種數據增強方法,每張圖像相當于擴充為22 倍。采用不同的數據增強處理,Drishti-GS1 和REFUGE 數據庫由原始1201 張圖像分別擴增為11709 張和41622 張。圖1 所示為擴充后的眼底圖像示例。

圖1 數據庫增強圖像
原始Inception 網絡模型結構使用1×1、2×2 和5×5 大小的卷積核來提取圖像不同尺度的特征,然后進行特征融合[8]。然而卷積核越大,網絡參數量就越大,進而加大計算成本。例如5×5 卷積核的參數量約1.2 億個,計算量是2×2 卷積核的2.78 倍。
在Inception-V2 網絡模型中,通過優化網絡結構來降低參數計算量,用較小的n×1 卷積核代替原始的Inception 模型結構中較大的2×2、5×5 卷積核。該模型主要從兩個方面對網絡結構進行了改進:一方面,該網絡結構在原始的Inception 模型的基礎上,在卷積層中大量地使用降維,將二維的卷積核降解為一維的,降低了網絡參數量;另一方面,選取了25×25、17×17 和8×8 三種不同的結構來加深網絡結構對模塊進行優化,而前面還是普通的卷積層。此外,該網絡采用2×2、步長為2 的卷積核進行Maxpooling 運算,實現對輸入圖像的大小壓縮,提取青光眼圖像的抽象特征。
在CNN 中,選取的網絡模型參數量越多,網絡訓練的時間越長,有時甚至需要數周時間,而且從頭開始訓練一個網絡模型往往會遇到擬合或損失函數振蕩發散的情況。遷移學習方法[9]的引入可以利用已有的知識來解決目標域中只有少量標記數據樣本的問題。此外,可以通過凍結前面的網絡層只微調后面的全連接層來減少網絡訓練的參數量,而凍結的層數需要根據預訓練網絡模型中的數據與所使用的新數據之間的差異來評估,網絡凍結層數越少,可以微調整的層數越多,可擬合新數據分布的參數越多。
因此,針對CNN 中存在的問題,采用遷移學習方法選擇泛化能力強的模型,然后通過凍結前面的卷積層參數,只微調最后一個全連接層的參數來減少大量的參數調整工作,減少訓練模型所需的時間,加快模型的收斂速度,提高模型分類精度。
2.2.1 網絡訓練策略
首先,在大尺度自然圖像數據集(ImageNet)中預訓練好Inception-V2 網絡模型,將數據擴增后的兩個公開的青光眼數據庫圖像輸入其中進行訓練,并將預訓練得到的網絡各層的權重和偏差作為初始參數,接著再用fine-tune 方法繼續訓練網絡模型中的權重參數,完成青光眼圖像的特征提取。
然后,根據青光眼圖像所需的分類數量,微調網絡最后一個全連接層的參數,即將Inception-V2網絡模型中最后一層的1000 個神經元替換為兩個神經元進行眼底圖像中青光眼和正常眼的分類。
最后,將網絡提取到的各種底層特征進行融合并組成高級特征,用Softmax 分類器進行青光眼二分類。如圖2 所示為基于遷移學習的CNN 采用Inception-V2 網絡模型進行青光眼輔助診斷方法的訓練策略。

圖2 基于遷移學習的CNN 網絡模型訓練策略圖
2.2.2 網絡參數設置
在訓練過程中,每運行一次迭代(iteration),參數權值需要更新一次,每次更新都需要對batch_size個樣本進行運算學習,再根據運算結果對參數進行一次調整。因此,批量大小的設置非常重要,它將影響模型的優化程度和速度。設置過小會導致效率低下和無法收斂。當它增加到一定程度時,下降的方向變化很小,這就需要大量的內存支持,計算方法為:

式中,n 為總的樣本量,epoch 為學習時期,batch_size是批尺寸。
在CNN 訓練過程中,采用動量法(Momentum)對模型進行優化。該方法解決了隨機梯度下降法中每次迭代的梯度都含有較大噪聲的問題,避免了網絡梯度方向影響網絡學習速率的問題。但學習率需要逐步降低,否則模型無法收斂。在此,將學習率手動設置為從0.01 開始,訓練50 個epoch,在Drishti-GS1 數據庫訓練集包含的1940 張圖像和REFUGE數據庫訓練集包含的22040 張圖像中,共24980 張訓練圖像,每個epoch 迭代780 次,經過29000 次迭代后下降到0.001。同時,將batch_size 設置為22,即1 次迭代使用的樣本量為22,Momentum 參數設置為0.9,Dropout 策略的比率設置為0.75。
實驗選取用基于Pycharm 環境的Python 版本2.6,OpenCV 版本2.2.0,使用一個用Python 編寫的以TensorFlow 為后端的Keras 2.2.5 版本的開源深度學習框架,通過連接阿里云服務器進行環境配置。為了更加客觀地評價模型的分類性能,采用基于混淆矩陣得出的接受者操作特征曲線即ROC 曲線,用來評價模型的預測能力,此外使用準確率(ACC)及ROC 下曲線面積值(AUC)作為評價指標,對模型性能進行評估。精確度Accuracy 是青光眼分類性能的總體度量,即眼底圖像分類正確的樣本數與總體樣本數之比,ACC 值越高表示青光眼分類的準確率越高。AUC 值可以用來衡量模型分類性能的優劣,分類器的AUC 值越大,分類性能越好。相關計算如以下各式來實現:


其中,TP 是真陽性,TN 是真陰性,代表所有眼底圖像中被正確分類的樣本數量。
在ROC 曲線中,縱軸為真陽性率(TPR),即預測正確的青光眼樣本與青光眼總數量之比;橫軸為假陽性率(FPR),即預測錯誤的青光眼與正常眼總數量之比。TPR 值越大,表示預測青光眼類中實際為青光眼類越多;而FPR 值越大,表示預測青光眼類中實際為正常眼類越多。在ROC 曲線中(0,1)坐標點的性能最好,越靠攏該點,越偏離對角線y=x,得到的AUC 值越大,越能表明該模型的青光眼圖像分類性能良好。
為了使CNN 網絡模型能更好地提取青光眼特征、提高后續青光眼分類性能,在此對Drishti-GS1和REFUGE 兩個數據庫的原始圖像樣本通過數據擴增方法來增加眼底圖像數量,使之包含更多的青光眼特征。
此外,針對小數據集圖像進行CNN 網絡模型訓練時,需要對數據集進行劃分。一般將訓練集、驗證集和測試集按6:2:2 的比例進行劃分。表1 所示為實驗采用的兩個數據庫使用不同的數據增強方法分別擴增9 倍和22 倍后的數據對比,并且按比例對擴充后的數據集重新劃分。如表2 所示為實驗測試集樣本分布情況。

表1 擴增不同倍數后的實驗數據單位:幅

表2 實驗測試集樣本分布情況單位:幅
為了避免由于青光眼或正常眼分布偏差產生的過度適應,對擴增后數據庫的訓練集和驗證集圖像采用交叉驗證策略。圖2 所示為訓練50 個epoch 的訓練集和驗證集的損失率變化情況。由可知,數據擴增22 倍后的網絡損失率下降速度要比擴增9 倍后的網絡損失率下降速度快,且優于數據擴增9 倍后的收斂性能。


圖3 實驗訓練集和驗證集的損失率
為驗證隨著數據量的不斷擴增,Inception-V2網絡模型青光眼圖像分類法的性能越好,分別對數據擴增9 倍和22 倍后的兩個數據庫中測試集樣本進行青光眼測試。表2 所示為基于遷移學習CNN 的青光眼診斷方法分別對Drishti-GS1 和REFUGE 數據庫在不同數據擴增后的測試集圖像上進行青光眼測試并計算平均準確率和AUC 值得到最終的測試結果。
如圖4 所示為使用該方法后在兩個數據庫中分別搭配不同數據擴增方案得到的ROC 曲線及AUC值對比。

圖4 不同數據測試結果對比

表3 實驗測試結果
由圖可知,數據擴充22 倍后的模型分類性能要優于擴充9 倍后的模型分類性能。這也證實了在深度學習網絡中對數據少且標注較少的數據集進行數據擴充的效果,此法確實有利于提高模型的泛化能力和分類性能。
由于REFUGE 數據庫沒有普遍被用于青光眼診斷的研究,在此對現有深度學習方法診斷青光眼與本研究方法在Drishti-GS1 眼底圖像數據庫的準確率和AUC 值進行對比分析,如表4 所示。

表4 不同深度學習診斷青光眼方法對比
由表4 可知,與現有的一些方法相比,本方法數據擴增22 倍后的準確率優于基于集成學習的方法,僅次于基于深度形態特征估計青光眼診斷的方法,但該方法數據擴增22 倍的AUC 值與文獻[10]達到相同效果,表明本方法具有較好的分類性能。
基于眼底圖像和專家標注的青光眼癥狀標簽,提出利用深度學習中卷積神經網絡訓練Inception-V2 網絡模型,提取青光眼特征,借助計算機系統構建相應的分類器,對數據擴增不同倍數的青光眼圖像庫進行判別。實驗結果表明,隨著數據量增加,該網絡模型的分類性能有提高的趨勢,且與現有一些方法相比,該方法滿足基于眼底圖像輔助診斷青光眼疾病的要求,對進一步研究青光眼診斷系統具有重要意義和實用性。