張育,趙軼峰,蘇卓彬,楊永江
河北北方學(xué)院附屬第一醫(yī)院胃腸腫瘤外科,河北張家口 075000
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是近些年來最流行與最成功的圖像分類方法。胃癌被稱為全球第4大癌癥,并且在所有的癌癥中其致死率排名第2。根據(jù)癌癥進(jìn)展,胃部病變一般可以分為胃癌癌前病變、早期胃癌和晚期胃癌。通常早期胃癌患者在其接受治療的5年后生存率超過90%,而晚期胃癌患者通常生存率低于30%。早期胃癌診斷通常會通過檢查患者的息肉、糜爛和潰瘍等各種癌前病變進(jìn)行推斷,如胃腸息肉通常認(rèn)為是癌癥前兆,因此在早期發(fā)現(xiàn)和治療這些息肉就可以大大降低患癌風(fēng)險(xiǎn)。通常醫(yī)生使用相關(guān)的成像檢查設(shè)備協(xié)助檢查患者的胃腸道,以此進(jìn)行胃腸道疾病診斷。就胃癌診斷而言,建立一個(gè)能夠幫助醫(yī)生找到癌前息肉等病理區(qū)域的智能系統(tǒng)是非常必要的,該系統(tǒng)通過對息肉進(jìn)行分類,并根據(jù)息肉類型進(jìn)行適當(dāng)標(biāo)記,可以獲得更準(zhǔn)確的診斷。近年來,研究人員根據(jù)不同類型胃癌癌前病變提出了不同的診斷方法與分類方法。他們使用形狀和紋理等不同特征,借助機(jī)器視覺和機(jī)器學(xué)習(xí)技術(shù)對圖像進(jìn)行分類和標(biāo)記。很多研究都使用了對息肉的表征非常有效的雙樹復(fù)小波變換方法。文獻(xiàn)[1]引入了一種基于紋理和邊緣屬性的方法,進(jìn)而通過使用帶有提升方法的支持向量機(jī)模型取得了較為準(zhǔn)確的結(jié)果。然而,傳統(tǒng)的機(jī)器學(xué)習(xí)方法需要手工制作特征,通常耗時(shí)較長且缺乏魯棒性。如今,基于神經(jīng)網(wǎng)絡(luò)的方法在診斷或分類醫(yī)學(xué)圖像方面非常有效。在神經(jīng)網(wǎng)絡(luò)中有卷積層(convolution)、池化層(pooling)和全連接層(fully connected)的組合,它們通過這些層使用反向傳播算法進(jìn)行訓(xùn)練。文獻(xiàn)[2]、[3]使用CNN將多種息肉特征集成到一個(gè)息肉檢測系統(tǒng)中。文獻(xiàn)[4]也使用CNN實(shí)現(xiàn)了結(jié)腸息肉分類。文獻(xiàn)[5]將CNN 作為特征提取器,SVM 作為分類器,實(shí)現(xiàn)了內(nèi)窺鏡下的圖像病變檢測。表1討論了基于手工特征的模型,表2討論了使用CNN的方法。
表1 使用手工特征的常見模型Table 1 Common models using manual features
表2 使用卷積神經(jīng)網(wǎng)絡(luò)的常見模型Table 2 Common models using convolutional neural networks
本節(jié)中首先介紹所用的圖像集,然后引入用于胃癌癌前病變的CNN 模型,最后對實(shí)驗(yàn)設(shè)置進(jìn)行介紹。
為了訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,使用由文獻(xiàn)[6]收集的經(jīng)相關(guān)患者書面許可的胃癌癌前病變圖像。本圖像集包含兩個(gè)專業(yè)臨床醫(yī)生標(biāo)記的3 種胃息肉類型共1 342 張圖像,其中包含378 張糜爛圖像、447 張息肉圖像、477 張潰瘍圖像。原本該圖像集的圖像尺寸為460×475,經(jīng)過對感興趣區(qū)域的裁剪與旋轉(zhuǎn)等圖像預(yù)處理后,圖像集中包含尺寸為32×32的3 677張圖像,其中包括1 214張糜爛圖像、1 219張息肉圖像和1 244張潰瘍圖像。
本文提出的CNN 模型如圖1所示??梢钥闯觯浠炯軜?gòu)來源于AlexNet。然而,由于AlexNet 保留了全連接層,所以需要更多的參數(shù),這會增加模型的尺寸,且更容易過擬合。為了減少CNN 的尺寸和提高模型分類的準(zhǔn)確性,本文受到SqueezeNet[6]的啟發(fā),用fire模塊(由一個(gè)只有1×1濾波器組成的壓縮卷積層和一個(gè)混合了1×1 和3×3 卷積濾波器的擴(kuò)展層組成)替換了AlexNet 的一些卷積層。目前的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)包括兩種卷積層,即之前CNN 的卷積層和兩個(gè)新的fire模塊。
圖1 本文提出的CNN模型架構(gòu)Figure 1 Architecture of the proposed CNN model
本文的CNN是在Keras[7]框架下實(shí)現(xiàn)的,涉及卷積網(wǎng)絡(luò)的方法是用Python 編寫的,所有實(shí)驗(yàn)都是在Windows 10上進(jìn)行的,GPU 為NVidia GeForce GTX1060(6 GB)。訓(xùn)練時(shí)包含3類胃息肉圖像的數(shù)據(jù)集,其中75%進(jìn)行訓(xùn)練,其余25%用于測試。損失函數(shù)如式(1)所述,以此進(jìn)行網(wǎng)絡(luò)參數(shù)的更新與迭代。
本文采用帶有動量[7]的隨機(jī)梯度下降法對損失進(jìn)行最小優(yōu)化。在建立了CNN 的基本結(jié)構(gòu)后,它可以更新每個(gè)訓(xùn)練樣本的參數(shù)。此外為了通過超參數(shù)調(diào)優(yōu)來提高性能,本文使用了如下所述的一些tips:
(1)L2正則化
本文使用權(quán)重衰減法懲罰大權(quán)重。其中采用的L2 正則化可以使得權(quán)重很小但不強(qiáng)制它們完全為零。將L2項(xiàng)加入損失函數(shù)后,如式(2)所示:
(2)學(xué)習(xí)率優(yōu)化
本文的CNN首先以一個(gè)基礎(chǔ)的學(xué)習(xí)率開始學(xué)習(xí),在隨后的每個(gè)epoch皆慢慢減少,以此提高模型的準(zhǔn)確性,這被稱之為階躍衰減。其計(jì)算如式(3)所示:
(3)高斯噪聲
本文在CNN 的密集層之前應(yīng)用零均值高斯噪聲,從而進(jìn)行數(shù)據(jù)增強(qiáng),此操作有助于緩解過擬合,而且可以提高泛化能力。
(4)ReLU
為了避免出現(xiàn)梯度消失,本文采用ReLU 函數(shù)作為激活函數(shù),如式(4)所示。
如上節(jié)所述,CNN 學(xué)習(xí)過程中一些重要的超參數(shù)是學(xué)習(xí)率[8]、高斯噪聲、L2正則化[9]和階躍衰減[10]。在本節(jié)中,我們將比較和討論這些參數(shù)對最終精度、時(shí)間復(fù)雜度和損失函數(shù)的影響。
L2 是最常見的正則化類型之一[11]。本文將式(1)與式(2)結(jié)合以得到帶有L2正則化損失函數(shù)。該參數(shù)對精度的影響見表3和圖2(1 個(gè)epoch 為整個(gè)訓(xùn)練集的全部數(shù)據(jù)進(jìn)行的一次完整訓(xùn)練[12])。圖2a~2d中的L2 正則化系數(shù)分別為0.1、0.01、0.001、0.000 1,可以看出最佳的L2系數(shù)為0.01。
表3 不同的L2正則化系數(shù)對分類準(zhǔn)確率、損失值和耗時(shí)的影響Table 3 Effects of different L2 regularization coefficients on classification accuracy,loss value and time consumed
圖2 不同的L2正則化系數(shù)對分類準(zhǔn)確率的影響Figure 2 Effects of different L2 regularization coefficients on classification accuracy
圖3與表4為不同學(xué)習(xí)率對最終準(zhǔn)確率的影響。圖3a~3d 中的基礎(chǔ)學(xué)習(xí)率分別為0.1、0.01、0.001、0.000 1,可以看出LR=0.001 的學(xué)習(xí)率參數(shù)在模型訓(xùn)練過程中效果最好。
圖3 不同的學(xué)習(xí)率對分類準(zhǔn)確率的影響Figure 3 Effects of different learning rates on classification accuracy
表4 不同的基礎(chǔ)學(xué)習(xí)率對分類準(zhǔn)確率、損失值和耗時(shí)的影響Table 4 Effects of different basic learning rates on classification accuracy,loss value and time consumed
CNN 中的高斯噪聲定義參考文獻(xiàn)[13]和[14]。使用不同的高斯噪聲值檢驗(yàn)該參數(shù)對模型精度和損失函數(shù)的影響[15-16],圖4給出了結(jié)果的對比,圖4a~4c中的高斯噪聲參數(shù)分別為0.1、0.01、0.001。由表5可見高斯噪聲參數(shù)的最佳值為0.01。
表5 不同的高斯噪聲標(biāo)準(zhǔn)差選擇對分類準(zhǔn)確率、損失值和耗時(shí)的影響Table 5 Effects of different Gaussian noise standard deviations on classification accuracy,loss value and time consumed
圖4 不同的高斯噪聲參數(shù)對分類準(zhǔn)確率的影響Figure 4 Effects of different Gaussian noise parameters on classification accuracy
學(xué)習(xí)速率可以由式(3)所示逐epoch 降低。為了應(yīng)用這個(gè)參數(shù),我們定義了一個(gè)稱為step_decay 的函數(shù),并使用它來更新隨機(jī)梯度下降函數(shù)中的學(xué)習(xí)率[17-18]。圖5為該函數(shù),該函數(shù)的輸入包括初始學(xué)習(xí)速率、drop的數(shù)量和epoch-drop的數(shù)量。
圖5 定義的階躍衰減函數(shù)Figure 5 Defined step decay function
圖6為本實(shí)驗(yàn)的曲線圖。圖6a~6c 中的epochdrop 參數(shù)分別為50、100、200。表6為學(xué)習(xí)率作用后的結(jié)果,可以得出本模型中權(quán)重?fù)p失對應(yīng)的最佳衰減值drop為0.01。
表6 不同的drop參數(shù)對分類準(zhǔn)確率、損失值影響Table 6 Effects of different drop parameters on classification accuracy and loss value and time consumed
圖6 不同的epoch-drop參數(shù)對分類準(zhǔn)確率的影響Figure 6 Effects of different epoch-drop parameters on classification accuracy
對CNN 模型進(jìn)行訓(xùn)練并定義超參數(shù):epoch 為200,L2 系數(shù)為0.01,高斯噪聲標(biāo)準(zhǔn)差為0.001,dropout 為0.1,學(xué)習(xí)率為0.001 與step decay drop 為0.1 后,分類準(zhǔn)確率達(dá)到87%。然后每隔200 個(gè)epoch對模型進(jìn)行再訓(xùn)練直到第1 000 個(gè)epoch,模型的精度達(dá)到89%,如表7所示,其中超參數(shù):epoch 為100,迭代次數(shù)為4,L2 系數(shù)為0.01,高斯噪聲標(biāo)準(zhǔn)差為0.001,dropout 為0.1,學(xué)習(xí)率為0.001 與step decay drop為0.1。訓(xùn)練算法如圖7所示。
圖7 重訓(xùn)練算法Figure 7 Retraining algorithm
表7 再訓(xùn)練模型的迭代次數(shù)對分類準(zhǔn)確率、損失值和耗時(shí)的影響Table 7 Effects of number of iterations for retraining model on classification accuracy,loss value and time consumed
隨著醫(yī)學(xué)影像學(xué)技術(shù)的飛速發(fā)展,內(nèi)窺鏡圖像種類繁多,根據(jù)這一問題的敏感性,對不同類型的疾病進(jìn)行正確診斷和分類是非常重要的[19]。內(nèi)窺鏡檢查通過觀察患者的胃腸道情況,可用于胃癌診斷。早期發(fā)現(xiàn)胃癌癌前病變的類型有助于胃癌預(yù)防,因此,檢測準(zhǔn)確性非常重要[20]。由于內(nèi)窺鏡操作過程依賴于器材操作者,基于人為因素,出錯的概率很高,通過設(shè)計(jì)基于CNN的智能系統(tǒng),可以更準(zhǔn)確地對不同類型的病變和疾病進(jìn)行分類[21]。本文通過設(shè)計(jì)CNN 架構(gòu)并使用數(shù)據(jù)增強(qiáng)、噪聲和權(quán)值衰減等技術(shù)訓(xùn)練CNN模型,最后通過精度、損失值和混淆矩陣等性能指標(biāo),證明了本文提出方法的有效性。