趙梓淇, 裴 昀, 常振東, 王 博, 安爍文, 李文輝
(吉林大學(xué) a.計算機科學(xué)與技術(shù)學(xué)院; b.電子科學(xué)與工程學(xué)院, 長春 130012)
深度學(xué)習(xí)作為機器學(xué)習(xí)的重要分支, 在計算機視覺等領(lǐng)域發(fā)展迅速[1-3]。卷積神經(jīng)網(wǎng)絡(luò)(CNN: Convolutional Neural Networks)是一種常用于圖像識別及處理和分割的深度學(xué)習(xí)算法, 應(yīng)用在人臉識別、行人檢測以及肺結(jié)節(jié)檢測等相關(guān)領(lǐng)域[4-7], 具有局部感知和權(quán)值共享等特點。2012年CNN在ImageNet競賽中取得第1的佳績, 至此CNN成為圖像處理與目標檢測的常用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。CNN經(jīng)歷了從AlexNet[8]、VGGNet[9]到GoogLeNet[10]再到ResNet[11]的不斷優(yōu)化, 性能得到了大幅度的提升。
有學(xué)者將深度學(xué)習(xí)算法應(yīng)用到神經(jīng)細胞圖像的分割、判斷乳腺癌的良惡性分級等。同時也有相關(guān)研究人員用深度卷積神經(jīng)網(wǎng)絡(luò)進行視網(wǎng)膜血管分割, 將三維的卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到了大腦病變區(qū)域分割研究中等。這些研究工作在臨床應(yīng)用中都已有了很大的進展。
世界衛(wèi)生組織的報告表明, 肺癌目前已經(jīng)成為全球致死率最高的癌癥。而根據(jù)我國癌癥中心發(fā)布的2017年中國腫瘤登記年報, 肺癌位居我國癌癥發(fā)病率、死亡率第1位。臨床研究證明, 肺癌早期患者的五年生存率可達70%以上, 而晚期患者的五年生存率僅為14%左右。肺結(jié)節(jié)是早期肺癌的一個重要標志。傳統(tǒng)檢測肺結(jié)節(jié)的方法是醫(yī)生通過觀察肺部的CT(Computed Tomography)切片圖像, 以識別病人是否有肺結(jié)節(jié)。然而較微小的肺結(jié)節(jié)在CT影像上看與血管極為相似, 易被遺漏。這就需要具有較高醫(yī)術(shù)水平的醫(yī)師進行診斷, 而往往這些醫(yī)師通常是科室的科主任, 即便在三甲級醫(yī)院這樣的資源也是少之又少。另一方面, 一個患者的完整肺部平掃CT影像有數(shù)百張的切片, 檢測工作量巨大, 需要投入大量的醫(yī)師完成相關(guān)工作。目前, 70%左右的肺癌患者就診于縣級及縣級以下醫(yī)院, 診療設(shè)備和人力資源都不及三甲醫(yī)院, 從而導(dǎo)致許多患者錯過治療的最佳時期, 導(dǎo)致發(fā)病率極高的肺癌, 因此, 采用計算機輔助研究刻不容緩[12]。
筆者采用U-Net網(wǎng)絡(luò)對肺結(jié)節(jié)進行檢測, 而U-Net網(wǎng)絡(luò)是在FCN(Full Convolution Network)網(wǎng)絡(luò)的基礎(chǔ)上進行優(yōu)化改進得到的適用于醫(yī)學(xué)圖像處理的神經(jīng)網(wǎng)絡(luò), 所以在實驗過程中選用U-Net網(wǎng)絡(luò)對肺結(jié)節(jié)進行檢測分割可以得到較好的效果。
韓貴來等[13]采用基于視覺注意的肺結(jié)節(jié)顯著性區(qū)域分割方法, 尋找肺圖像中實質(zhì)顯著的區(qū)域連通同時對連通區(qū)域進行區(qū)域生長操作。這種方法雖然可以有效分割肺結(jié)節(jié), 但人工選取的誤差會對分割過程造成一定影響, 并且受限于肺結(jié)節(jié)的多樣性導(dǎo)致應(yīng)用不廣泛。董林佳等[14]提出了一種基于三維形狀指數(shù)和Hessian矩陣特征值的肺結(jié)節(jié)分割與檢測方法, 該方法獲得三維數(shù)據(jù), 并通過對肺結(jié)節(jié)三維特征建模對肺結(jié)節(jié)進行分割。Alakwaa等[15]使用3D卷積神經(jīng)網(wǎng)絡(luò)對肺結(jié)節(jié)進行分割與檢測。
Long等[16]在基于CNN網(wǎng)絡(luò)下提出了FCN(Full Convolution Network)網(wǎng)絡(luò), Zhou等[17]將其用于醫(yī)學(xué)影像分割, 將FCN算法和多數(shù)投票算法相結(jié)合, 在人體軀干CT圖像中分割出了19個目標。Ronneberger[18]提出了U-net網(wǎng)絡(luò)結(jié)構(gòu), 不僅提高了訓(xùn)練效率, 同時也能更精準得實現(xiàn)圖像語義級別的分割。U-Net是一種適用于醫(yī)療圖像分割領(lǐng)域的深度學(xué)習(xí)網(wǎng)絡(luò)模型, 該網(wǎng)絡(luò)已經(jīng)在角膜圖像分割、皮膚病變分割以及膝關(guān)節(jié)磁共振(MR: Magnetic Resonance)圖像分割等領(lǐng)域得到了應(yīng)用[19-21]。
實驗需要在眾多信息中提取出有用信息, 使分割更準確高效, 這樣就需要對數(shù)據(jù)進行預(yù)處理。數(shù)據(jù)的預(yù)處理主要由以下步驟:第1步采用SimpleITK對CT圖像進行讀取,并存放在Numpy數(shù)組的緩存中以供使用;第2步利用Scikit-Image對CT原始圖像(圖1)進行預(yù)處理, 將處理得到的CT影像信息存儲在緩存文件中以進行快速訓(xùn)練初始化。將整張CT圖像分為512×512像素大小的子圖像進行處理。
主要處理過程分為:Binary、Clear_border、Label、Region、Closing、Dilation。
圖1 肺部CT圖像原圖
Binary表示圖像的二值化, 即將CT圖像轉(zhuǎn)換為像素值為0(黑色)、255(白色), 使肺部邊界、內(nèi)部、外部更加分明, 如圖2所示。
Clear border則是將二值化圖像的肺部邊界外部像素轉(zhuǎn)換為和邊界相同, 使肺部區(qū)域得以分離, 如圖3所示。
Label是對影像每個像素進行連通性檢查, 標記連通區(qū)域, 分為四連通和八連通;Region是提取標記過的連通區(qū)域, 并保持最大的連通區(qū)域;Closing是返回的灰度圖像的形態(tài)閉合, 即關(guān)閉可以去除細小黑點并連接小的明亮細縫, 關(guān)閉明亮特征之間的黑色間隙, 如圖4所示。
圖2 肺部CT圖像二值化
圖3 Clear border處理
圖4 Closing處理
Dilation是對圖像進行形態(tài)學(xué)上的膨脹, 將某一坐標下的像素值設(shè)置為以該坐標為中心的鄰域中所有像素值的最大值, 擴張放大明亮區(qū)域并縮小黑暗區(qū)域, 如圖5所示。預(yù)處理后的結(jié)果如圖6所示。
圖5 Dilation處理
圖6 預(yù)處理結(jié)果圖
該實驗使用U-Net網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò), 由于醫(yī)學(xué)圖像邊界模糊、梯度復(fù)雜、需要較多的高分辨率信息, 而人體內(nèi)部結(jié)構(gòu)相對穩(wěn)定, 語義較為簡單, 所以低分辨率信息即可完成簡單定位。U-Net網(wǎng)絡(luò)用深層特征定位, 淺層特征用于精確分割, 在上采樣過程中將淺層特征和深層特征結(jié)合, 能得到較好的分割效果。
該網(wǎng)絡(luò)是在卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上實現(xiàn)的, 通常CNN在卷積層之后會接若干個全連接層, 將卷積層產(chǎn)生的特征圖(feature map)映射成一個固定長度的特征向量。以AlexNet為例, 在最后得到長為1 000的輸出向量, 其值為輸入圖像屬于某一類的概率, 即通過softmax得到固定長度的特征向量。FCN就是將CNN的全連接層轉(zhuǎn)換為卷積層, 例如AlexNet使用了兩個尺寸為4 096的全連接層和一個尺寸為1 000的全連接層用作計算分類評分(見圖7)。
圖7 部分AlexNet網(wǎng)絡(luò)結(jié)構(gòu)
將其分別轉(zhuǎn)換為和的卷積層, 把全連接層的權(quán)重重新塑造為卷積層的濾波器, 轉(zhuǎn)化的目的是使卷積神經(jīng)網(wǎng)絡(luò)能得到更多輸出, 以對每個像素點進行分類, 同時保留了原始圖像的空間信息如圖8所示。
圖8 改進的FCN網(wǎng)絡(luò)結(jié)構(gòu)
FCN對圖像進行像素級分類, 從而解決了語義級別的圖像分割問題, 所以FCN的另一優(yōu)勢就是對輸入圖像的大小沒有明確限制, 不需要像CNN要對圖像進行裁剪, 避免了特征信息丟失。
在得到熱圖(heatmap)后需要對圖像上采樣(upsampling), 同樣使用和前部分對稱的卷積核和池化層大小, 把圖像放大到原圖像大小。
FCN上采樣過程中的一個關(guān)鍵步驟是對上采樣的微調(diào)(fine tuning), 如果直接把pool4層進行步長為32的反卷積, 得到的結(jié)果圖會丟失大量存在于淺層特征的位置信息和細節(jié), 所以將pool4層進行步長為2的反卷積和pool3層的特征相加再進行步長為16的反卷積, 將相加的特征進行步長為2的反卷積和pool2層的特征相加進行步長為8的反卷積, 整個過程如圖9所示。
圖9 FCN網(wǎng)絡(luò)上采樣過程
此時每個像素都得到了分類預(yù)測, 得到更加精準的分割圖像, 所以FCN全卷積神經(jīng)網(wǎng)絡(luò)是一種端到端、像素到像素的良好的分割網(wǎng)絡(luò)。
U-Net是基于FCN的語義分割網(wǎng)絡(luò)。相比于FCN, U-Net在上采樣部分進行了改進, U-Net為上采樣部分提供了大量的特征通道, 使更多的語義信息傳輸?shù)礁叻直媛侍卣鲗印?/p>
3.2.1 反卷積
網(wǎng)絡(luò)的上采樣部分采用反卷積過程, 反卷積過程和卷積過程相反, 卷積層的反向傳播過程就是反卷積的前向傳播過程。卷積的目的是提取更深層次的特征信息, 而反卷積的作用是在淺層區(qū)域一定程度上還原原始圖像的位置信息。若輸入圖片大小為I×I, 卷積核為K×K, 步長為S,一層零填充為P, 對于卷積過程, 輸出圖像大小
(1)
反卷積過程以輸入圖像為2×2像素, 卷積核為3×3像素, 步長為1, 兩層零填充為例, 同樣利用卷積過程的權(quán)值共享的特性, 帶有零填充的輸入圖像和卷積核做矩陣內(nèi)積, 隨步長移動形成輸出圖像, 如圖10所示。
圖10 反卷積過程描述
同樣能得出輸出圖像大小
O=(I-1)S+K-2P
(2)
3.2.2 并聯(lián)跳躍結(jié)構(gòu)
上面已經(jīng)闡述了傳統(tǒng)的FCN網(wǎng)絡(luò)將層間信息進行加和, 并進行多次訓(xùn)練, 耗費時間較長, 并且由于加和的原因, 深層特征信息會有一定程度的丟失。U-Net采用并聯(lián)跳躍結(jié)構(gòu), 和FCN一樣結(jié)合了深層的特征信息和淺層的位置信息, 采用2×2的反卷積核反卷積得到2倍于長寬的輸出特征圖再和同一層級池化后的特征圖進行疊加并聯(lián), 由于尺寸不同, 所以需要對同層池化后的特征圖進行相應(yīng)的裁剪, 重復(fù)該過程直到恢復(fù)到初始輸入圖像尺寸。該過程只需訓(xùn)練一次, 得到的位置和特征信息更加精確。
3.2.3 損失函數(shù)
U-Net用softmax函數(shù)和交叉熵的結(jié)合作為損失函數(shù), 首先用softmax處理輸出向量, 得到不同類別間的相對概率, 將數(shù)值穩(wěn)定在[0,1]區(qū)間
(3)
其中wij為第i個神經(jīng)元的第j個權(quán)重,b是偏移量,Zi表示該網(wǎng)絡(luò)的第i個輸出。
(4)
其中ai表示第i個softmax的輸出值,k為分類數(shù)。
熵用于表示信息量的期望值, 即
(5)
其中n代表n種分類,p(xi)為xi事件發(fā)生的概率。
在機器學(xué)習(xí)中用到相對熵, 用p表示樣本真實分布、q描述樣本, 相對熵可表示為
(6)
式(6)的前半部分在訓(xùn)練過程中保持不變, 所以只需關(guān)注后面一項, 就是交叉熵。
在該網(wǎng)絡(luò)中將softmax的結(jié)果用ai描述樣本、yi表示真實分類結(jié)果, 則得到交叉熵C為
(7)
(8)
針對分類問題,yi最終只會有一個類別為1, 其余類別都為0, 最終梯度可化簡為
(9)
3.2.4 U-Net網(wǎng)絡(luò)結(jié)構(gòu)
U-Net網(wǎng)絡(luò)分為兩個階段, 第1個階段是收縮階段(contracting path), 這部分的網(wǎng)絡(luò)結(jié)構(gòu)是常規(guī)的卷積神經(jīng)網(wǎng)絡(luò), 所以這部分可以利用ResNet、VGG、Inception等成熟的模型做為卷積網(wǎng)絡(luò)的結(jié)構(gòu), 優(yōu)點是可以利用訓(xùn)練成熟的模型加速U-net網(wǎng)絡(luò)的訓(xùn)練, 該實驗收縮部分進行了多次以兩次用3×3卷積核卷積和一次2×2 max pooling為單位的操作, 每層卷積層之間都用激活函數(shù)ReLu進行處理, 每進行一次操作, 特征通道數(shù)將會擴大一倍。
最后一次的卷積和池化后得到的特征圖具有較深層抽象的特征提取信息, 由于實驗以分割為目的, 所以需要將每個像素進行分類并且還原原圖的位置信息, 所以第2階段是擴張階段, 其中重要的步驟是上采樣。上采樣過程解決了上述問題, U-net網(wǎng)絡(luò)采用2×2反卷積, 將其和同層經(jīng)過兩次3×3卷積后經(jīng)過適當(dāng)裁剪的特征圖進行疊加并聯(lián), 同樣經(jīng)過兩次3×3卷積后, 同樣操作的反卷積和卷積操作對稱進行多次, 最后一層采用1×1的卷積核得到輸出圖像, 整個網(wǎng)絡(luò)結(jié)構(gòu)如圖11所示, 相關(guān)說明如圖12所示。
圖11 U-Net網(wǎng)絡(luò)結(jié)構(gòu)
圖12 U-net相關(guān)說明
實驗全部數(shù)據(jù)引自阿里云天池醫(yī)療AI大賽, 數(shù)據(jù)集提供一千例高?;颊叩牡蛣┝糠尾緾T影像(mhd格式)數(shù)據(jù), 每個影像包含一系列胸腔的多個軸向切片。每個影像包含的切片數(shù)量會隨著掃描機器、掃描層厚和患者的不同而有差異。原始圖像為三維圖像。每個圖像包含一系列胸腔的多個軸向切片。這個三維圖像由不同數(shù)量的二維圖像組成。其二維圖像數(shù)量可以基于不同因素變化, 比如掃描機器、患者。Mhd文件具有包含關(guān)于患者ID的必要信息的頭部, 以及諸如切片厚度的掃描參數(shù)。所提供數(shù)據(jù)的結(jié)節(jié)大小如表1所示。
表1 肺結(jié)節(jié)大小在數(shù)據(jù)集中占比
由于結(jié)節(jié)大小不同, 尤其對半徑小于10 mm的肺結(jié)節(jié), 在驗證和測試時很容易造成漏檢, 以及和血管黏連導(dǎo)致誤診, 所以實驗對數(shù)據(jù)進行增強, 對結(jié)節(jié)小于10 mm的圖像擴大4倍, 對結(jié)節(jié)大于10 mm小于30 mm的圖像擴大3倍, 提高了驗證和測試的準確性。
實驗所用的U-net網(wǎng)絡(luò)設(shè)計如表2所示。
表2 U-net網(wǎng)絡(luò)設(shè)計
實驗環(huán)境如下。
1)硬件:Intel i9-7920X,16GByte,Nvidia GTX 1080Ti;
2)軟件:Windows10,CUDA10.0,cudnn7.4,Tensorflow1.9.0。
數(shù)據(jù)輸入尺寸為512×512像素, 選擇其中976張圖像用于訓(xùn)練模型, 270張圖像用于測試網(wǎng)絡(luò)模型性能。
隨機初始化各層的參數(shù)權(quán)重值, 訓(xùn)練模型, 輸入CT圖像, 得到圖像中預(yù)測出的肺結(jié)節(jié)位置的掩膜(mask), 對得到的預(yù)處理圖像肺結(jié)節(jié)部分進行檢測并加以增強, 使訓(xùn)練效果以及分割效果更加精準, 處理后的CT圖像如圖13所示。經(jīng)過訓(xùn)練之后得到各CT圖像中的肺結(jié)節(jié)掩膜如圖14所示。
圖13 CT圖像中的肺結(jié)節(jié)
圖14 肺結(jié)節(jié)掩膜
實驗結(jié)果表明, 對于訓(xùn)練集的損失函數(shù)最終穩(wěn)定在0.118 7, 對于驗證集的損失函數(shù)最終穩(wěn)定在0.382 8, 驗證集的準確率最終可以達到98.1%, 結(jié)果如圖15~圖17所示。
圖15 訓(xùn)練集損失函數(shù) 圖16 驗證集損失函數(shù) 圖17 驗證集準確率
筆者使用在醫(yī)學(xué)圖像分割領(lǐng)域上效果較為出色的U-Net作為基礎(chǔ)網(wǎng)絡(luò), 數(shù)據(jù)集采用天池AI醫(yī)療大賽所提供的肺部CT圖像對肺結(jié)節(jié)進行分割, 實驗結(jié)果表明, 通過本方法可以有效地得到較好的分割效果。實驗采用的方法主要特點是不需要人工提取肺結(jié)節(jié)特征, 利用深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)特性, 自動分割肺結(jié)節(jié), 相比人眼識別肺結(jié)節(jié)大幅度提高了速度和準確率。雖然現(xiàn)如今在深度學(xué)習(xí)方式的輔助診斷還有一些困難, 但相信在不久的將來, 使用深度學(xué)習(xí)方法對肺結(jié)節(jié)分割的技術(shù)將逐漸趨于成熟, 并得到廣泛的應(yīng)用。