王兵銳,王保平,馬曉普
(南陽師范學(xué)院,河南省智能應(yīng)急研究中心,南陽473061)
肺腫瘤已成為人類因癌癥死亡的主要原因[1]。我國煙民眾多,遭受二手煙危害的人更是數(shù)不勝數(shù)。老齡化加快和大氣環(huán)境污染,肺腫瘤的發(fā)病率和死亡率一直呈現(xiàn)顯著上升趨勢。一般來說,早發(fā)現(xiàn)的良性肺部腫瘤,及時治療后的效果比較好。肺部惡性腫瘤如果早期發(fā)現(xiàn),及時治療后的效果也是很不錯的。早期肺部腫瘤手術(shù)切除,再加上放療和化療,可以完全去除原腫瘤發(fā)病灶,以及消滅殘留的肺部腫瘤組織,可以完全徹底治愈。而中晚期肺部腫瘤,盡管治療后效果很差,嚴(yán)重縮短壽命[2]。中晚期肺腫瘤癌細(xì)胞會擴(kuò)散整個身體,如果腫瘤轉(zhuǎn)移到肝臟,那么生存時間會大大降低。發(fā)生轉(zhuǎn)移后患者即使做手術(shù)效果也不好,術(shù)后如果轉(zhuǎn)移,生存期就會大幅度下降,甚至生存幾個月。及早發(fā)現(xiàn)肺部腫瘤和及早手術(shù)是非常關(guān)鍵的,一般預(yù)后良好。在病變早期得到診斷早期治療,才能獲得較好的療效??酷t(yī)生的經(jīng)驗(yàn)來診斷是不夠的,醫(yī)生長時間連續(xù)工作容易疲憊有時容易誤診[3]?;谟嬎銠C(jī)技術(shù)采用圖像分類識別的方法可以提高診斷的效果。
用于處理圖像分類問題一般采樣支持向量機(jī)方法(Support Vector Machine,SVM)和深度學(xué)習(xí)方法。事物的分類識別問題的分界線一般不是線性的,常常是多種類別混淆在一起。例如人群中,用一條分界線區(qū)分男性女性,用一條線性直線是不能區(qū)分開的。肺腫瘤和肺部健康部分也是無法用線性直線劃分的。甚至人為觀察一個事物既屬于一個類別好像又屬于另一個類別的情況,在二維空間中難以找到答案。SVM[4]就是把一個線性不可分的問題,映射到高維空間,使該問題變?yōu)榫€性可分。在低維空間中線性不可分的多類事物在高維空間中一般是可分的,但取決于你映射到一個什么樣的高維空間。太低區(qū)分效果不好,太高運(yùn)算量過大。這種低維轉(zhuǎn)換到高維最關(guān)鍵的步驟是找到一個事物到另一個事物的映射方法。但映射過程中,容易出現(xiàn)維度爆炸問題。當(dāng)兩類事物由一維映射到二維時,多出三項(xiàng)數(shù)據(jù)。當(dāng)三類事物由一維映射到二維時,多出六項(xiàng)數(shù)據(jù)。所以當(dāng)多類事物由低維映射到高維時,維度數(shù)據(jù)呈現(xiàn)幾何指數(shù)級的爆炸式增加,這便是維度爆炸問題。SVM采用一個稱作核函數(shù)的運(yùn)算,可以將事物特征從低維到高維映射,但具體還是在低維上進(jìn)行運(yùn)算,而實(shí)際的運(yùn)算結(jié)果卻表現(xiàn)在高維上,從此解決了維度爆炸。核函數(shù)解決了非線性分類問題。然而,我們不知道什么樣的核函數(shù)是合適的,人們往往是根據(jù)經(jīng)驗(yàn)選取的,帶有一定的隨意性。不同的問題領(lǐng)域,核函數(shù)具有不同的形式和參數(shù)。目前沒有好的方法解決核函數(shù)的選取問題。但核函數(shù)的選擇對SVM的性能有著至關(guān)重要的作用。如果核函數(shù)選擇不當(dāng),會將事物映射到一個不合適的特征空間,可能導(dǎo)致分類效果不佳。那么應(yīng)用到肺腫瘤上,合適的核函數(shù)的選取也是不容易的。
深度學(xué)習(xí)起源于神經(jīng)網(wǎng)絡(luò),常應(yīng)用于醫(yī)療診斷中[5]。腦神經(jīng)網(wǎng)絡(luò)會隨著生物體的慢慢生長而變得更加粗壯起來。在課堂上了解到的神經(jīng)元,就好像有許多條河流匯聚到一起。把這些匯集到一起的支流叫做樹突。樹突能夠接收輸入到神經(jīng)元的沖動,這種沖動被視為一種刺激,樹突感知到這種刺激,接著就會將它傳入細(xì)胞體,從而完成相應(yīng)的任務(wù)。軸突和樹突的作用對應(yīng),是將之前傳入的沖動再通過神經(jīng)元輸出。另外類似的計算機(jī)中也有和生物學(xué)中相應(yīng)的神經(jīng)元,只不過在計算機(jī)中的是一種模型,即神經(jīng)元模型。它是由輸入、輸出、計算功能三部分構(gòu)成的模型。計算功能和細(xì)胞的細(xì)胞核的作用比較類似,輸入和樹突有異曲同工之妙,輸出則和軸突相互切磋,共同來實(shí)現(xiàn)相應(yīng)的功能。
深度學(xué)習(xí)中最經(jīng)典的應(yīng)用是卷積神經(jīng)網(wǎng)絡(luò)(Convo?lutional Neural Network,CNN),CNN 由多層可訓(xùn)練體系結(jié)構(gòu)組成。深度學(xué)習(xí)來自于人工神經(jīng)網(wǎng)絡(luò)的相關(guān)分析[6]。有幾個隱藏層次的感知器是一個深層的學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)主要是通過和比較低級的特征來結(jié)合,從而更好地表達(dá)屬性類型或特征,還會利用挖掘數(shù)據(jù)的分布特征來對它們進(jìn)行描述,從而構(gòu)建出一種更抽象的高級方法。深度學(xué)習(xí)的好處是不僅可以代替人工來獲取特征從而進(jìn)一步學(xué)習(xí),而且通過分層特征來獲得有效的計算方法。
CNN與一般神經(jīng)網(wǎng)絡(luò)的區(qū)別在于其包含卷積層和池化層,從而更好地抽取特征。CNN包含卷積層、激活層、池化層、全連接層等。采用的CNN架構(gòu)如表1所示。表1中的size為輸入圖像的大小,為了運(yùn)算方便,圖像的大小一般為size×size。
表1 CNN主要部分
CNN的卷積層由多個卷積核組成,這些單元的個數(shù)便是表 1 中 num1、num2、num3、num4,這些數(shù)值的取值一般不超過1024。每個卷積核的參數(shù)都是通過反向傳播算法,根據(jù)誤差多次更新迭代得到的,例如均方誤差函數(shù),表達(dá)式如式(1)所示,其中yr表示真實(shí)值,y表示CNN預(yù)測值,n表示類別。卷積運(yùn)算的目的是提取圖像的不同特征,卷積層1提取一些基本的特征如邊緣、角度等,更多的卷積層能從基本特征中提取更復(fù)雜更高級的特征。卷積核一般以高斯分布的形式初始化,大小通常為3×3。同一個層中,對不同的輸入圖片可以權(quán)值共享。共享權(quán)值也就是共享卷積核可以減少網(wǎng)絡(luò)各層之間的連接,減少運(yùn)算量。卷積核這種局部連接保證了學(xué)習(xí)后的過濾器能夠?qū)τ诰植康妮斎胩卣饔凶顝?qiáng)的響應(yīng)。卷積核太小僅與輸入圖像的某一塊區(qū)域運(yùn)算連接,能夠?qū)植康妮斎雸D像特征有較好的感應(yīng)。
激活層,也稱作非線性層。一般用三種函數(shù)ReLU(Rectified Linear Units layer)、Sigmoid函數(shù)、Tanh函數(shù)。此處選用ReLU函數(shù)。某些情況下采用Tanh函數(shù)可以得到不錯效果。激活函數(shù)是實(shí)現(xiàn)數(shù)據(jù)輸入和輸出之間非線性化功能,這個方面類似SVM的映射問題。激活函數(shù)Sigmoid的表達(dá)式為:
池化層是為了特征網(wǎng)絡(luò)的參數(shù)來減小計算量且在一定程度上控制過擬合。池化層可以壓縮數(shù)據(jù)處理量,通常在卷積層的后面會加池化層。但在每個卷積層后面加池化層導(dǎo)致信息丟失量太大且頻繁使用。為了保證數(shù)據(jù)特征的信息量,權(quán)衡利弊,每兩個卷積層加池化層。池化操作對每個4×4數(shù)據(jù)會縮小為2×2。相對于卷積層的卷積運(yùn)算,池化層進(jìn)行的運(yùn)算一般有以下幾種,最大池化取2階矩陣的最大值最常用。均值池化取2階矩陣的均值。高斯池化類似高斯模糊不常用。可訓(xùn)練池化訓(xùn)練函數(shù)使得接受2階矩陣為輸入輸出一個數(shù)據(jù)。池化層也被稱作下采樣層。這里采用最大池化,池化大小為2×2。如果不能恰好吻合輸入數(shù)據(jù),還要邊緣補(bǔ)零。在輸入數(shù)據(jù)周圍補(bǔ)零來改變輸入數(shù)據(jù)大小從而控制輸出數(shù)據(jù)的維度大小。
降維層把高維數(shù)組進(jìn)行降維處理,返回一個一維數(shù)組,也可以認(rèn)為是鋪開操作。num5的數(shù)值等于(size/4)*(size/4)*num4。維數(shù)發(fā)生改變,但元素個數(shù)不會改變,前后一致。全連接層和卷積層可以相互轉(zhuǎn)換,對于一個卷積層把它變成全連接層,只需要把卷積核變成一個適當(dāng)大小的矩陣,卷積核的大部分都是0,此時卷積層可以當(dāng)做全連接層處理。全連接層輸入數(shù)據(jù)比較多,但輸出一般為分類的個數(shù)是個較小值。之前的各層進(jìn)入到全連接層,輸入數(shù)據(jù)量要大于輸出數(shù)據(jù)量相當(dāng)于降維操作。降維層把多維變?yōu)橐痪S數(shù)據(jù)可以稱作數(shù)據(jù)預(yù)處理。
CT掃描是應(yīng)對肺腫瘤的主要方法。用CT掃描做肺腫瘤分析,肺結(jié)節(jié)檢測是重要的一步。肺部結(jié)節(jié)有大有小性質(zhì)多種多樣,有良性也有惡性。肺部結(jié)節(jié)是發(fā)生在肺部的類圓形,邊界清楚直徑小于或等于3cm,周圍被氣肺組織包繞的病變,可單發(fā)或多發(fā)。直徑小于3cm的軟組織病灶才稱為肺結(jié)節(jié)。結(jié)節(jié)的大小與其良惡性有一定相關(guān)性,肺部病變類圓形、直徑大于3cm稱為肺部腫瘤,惡性腫瘤較多,如圖1所示。而小于2cm的結(jié)節(jié)稱為小結(jié)節(jié)。
圖1 肺腫瘤CT圖
肺部結(jié)節(jié)有些屬于良性,根據(jù)CT影像能快速判定,有些判別起來就比較困難需要多次重復(fù)復(fù)查檢測。采用的是公開數(shù)據(jù)集LIDC/IDRI(Lung Image Data?base Consortium and Infectious Disease Research Insti?tute)。采用小型CNN架構(gòu)和輕量數(shù)據(jù)集,選用包含結(jié)節(jié)的圖片1200張,健康圖片5000張,圖片大小為50×50,也就是對應(yīng)表1,size的值為50。小型CNN具體架構(gòu)為,對應(yīng)表1中數(shù)據(jù)num1為32,num2為32,num3為 64,num4 為 64,num5 為(size/4)*(size/4)*num4,計算得到9216。num6為128,有時可選取256,512。cc為輸出類別個數(shù),這里分肺腫瘤和健康兩類,所以cc為2。訓(xùn)練迭代周期選為20,得到訓(xùn)練的精度損失曲線,如圖2所示,其中橫軸為訓(xùn)練周期,縱軸為精度損失的具體數(shù)值。
圖2 測試曲線
肺腫瘤是所有癌癥中致死率最高的一種。采用深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行早期診斷識別,該網(wǎng)絡(luò)架構(gòu)一共采用4層,卷積核個數(shù)最大為64,是一種輕量小型CNN,針對小型數(shù)據(jù)集,可以快速的得出結(jié)果。這種架構(gòu)非常適合隨身攜帶的筆記本,筆記本的性能相比臺式機(jī)服務(wù)器相差很多,能在筆記本上快速運(yùn)行也便于調(diào)試和演示?;谠摷軜?gòu),對肺腫瘤數(shù)據(jù)進(jìn)行訓(xùn)練學(xué)習(xí),拆分為訓(xùn)練集和測試集。迭代20次后得出測試曲線,圖2中,train_acc訓(xùn)練精度和val_acc測試精度基本重合,兩條損失曲線也較好的纏繞在一起,說明過擬合控制的較好,沒有太大的過擬合產(chǎn)生。在小數(shù)據(jù)集下,測試迭代之后,訓(xùn)練精度可達(dá)92.2%,測試精度可達(dá)91.8%。采用CNN輔助肺腫瘤的探測識別具有一定意義。