閻瑞婷,強 彥,王夢南,肖 寧
(太原理工大學信息與計算機學院,山西晉中 030600)
受吸煙、空氣污染、職業(yè)環(huán)境等因素,肺癌已經(jīng)是威脅人類健康和生命的最惡性癌癥之一,并且已經(jīng)成為所有癌癥的頭號殺手[1-2]。晚期肺癌患者的5年生存率約16%,早期患者進行有效治療,5 年生存率能增加約4 至5 倍。肺結(jié)節(jié)作為肺癌的早期表現(xiàn)形式,其識別和檢測對于放射科醫(yī)生進行癌癥分期評估和臨床治療是非常重要的。
深度學習能夠自動提取隱藏在數(shù)據(jù)間的多層特征,已經(jīng)成功應用于語音識別、圖像識別與分類分割等領域[3-5]。近年來,卷積神經(jīng)網(wǎng)絡CNN(Convolutional Neural Network)作為深度學習在圖像處理領域的代表算法,因其強大的特征提取能力被引入到醫(yī)學圖像分析并應用于計算機輔助診斷CADx(Computer Aided Diagnosis)[6]。文 獻[7]、文獻[8]提出 了基于 二維卷積神經(jīng)網(wǎng)絡(2DCNN)的方法來檢測肺結(jié)節(jié)。由于肺結(jié)節(jié)是三維的,體積背景信息在結(jié)節(jié)的檢測中起著重要的作用[9-10]。二維卷積神經(jīng)網(wǎng)絡及其變體試圖利用連續(xù)的相鄰切片[8]、正交平面[7]或多視圖平面[11]來在網(wǎng)絡中聚合更多的空間信息對肺結(jié)節(jié)進行檢測。然而,由于二維網(wǎng)絡結(jié)構的特點,這些方法很難充分利用肺結(jié)節(jié)的三維空間信息,并將其從復雜的肺部組織中分離出來。
由于患者的CT 圖像是由解剖斷面切片組成,從CT 圖像中檢測出肺結(jié)節(jié),本質(zhì)上是一個三維物體檢測問題。文獻[12]提出了一種端到端的三維卷積神經(jīng)網(wǎng)絡(3DCNN),首先由Faster R-CNN 來提取候選結(jié)節(jié),再由3DCNN 來減少假陽性。文獻[13]提出了一種改進的基于3DCNN 的肺結(jié)節(jié)檢測算法,在用3DCNN 提取肺結(jié)節(jié)特征的過程中添加密集連接模塊強化特征的傳播復用能力。由于肺結(jié)節(jié)自身尺度不一樣,單個尺度輸入的3DCNN 很難獲取肺結(jié)節(jié)全面的背景信息,導致結(jié)節(jié)檢測中假陽性過高。
文中提出了一種利用3DCNN 在肺部CT 掃描中檢測肺結(jié)節(jié)的新方法,與二維卷積神經(jīng)網(wǎng)絡相比,三維神經(jīng)網(wǎng)絡可以對更豐富的空間信息進行編碼,考慮到無法充分利用肺結(jié)節(jié)的背景信息,該文提出了一種簡單而有效的策略,對多尺度結(jié)節(jié)信息進行提取,在網(wǎng)絡末端融合各尺度信息剔除假陽性結(jié)節(jié)來提高檢測率,以應對大結(jié)節(jié)背景信息不足,數(shù)據(jù)量少的挑戰(zhàn)。該方法是通用的,可以很容易地擴展到三維醫(yī)學圖像或種類不平衡問題的其他檢測任務中。
人體肺部CT 圖像中肺實質(zhì)區(qū)域在一張CT 圖像中所占比例較小,所在范圍也比較固定,左右肺實質(zhì)區(qū)域相對于人體胸腔分布比較穩(wěn)定,具有位置相對不變性,因而在搭建CNN 模型前,提取CT 圖像的包含肺實質(zhì)的感興趣區(qū)域。該文對CT 薄層掃描的序列圖,利用統(tǒng)計學方法,并根據(jù)醫(yī)生的經(jīng)驗發(fā)現(xiàn),當肺部CT 序列圖像取圖像左上角坐標(40,110),右下角坐標(470,440)時包含的肺實質(zhì)最完整。如圖1 所示,對圖1(a) 提取肺實質(zhì)圖像得到圖1(b)所示結(jié)果。并將結(jié)果圖經(jīng)過雙線插值法,規(guī)格化到112× 112大小后,存儲到樣本庫中,用于進行卷積神經(jīng)網(wǎng)絡的訓練。
圖1 原始圖像和提取肺實質(zhì)圖像對比
卷積神經(jīng)網(wǎng)絡以其獨有的卷積池化操作、更少的參與運算參數(shù)以及深層次的網(wǎng)絡結(jié)構,已經(jīng)成為目前深度學習領域中使用最廣泛的神經(jīng)網(wǎng)絡算法之一。卷積神經(jīng)網(wǎng)絡的層級結(jié)構主要由數(shù)據(jù)輸入層、卷積層、激活層、池化層、全連接層五部分連接構成,每一部分的具體功能介紹如下。
1)輸入層
輸入層用于接收外界采集的數(shù)據(jù),通常包括一維時間序列數(shù)據(jù),二維平面圖像數(shù)據(jù)以及三維立體幾何圖形數(shù)據(jù)等。該層預處理工作的主要內(nèi)容就是對原始圖像信息進行篩選,常見的方法主要包括去均值、歸一化、主成分分析降維。
2)卷積層
卷積層是卷積神經(jīng)網(wǎng)絡中最重要的一個局部層次結(jié)構,也可以說是“卷積神經(jīng)網(wǎng)絡”其名字的由來之處。該層的主要功能和工作原理就是專門負責分析提取圖像的一些局部結(jié)構特征。
卷積層輸出結(jié)果是通過對輸入的數(shù)據(jù)矩陣采用窗口滑動的方式從上至下,從左到右以一定的步長移動卷積核或者濾波器與相應的原始數(shù)據(jù)疊加計算而得到。卷積核相當于一個小型的矩陣,其內(nèi)部每個元素類比于ANN 中的權值,對應到原始圖像的區(qū)域,被稱為“感受野(Receptive Field)”。具體操作過程如圖2(a)-(c)所示,假設有一個4×4 的圖像,濾波器大小為2×2,將核內(nèi)部元素與對應原始圖像矩陣元素相乘后相加,就可得到對應位置的卷積結(jié)果,最終得到3×3 的特征圖。
圖2 卷積池化操作過程
上述卷積操作過程中,步幅為1,即卷積核每次滑動一個單位,正好能夠覆蓋整個輸入數(shù)據(jù)矩陣。而在實際應用中,由于輸入數(shù)據(jù)的尺寸大小不同,步幅長短不一,可能存在滑動窗口無法到達圖像矩陣邊緣位置的現(xiàn)象。針對這種情況,需要對原始圖像進行填充(Padding),常見的填充方法是補零填充和重復邊界值填充。譬如特征矩陣大小為ω×ω,卷積核為k×k,步幅為s,填充數(shù)值為p,則經(jīng)過卷積層計算得到的特征圖大小如式(1)所示:
3)激勵層
激勵層也稱為激活層,其作用主要是將卷積層模型的結(jié)果做一個非線性的映射,引入非線性因素,增加輸出特征的復雜性,以解決模型線性不可分的問題。傳統(tǒng)ANN 一般采用S 型函數(shù)或者雙曲正切函數(shù),近些年線性修正單元ReLU(Rectified Linear Unit)及其改進型(如Leaky ReLU、PReLU、RReLU 等)以其收斂快、計算過程簡單的優(yōu)勢,成為CNN 中普遍使用的激活函數(shù)。
4)池化層
池化層通常緊跟卷積層之后,也是卷積神經(jīng)網(wǎng)絡模型中一個特殊且必不可少的組成單元。理論上在通過卷積層、激勵層獲得圖像特征后,可以直接使用特征圖訓練分類器,但是這些特征圖往往數(shù)量龐大,且存在大量無關信息,這樣會導致計算機耗費大量資源參與運算,同時也使得模型訓練過度,達不到應有的效果,因此需要對特征圖進行池化(也稱為降采樣)操作。常用的操作手段有兩種,第一種為最大值池化(Max Pooling),將對應區(qū)域內(nèi)的最大值作為池化結(jié)果(如圖2(a)-(e)部分所示),第二種是平均值池化(Average Pooling),將對應區(qū)域內(nèi)所有值相加后取均值作為池化結(jié)果。
5)全連接層
全連接層作為CNN 組織架構的最后一個重要組成部分,其作用為將離散的分布式的特征圖整合到同一維度下,從而形成一串一維的向量作為特征表示,為后續(xù)的分類識別奠定基礎。通常情況下采用兩層以上的全連接層來增加模型的泛化能力,層與層之間采用與傳統(tǒng)ANN 中神經(jīng)元相同的權重連接形式。隨著CNN 的深入研究,全連接層參數(shù)過多的弊端被解決,逐漸被全局平均池化GAP(Global Average Pooling)所替代。
網(wǎng)絡中輸入大小設置:該方法通過分析肺結(jié)節(jié)的大小分布來確定感受野的大小。設計的模型Archi-1,其感受野大小為25×25×20(voxels)。這一感受野大小覆蓋了83%已標注的結(jié)節(jié),因此,模型對于在正常情況下的所有病例中高頻出現(xiàn)的病灶類型有較好的識別效果。設置這個感受野大小的目的是為小結(jié)節(jié)提供豐富的背景信息,為中等大小的結(jié)節(jié)提供適當大小的背景信息,而為一些大的結(jié)節(jié)提供除部分邊緣以外的結(jié)節(jié)主體部分。
另外,該文還設計了模型Archi-2,其感受野大小為35×35×30(voxels)。根據(jù)對肺結(jié)節(jié)的大小分布統(tǒng)計,除了幾個體積異常大的結(jié)節(jié),這個模型覆蓋了超過99%的結(jié)節(jié)。這個感受野可以為中等大小的結(jié)節(jié)提供豐富的背景信息,但是會給個別微小結(jié)節(jié)帶來來自周圍血管等肺部組織的噪聲。盡管如此,與另一種模型相比,這種模型對于識別超大型結(jié)節(jié)有了顯著的提升效果。
網(wǎng)絡結(jié)構:多尺度3DCNN 框架的主要網(wǎng)絡結(jié)構如圖3 所示,模型Archi-1 和感受野較大的模型Archi-2 都由輸入層、卷積層,池化層、全連接層、輸出層組成。在每個隱藏層之后插入批量歸一化層(Batch Normalization),來確保更高的學習速率和降低過擬合(Overfitting),并添加dropout 層,進一步降低過擬合。最后在全連接層使用Sigmoid 作為激活函數(shù),該函數(shù)生成0 到1 之間的結(jié)節(jié)預測概率值。表1詳細描述了網(wǎng)絡配置。
表1 多尺度三維卷積神經(jīng)網(wǎng)絡詳細結(jié)構
為了構建三維卷積神經(jīng)網(wǎng)絡(3DCNN),該文先確定了模型當中使用到的三維卷積層,在網(wǎng)絡中,每一層的單個神經(jīng)元輸入關聯(lián)于上一層的局部感受野,通過提取局部特征,堆疊成為高層次深度特征,從而產(chǎn)生一個獨立的三維激活體(3D Activation Volume),即為三維卷積核。給定卷積核大小(Convolutional Filter Size)為F,卷積步長為S(Stride),邊界填充像素大小為P(Padding),以及輸入三維體的大小Q,可以得到三維激活體大小為(Q-F+2P)/S+1。在卷積得到特征值后,該文使用RelU 層作為激活層,從而構建出完整的三維卷積層。最后,將激活層的輸出值作為卷積得到的特征圖向量。
卷積網(wǎng)絡經(jīng)常使用池化層來縮減模型的大小,提高計算速度,同時提高所提取特征的魯棒性。該文對三維池化層的構建,如圖3 所示,周期性地三維卷積層之間插入一個三維最大池化層,它會逐步降低每個特征映射的維度,從而減少網(wǎng)絡中的參數(shù)和計算量,從而控制過擬合。給定最大池化過濾器大小F、池化步長為S,輸入三維體大小為Q,則輸出三維體的大小減小為(Q-F)/S。
在每個最大池化層后的dropout 層速率設置為0.25,能有效地緩解過擬合,在一定程度上能達到正則化的效果。當速率為0.25 時,每個神經(jīng)元在每次訓練中都有25%的概率停止工作,因此它不會太依賴某些局部的特征,這樣可以使模型泛化性更強。
將一批三維訓練樣本表示為{(x1,y1)…(xi,yi)…(xm,ym)},其中m為樣本數(shù)量,xi為輸入樣本,yi為樣本對應的真實標簽。yi∈{0,1},其中0 表示非結(jié)節(jié),1表示結(jié)節(jié)。pi為預測的概率,θ表示模型中所有可訓練的參數(shù)。該文使用權重因子α∈{0,1}和可調(diào)聚焦參數(shù)γ≥0 解決類不平衡問題,并且將注意力集中在訓練較復雜情況的樣本上??傮w目標函數(shù)是樣本損失的平均值,通過優(yōu)化網(wǎng)絡參數(shù)來最小化J(θ)[14],如式(2)所示:
在兩個不同感受野的模型之后,設置一個候選節(jié)點Ii,生成一個結(jié)節(jié)預測概率Pi。為了聚合兩個模型探索的多層上下文信息,對預測結(jié)果進行了融合,得到最終的預測結(jié)果。
1)將模型Archi-1 得到的第c類(Ii符號名)的回歸概率值表示為Pi(Archi-2 表示方法類似),則融合后驗概率可以由權重線性組合方式計算得到,其表示如下:
其中Pfusion是通過整個網(wǎng)絡框架計算得到的對于c類輸出結(jié)果的融合預測概率。權值是在實驗過程中,使用網(wǎng)格搜索策略對訓練數(shù)據(jù)的一小部分子集進行計算得到的。
2)輸出值Pfusion在0~1 之間,閾值th 設為0。經(jīng)實驗證明,這是一個合適的值。如果輸出值Pfusion小于閾值th,則結(jié)果為0,否則為1。模型融合方法提高了系統(tǒng)的泛化能力。這兩種模型的訓練步驟是一樣的,在下一部分中會進行說明。
由于實驗數(shù)據(jù)中正負樣本嚴重失衡,且三維網(wǎng)絡結(jié)構參數(shù)多于二維網(wǎng)絡結(jié)構,模型容易對訓練數(shù)據(jù)過度擬合,因此,需要對正樣本進行數(shù)據(jù)擴充。為了解決這個問題,將正樣本分別繞3 個空間軸旋轉(zhuǎn)90°、180°和270°,并分別在這3 個方向上進行翻轉(zhuǎn),每個正的樣本對應13 個擴充樣本,使正樣本和負樣本的比例為1∶2。
該模型的權值初始化采用LeCun 正態(tài)分布,每次迭代從訓練數(shù)據(jù)集中隨機選擇一個Mini-batch 樣本,Mini-batch size 設置為16。采用隨機梯度下降(SGD)優(yōu)化器和標準反向傳播[18]來最小化損失函數(shù)并采用動量法、退火學習率法、最大-范數(shù)正則化(Max-norm)[20]等方法對SGD 進行改進。
LUNA16 數(shù)據(jù)集包含由4 位放射學專家標注的888 張肺部CT 掃描圖像。每個結(jié)節(jié)的標注包括肺結(jié)節(jié)的中心坐標和相應的直徑,單位為mm。該競賽數(shù)據(jù)集用于候選結(jié)節(jié)檢測和結(jié)節(jié)良惡性分類。對其進行預處理,提取真結(jié)節(jié)2 351 個,非結(jié)節(jié)231 731 個,假陽性結(jié)節(jié)3 526 個,共計237 609 個候選結(jié)節(jié)。
合作醫(yī)院提供了267 位病人的DICOM 格式的肺部CT 圖像,共計1 837 個候選結(jié)節(jié),包括1 045 個真結(jié)節(jié),792 個非結(jié)節(jié)。由于CT 掃描是在醫(yī)院各部門之間以復雜的程序進行流轉(zhuǎn),并且只有一位放射學專家僅標注了肺結(jié)節(jié)的中心坐標,沒有標注結(jié)節(jié)直徑等其他特征,因此僅用來驗證模型的普遍性和擴展數(shù)據(jù)集。
為評估提出的肺結(jié)節(jié)輔助檢測系統(tǒng)的性能,通過測量每次掃描的靈敏度和檢測到的候選者數(shù)量來評價第一階段的結(jié)果,靈敏度定義為檢測到的結(jié)節(jié)數(shù)除以結(jié)節(jié)總數(shù)(檢測到的結(jié)節(jié)數(shù)TP 與未檢測到的結(jié)節(jié)數(shù)FN 之和),計算如式(4)所示,其中若預測定位框的范圍落在結(jié)節(jié)圓心半徑之內(nèi),則該區(qū)域被視為真陽性,其他不相關的檢測結(jié)果不予考慮。假陽性減少階段采用受試者操作特征自由響應曲線FROC(Free-Response Receiver Operating Characteristic)和競爭性能指標CPM(Competition Performance Metric)。FROC 曲線中將靈敏度繪制為每次掃描假陽性個數(shù)的函數(shù),并設置95%的置信區(qū)間;CPM 評分被定義為7 個預先設置的假陽性率下的靈敏度均值(這7 個值分別為0.125、0.25、0.5、1、2、4 和8),計算如式(5)所示:
實驗環(huán)境基于Windows10 操作系統(tǒng),硬件環(huán)境CPU 為2.90 GHz Intel(R) Xeon(R)W-2102(8G 內(nèi)存),GPU 為NVIDIA GTX Titan XP(12G 顯存),編程開發(fā)環(huán)境為CUDA Toolkit 10.0,編程語言為Python 3.6,深度學習框架為Keras。
文中采用均勻隨機抽樣的方法,將LUNA 數(shù)據(jù)集分為訓練集、驗證集和測試集三部分。將LUNA數(shù)據(jù)集的十分之一作為測試集,其余數(shù)據(jù)按8∶2 分為訓練集和驗證集。由于該模型在臨床實踐中需要檢測的數(shù)據(jù)與訓練數(shù)據(jù)存在顯著差異,因此使用團隊合作醫(yī)院提供的數(shù)據(jù)集和LUNA 測試集作為測試集來選擇訓練方案。訓練過程從正負樣本比例、dropout 層和max-norm 正則化、權值初始化、數(shù)據(jù)擴充四個方面進行實驗。在兩個驗證集上探索這四個方面的不同組合對于模型檢測肺結(jié)節(jié)的影響。采用靈敏度、特異度、準確度、F1 分數(shù)四個參數(shù)評價檢測結(jié)節(jié)效果。
該文提出此模型的主要目的是從成百上千張胸部CT 影像序列中找出可疑病灶區(qū)域,供醫(yī)生進行預篩。首先,當正樣本很少時,即使在檢測過程中,將所有的樣本都歸于樣本多的負類,同樣準確度也會很高,所以在訓練中正負樣本的平衡是非常重要的;其次,當正負樣本比例為1∶2,添加dropout 層和maxnorm 正則化,對權值進行初始化,數(shù)據(jù)擴充后,網(wǎng)絡的檢測性能最好;最后,模型在合作醫(yī)院數(shù)據(jù)集上的預測結(jié)果不如在LUNA 數(shù)據(jù)集上的優(yōu)越。這是由于醫(yī)學圖像的特殊性,在LUNA 數(shù)據(jù)集上訓練的模型不一定在合作醫(yī)院數(shù)據(jù)集上表現(xiàn)良好。因此,該文在實驗過程中盡可能提高模型泛化能力使其可以適應真實的臨床數(shù)據(jù)。
為了更直觀地觀察所提出方法的整體性能,將實驗結(jié)果與近年來發(fā)表的結(jié)節(jié)檢測方法[5-6,15-18]進行了比較。表2 列出了基于機器學習的檢測方法和基于深度學習的檢測方法的定量結(jié)果對比,即不同假陽性率下的靈敏度和CPM 評分。
表2 不同方法的實驗結(jié)果對比及CPM評分
基于機器學習的結(jié)節(jié)檢測方法雖然取得了一定程度的進展和效果,但需要人工設計特征的參與,而深度學習方法可以通過訓練網(wǎng)絡自動學習高級語義特征,因此基于卷積神經(jīng)網(wǎng)絡的深度學習方法更具有可擴展性和檢測優(yōu)勢。文獻[7]使用二維CNN 結(jié)構用于假陽性去除,效果明顯低于其他幾種三維CNN 結(jié)構,總體來看該文的方法CPM 得分為0.916,結(jié)果比表現(xiàn)最好的方法還高出2.5 個百分點。進一步對深度學習方法進行了比較,繪制了5 種方法的FROC 曲線如圖4 所示,可以看出文中方法在不同的假陽性率下均取得了較高的靈敏度,表明該方法更適合于結(jié)節(jié)檢測任務。
圖4 不同檢測方法性能比較
基于多尺度3DCNNs 的網(wǎng)絡框架結(jié)構,設計了Archi-1 和Archi-2 兩個不同感受野大小的模型,然后對模塊進行融合。如圖5 所示,不同模塊和模塊融合后的FROC 曲線表明融合后結(jié)果更有優(yōu)勢,表3為模塊和模塊融合后在不同假陽性率下的靈敏度,同樣融合后的靈敏度更高。實驗結(jié)果表明,該框架可以準確地識別多種大小、形狀和位置的結(jié)節(jié),具有很高的可信度。
圖5 不同模塊和模塊融合后的FROC曲線
表3 模塊和模塊融合后在不同假陽性率下的靈敏度
文中提出了一種基于多尺度三維卷積神經(jīng)網(wǎng)絡的肺結(jié)節(jié)檢測方法。整個模型在弱標記的臨床數(shù)據(jù)檢測任務中表現(xiàn)良好。首先,由于肺結(jié)節(jié)的三維特征與血管等組織不同,傳統(tǒng)的二維卷積神經(jīng)網(wǎng)絡無法充分挖掘肺結(jié)節(jié)的三維特征,因此文中使用2 個不同大小感受野的三維卷積神經(jīng)網(wǎng)絡對三維空間信息進行熟練的編碼,處理不同大小和形狀的結(jié)節(jié)。此外,通過數(shù)據(jù)擴充增加正樣本數(shù)量,然后過采樣正樣本將正負樣本的比例提高到1∶2,解決了種類不平衡的問題,在一定程度上降低了數(shù)據(jù)不足的影響。最后,由于在臨床情況下需要檢測的數(shù)據(jù)與訓練數(shù)據(jù)基本不同,所以文中使用真實的臨床數(shù)據(jù)對該方法進行評估。
該文提出的方法是通用的,可以很容易地擴展到三維醫(yī)學圖像或類不平衡問題的其他檢測任務。今后的研究還需要進一步提高肺結(jié)節(jié)的檢測準確性,對結(jié)節(jié)惡性程度的量化也需要進一步研究,以便對患者進行更全面的病理診斷。未來的發(fā)展需要與肺部專家積極合作,通過專業(yè)知識的交流,以及大量包含有價值的空間和病理信息的數(shù)據(jù)流,可以使肺結(jié)節(jié)檢測的工作更加高效地進行。