徐志京,汪 毅
上海海事大學 信息工程學院,上海201306
青光眼是一種慢性、漸進性視覺損傷的眼科疾病,其主要病理特征為視網膜神經節細胞(Retinal Ganglion Cells,RGC)的凋亡和軸突的喪失[1],從而導致視力逐漸下降甚至失明,嚴重威脅患者的健康。據統計,全球人群中青光眼的患病率為3.54%,約有6 426萬人;預計到2020 年和2040 年分別將達7 602 萬人和11 182 萬人[2]。由于該病具有較高的隱蔽性,患病初期不易被發現,導致患者得不到及時的治療。數字眼底圖像(DFI)是目前檢測青光眼的主要工具之一,因而可以利用眼底圖像對青光眼進行前期檢測,以免病情的進一步惡化。但眼底圖像結構性復雜,采用人工識別方法耗時費力且很難得到客觀準確的醫療診斷,因此很多學者嘗試采用人工智能技術對眼底圖像進行患者篩查,但這是一項極具挑戰性的工作。盡管如此,相關工作者還是取得了一定的研究成果:Nguyen等人[3]提出一種基于深度卷積神經網絡的端到端深度學習系統,自動地從電子醫療記錄中學習病理特征并臨床預測患病風險。丁蓬莉等人[4]提出基于緊湊的神經網絡CompactNet對視網膜圖像進行識別分類,但由于實驗樣本有限,網絡在訓練的過程中并沒有充分提取到相關特征,因此分類準確率并不高。Marcos等人[5]利用卷積神經網絡進行視盤分割,然后去除血管,進而提取出其紋理特征并分類,在臨床診斷中獲得了良好效果。Raghavendra 等人[6]提出一種利用深度學習技術準確檢測青光眼的新型計算機輔助診斷(CAD)系統,設計一個18 層的卷積神經網絡,經過有效訓練提取特征之后進行測試分類,該系統為青光眼患者早期快速輔助診斷提供了良好的解決方案。Chai等人[7]提出一種多分支神經網絡(MB-NN)模型,利用該模型從圖像中充分提取深層特征并結合醫學領域知識實現分類。Balasubramanian等人[8]利用方向梯度直方圖(HOG)進行提取特征,并結合支持向量機(SVM)實現對青光眼的分類,但該方法預處理步驟過于繁瑣,并且識別準確率并不高。黃元康等人[9]提出基于Markov 隨機場理論提取出眼底圖像的視盤輪廓,同時在ISNT 法則的基礎上采用歐式距離和相關系數識別法分別實現對青光眼眼底圖像的識別,但該法需要人工輔助工作才能完成,效率低,自動性較差。
訓練一個深度神經網絡需要大量的樣本,在沒有足夠多訓練樣本的情況下,可能導致網絡在訓練過程中無法充分提取特征或者訓練出來的模型泛化能力差。而遷移學習相對于傳統的神經網絡主要的優勢在于不需要大量的訓練樣本[10],針對目前缺乏大型公開已標記的青光眼數據集,本文引入遷移學習思想,提出了基于R-VGGNet(Reduce-VGGNet)網絡模型的青光眼眼底圖像識別系統,選擇VGG16 深度神經網絡作為基本的網絡結構,通過對網絡結構的改進與微調實現對青光眼患者和正常人眼底圖像的判別。相比較于全新學習,采用遷移學習策略,提高了小樣本下青光眼患者的識別率。同時,本文還提取出了青光眼眼底圖像的感興趣區域,提高了識別速度與準確率。與傳統的識別方法相比,R-VGGNet網絡模型具有更好的識別效果。
本文搭建的青光眼患者識別系統如圖1 所示。該識別系統由三個部分組成:數據集預處理部分、基于遷移學習策略的模型訓練與特征提取部分、自動識別分類部分。在對青光眼眼底圖像進行識別分類時,需要對原數據集進行一系列的預處理操作,然后將預處理后的圖像輸入到網絡模型中進行遷移訓練與特征提取,最后將提取到的特征輸入Softmax 分類器進行分類,實現青光眼的識別。

