袁 慧 杜 雪 趙晗冰 宋 美
(魯東大學(xué)數(shù)學(xué)與統(tǒng)計科學(xué)學(xué)院,山東 煙臺 264025)
目前,視功能損害已是一個嚴(yán)重的全球性公共衛(wèi)生問題,全世界大概有盲人4 500萬,低視力者1.35億。在我國,視力殘疾狀況也十分嚴(yán)峻:我國視力殘疾人數(shù)占?xì)埣踩丝倲?shù)的14.86%,其中白內(nèi)障病人約占46.93%,青光眼約占5.64%[1],且發(fā)病率呈逐年上升趨勢。同時,我國眼科醫(yī)療資源分布不平衡,普及程度低,導(dǎo)致了病人早期篩查工作困難等情況,給患者的就診和眼部疾病預(yù)防工作帶來較大阻礙。如果將眼底疾病篩查與人工智能相結(jié)合,提升現(xiàn)有醫(yī)療資源的使用效率,將有效改善現(xiàn)狀。因此,建立自動識別眼部疾病模型對輔助開展防盲治盲工作具有重要的意義。目前在該方面的探索已經(jīng)取得了一定成果:干能強(qiáng)(2008)提出以MATLAB GUI作為開發(fā)工具,編寫青光眼圖像處理與識別系統(tǒng),實(shí)現(xiàn)對青光眼圖像的識別[2];劉振宇等(2019)利用卷積神經(jīng)網(wǎng)絡(luò)自動提取深度特征構(gòu)建白內(nèi)障分級模型,其識別準(zhǔn)確率達(dá)94.84%[3];徐志京等(2021)基于R-VGGNet網(wǎng)絡(luò)模型的識別方法提高了判別青光眼患者的準(zhǔn)確率,可達(dá)91.7%[4];李建強(qiáng)等(2018)基于CNN的白內(nèi)障自動分類器在四分類任務(wù)中取得了81.86%的平均準(zhǔn)確率[5]。上述模型大多只針對單一病種的識別,如青光眼、白內(nèi)障和糖尿病視網(wǎng)膜病變等,導(dǎo)致其在日常生活中的適用范圍較窄,多用于中后期輔助診斷工作。
與此同時,缺少公開眼底圖像數(shù)據(jù)是我國眼底影像識別工作難開展的重要原因,多數(shù)眼底影像識別系統(tǒng)都是研究者與醫(yī)院合作建立某種眼病的數(shù)據(jù)庫。本次研究使用的數(shù)據(jù)集OIA-ODIR含有多種眼底疾病數(shù)據(jù),較好地解決了缺少公開數(shù)據(jù)問題。本文使用基于TensorFlow構(gòu)建的5種眼底疾病識別模型,可有效解決眼底疾病識別模型識別種類單一化問題,更好地提高眼底疾病診斷效率。
訓(xùn)練和測試深度學(xué)習(xí)模型時,數(shù)據(jù)庫的質(zhì)量起著決定性作用,一個高質(zhì)量的數(shù)據(jù)集能夠提高模型訓(xùn)練的質(zhì)量和預(yù)測準(zhǔn)確率。本文使用的數(shù)據(jù)集是國內(nèi)首個公開眼底疾病數(shù)據(jù)集OIA-ODIR,由南開大學(xué)與多家臨床醫(yī)院合作建立,數(shù)據(jù)集中的眼底圖像都是從醫(yī)院的眼底圖像數(shù)據(jù)庫中抽取,并由相關(guān)專業(yè)人員進(jìn)行標(biāo)簽標(biāo)注。該數(shù)據(jù)集包含眼底圖像數(shù)量高達(dá)10 000多張,取樣涵蓋各個年齡段人群,是非常優(yōu)秀的眼底數(shù)據(jù)集。在OIA-ODIR數(shù)據(jù)集中,由于“其他”類疾病中所含疾病類別復(fù)雜,對實(shí)驗(yàn)結(jié)果存在較強(qiáng)干擾,因此在模型構(gòu)建過程中,會將異常疾病數(shù)據(jù)圖片排除。此外,糖尿病視網(wǎng)膜病變和老年黃斑變性數(shù)據(jù)集類別過少,嘗試對此類數(shù)據(jù)擴(kuò)充,如通過隨機(jī)旋轉(zhuǎn)、裁剪等解決數(shù)據(jù)不平衡的問題。但在訓(xùn)練過程中發(fā)現(xiàn)模型過擬合嚴(yán)重,可能是這兩類疾病數(shù)據(jù)擴(kuò)充后重復(fù)率太高,故在模型改進(jìn)過程中刪除其他疾病、糖尿病視網(wǎng)膜病變和老年黃斑變性3類圖片,利用其余的5個數(shù)據(jù)標(biāo)簽進(jìn)行眼底圖像識別分類研究。
訓(xùn)練使用的是公開數(shù)據(jù)集OIA-ODIR(https://github.com/nkicsl/OIA-ODIR),獲取的原始數(shù)據(jù)存在背景多余、多標(biāo)簽疾病、樣本分布不平衡等問題,若將原始數(shù)據(jù)直接用于網(wǎng)絡(luò)訓(xùn)練模型,會對準(zhǔn)確性及其他指標(biāo)造成較大影響,為提高模型的準(zhǔn)確率,因此對原始數(shù)據(jù)采取一系列的預(yù)處理。
刪除了存在“鏡頭污點(diǎn)”等問題的圖像并裁剪多余背景,將尺寸為2 592×1 728左右的原始圖像統(tǒng)一為250×250分辨率大小,這樣既避免了圖像尺寸過大而引起的訓(xùn)練時間過長,又盡可能多地保留了原始圖片的信息。在圖像注釋中,左右眼標(biāo)簽不同且每只眼可能含有多種眼病,導(dǎo)致每只眼球具有多個不同診斷關(guān)鍵詞,因此通過診斷關(guān)鍵詞與疾病標(biāo)簽之間的映射來重命名圖像,完善數(shù)據(jù)集標(biāo)簽。最后對原始數(shù)據(jù)采取隨機(jī)縮放、翻轉(zhuǎn)、調(diào)整亮度等方法解決數(shù)據(jù)不平衡問題,如圖1所示。通過以上預(yù)處理,構(gòu)建的樣本數(shù)據(jù)集分布如表1所示。
基于Keras搭建自動分類模型,建立了6個卷積層、2個池化層、1個全連接層。
目前卷積是圖像處理中較流行的方法,對輸入圖像區(qū)域像素取加權(quán)平均值作為輸出圖像的像素,其中權(quán)值由卷積公式[式(1)]得到。
圖1 處理數(shù)據(jù)不平衡問題的方法
表1 數(shù)據(jù)分布表
在卷積過程中,所選卷積核的大小決定了模型特征把握能力的強(qiáng)弱。為了保證準(zhǔn)確率提升效率最大化,將3×3、5×5和7×7的卷積核的識別效率進(jìn)行對比,最終發(fā)現(xiàn)5×5的卷積核的識別效率最出色。
在每個卷積層之后引入ReLU激活函數(shù)[式(2)],ReLU激活函數(shù)又稱修正線性單元,是一種人工神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)(activation function),通常指代以斜坡函數(shù)及其變種為代表的非線性函數(shù)。在本模型中,ReLU函數(shù)的“仿生物原理”可以成功激活大概50%的神經(jīng)元,其優(yōu)秀的梯度下降以及反向傳播效率解決了梯度爆炸和梯度消失的問題,有效避免了模型過擬合。最重要的是,ReLU函數(shù)的加入使得模型計算過程得到簡化,壓縮了模型計算的時間,提高了整體模型學(xué)習(xí)效率。
此外,在模型卷積層后引入了Dropout層,從而降低訓(xùn)練結(jié)果過擬合的概率,最后使用Softmax損失函數(shù)[式(3)]輔助進(jìn)行多分類。Softmax損失函數(shù)是Logistic回歸模型在多分類問題上的推廣,適用于多分類問題中,且類別之間互斥的場合。Softmax將多個神經(jīng)元的輸出,映射到(0,1)區(qū)間內(nèi),可以看成當(dāng)前輸出是屬于各個分類的概率,從而來進(jìn)行多分類。
最終該模型結(jié)構(gòu)如圖2所示。
圖2 模型結(jié)構(gòu)圖
模型代碼是以Keras為前端、TensorFlow為后端實(shí)現(xiàn)的,使用的框架是基于Ubuntu16.04(64位)+CUDA9.1+CUDNN9.0系統(tǒng),采用Python為編程語言,訓(xùn)練過程如下。
為了使模型擁有更高的訓(xùn)練網(wǎng)絡(luò)精度,將預(yù)處理后的眼底圖像按batch_size=32輸入自動分類模型,模型由3個模塊(Block1、Block2和Block3)組成,每個模塊包含兩個卷積層。其中Block1、Block2、Block3的感知節(jié)點(diǎn)分別為32×32、64×54、128×128,輸出的特征映射圖轉(zhuǎn)化長度分別為250,83,27。并設(shè)置卷積核大小為5×5進(jìn)行特征提取,之后對輸入張量進(jìn)行批量歸一化處理,接著加入激活函數(shù)ReLU,激活網(wǎng)絡(luò)中的神經(jīng)元。對每個模塊進(jìn)行最大池化,前2個模塊Dropout層參數(shù)值為0.45,后4個為0.5。將池化后的輸出向量傳入全連接層并將特征圖轉(zhuǎn)化為長度為93 312的特征向量,最后使用Softmax交叉熵?fù)p失函數(shù)對模型進(jìn)行五分類。為了防止訓(xùn)練過程中模型過擬合,選擇學(xué)習(xí)率較小的Adam作為優(yōu)化器,最終設(shè)置學(xué)習(xí)率為0.000 1,并根據(jù)函數(shù)計算評價指標(biāo)。
對于模型評價的性能指標(biāo),采用準(zhǔn)確率[公式(4)]、召回率[公式(5)]和精確率[公式(6)]對模型進(jìn)行評估。將當(dāng)前預(yù)測類別定義為正類,其他類別定義為負(fù)類,預(yù)測結(jié)果可分為以下4種情況:正類預(yù)測為正類(TP)、正類預(yù)測為負(fù)類(FN)、負(fù)類預(yù)測為負(fù)類(TN)、負(fù)類預(yù)測為正類(FP)。最終模型訓(xùn)練性能指標(biāo)結(jié)果見表2。
表2 訓(xùn)練結(jié)果
本文利用首個公開眼底圖像數(shù)據(jù)集OIA-ODIR,并基于深度學(xué)習(xí)構(gòu)建正常、白內(nèi)障、近視、青光眼和高血壓5類眼病的自動識別模型,對數(shù)據(jù)不平衡等一系列問題進(jìn)行數(shù)據(jù)預(yù)處理,最后,通過訓(xùn)練經(jīng)典的CNN模型,實(shí)現(xiàn)多種眼病分類任務(wù)。訓(xùn)練后的模型可快速識別出5類眼底疾病,平均準(zhǔn)確率為0.777 6,平均召回率為0.370 1,平均精確率為0.711 3,符合預(yù)期要求。其中,白內(nèi)障和正常的眼底分類最優(yōu),準(zhǔn)確率可高達(dá)95%左右。該模型的建立,對醫(yī)生診斷和防盲治盲工作的開展具有輔助作用,對于降低眼底檢查的工作成本和緩解醫(yī)療設(shè)備分布不平衡問題有實(shí)際意義。未來工作中,可以從網(wǎng)絡(luò)融合、特征提取等算法方面進(jìn)行優(yōu)化,進(jìn)一步提高模型分類的準(zhǔn)確度,從而對眼病圖像進(jìn)行更準(zhǔn)確快速的分類。