婁茹珍,徐 麗,蔣正乾,申林山
(哈爾濱工程大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱150001)
圖像分類是計(jì)算機(jī)視覺領(lǐng)域的熱門研究方向之一[1],也是實(shí)現(xiàn)物體檢測(cè)、人臉識(shí)別[2]、姿態(tài)估計(jì)[3]等研究的重要基礎(chǔ)。圖像分類技術(shù)具有很高的科學(xué)研究和實(shí)際應(yīng)用價(jià)值,因此,圖像分類與醫(yī)學(xué)影像相結(jié)合成為研究的重點(diǎn)[4]。圖像分類技術(shù)是指使用一種或者幾種分類算法對(duì)輸入的圖像數(shù)據(jù)進(jìn)行類別標(biāo)注,應(yīng)用場(chǎng)景較為廣泛,例如:學(xué)生宿舍門口的人臉識(shí)別門閘就是人臉識(shí)別技術(shù)的一種具體實(shí)現(xiàn);心臟病輔助診斷機(jī)器人通過對(duì)心電圖圖像的分類進(jìn)行心律不齊的診斷也是圖像分類技術(shù)的應(yīng)用[5]。
根據(jù)數(shù)據(jù)統(tǒng)計(jì)發(fā)現(xiàn),近年來,近視患病率呈現(xiàn)逐年增高的發(fā)展趨勢(shì),對(duì)人們的身體健康產(chǎn)生了嚴(yán)重的消極影響,在近視眼患者中有超過35%的患者患有重度近視[6]。近視會(huì)拉長眼睛的光軸,也有一定可能會(huì)帶來視網(wǎng)膜或者絡(luò)網(wǎng)膜的惡性病變。當(dāng)近視度數(shù)逐漸加深會(huì)演變成高度近視便可能產(chǎn)生病理性病變,病理性病變會(huì)導(dǎo)致以下幾種癥狀:絡(luò)網(wǎng)膜或者視網(wǎng)膜發(fā)生退化、Fuchs斑和視盤區(qū)域萎縮等。因此,盡早地發(fā)現(xiàn)近視患者眼睛的病理性病變并及時(shí)采取治療非常重要。在臨床實(shí)踐中,診斷和治療策略的成功依賴于成像數(shù)據(jù)的評(píng)估,需要專家進(jìn)行分析診斷。對(duì)眼成像數(shù)據(jù)的解釋需要花費(fèi)大量的經(jīng)驗(yàn)和時(shí)間成本,因此,迫切需要具有與人類相當(dāng)精度的模型來解決這個(gè)問題。利用人工智能技術(shù)能夠幫助眼科醫(yī)生閱讀圖像,并輔助醫(yī)生對(duì)眼疾疾病的診斷,圖像分類處理作為人工智能的熱門研究領(lǐng)域,可以有效地應(yīng)對(duì)該問題,本文運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)對(duì)眼底視網(wǎng)膜圖片進(jìn)行分類判定,輸入視網(wǎng)膜圖像可以給出相應(yīng)的眼疾判定結(jié)果。
數(shù)據(jù)處理主要包括數(shù)據(jù)采集和數(shù)據(jù)預(yù)處理過程。
本文使用的數(shù)據(jù)為眼底視網(wǎng)膜圖像,數(shù)據(jù)主要來自百度大腦和中山大學(xué)眼科中心聯(lián)合舉辦的人工智能比賽的數(shù)據(jù)集。該數(shù)據(jù)集包括 1 200個(gè)志愿者的視網(wǎng)膜圖像數(shù)據(jù)。因?yàn)槭褂玫姆诸愃惴ㄊ且环N有監(jiān)督學(xué)習(xí)的機(jī)器學(xué)習(xí)方法,所以要對(duì)數(shù)據(jù)集進(jìn)行分割和標(biāo)注,眼底視網(wǎng)膜圖像數(shù)據(jù)集是一種公開數(shù)據(jù)集,項(xiàng)目方已經(jīng)完成了數(shù)據(jù)標(biāo)注工作。為了實(shí)現(xiàn)均衡,使用1∶1∶1的比例進(jìn)行數(shù)據(jù)分割,即用來訓(xùn)練驗(yàn)證和測(cè)試的數(shù)據(jù)集各400張,分別存儲(chǔ)在相應(yīng)的文件夾下,使用P開頭的文件名表示病理性近視、使用非P開頭的文件名表示非病理性近視。方便后面進(jìn)行模型訓(xùn)練和模型驗(yàn)證工作等的進(jìn)行。
詳細(xì)數(shù)據(jù)如表1所示。
表1 數(shù)據(jù)統(tǒng)計(jì)Tab.1 Data statistics sheet 單位:張
預(yù)處理過程主要包括圖像壓縮和數(shù)據(jù)的標(biāo)準(zhǔn)化處理,圖像壓縮將讀取的圖片縮放到224 pixel×224 pixel大小的格式,便于后面神經(jīng)網(wǎng)絡(luò)的讀入和處理。
數(shù)據(jù)的標(biāo)準(zhǔn)化是將數(shù)據(jù)按比例縮放[7],使用一定的方式將原數(shù)據(jù)映射到一個(gè)相對(duì)較小的特定區(qū)間內(nèi),一般為[-1,1]。在進(jìn)行比較和評(píng)價(jià)時(shí)經(jīng)常使用數(shù)據(jù)的標(biāo)準(zhǔn)化方法對(duì)指標(biāo)進(jìn)行處理,通過數(shù)據(jù)的標(biāo)準(zhǔn)化可以去除數(shù)據(jù)的單位限制,將帶有單位或者不同量級(jí)的數(shù)據(jù)轉(zhuǎn)化為沒有量綱的純數(shù)值形式,便于不同單位或量級(jí)的指標(biāo)能夠進(jìn)行比較和加權(quán),具體處理過程為使用式(1)和式(2)將數(shù)據(jù)映射到[-1,1]范圍上:
(1)
x**=2×x*-1,
(2)
式中,x表示原變量;min表示變量中的最小值;max表示變量中的最大值;x*是將x縮放在[0,1]之間的值;x**表示映射到[-1,1]范圍上的結(jié)果。經(jīng)過標(biāo)準(zhǔn)化處理后的數(shù)據(jù)可以在一定程度上提升模型的收斂速度和精度。
有監(jiān)督學(xué)習(xí)的圖像分類方法中使用最多是卷積神經(jīng)網(wǎng)絡(luò)[8],本文運(yùn)用的卷積神經(jīng)網(wǎng)絡(luò)的幾種變形實(shí)現(xiàn)圖像分類。分類算法的總體流程如圖1所示。
圖1 分類算法流程Fig.1 Flow chart of classification algorithm
使用的神經(jīng)網(wǎng)絡(luò)分類模型分別是AlexNet模型[9]、VGG[10]模型和GoogLeNet模型[11]。
卷積神經(jīng)網(wǎng)絡(luò)是一種專門用于處理二維圖像數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)模型,可以提取特征時(shí)保留相鄰像素的關(guān)系,在視覺處理方面應(yīng)用廣泛。卷積神經(jīng)網(wǎng)絡(luò)一般由5部分組成:卷積層、池化層、激活函數(shù)、批量標(biāo)準(zhǔn)化層和全連接層。卷積神經(jīng)網(wǎng)絡(luò)的核心是卷積層,該層執(zhí)行稱為“卷積”的操作。
卷積層和池化層是卷積神經(jīng)網(wǎng)絡(luò)的關(guān)鍵層。卷積其實(shí)是一個(gè)數(shù)學(xué)運(yùn)算符,它通過2個(gè)函數(shù)f和g結(jié)合產(chǎn)生第3個(gè)函數(shù),每個(gè)卷積層包含一系列稱為卷積核的濾波器,濾波器的形狀是一個(gè)整數(shù)矩陣,其大小與內(nèi)核相同,用于輸入像素值的子集。每個(gè)像素乘以內(nèi)核中的相應(yīng)值,然后將結(jié)果求和為一個(gè)簡單的值,以簡化表示輸出通道/功能圖中的像素之類的網(wǎng)格單元,通過使用不同的卷積核可以實(shí)現(xiàn)提取圖像不同特征的功能。
池化層通常位于卷積層之后,主要作用是縮小下一個(gè)卷積層的輸入體積的空間尺寸(寬度×高度),但是池化操作并不會(huì)影響體積的深度尺寸。池化層與卷積層操作非常相似,它采用的是一個(gè)滑動(dòng)窗口或某個(gè)跨輸入的步幅移動(dòng)的特定區(qū)域,然后將這些值轉(zhuǎn)換為要代表的值。通過從窗口中可觀察到的值中取最大值(稱為“最大池”)或取這些值的平均值來執(zhí)行轉(zhuǎn)換。
AlexNet是Alex Krizhevsky等人在ImageNet比賽中以很大優(yōu)勢(shì)獲得冠軍后,將比賽中使用的模型整理后發(fā)表在論文中介紹的一種網(wǎng)絡(luò)結(jié)構(gòu),AlexNet卷積神經(jīng)網(wǎng)絡(luò)模型由5個(gè)卷積層和3個(gè)全連接層組成[12]。模擬測(cè)試中驗(yàn)證,如果改變其中任何網(wǎng)絡(luò)層次都會(huì)使得實(shí)驗(yàn)效果變差。AlexNet首次在卷積神經(jīng)網(wǎng)絡(luò)中使用ReLU和Dropout[13]技術(shù),使用Dropout在一定程度上避免了模型過擬合情況的發(fā)生,激活函數(shù)選擇ReLU能夠有效地減少梯度消失現(xiàn)象的出現(xiàn)。AlexNet的具體結(jié)構(gòu)示意如圖2所示。
圖2 AlexNet模型結(jié)構(gòu)Fig.2 Structure diagram of Alexnet model
AlexNet使用卷積層和池化層來提取圖像特征,使用隨機(jī)梯度下降法來對(duì)模型進(jìn)行訓(xùn)練。AlexNet模型的學(xué)習(xí)率設(shè)為0.001,經(jīng)過前向神經(jīng)網(wǎng)絡(luò)計(jì)算后會(huì)得到預(yù)測(cè)值,預(yù)測(cè)值以0.5的sigmoid為閾值進(jìn)行二分類。然后計(jì)算損失函數(shù)和反向傳播更新參數(shù)值,最終達(dá)到預(yù)設(shè)的迭代次數(shù)后保存訓(xùn)練的模型,方便后面進(jìn)行模型測(cè)試。
AlexNet模型所使用的損失函數(shù)為交叉熵?fù)p失函數(shù):
loss=-[y×lnx+(1-y)ln (1-x)],
(3)
式中,x表示sigmoid(logit),logit為概率值概率,用來表示預(yù)測(cè)結(jié)果;y表示真實(shí)值。AlexNet和后面的2種有監(jiān)督學(xué)習(xí)的圖像分類算法均由Paddle框架實(shí)現(xiàn)。
VGG卷積神經(jīng)網(wǎng)絡(luò)模型是輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)中分類性能表現(xiàn)優(yōu)秀的網(wǎng)絡(luò)模型之一[14]。與AlexNet網(wǎng)絡(luò)相比,最主要的特點(diǎn)為采用多個(gè)堆疊的入3×3卷積核代替AlexNet網(wǎng)絡(luò)中較大的單個(gè)卷積核,如5×5,7×7,11×11。在使用相同的感受野情況下,相比單個(gè)大卷積核,采用小卷積核堆疊的方式能夠以更少的參數(shù)量代價(jià)獲得更好的非線性結(jié)果。VGG網(wǎng)絡(luò)全部使用大小相同的最大池化層(2×2)和卷積核(3×3),保證了網(wǎng)絡(luò)結(jié)構(gòu)的簡潔性模型的效果。VGG模型的具體結(jié)構(gòu)示意如圖3所示。
圖3 VGG模型網(wǎng)絡(luò)結(jié)構(gòu)示意Fig.3 Schematic diagram of VGG model network structure
VGG卷積神經(jīng)網(wǎng)絡(luò)模型由3層全連接層和13層卷積層組成。該模型的設(shè)計(jì)嚴(yán)格使用3×3的卷積層和最大池化層來進(jìn)行特征提取,提取完特征后使用3層全連接層進(jìn)行分類,3層全連接層最后的輸出代表預(yù)測(cè)概率,大于0.5的表示正例,否則為負(fù)例。VGG模型的卷積層使用ReLU函數(shù)作為激活函數(shù),每個(gè)全連接層后使用dropout來防止模型過擬合。
GoogLeNet模型針對(duì)CNN的改進(jìn)主要提出了Inception 的結(jié)構(gòu)[15],一般的CNN結(jié)構(gòu)只是單純地增大網(wǎng)絡(luò),這樣會(huì)產(chǎn)生過擬合和計(jì)算量的增加這2個(gè)缺點(diǎn),增加網(wǎng)絡(luò)寬度和深度的同時(shí)對(duì)模型的參數(shù)進(jìn)行減少可以有效解決這些問題。為了減少模型參數(shù),全連接層的稠密連接需要變成稀疏連接,在具體的實(shí)現(xiàn)過程中,由于目前用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練GPU主要是針對(duì)密集矩陣的計(jì)算進(jìn)行優(yōu)化的,當(dāng)全連接層由稠密連接變成稀疏連接后并不會(huì)大幅度減少實(shí)際計(jì)算量,雖然稀疏矩陣的數(shù)據(jù)量極大減少,但是模型訓(xùn)練的時(shí)間卻很難減少。GoogLeNet模型使用的Inception結(jié)構(gòu)在保持網(wǎng)絡(luò)結(jié)構(gòu)的稀疏性的同時(shí),可以使用密集矩陣的高計(jì)算性能。Inception結(jié)構(gòu)示意如圖4所示。
圖4 Inception結(jié)構(gòu)示意Fig.4 Schematic diagram of Inception structure
Inception結(jié)構(gòu)由3個(gè)不同大小的卷積核和1個(gè)最大池化結(jié)構(gòu)組成,4種操作同時(shí)進(jìn)行,使用過濾器串聯(lián)的方式將這4種操作的輸出進(jìn)行拼接,形成輸出特征圖,因?yàn)椴煌笮〉木矸e核可以提取圖像的不同特征,因此Inception結(jié)構(gòu)輸出的特征圖將匯合3種卷積核提取的不同特征。
GoogLeNet模型的具體結(jié)構(gòu)示意如圖5所示:
圖5 GoogLeNet模型網(wǎng)絡(luò)結(jié)構(gòu)示意Fig.5 Schematic diagram of GoogLeNet model network structure
GoogLeNet模型中使用了3個(gè)softmax分類器,訓(xùn)練時(shí)將3個(gè)分類器的損失函數(shù)進(jìn)行加權(quán)平均,可以很好地緩解梯度消失的現(xiàn)象。
本節(jié)主要使用Python語言對(duì)眼疾圖像分類進(jìn)行實(shí)驗(yàn),眼疾識(shí)別所使用的實(shí)驗(yàn)環(huán)境如表2所示。
表2 訓(xùn)練測(cè)試環(huán)境Tab.2 Training and testing environment
眼疾識(shí)別在計(jì)算機(jī)視覺領(lǐng)域?qū)儆趫D像分類問題,圖像分類問題的損失函數(shù)一般使用交叉熵?fù)p失函數(shù),交叉熵?fù)p失函數(shù)的計(jì)算如式(3)所示。為了對(duì)比3種模型的效果,對(duì)3種模型分別使用相同的數(shù)據(jù)集進(jìn)行各100個(gè)epoch的獨(dú)立實(shí)驗(yàn),首先是對(duì)比3種模型的交叉熵?fù)p失函數(shù)值,橫坐標(biāo)表示epoch的輪數(shù),縱軸表示交叉熵?fù)p失函數(shù)大小,結(jié)果如圖6~圖9所示。
圖6 AlexNet模型損失函數(shù)Fig.6 Loss function of AlexNet model
圖7 VGG模型損失函數(shù)Fig.7 Loss function of VGG model
圖8 GoogLeNet模型損失函數(shù)Fig.8 Loss function of GoogLeNet model
圖9 3種模型損失函數(shù)對(duì)比Fig.9 Comparison of loss functions of three models
經(jīng)對(duì)比分析可知,VGG模型的損失函數(shù)最先開始收斂,在第50輪epoch左右時(shí)GoogLeNet模型損失函數(shù)出現(xiàn)了較大起伏,但經(jīng)過100個(gè)epoch的訓(xùn)練,3種模型的交叉熵?fù)p失函數(shù)值都達(dá)到了極小??梢钥吹?,3種模型對(duì)于眼疾識(shí)別的訓(xùn)練都是有效的。
神經(jīng)網(wǎng)絡(luò)模型參數(shù)量的大小反映了模型大小,參數(shù)量越小表示模型越小巧,訓(xùn)練模型所使用的硬件資源越容易實(shí)現(xiàn),效果相同情況下優(yōu)先使用參數(shù)量小的模型。本文使用的訓(xùn)練數(shù)據(jù)為[400,3,224,224],其中400代表一個(gè)epoch使用的圖片數(shù)量為400,3表示神經(jīng)網(wǎng)絡(luò)的輸入通道數(shù)為3,2個(gè)224表示圖像數(shù)據(jù)大小為224 pixel×224 pixel,使用該數(shù)據(jù)時(shí)3種模型的具體參數(shù)量如表3所示。
表3 模型參數(shù)量Tab.3 Parameters of three models
由表3可以看出,GoogLeNet具有最少的參數(shù)量,VGG模型的參數(shù)量最多。
準(zhǔn)確率是衡量圖像分類問題效果的重要指標(biāo),在正負(fù)樣本分布均勻時(shí),精確率可以衡量模型效果。本文使用測(cè)試集中的正負(fù)樣本數(shù)量基本相等,所以選擇使用準(zhǔn)確率來衡量眼疾識(shí)別效果。精確率的計(jì)算如下:
(4)
對(duì)3種模型的準(zhǔn)確率進(jìn)行對(duì)比,幾種卷積神經(jīng)網(wǎng)絡(luò)的眼疾識(shí)別算法結(jié)果如圖10所示。
圖10 3種模型準(zhǔn)確率對(duì)比Fig.10 Comparison of accuracy of three models
由圖10可以看出,經(jīng)過60輪左右的訓(xùn)練,3種模型的準(zhǔn)確率都達(dá)到了平穩(wěn)狀態(tài)。盡管GoogLeNet模型的準(zhǔn)確率在最初的震蕩最為劇烈,但達(dá)到穩(wěn)定狀態(tài)后GoogLeNet模型表現(xiàn)出了最優(yōu)秀的結(jié)果。達(dá)到平穩(wěn)狀態(tài)后3種模型的準(zhǔn)確率如表4所示。
表4 分類算法結(jié)果Tab.4 Results of classification algorithm
由表4可以看出,經(jīng)過100個(gè)epoch的訓(xùn)練,3種模型都達(dá)到了93%以上的準(zhǔn)確率, GoogLeNet模型更是達(dá)到了95.2%的準(zhǔn)確率,可以驗(yàn)證3種模型在眼疾識(shí)別問題上表現(xiàn)良好。由于數(shù)據(jù)集中圖片數(shù)量較少,僅有1 200張,可以合理預(yù)測(cè),如果數(shù)據(jù)集的數(shù)量級(jí)增大,模型的效果還有提升空間。
本文將卷積神經(jīng)網(wǎng)絡(luò)中的AlexNet模型、VGG模型和GoogLeNet模型應(yīng)用于患者眼底視網(wǎng)膜圖像進(jìn)行重癥近視識(shí)別,取得了良好效果。從損失函數(shù)值、模型參數(shù)量和準(zhǔn)確率等指標(biāo)對(duì)3種模型的性能進(jìn)行對(duì)比實(shí)驗(yàn)分析,實(shí)驗(yàn)結(jié)果表明,GoogLeNet模型具有最高的準(zhǔn)確率,已經(jīng)達(dá)到甚至超過一般醫(yī)生識(shí)別準(zhǔn)確度,該模型可以在一定程度上輔助醫(yī)生進(jìn)行眼疾診斷,具有較好的應(yīng)用前景。另外,在本文工作的基礎(chǔ)上,還有以下工作有待于深入研究:細(xì)化眼疾類型進(jìn)行診斷,以提升模型的功能;完善模型,在識(shí)別眼疾的同時(shí)標(biāo)記出眼疾病變位置,從而進(jìn)一步提高醫(yī)生的診斷效率。