杜霞
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
糖尿病性視網(wǎng)膜病變(Diabetic Retinopathy,DR)是一種嚴(yán)重的糖尿病眼底微血管并發(fā)癥,DR在導(dǎo)致20-74歲成人失明的因素中排列首位[1]。據(jù)WHO發(fā)布的2016年《全球糖尿病報(bào)告》數(shù)據(jù),全球截止2014年成人中糖尿病患者已經(jīng)達(dá)到4.22億,患病率顯著上升。在已有15年以上糖尿病史的患者中,80%以上患有DR。DR的病情發(fā)展是漸進(jìn)變化的,及時(shí)檢查和治療是預(yù)防失明的有效手段。在醫(yī)學(xué)上,根據(jù)視網(wǎng)膜眼底圖像的特征對(duì)DR病情階段進(jìn)行了準(zhǔn)確的分類,也是醫(yī)生臨床診斷的重要標(biāo)準(zhǔn)。在實(shí)際診斷中,主要存在的問題包括:分類準(zhǔn)確性極度依賴醫(yī)生的臨床經(jīng)驗(yàn);眼底照相的質(zhì)量受到操作技術(shù)、設(shè)備、光線等影響較大;圖像中存在的細(xì)微特征依靠肉眼難以辨別等[2]。
基于DR在人工診斷存在的困難,大量研究嘗試用計(jì)算機(jī)技術(shù)進(jìn)行DR的自動(dòng)診斷,研究方法主要分為傳統(tǒng)機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)算法。在傳統(tǒng)機(jī)器學(xué)習(xí)方向,Roychowdhury[3]等人綜合利用高斯混合模型、k緊鄰分類器、支持向量機(jī)以及AdaBoost四種算法來訓(xùn)練分類器,最終在小型數(shù)據(jù)集的二分類問題上得到了較好的效果。Jelinek[4]等人采用Gabor小波變換,對(duì)27張血管被熒光標(biāo)記的視網(wǎng)膜圖像進(jìn)行分割,并根據(jù)面積、邊界等五個(gè)傳統(tǒng)特征進(jìn)行病變分類,在多特征判別下,對(duì)是否存在DR增殖性病變分類任務(wù)上取得了90%的AUC值。Nayak[5]等人通過提取滲出物面積、血管面積和紋理特征,使用這些特征訓(xùn)練神經(jīng)網(wǎng)絡(luò),將彩色眼底圖像分為非DR、增值性DR和非增值性DR三類,并在140張圖片的小型數(shù)據(jù)集上取得了93%的準(zhǔn)確率。傳統(tǒng)機(jī)器學(xué)習(xí)在小數(shù)據(jù)集上可以取得良好的效果,但面對(duì)大量數(shù)據(jù)時(shí)則難以突破,研究者開始嘗試深度神經(jīng)網(wǎng)絡(luò)方法。Gulshan[6]等人采用卷積神經(jīng)網(wǎng)絡(luò)方法,在擁有128175張眼底圖像的大規(guī)模數(shù)據(jù)集上訓(xùn)練,最終在DR的三分類任務(wù)上獲得了最高97.5%的靈敏度。Ghosh[7]等人在Kaggle提供的超過30000張圖像的數(shù)據(jù)集上,分別在二分類和五分類問題上獲得了95%和85%的準(zhǔn)確率。Li等人[8]采用遷移學(xué)習(xí)的方法,對(duì)預(yù)訓(xùn)練好的卷積網(wǎng)絡(luò)進(jìn)行微調(diào),在1000張左右的小數(shù)據(jù)集上實(shí)現(xiàn)了92.01%的準(zhǔn)確率,證明了遷移學(xué)習(xí)對(duì)提升神經(jīng)網(wǎng)絡(luò)在小數(shù)據(jù)上的表現(xiàn)有所幫助。Li等人[9]基于CNN網(wǎng)絡(luò),在超過70000張圖片的中國(guó)人眼底數(shù)據(jù)集上達(dá)到了95.5%的診斷率。
本文通過深度卷積網(wǎng)絡(luò)模型,實(shí)現(xiàn)了對(duì)DR眼底彩照的自動(dòng)分類。通過數(shù)據(jù)清洗、標(biāo)定等完成了DR_data私有數(shù)據(jù)集的建立;并采用翻轉(zhuǎn)、旋轉(zhuǎn)、平移等方法進(jìn)行數(shù)據(jù)增廣,克服了數(shù)據(jù)量不足以及數(shù)據(jù)類別分布不均衡問題。本文采用了遷移學(xué)習(xí)的方法和Inception-V4網(wǎng)絡(luò)模型,在DR的四分類任務(wù)上獲得了較好的準(zhǔn)確率和魯棒性。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs)是一種常用的深度神經(jīng)網(wǎng)絡(luò)模型,在圖像處理問題上具有突出表現(xiàn)。最早于1962年,Hubel和Wiesel等人受到貓的啟發(fā),提出了感受野的概念[10];由Yann LeCun等人于1989年正式提出了卷積神經(jīng)網(wǎng)絡(luò)模型[11];2012年Hinton等人[12]提出加入權(quán)重衰減的CNN模型,將ImageNet[13]數(shù)據(jù)集上的圖像分類錯(cuò)誤率大幅降低至16%,后續(xù)許多基于該架構(gòu)的網(wǎng)絡(luò)模型取得了驚人的成果[14-16]。
CNN主要由輸入層、卷積層、池化層、全連接層以及輸出層等五種結(jié)構(gòu)組成,其中卷積層(convolutional layer)和池化層(pooling layer)是CNN中非常關(guān)鍵的結(jié)構(gòu)。卷積層的每個(gè)節(jié)點(diǎn)與前一層網(wǎng)絡(luò)的部分區(qū)域相連,通過卷積操作提取輸入層的特征,深層的卷積網(wǎng)絡(luò)可以提取抽象程度更高的特征[17]。其中池化層的操作與卷積類似,但并不計(jì)算神經(jīng)元的加權(quán)和,只影響一個(gè)深度上的神經(jīng)元。常用的池化操作有最大池化和平均池化兩種,池化層可以快速地減少矩陣的大小,加快計(jì)算速度并防止過擬合。卷積運(yùn)算中的三個(gè)關(guān)鍵思想,包括稀疏連接、權(quán)值共享和等值變化,對(duì)減少網(wǎng)絡(luò)參數(shù)、提升計(jì)算效率起到了重要作用。
傳統(tǒng)CNN在發(fā)展過程中,由于不斷加深網(wǎng)絡(luò)深度和寬度,導(dǎo)致網(wǎng)絡(luò)參數(shù)增加,更容易出現(xiàn)過擬合現(xiàn)象。Szegedy等人[18]于2014年提出了GoogleNet網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)在ImageNet競(jìng)賽上取得了非常好的效果。該網(wǎng)絡(luò)中設(shè)計(jì)的Inception-V1模塊包含了多維度的卷積結(jié)構(gòu)疊加和最大池化操作來減少參數(shù)數(shù)目,具有不同感受野的卷積可以實(shí)現(xiàn)不同級(jí)別的特征提取。在Inception-V2模塊中,增加了對(duì)中間特征的歸一化操作,可以使用較大的學(xué)習(xí)率以加快收斂速度,同時(shí)也具有正則化效應(yīng)。Inception-V3中引入了“因子化”(Factorization)的概念,將一些尺寸較大的卷積分解為更小的卷積,在保證網(wǎng)絡(luò)效果等價(jià)的前提下減少了參數(shù)量。Inception-V4網(wǎng)絡(luò)主要對(duì)前幾個(gè)版本做了規(guī)范和簡(jiǎn)化并將網(wǎng)絡(luò)遷移到TensorFlow平臺(tái)執(zhí)行,可以更好地利用計(jì)算資源。在殘差網(wǎng)絡(luò)(ResNet)[19]的基礎(chǔ)上,Szegedy等人提出的Inception與ResNet集成的網(wǎng)絡(luò)結(jié)構(gòu),在ILSVRC 2012上達(dá)到了3.08%的top5錯(cuò)誤率。
圖1 Inception模塊
通常CNN模型例如LeNet、AlexNet、VGG等通過使用卷積、池化、標(biāo)準(zhǔn)化和激活函數(shù)的疊加來增加網(wǎng)絡(luò)深度以期達(dá)到更好的效果。Inception-V4更是增加了殘差連接這一設(shè)計(jì)理念,Christian[20]發(fā)現(xiàn)利用殘差連接設(shè)計(jì)更深更寬的Inception網(wǎng)絡(luò)可以顯著提高網(wǎng)絡(luò)表現(xiàn)。因此Inecption-V4有著更多Inception模塊其中包括4個(gè)Inception-A和7個(gè)Inception-B和3個(gè)Inception C模塊。本文在實(shí)驗(yàn)中使用了Inception-V4網(wǎng)絡(luò)結(jié)構(gòu)。
表1 Inception-V4網(wǎng)絡(luò)模型
對(duì)于醫(yī)學(xué)圖像數(shù)據(jù)集來說,獲取數(shù)據(jù)的成本十分高昂,因此缺乏大量訓(xùn)練數(shù)據(jù)是一個(gè)主要問題。神經(jīng)網(wǎng)絡(luò)參數(shù)較多,如果訓(xùn)練樣本不足,模型容易出現(xiàn)過擬合現(xiàn)象,所以數(shù)據(jù)增強(qiáng)和遷移學(xué)習(xí)方法[21]是必要的。類似于人腦的神經(jīng)系統(tǒng),卷積神經(jīng)網(wǎng)絡(luò)對(duì)模型的學(xué)習(xí)是一種層級(jí)結(jié)構(gòu),從圖形的邊緣、角點(diǎn)到局部特征,再到全局特征,預(yù)訓(xùn)練模型在提取圖像深度特征的過程被廣泛使用。深度神經(jīng)網(wǎng)絡(luò)通常具有大量參數(shù)使得訓(xùn)練一個(gè)深度網(wǎng)絡(luò)需要大量時(shí)間和計(jì)算資源,遷移學(xué)習(xí)方法可以使能我們把在大數(shù)據(jù)的模型(源領(lǐng)域)遷移到小數(shù)據(jù)(目標(biāo)域)上僅僅做參數(shù)的調(diào)優(yōu)而不用從頭訓(xùn)練。本文使用基于ImageNet的預(yù)訓(xùn)練模型,其中包含120萬副圖像和1000種分類類別,最后在DR_data數(shù)據(jù)集調(diào)優(yōu)以達(dá)到減少訓(xùn)練時(shí)間和對(duì)樣本量的需求。
本文采用的DR_data數(shù)據(jù)集為私有數(shù)據(jù)集,與四川省人民醫(yī)院合作建立,由該院眼科、內(nèi)分泌科和體檢中心采集的部分眼底檢查彩照組成。一位患者單次眼底檢查會(huì)分別對(duì)左眼和右眼進(jìn)行拍照,診斷時(shí)左右眼的結(jié)果相互獨(dú)立,因此將一位患者的檢查結(jié)果整理為左眼和右眼兩例數(shù)據(jù),每例數(shù)據(jù)對(duì)應(yīng)一位患者的一只眼睛,包含若干張眼底彩照。DR_data數(shù)據(jù)集共有1333例數(shù)據(jù),2409張眼底彩照。
數(shù)據(jù)收集完成后,由三名專業(yè)眼科醫(yī)師(包括一位眼科主任醫(yī)師)進(jìn)行病變程度人工標(biāo)定。根據(jù)DR在病變發(fā)展階段的特征,國(guó)際上主要將DR分為非增生性(PDR)和增生性(NPDR)兩期[23]。在數(shù)據(jù)標(biāo)記階段中,參與醫(yī)生根據(jù)眼底彩照所表現(xiàn)的病變特征和臨床對(duì)應(yīng)的治療措施,將病變劃分為四個(gè)類別:正常、輕度(非增生性)、中度(非增生性到增生性之間)、重度(增生性)。
標(biāo)定后的數(shù)據(jù)集中包含正常56例、輕度367例、中度700例、重度210例。為了在網(wǎng)絡(luò)訓(xùn)練時(shí)進(jìn)行交叉驗(yàn)證,將數(shù)據(jù)集隨機(jī)劃分為兩部分:80%的訓(xùn)練集和20%的測(cè)試集。
圖2 數(shù)據(jù)集示例
表2 數(shù)據(jù)集分布
數(shù)據(jù)集原始圖像的分辨率為2464×1632,較高的分辨率可以保留圖像更多細(xì)節(jié)特征,但也會(huì)增加模型參數(shù)量、需要大量計(jì)算資源。通過已有研究和多次嘗試結(jié)果比較,本文將輸入圖像的尺寸減小到512×512分辨率,可以在模型效率與分類準(zhǔn)確率之間取得較好的平衡。
樣本間差異導(dǎo)致的數(shù)據(jù)分布的偏移經(jīng)過多層卷積網(wǎng)絡(luò)的疊加,會(huì)影響梯度變化的方向。本文使用了歸一化方法將不同數(shù)據(jù)的亮度、顏色等數(shù)值都?xì)w一化到同一個(gè)范圍,該操作一定程度消除了數(shù)據(jù)差異帶來的噪聲。
相較于其他圖像分類問題的數(shù)據(jù)集規(guī)模,本文數(shù)據(jù)集規(guī)模較小,并且各類別的數(shù)據(jù)量不平衡。因此,為了讓模型有更好的泛化能力以及避免學(xué)習(xí)結(jié)果偏向某個(gè)類別,本文采用了一些數(shù)據(jù)增強(qiáng)的方法如:隨機(jī)翻轉(zhuǎn)、旋轉(zhuǎn) 45°/90°/180°等角度、從圖像上下左右四個(gè)方向剪裁等。
本文模型使用隨機(jī)梯度下降優(yōu)化器(SGD),SGD算法可以收斂到局部最小值,如果學(xué)習(xí)速率小則學(xué)習(xí)速度過慢,學(xué)習(xí)速率過大又容易造成模型震蕩。為了抑制誤差更新中存在震蕩過大的問題,本文使用了RMSProp算法,該算法計(jì)算了微分平方加權(quán)函數(shù),有利于消除震蕩,使網(wǎng)絡(luò)收斂速度變快,本文將模型的學(xué)習(xí)速率設(shè)為1e-3,梯度衰減設(shè)為1e-4。
由于數(shù)據(jù)樣本偏少,本文采用了k-折疊交叉驗(yàn)證來調(diào)整超參數(shù)并驗(yàn)證模型泛化能力。交叉驗(yàn)證的基本思想:是把原始數(shù)據(jù)分為k組,其中(k-1)組作為訓(xùn)練集,1組作為驗(yàn)證集。首先對(duì)模型進(jìn)行訓(xùn)練,然后在驗(yàn)證集中驗(yàn)證誤差,最后選擇誤差最小的模型。
混淆矩陣是對(duì)分類模型性能評(píng)價(jià)的重要工具,通過樣本真實(shí)類別與模型預(yù)測(cè)類別的組合,衍生出真陽(yáng)性、假陽(yáng)性、準(zhǔn)確率、精確率等各種評(píng)價(jià)指標(biāo),可以更為準(zhǔn)確地度量不同任務(wù)場(chǎng)景下的分類模型。
表3 混淆矩陣
準(zhǔn)確率(Accuracy)是最為直觀的評(píng)價(jià)指標(biāo),即正確分類的樣本占所有樣本的比例。但在正負(fù)樣本不平衡的情況下,準(zhǔn)確率無法很好地觀察到負(fù)類的預(yù)測(cè)情況。
召回率(Recall)是預(yù)測(cè)正確的正例占所有樣本的比例,表示了模型對(duì)正例的預(yù)測(cè)能力。該指標(biāo)在醫(yī)學(xué)問題中非常重要,因?yàn)樵谂R床診斷中必須極力降低漏診率,本文在實(shí)驗(yàn)中引入了召回率來評(píng)價(jià)模型。
受試者工作特征曲線(ROC)以假陽(yáng)率為橫坐標(biāo)、真陽(yáng)率為縱坐標(biāo),反映每個(gè)位置對(duì)同一型號(hào)刺激的感受。在實(shí)際問題中,常常存在樣本不均衡的情況,但ROC曲線不因樣本分布而變化,是評(píng)價(jià)模型泛化能力的有效指標(biāo)。
本實(shí)驗(yàn)基于PyTorch深度學(xué)習(xí)框架,在GPU平臺(tái)上運(yùn)行,處理器為Intel Xeon E5-2620@2.4GHz,GPU為NVIDIA Tesla K40m,運(yùn)行內(nèi)存64GB。
圖3 訓(xùn)練集結(jié)果
圖3(a)為實(shí)驗(yàn)在測(cè)試集上的準(zhǔn)確率,可以看到隨著訓(xùn)練迭代次數(shù)逐漸升高,同時(shí)模型誤差逐漸降低,在25次左右迭代的時(shí)候模型很好的學(xué)習(xí)到了誤差下降的方向。在迭代250次之后模型逐漸收斂,最終模型的準(zhǔn)確率達(dá)到88.25%。
模型對(duì)測(cè)試集進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果在圖4中所示。
圖4 測(cè)試集結(jié)果
在樣本容量足夠的前提下ROC曲線可以直觀的評(píng)價(jià)分類器的好壞,視網(wǎng)膜病變檢測(cè)是個(gè)4分類問題,針對(duì)每一個(gè)分類將它視為2分類(是或否),以假陽(yáng)率為橫軸、真陽(yáng)率為縱軸,并畫出ROC曲線。
除了ROC曲線外,本文還從精確率、召回率和F1-分?jǐn)?shù)等方面,針對(duì)每一類的分類結(jié)果來評(píng)價(jià)模型效果。從表4看到,模型的精確率和召回率較高,模型預(yù)測(cè)結(jié)果對(duì)臨床診斷有一定參考價(jià)值。
表4 各分類評(píng)價(jià)
圖5 各類別ROC曲線
本文基于深度卷積網(wǎng)絡(luò),實(shí)現(xiàn)了對(duì)糖尿病患者眼底彩照的病變程度自動(dòng)分類。通過歸一化操作克服了數(shù)據(jù)質(zhì)量差異較大的問題,利用數(shù)據(jù)增強(qiáng)的方法解決了原始數(shù)據(jù)集規(guī)模較小的問題,通過加載預(yù)訓(xùn)練模型克服了數(shù)據(jù)量較少造成的過擬合問題,同時(shí)縮短了訓(xùn)練時(shí)間。在訓(xùn)練過程中較為精確地提取了圖像的深層病變特征,在四分類任務(wù)上獲得了較高的準(zhǔn)確率,該分類模型有助于醫(yī)生在臨床診斷中提高效率和準(zhǔn)確率。在實(shí)驗(yàn)的網(wǎng)絡(luò)結(jié)構(gòu)上,我們僅采用了Inception-V4結(jié)構(gòu)用于訓(xùn)練,在未來的工作中考慮融合多個(gè)網(wǎng)絡(luò)模型,嘗試進(jìn)一步提高分類準(zhǔn)確率。