圖1 青光眼患者識別模型
1.2.1 圖像預處理步驟
由于獲取的原始數據集存在背景多余、噪聲污染、樣本容量少、樣本分布不均勻等問題,如果直接將原數據集用于網絡模型訓練,效果會非常不理想。因此,為了達到訓練模型的要求,提高模型的準確性,需要對原數據集進行一系列預處理操作。預處理步驟為:(1)刪除污染嚴重,無使用價值的圖像。如圖2(a)所示;(2)裁剪多余的圖像背景。裁剪后的圖像如圖2(b)所示;(3)直方圖均勻化。對于一些曝光不足的圖像進行直方圖均勻化,改善由光線引起的噪聲問題。如圖2(c)所示。

圖2 圖像的預處理示例
1.2.2 感興趣區域(ROI)提取
眼底圖像是診斷青光眼的重要依據,研究表明,青光眼患者具有三大特征,其中一大特征為青光眼患者的視杯面積與視盤面積之比一般大于0.6,即杯盤比(CDR>0.6)。同時,為了縮短網絡處理時間,可以將更小的初始圖像作為網絡的輸入。基于上述兩點原因,本文將ROI(Region Of Interest)區域作為深度卷積神經網絡的輸入,提取出的眼底圖像ROI 區域(視杯與視盤部分)如圖3所示。

圖3 ROI區域示例
1.2.3 圖像增強
利用深度學習技術來實現圖像分類任務時,需要大量的訓練樣本,而現實生活中很難獲取數以萬計的相關圖像,特別在醫學領域,這一問題體現得尤為明顯。因此,需要在已有數據集的基礎上進行數據擴充。本文在原數據集的基礎上采取平移(水平、豎直兩個方向)、旋轉(30°、60°、90°、180°)、比例縮放、翻轉等方法,實現對樣本的擴充。這些變換的目標是生成更多樣本以創建更大的數據集,防止過度擬合[11]。由2.1 節數據集簡介可知,本文所采用的數據集還存在正負樣本分布不均衡的情況,所以,需要對負樣本進行適當擴充,從而解決樣本不均衡問題。
本文提出的識別網絡模型R-VGGNet 以VGG16 網絡模型作為基本網絡結構,其網絡架構圖如圖4 所示。

圖4 R-VGGNet卷積神經網絡架構圖
VGG16 網絡由3×3 的卷積核和2×2 的最大池化層構成,共13 個卷積層和3 個全連接層[12]。相比較8 層的AlexNet 網絡,VGG16 網絡最大的特點是通過3×3 濾波器的組合與堆疊,提取出輸入領域內更多非常細小的特征[13]。在每組卷積層之后都連接一層最大池化層,并且每個卷積層之后緊跟(Rectified LinearUnit)Relu激活函數,其抑制特性使得神經元具有稀疏激活性,有效解決了梯度彌散問題,同時加速網絡收斂。對于任意第i(0<i <16)層:


由于VGG 結構為深度卷積神經網絡,其具有強大的特征學習能力,所以被廣泛地用于圖像識別任務中。本文借助遷移學習思想,利用該網絡在ImageNet 數據集上的訓練所獲得的權重參數,凍結前13層并釋放后3層的權重,利用青光眼數據集訓練全連接層和Softmax分類器,微調后進行特征提取和分類。
現有的VGG 結構采用三層連接的全連接層,這三層全連接層占了訓練參數的絕大部分,對于本文來說,識別任務僅僅只有兩類,即識別健康人和青光眼患者的眼底圖像,三層的全連接層相對冗余,因此,對VGG16全連接層進行了重新設計,即R-VGGNet,提出用2個全連接層替換原有的3個全連接層,其中設置第1個全連接層輸出神經元個數為1 024 個,第2 個全連接層輸出神經元個數為2 個,這樣得到的網絡相對于之前的網絡,訓練參數大大減少,提升了網絡的訓練速度,訓練時間也得到縮短。
對網絡模型的優化本質上就是使損失函數盡可能的小。本文優化算法采用隨機梯度下降法(Stochastic Gradient Descent,SGD)和Momentum相結合,設定動量參數為默認值0.9,迭代次數為100次,Batch_size設定為32,初始學習率設定為0.001。學習率采用指數衰減法的更新策略。指數衰減法更新學習率的表達式為:

