徐志京,汪 毅
上海海事大學 信息工程學院,上海201306
青光眼是一種慢性、漸進性視覺損傷的眼科疾病,其主要病理特征為視網(wǎng)膜神經(jīng)節(jié)細胞(Retinal Ganglion Cells,RGC)的凋亡和軸突的喪失[1],從而導致視力逐漸下降甚至失明,嚴重威脅患者的健康。據(jù)統(tǒng)計,全球人群中青光眼的患病率為3.54%,約有6 426萬人;預計到2020 年和2040 年分別將達7 602 萬人和11 182 萬人[2]。由于該病具有較高的隱蔽性,患病初期不易被發(fā)現(xiàn),導致患者得不到及時的治療。數(shù)字眼底圖像(DFI)是目前檢測青光眼的主要工具之一,因而可以利用眼底圖像對青光眼進行前期檢測,以免病情的進一步惡化。但眼底圖像結(jié)構(gòu)性復雜,采用人工識別方法耗時費力且很難得到客觀準確的醫(yī)療診斷,因此很多學者嘗試采用人工智能技術對眼底圖像進行患者篩查,但這是一項極具挑戰(zhàn)性的工作。盡管如此,相關工作者還是取得了一定的研究成果:Nguyen等人[3]提出一種基于深度卷積神經(jīng)網(wǎng)絡的端到端深度學習系統(tǒng),自動地從電子醫(yī)療記錄中學習病理特征并臨床預測患病風險。丁蓬莉等人[4]提出基于緊湊的神經(jīng)網(wǎng)絡CompactNet對視網(wǎng)膜圖像進行識別分類,但由于實驗樣本有限,網(wǎng)絡在訓練的過程中并沒有充分提取到相關特征,因此分類準確率并不高。Marcos等人[5]利用卷積神經(jīng)網(wǎng)絡進行視盤分割,然后去除血管,進而提取出其紋理特征并分類,在臨床診斷中獲得了良好效果。Raghavendra 等人[6]提出一種利用深度學習技術準確檢測青光眼的新型計算機輔助診斷(CAD)系統(tǒng),設計一個18 層的卷積神經(jīng)網(wǎng)絡,經(jīng)過有效訓練提取特征之后進行測試分類,該系統(tǒng)為青光眼患者早期快速輔助診斷提供了良好的解決方案。Chai等人[7]提出一種多分支神經(jīng)網(wǎng)絡(MB-NN)模型,利用該模型從圖像中充分提取深層特征并結(jié)合醫(yī)學領域知識實現(xiàn)分類。Balasubramanian等人[8]利用方向梯度直方圖(HOG)進行提取特征,并結(jié)合支持向量機(SVM)實現(xiàn)對青光眼的分類,但該方法預處理步驟過于繁瑣,并且識別準確率并不高。黃元康等人[9]提出基于Markov 隨機場理論提取出眼底圖像的視盤輪廓,同時在ISNT 法則的基礎上采用歐式距離和相關系數(shù)識別法分別實現(xiàn)對青光眼眼底圖像的識別,但該法需要人工輔助工作才能完成,效率低,自動性較差。
訓練一個深度神經(jīng)網(wǎng)絡需要大量的樣本,在沒有足夠多訓練樣本的情況下,可能導致網(wǎng)絡在訓練過程中無法充分提取特征或者訓練出來的模型泛化能力差。而遷移學習相對于傳統(tǒng)的神經(jīng)網(wǎng)絡主要的優(yōu)勢在于不需要大量的訓練樣本[10],針對目前缺乏大型公開已標記的青光眼數(shù)據(jù)集,本文引入遷移學習思想,提出了基于R-VGGNet(Reduce-VGGNet)網(wǎng)絡模型的青光眼眼底圖像識別系統(tǒng),選擇VGG16 深度神經(jīng)網(wǎng)絡作為基本的網(wǎng)絡結(jié)構(gòu),通過對網(wǎng)絡結(jié)構(gòu)的改進與微調(diào)實現(xiàn)對青光眼患者和正常人眼底圖像的判別。相比較于全新學習,采用遷移學習策略,提高了小樣本下青光眼患者的識別率。同時,本文還提取出了青光眼眼底圖像的感興趣區(qū)域,提高了識別速度與準確率。與傳統(tǒng)的識別方法相比,R-VGGNet網(wǎng)絡模型具有更好的識別效果。
本文搭建的青光眼患者識別系統(tǒng)如圖1 所示。該識別系統(tǒng)由三個部分組成:數(shù)據(jù)集預處理部分、基于遷移學習策略的模型訓練與特征提取部分、自動識別分類部分。在對青光眼眼底圖像進行識別分類時,需要對原數(shù)據(jù)集進行一系列的預處理操作,然后將預處理后的圖像輸入到網(wǎng)絡模型中進行遷移訓練與特征提取,最后將提取到的特征輸入Softmax 分類器進行分類,實現(xiàn)青光眼的識別。
圖1 青光眼患者識別模型
1.2.1 圖像預處理步驟
由于獲取的原始數(shù)據(jù)集存在背景多余、噪聲污染、樣本容量少、樣本分布不均勻等問題,如果直接將原數(shù)據(jù)集用于網(wǎng)絡模型訓練,效果會非常不理想。因此,為了達到訓練模型的要求,提高模型的準確性,需要對原數(shù)據(jù)集進行一系列預處理操作。預處理步驟為:(1)刪除污染嚴重,無使用價值的圖像。如圖2(a)所示;(2)裁剪多余的圖像背景。裁剪后的圖像如圖2(b)所示;(3)直方圖均勻化。對于一些曝光不足的圖像進行直方圖均勻化,改善由光線引起的噪聲問題。如圖2(c)所示。
圖2 圖像的預處理示例
1.2.2 感興趣區(qū)域(ROI)提取
眼底圖像是診斷青光眼的重要依據(jù),研究表明,青光眼患者具有三大特征,其中一大特征為青光眼患者的視杯面積與視盤面積之比一般大于0.6,即杯盤比(CDR>0.6)。同時,為了縮短網(wǎng)絡處理時間,可以將更小的初始圖像作為網(wǎng)絡的輸入。基于上述兩點原因,本文將ROI(Region Of Interest)區(qū)域作為深度卷積神經(jīng)網(wǎng)絡的輸入,提取出的眼底圖像ROI 區(qū)域(視杯與視盤部分)如圖3所示。
圖3 ROI區(qū)域示例
1.2.3 圖像增強
利用深度學習技術來實現(xiàn)圖像分類任務時,需要大量的訓練樣本,而現(xiàn)實生活中很難獲取數(shù)以萬計的相關圖像,特別在醫(yī)學領域,這一問題體現(xiàn)得尤為明顯。因此,需要在已有數(shù)據(jù)集的基礎上進行數(shù)據(jù)擴充。本文在原數(shù)據(jù)集的基礎上采取平移(水平、豎直兩個方向)、旋轉(zhuǎn)(30°、60°、90°、180°)、比例縮放、翻轉(zhuǎn)等方法,實現(xiàn)對樣本的擴充。這些變換的目標是生成更多樣本以創(chuàng)建更大的數(shù)據(jù)集,防止過度擬合[11]。由2.1 節(jié)數(shù)據(jù)集簡介可知,本文所采用的數(shù)據(jù)集還存在正負樣本分布不均衡的情況,所以,需要對負樣本進行適當擴充,從而解決樣本不均衡問題。
本文提出的識別網(wǎng)絡模型R-VGGNet 以VGG16 網(wǎng)絡模型作為基本網(wǎng)絡結(jié)構(gòu),其網(wǎng)絡架構(gòu)圖如圖4 所示。
圖4 R-VGGNet卷積神經(jīng)網(wǎng)絡架構(gòu)圖
VGG16 網(wǎng)絡由3×3 的卷積核和2×2 的最大池化層構(gòu)成,共13 個卷積層和3 個全連接層[12]。相比較8 層的AlexNet 網(wǎng)絡,VGG16 網(wǎng)絡最大的特點是通過3×3 濾波器的組合與堆疊,提取出輸入領域內(nèi)更多非常細小的特征[13]。在每組卷積層之后都連接一層最大池化層,并且每個卷積層之后緊跟(Rectified LinearUnit)Relu激活函數(shù),其抑制特性使得神經(jīng)元具有稀疏激活性,有效解決了梯度彌散問題,同時加速網(wǎng)絡收斂。對于任意第i(0<i <16)層:
由于VGG 結(jié)構(gòu)為深度卷積神經(jīng)網(wǎng)絡,其具有強大的特征學習能力,所以被廣泛地用于圖像識別任務中。本文借助遷移學習思想,利用該網(wǎng)絡在ImageNet 數(shù)據(jù)集上的訓練所獲得的權重參數(shù),凍結(jié)前13層并釋放后3層的權重,利用青光眼數(shù)據(jù)集訓練全連接層和Softmax分類器,微調(diào)后進行特征提取和分類。
現(xiàn)有的VGG 結(jié)構(gòu)采用三層連接的全連接層,這三層全連接層占了訓練參數(shù)的絕大部分,對于本文來說,識別任務僅僅只有兩類,即識別健康人和青光眼患者的眼底圖像,三層的全連接層相對冗余,因此,對VGG16全連接層進行了重新設計,即R-VGGNet,提出用2個全連接層替換原有的3個全連接層,其中設置第1個全連接層輸出神經(jīng)元個數(shù)為1 024 個,第2 個全連接層輸出神經(jīng)元個數(shù)為2 個,這樣得到的網(wǎng)絡相對于之前的網(wǎng)絡,訓練參數(shù)大大減少,提升了網(wǎng)絡的訓練速度,訓練時間也得到縮短。
對網(wǎng)絡模型的優(yōu)化本質(zhì)上就是使損失函數(shù)盡可能的小。本文優(yōu)化算法采用隨機梯度下降法(Stochastic Gradient Descent,SGD)和Momentum相結(jié)合,設定動量參數(shù)為默認值0.9,迭代次數(shù)為100次,Batch_size設定為32,初始學習率設定為0.001。學習率采用指數(shù)衰減法的更新策略。指數(shù)衰減法更新學習率的表達式為:
式中,lr為衰減后的學習率,lr0為初始學習率,dr為衰減系數(shù),gs為當前的迭代次數(shù),ds為衰減步長(即每迭代指定次數(shù)更新一次學習率)表示向下取整。在訓練過程中代價函數(shù)采用交叉熵損失函數(shù),Softmax 計算損失。為了避免過擬合現(xiàn)象,在損失函數(shù)中附加L2正則化項,最終的損失函數(shù)表達式為:
式中,θ為權重,x為批次訓練樣本,λ為正則化項系數(shù),p為期望的類別概率,q為模型預測的類別概率。在訓練過程中,當損失函數(shù)的loss值趨于穩(wěn)定時將學習率再次調(diào)小,直至達到最小值時獲得最優(yōu)識別模型,最終設定學習率為0.000 5。
設計一個完整的卷積神經(jīng)網(wǎng)絡,其最后部分往往會連接若干全連接層,這是因為全連接層能夠?qū)⒕W(wǎng)絡提取到的特征映射到樣本的標記空間中,因此,全連接層在整個卷積神經(jīng)網(wǎng)絡中實際上起到了“分類器”的作用。該分類器設置了兩個全連接層Fc1 和Fc2,由于實驗樣本有限,為了避免過擬合現(xiàn)象的發(fā)生,在全連接層之后加入Dropout 層,并且設置Dropout 率為0.5。同時在每個全連接層之后引入線性修正單元(Relu),用來解決梯度彌散問題[14]。最后將VGG16 原有模型中包含1 000個節(jié)點的Softmax 層用一個包含2 個節(jié)點的Softmax 層代替。分類器結(jié)構(gòu)圖如圖5所示。
圖5 分類器結(jié)構(gòu)圖
文章使用的數(shù)據(jù)集為YiWeiChen等人收集的青光眼數(shù)據(jù)集(https://github.com/yiweichen04/retina_dataset),該數(shù)據(jù)集包含了300張健康人的眼底圖像和101張青光眼患者的眼底圖像,并且均為高分辨率的RGB 彩色圖像,如圖6所示。
圖6 眼底圖像示例
本實驗是基于CPU為Intel i7-7800x,顯卡為NVIDIA GeForce GTX1080i 的計算機完成的,深度學習框架選擇keras 及tensorflow。由于VGG16 網(wǎng)絡的輸入層要求為224×224,因此,采用Python 的pillow 庫中crop 操作,設定固定的裁剪區(qū)域?qū)⑺袌D像的尺寸都裁剪為224×224。同時將數(shù)據(jù)集分成訓練與測試兩部分(訓練集與測試集的樣本比例為9∶1)。為了對比不同網(wǎng)絡結(jié)構(gòu)對分類精度的影響、提取ROI對分類精度的影響、同一網(wǎng)絡結(jié)構(gòu)不同訓練方法對分類精度的影響以及R-VGGNet網(wǎng)絡結(jié)構(gòu)和提取ROI操作對時間復雜度影響,本文設計四組對比實驗。
第一組對比實驗:為了驗證網(wǎng)絡結(jié)構(gòu)對識別率的影響,本組實驗使用提取ROI后的數(shù)據(jù)集分別對LeNet和R-VGGNet兩種不同的網(wǎng)絡結(jié)構(gòu)進行實驗。
(1)LeNet 網(wǎng)絡是用于識別手寫數(shù)字的簡單卷積神經(jīng)網(wǎng)絡,共有8層(包括輸入層),屬于淺層神經(jīng)網(wǎng)絡。
(2)本文提出的基于遷移學習的R-VGGNet深度卷積神經(jīng)網(wǎng)絡。
第二組對比實驗:為了驗證提取ROI對識別率的影響,本組實驗分別使用未提取ROI 的數(shù)據(jù)集和提取ROI 的數(shù)據(jù)集對本文提出的基于遷移學習的R-VGGNet深度卷積神經(jīng)網(wǎng)絡進行實驗。
第三組對比實驗:為了驗證遷移學習的有效性,本組實驗將丟棄R-VGGNet 在ImageNet 上學習到的權重參數(shù),采用全新學習策略進行實驗。
第四組對比實驗:為了驗證R-VGGNet 網(wǎng)絡結(jié)構(gòu)和提取ROI 操作對時間復雜度的影響,本組實驗使用未提取ROI 的數(shù)據(jù)集和提取ROI 的數(shù)據(jù)集分別對R-VGGNet網(wǎng)絡結(jié)構(gòu)和VGG16網(wǎng)絡結(jié)構(gòu)進行實驗。
目前對青光眼的識別是一項具有挑戰(zhàn)性的工作,不同的研究人員也嘗試多種方法來提高識別率。為了進一步驗證本文提出的青光眼圖像識別模型R-VGGNet的性能,本文還利用自身已有數(shù)據(jù)集對傳統(tǒng)的不同識別方法進行對比實驗。
在圖像分類任務中,一般從分類的準確率和損失函數(shù)值兩個方面來評價分類模型的性能。本文損失函數(shù)采用交叉熵損失函數(shù),公式在1.3 節(jié)已給出。對于分類準確率,令Ntotal代表測試集中視網(wǎng)膜圖像的總數(shù)量,Nrec代表其中被正確分類的圖像數(shù)量,則分類準確率可以表示為[15]:
2.4.1 第一組實驗分析
圖7(a)和(b)分別展示了提取ROI 后的數(shù)據(jù)集對R-VGGNet和LeNet兩種不同網(wǎng)絡結(jié)構(gòu)的實驗結(jié)果。實驗結(jié)果表明:當?shù)螖?shù)為100次時,R-VGGNet深度卷積神經(jīng)網(wǎng)絡的訓練準確率(Tracc)和測試準確率(Teacc)略低于LeNet網(wǎng)絡,但R-VGGNet網(wǎng)絡模型更易于收斂,總體效果好。
2.4.2 第二組實驗分析
圖8(a)和(b)展示了提取ROI和未提取ROI的數(shù)據(jù)集作為R-VGGNet模型的輸入,經(jīng)過遷移學習得到的實驗結(jié)果。實驗結(jié)果表明:當?shù)螖?shù)為100時,提取ROI的測試準確率明顯高于未提取ROI,提高了近15%。
圖7 R-VGGNet和LeNet訓練和測試的準確率曲線
圖8 提取ROI和未提取ROI訓練和測試的準確率曲線
2.4.3 第三組實驗分析
根據(jù)圖7(a)和圖8(a)的實驗結(jié)果圖,可以看出采用遷移學習策略的R-VGGNet 網(wǎng)絡模型在測試集上準確率達到了0.9,而采用全新學習的方式對R-VGGNet進行訓練,在測試集上的準確率為0.85。圖9 展示了R-VGGNet 模型迭代次數(shù)為100 時的訓練與測試的loss曲線圖,其中測試的loss 值約為0.3。說明該網(wǎng)絡在ImageNet數(shù)據(jù)集上學習到了特征,而這些特征有助于對眼底圖像進行分類。
圖9 R-VGGNet模型訓練和測試的loss曲線
表1總結(jié)了上述三組實驗迭代100輪在訓練集和測試集上的準確率。由表1可知,本文提出的基于ROI和遷移學習的青光眼眼底圖像識別方法的分類精度最高。
表1 三組實驗迭代100輪的準確率
2.4.4 第四組實驗分析
圖10 展示了迭代次數(shù)為100 時,采用未提取ROI和提取ROI 的數(shù)據(jù)集分別對R-VGGNet 和VGG16 進行實驗,實驗結(jié)果表明:將提取ROI 的數(shù)據(jù)集作為R-VGGNet 網(wǎng)絡的輸入,其訓練時間耗時最短,識別速度最快。
圖10 時間復雜度對比
2.4.5 不同方法的比較
為了驗證本文方法的有效性,在保證實驗環(huán)境相同,預處理環(huán)節(jié)一致的情況下,對不同的識別方法進行對比實驗。表2總結(jié)了不同方法的分類準確率。
根據(jù)表2 可知,本文提出的識別模型R-VGGNet 明顯提高了特征提取能力,其識別精度優(yōu)于其他傳統(tǒng)分類方法。
表2 不同方法的分類準確率
針對目前缺乏大型公開已標記的青光眼眼底圖像數(shù)據(jù)集,為了解決小樣本學習能力不足、分類精度低等問題。本文借助遷移學習思想和深度卷積神經(jīng)網(wǎng)絡對青光眼眼底圖像進行分類,進而判斷是否患有青光眼。對VGG網(wǎng)絡結(jié)構(gòu)進行重新設計,簡化了全連接層,達到減少訓練參數(shù),縮短訓練時間的目的。同時根據(jù)青光眼患者的眼底特征提取其感興趣區(qū)域(ROI),將其作為網(wǎng)絡模型的輸入,實驗結(jié)果表明本文提出的分類識別模型提高了識別率。為了進一步提高該模型的識別率和廣泛的適用性,在后續(xù)的研究工作中將進一步對圖像預處理環(huán)節(jié)進行優(yōu)化,同時利用其他數(shù)據(jù)集對該模型進行多次驗證,以提高模型的魯棒性。