式中,lr為衰減后的學習率,lr0為初始學習率,dr為衰減系數,gs為當前的迭代次數,ds為衰減步長(即每迭代指定次數更新一次學習率)表示向下取整。在訓練過程中代價函數采用交叉熵損失函數,Softmax 計算損失。為了避免過擬合現象,在損失函數中附加L2正則化項,最終的損失函數表達式為:

式中,θ為權重,x為批次訓練樣本,λ為正則化項系數,p為期望的類別概率,q為模型預測的類別概率。在訓練過程中,當損失函數的loss值趨于穩定時將學習率再次調小,直至達到最小值時獲得最優識別模型,最終設定學習率為0.000 5。
設計一個完整的卷積神經網絡,其最后部分往往會連接若干全連接層,這是因為全連接層能夠將網絡提取到的特征映射到樣本的標記空間中,因此,全連接層在整個卷積神經網絡中實際上起到了“分類器”的作用。該分類器設置了兩個全連接層Fc1 和Fc2,由于實驗樣本有限,為了避免過擬合現象的發生,在全連接層之后加入Dropout 層,并且設置Dropout 率為0.5。同時在每個全連接層之后引入線性修正單元(Relu),用來解決梯度彌散問題[14]。最后將VGG16 原有模型中包含1 000個節點的Softmax 層用一個包含2 個節點的Softmax 層代替。分類器結構圖如圖5所示。

圖5 分類器結構圖
文章使用的數據集為YiWeiChen等人收集的青光眼數據集(https://github.com/yiweichen04/retina_dataset),該數據集包含了300張健康人的眼底圖像和101張青光眼患者的眼底圖像,并且均為高分辨率的RGB 彩色圖像,如圖6所示。

圖6 眼底圖像示例
本實驗是基于CPU為Intel i7-7800x,顯卡為NVIDIA GeForce GTX1080i 的計算機完成的,深度學習框架選擇keras 及tensorflow。由于VGG16 網絡的輸入層要求為224×224,因此,采用Python 的pillow 庫中crop 操作,設定固定的裁剪區域將所有圖像的尺寸都裁剪為224×224。同時將數據集分成訓練與測試兩部分(訓練集與測試集的樣本比例為9∶1)。為了對比不同網絡結構對分類精度的影響、提取ROI對分類精度的影響、同一網絡結構不同訓練方法對分類精度的影響以及R-VGGNet網絡結構和提取ROI操作對時間復雜度影響,本文設計四組對比實驗。
第一組對比實驗:為了驗證網絡結構對識別率的影響,本組實驗使用提取ROI后的數據集分別對LeNet和R-VGGNet兩種不同的網絡結構進行實驗。
(1)LeNet 網絡是用于識別手寫數字的簡單卷積神經網絡,共有8層(包括輸入層),屬于淺層神經網絡。
(2)本文提出的基于遷移學習的R-VGGNet深度卷積神經網絡。
第二組對比實驗:為了驗證提取ROI對識別率的影響,本組實驗分別使用未提取ROI 的數據集和提取ROI 的數據集對本文提出的基于遷移學習的R-VGGNet深度卷積神經網絡進行實驗。
第三組對比實驗:為了驗證遷移學習的有效性,本組實驗將丟棄R-VGGNet 在ImageNet 上學習到的權重參數,采用全新學習策略進行實驗。
第四組對比實驗:為了驗證R-VGGNet 網絡結構和提取ROI 操作對時間復雜度的影響,本組實驗使用未提取ROI 的數據集和提取ROI 的數據集分別對R-VGGNet網絡結構和VGG16網絡結構進行實驗。
目前對青光眼的識別是一項具有挑戰性的工作,不同的研究人員也嘗試多種方法來提高識別率。為了進一步驗證本文提出的青光眼圖像識別模型R-VGGNet的性能,本文還利用自身已有數據集對傳統的不同識別方法進行對比實驗。
在圖像分類任務中,一般從分類的準確率和損失函數值兩個方面來評價分類模型的性能。本文損失函數采用交叉熵損失函數,公式在1.3 節已給出。對于分類準確率,令Ntotal代表測試集中視網膜圖像的總數量,Nrec代表其中被正確分類的圖像數量,則分類準確率可以表示為[15]:

2.4.1 第一組實驗分析
圖7(a)和(b)分別展示了提取ROI 后的數據集對R-VGGNet和LeNet兩種不同網絡結構的實驗結果。實驗結果表明:當迭代次數為100次時,R-VGGNet深度卷積神經網絡的訓練準確率(Tracc)和測試準確率(Teacc)略低于LeNet網絡,但R-VGGNet網絡模型更易于收斂,總體效果好。
2.4.2 第二組實驗分析
圖8(a)和(b)展示了提取ROI和未提取ROI的數據集作為R-VGGNet模型的輸入,經過遷移學習得到的實驗結果。實驗結果表明:當迭代次數為100時,提取ROI的測試準確率明顯高于未提取ROI,提高了近15%。

圖7 R-VGGNet和LeNet訓練和測試的準確率曲線

圖8 提取ROI和未提取ROI訓練和測試的準確率曲線
2.4.3 第三組實驗分析
根據圖7(a)和圖8(a)的實驗結果圖,可以看出采用遷移學習策略的R-VGGNet 網絡模型在測試集上準確率達到了0.9,而采用全新學習的方式對R-VGGNet進行訓練,在測試集上的準確率為0.85。圖9 展示了R-VGGNet 模型迭代次數為100 時的訓練與測試的loss曲線圖,其中測試的loss 值約為0.3。說明該網絡在ImageNet數據集上學習到了特征,而這些特征有助于對眼底圖像進行分類。

圖9 R-VGGNet模型訓練和測試的loss曲線
表1總結了上述三組實驗迭代100輪在訓練集和測試集上的準確率。由表1可知,本文提出的基于ROI和遷移學習的青光眼眼底圖像識別方法的分類精度最高。

表1 三組實驗迭代100輪的準確率
2.4.4 第四組實驗分析
圖10 展示了迭代次數為100 時,采用未提取ROI和提取ROI 的數據集分別對R-VGGNet 和VGG16 進行實驗,實驗結果表明:將提取ROI 的數據集作為R-VGGNet 網絡的輸入,其訓練時間耗時最短,識別速度最快。

圖10 時間復雜度對比
2.4.5 不同方法的比較
為了驗證本文方法的有效性,在保證實驗環境相同,預處理環節一致的情況下,對不同的識別方法進行對比實驗。表2總結了不同方法的分類準確率。
根據表2 可知,本文提出的識別模型R-VGGNet 明顯提高了特征提取能力,其識別精度優于其他傳統分類方法。

表2 不同方法的分類準確率
針對目前缺乏大型公開已標記的青光眼眼底圖像數據集,為了解決小樣本學習能力不足、分類精度低等問題。本文借助遷移學習思想和深度卷積神經網絡對青光眼眼底圖像進行分類,進而判斷是否患有青光眼。對VGG網絡結構進行重新設計,簡化了全連接層,達到減少訓練參數,縮短訓練時間的目的。同時根據青光眼患者的眼底特征提取其感興趣區域(ROI),將其作為網絡模型的輸入,實驗結果表明本文提出的分類識別模型提高了識別率。為了進一步提高該模型的識別率和廣泛的適用性,在后續的研究工作中將進一步對圖像預處理環節進行優化,同時利用其他數據集對該模型進行多次驗證,以提高模型的魯棒性。