閻瑞婷,強 彥,王夢南,肖 寧
(太原理工大學信息與計算機學院,山西晉中 030600)
受吸煙、空氣污染、職業環境等因素,肺癌已經是威脅人類健康和生命的最惡性癌癥之一,并且已經成為所有癌癥的頭號殺手[1-2]。晚期肺癌患者的5年生存率約16%,早期患者進行有效治療,5 年生存率能增加約4 至5 倍。肺結節作為肺癌的早期表現形式,其識別和檢測對于放射科醫生進行癌癥分期評估和臨床治療是非常重要的。
深度學習能夠自動提取隱藏在數據間的多層特征,已經成功應用于語音識別、圖像識別與分類分割等領域[3-5]。近年來,卷積神經網絡CNN(Convolutional Neural Network)作為深度學習在圖像處理領域的代表算法,因其強大的特征提取能力被引入到醫學圖像分析并應用于計算機輔助診斷CADx(Computer Aided Diagnosis)[6]。文 獻[7]、文獻[8]提出 了基于 二維卷積神經網絡(2DCNN)的方法來檢測肺結節。由于肺結節是三維的,體積背景信息在結節的檢測中起著重要的作用[9-10]。二維卷積神經網絡及其變體試圖利用連續的相鄰切片[8]、正交平面[7]或多視圖平面[11]來在網絡中聚合更多的空間信息對肺結節進行檢測。然而,由于二維網絡結構的特點,這些方法很難充分利用肺結節的三維空間信息,并將其從復雜的肺部組織中分離出來。
由于患者的CT 圖像是由解剖斷面切片組成,從CT 圖像中檢測出肺結節,本質上是一個三維物體檢測問題。文獻[12]提出了一種端到端的三維卷積神經網絡(3DCNN),首先由Faster R-CNN 來提取候選結節,再由3DCNN 來減少假陽性。文獻[13]提出了一種改進的基于3DCNN 的肺結節檢測算法,在用3DCNN 提取肺結節特征的過程中添加密集連接模塊強化特征的傳播復用能力。由于肺結節自身尺度不一樣,單個尺度輸入的3DCNN 很難獲取肺結節全面的背景信息,導致結節檢測中假陽性過高。
文中提出了一種利用3DCNN 在肺部CT 掃描中檢測肺結節的新方法,與二維卷積神經網絡相比,三維神經網絡可以對更豐富的空間信息進行編碼,考慮到無法充分利用肺結節的背景信息,該文提出了一種簡單而有效的策略,對多尺度結節信息進行提取,在網絡末端融合各尺度信息剔除假陽性結節來提高檢測率,以應對大結節背景信息不足,數據量少的挑戰。該方法是通用的,可以很容易地擴展到三維醫學圖像或種類不平衡問題的其他檢測任務中。
人體肺部CT 圖像中肺實質區域在一張CT 圖像中所占比例較小,所在范圍也比較固定,左右肺實質區域相對于人體胸腔分布比較穩定,具有位置相對不變性,因而在搭建CNN 模型前,提取CT 圖像的包含肺實質的感興趣區域。該文對CT 薄層掃描的序列圖,利用統計學方法,并根據醫生的經驗發現,當肺部CT 序列圖像取圖像左上角坐標(40,110),右下角坐標(470,440)時包含的肺實質最完整。如圖1 所示,對圖1(a) 提取肺實質圖像得到圖1(b)所示結果。并將結果圖經過雙線插值法,規格化到112× 112大小后,存儲到樣本庫中,用于進行卷積神經網絡的訓練。

圖1 原始圖像和提取肺實質圖像對比
卷積神經網絡以其獨有的卷積池化操作、更少的參與運算參數以及深層次的網絡結構,已經成為目前深度學習領域中使用最廣泛的神經網絡算法之一。卷積神經網絡的層級結構主要由數據輸入層、卷積層、激活層、池化層、全連接層五部分連接構成,每一部分的具體功能介紹如下。
1)輸入層
輸入層用于接收外界采集的數據,通常包括一維時間序列數據,二維平面圖像數據以及三維立體幾何圖形數據等。該層預處理工作的主要內容就是對原始圖像信息進行篩選,常見的方法主要包括去均值、歸一化、主成分分析降維。
2)卷積層
卷積層是卷積神經網絡中最重要的一個局部層次結構,也可以說是“卷積神經網絡”其名字的由來之處。該層的主要功能和工作原理就是專門負責分析提取圖像的一些局部結構特征。
卷積層輸出結果是通過對輸入的數據矩陣采用窗口滑動的方式從上至下,從左到右以一定的步長移動卷積核或者濾波器與相應的原始數據疊加計算而得到。卷積核相當于一個小型的矩陣,其內部每個元素類比于ANN 中的權值,對應到原始圖像的區域,被稱為“感受野(Receptive Field)”。具體操作過程如圖2(a)-(c)所示,假設有一個4×4 的圖像,濾波器大小為2×2,將核內部元素與對應原始圖像矩陣元素相乘后相加,就可得到對應位置的卷積結果,最終得到3×3 的特征圖。

圖2 卷積池化操作過程
上述卷積操作過程中,步幅為1,即卷積核每次滑動一個單位,正好能夠覆蓋整個輸入數據矩陣。而在實際應用中,由于輸入數據的尺寸大小不同,步幅長短不一,可能存在滑動窗口無法到達圖像矩陣邊緣位置的現象。針對這種情況,需要對原始圖像進行填充(Padding),常見的填充方法是補零填充和重復邊界值填充。譬如特征矩陣大小為ω×ω,卷積核為k×k,步幅為s,填充數值為p,則經過卷積層計算得到的特征圖大小如式(1)所示:

3)激勵層
激勵層也稱為激活層,其作用主要是將卷積層模型的結果做一個非線性的映射,引入非線性因素,增加輸出特征的復雜性,以解決模型線性不可分的問題。傳統ANN 一般采用S 型函數或者雙曲正切函數,近些年線性修正單元ReLU(Rectified Linear Unit)及其改進型(如Leaky ReLU、PReLU、RReLU 等)以其收斂快、計算過程簡單的優勢,成為CNN 中普遍使用的激活函數。
4)池化層
池化層通常緊跟卷積層之后,也是卷積神經網絡模型中一個特殊且必不可少的組成單元。理論上在通過卷積層、激勵層獲得圖像特征后,可以直接使用特征圖訓練分類器,但是這些特征圖往往數量龐大,且存在大量無關信息,這樣會導致計算機耗費大量資源參與運算,同時也使得模型訓練過度,達不到應有的效果,因此需要對特征圖進行池化(也稱為降采樣)操作。常用的操作手段有兩種,第一種為最大值池化(Max Pooling),將對應區域內的最大值作為池化結果(如圖2(a)-(e)部分所示),第二種是平均值池化(Average Pooling),將對應區域內所有值相加后取均值作為池化結果。
5)全連接層
全連接層作為CNN 組織架構的最后一個重要組成部分,其作用為將離散的分布式的特征圖整合到同一維度下,從而形成一串一維的向量作為特征表示,為后續的分類識別奠定基礎。通常情況下采用兩層以上的全連接層來增加模型的泛化能力,層與層之間采用與傳統ANN 中神經元相同的權重連接形式。隨著CNN 的深入研究,全連接層參數過多的弊端被解決,逐漸被全局平均池化GAP(Global Average Pooling)所替代。
網絡中輸入大小設置:該方法通過分析肺結節的大小分布來確定感受野的大小。設計的模型Archi-1,其感受野大小為25×25×20(voxels)。這一感受野大小覆蓋了83%已標注的結節,因此,模型對于在正常情況下的所有病例中高頻出現的病灶類型有較好的識別效果。設置這個感受野大小的目的是為小結節提供豐富的背景信息,為中等大小的結節提供適當大小的背景信息,而為一些大的結節提供除部分邊緣以外的結節主體部分。
另外,該文還設計了模型Archi-2,其感受野大小為35×35×30(voxels)。根據對肺結節的大小分布統計,除了幾個體積異常大的結節,這個模型覆蓋了超過99%的結節。這個感受野可以為中等大小的結節提供豐富的背景信息,但是會給個別微小結節帶來來自周圍血管等肺部組織的噪聲。盡管如此,與另一種模型相比,這種模型對于識別超大型結節有了顯著的提升效果。
網絡結構:多尺度3DCNN 框架的主要網絡結構如圖3 所示,模型Archi-1 和感受野較大的模型Archi-2 都由輸入層、卷積層,池化層、全連接層、輸出層組成。在每個隱藏層之后插入批量歸一化層(Batch Normalization),來確保更高的學習速率和降低過擬合(Overfitting),并添加dropout 層,進一步降低過擬合。最后在全連接層使用Sigmoid 作為激活函數,該函數生成0 到1 之間的結節預測概率值。表1詳細描述了網絡配置。

表1 多尺度三維卷積神經網絡詳細結構
為了構建三維卷積神經網絡(3DCNN),該文先確定了模型當中使用到的三維卷積層,在網絡中,每一層的單個神經元輸入關聯于上一層的局部感受野,通過提取局部特征,堆疊成為高層次深度特征,從而產生一個獨立的三維激活體(3D Activation Volume),即為三維卷積核。給定卷積核大小(Convolutional Filter Size)為F,卷積步長為S(Stride),邊界填充像素大小為P(Padding),以及輸入三維體的大小Q,可以得到三維激活體大小為(Q-F+2P)/S+1。在卷積得到特征值后,該文使用RelU 層作為激活層,從而構建出完整的三維卷積層。最后,將激活層的輸出值作為卷積得到的特征圖向量。
卷積網絡經常使用池化層來縮減模型的大小,提高計算速度,同時提高所提取特征的魯棒性。該文對三維池化層的構建,如圖3 所示,周期性地三維卷積層之間插入一個三維最大池化層,它會逐步降低每個特征映射的維度,從而減少網絡中的參數和計算量,從而控制過擬合。給定最大池化過濾器大小F、池化步長為S,輸入三維體大小為Q,則輸出三維體的大小減小為(Q-F)/S。
在每個最大池化層后的dropout 層速率設置為0.25,能有效地緩解過擬合,在一定程度上能達到正則化的效果。當速率為0.25 時,每個神經元在每次訓練中都有25%的概率停止工作,因此它不會太依賴某些局部的特征,這樣可以使模型泛化性更強。
將一批三維訓練樣本表示為{(x1,y1)…(xi,yi)…(xm,ym)},其中m為樣本數量,xi為輸入樣本,yi為樣本對應的真實標簽。yi∈{0,1},其中0 表示非結節,1表示結節。pi為預測的概率,θ表示模型中所有可訓練的參數。該文使用權重因子α∈{0,1}和可調聚焦參數γ≥0 解決類不平衡問題,并且將注意力集中在訓練較復雜情況的樣本上。總體目標函數是樣本損失的平均值,通過優化網絡參數來最小化J(θ)[14],如式(2)所示:
在兩個不同感受野的模型之后,設置一個候選節點Ii,生成一個結節預測概率Pi。為了聚合兩個模型探索的多層上下文信息,對預測結果進行了融合,得到最終的預測結果。
1)將模型Archi-1 得到的第c類(Ii符號名)的回歸概率值表示為Pi(Archi-2 表示方法類似),則融合后驗概率可以由權重線性組合方式計算得到,其表示如下:

其中Pfusion是通過整個網絡框架計算得到的對于c類輸出結果的融合預測概率。權值是在實驗過程中,使用網格搜索策略對訓練數據的一小部分子集進行計算得到的。
2)輸出值Pfusion在0~1 之間,閾值th 設為0。經實驗證明,這是一個合適的值。如果輸出值Pfusion小于閾值th,則結果為0,否則為1。模型融合方法提高了系統的泛化能力。這兩種模型的訓練步驟是一樣的,在下一部分中會進行說明。
由于實驗數據中正負樣本嚴重失衡,且三維網絡結構參數多于二維網絡結構,模型容易對訓練數據過度擬合,因此,需要對正樣本進行數據擴充。為了解決這個問題,將正樣本分別繞3 個空間軸旋轉90°、180°和270°,并分別在這3 個方向上進行翻轉,每個正的樣本對應13 個擴充樣本,使正樣本和負樣本的比例為1∶2。
該模型的權值初始化采用LeCun 正態分布,每次迭代從訓練數據集中隨機選擇一個Mini-batch 樣本,Mini-batch size 設置為16。采用隨機梯度下降(SGD)優化器和標準反向傳播[18]來最小化損失函數并采用動量法、退火學習率法、最大-范數正則化(Max-norm)[20]等方法對SGD 進行改進。
LUNA16 數據集包含由4 位放射學專家標注的888 張肺部CT 掃描圖像。每個結節的標注包括肺結節的中心坐標和相應的直徑,單位為mm。該競賽數據集用于候選結節檢測和結節良惡性分類。對其進行預處理,提取真結節2 351 個,非結節231 731 個,假陽性結節3 526 個,共計237 609 個候選結節。
合作醫院提供了267 位病人的DICOM 格式的肺部CT 圖像,共計1 837 個候選結節,包括1 045 個真結節,792 個非結節。由于CT 掃描是在醫院各部門之間以復雜的程序進行流轉,并且只有一位放射學專家僅標注了肺結節的中心坐標,沒有標注結節直徑等其他特征,因此僅用來驗證模型的普遍性和擴展數據集。
為評估提出的肺結節輔助檢測系統的性能,通過測量每次掃描的靈敏度和檢測到的候選者數量來評價第一階段的結果,靈敏度定義為檢測到的結節數除以結節總數(檢測到的結節數TP 與未檢測到的結節數FN 之和),計算如式(4)所示,其中若預測定位框的范圍落在結節圓心半徑之內,則該區域被視為真陽性,其他不相關的檢測結果不予考慮。假陽性減少階段采用受試者操作特征自由響應曲線FROC(Free-Response Receiver Operating Characteristic)和競爭性能指標CPM(Competition Performance Metric)。FROC 曲線中將靈敏度繪制為每次掃描假陽性個數的函數,并設置95%的置信區間;CPM 評分被定義為7 個預先設置的假陽性率下的靈敏度均值(這7 個值分別為0.125、0.25、0.5、1、2、4 和8),計算如式(5)所示:

實驗環境基于Windows10 操作系統,硬件環境CPU 為2.90 GHz Intel(R) Xeon(R)W-2102(8G 內存),GPU 為NVIDIA GTX Titan XP(12G 顯存),編程開發環境為CUDA Toolkit 10.0,編程語言為Python 3.6,深度學習框架為Keras。
文中采用均勻隨機抽樣的方法,將LUNA 數據集分為訓練集、驗證集和測試集三部分。將LUNA數據集的十分之一作為測試集,其余數據按8∶2 分為訓練集和驗證集。由于該模型在臨床實踐中需要檢測的數據與訓練數據存在顯著差異,因此使用團隊合作醫院提供的數據集和LUNA 測試集作為測試集來選擇訓練方案。訓練過程從正負樣本比例、dropout 層和max-norm 正則化、權值初始化、數據擴充四個方面進行實驗。在兩個驗證集上探索這四個方面的不同組合對于模型檢測肺結節的影響。采用靈敏度、特異度、準確度、F1 分數四個參數評價檢測結節效果。
該文提出此模型的主要目的是從成百上千張胸部CT 影像序列中找出可疑病灶區域,供醫生進行預篩。首先,當正樣本很少時,即使在檢測過程中,將所有的樣本都歸于樣本多的負類,同樣準確度也會很高,所以在訓練中正負樣本的平衡是非常重要的;其次,當正負樣本比例為1∶2,添加dropout 層和maxnorm 正則化,對權值進行初始化,數據擴充后,網絡的檢測性能最好;最后,模型在合作醫院數據集上的預測結果不如在LUNA 數據集上的優越。這是由于醫學圖像的特殊性,在LUNA 數據集上訓練的模型不一定在合作醫院數據集上表現良好。因此,該文在實驗過程中盡可能提高模型泛化能力使其可以適應真實的臨床數據。
為了更直觀地觀察所提出方法的整體性能,將實驗結果與近年來發表的結節檢測方法[5-6,15-18]進行了比較。表2 列出了基于機器學習的檢測方法和基于深度學習的檢測方法的定量結果對比,即不同假陽性率下的靈敏度和CPM 評分。

表2 不同方法的實驗結果對比及CPM評分
基于機器學習的結節檢測方法雖然取得了一定程度的進展和效果,但需要人工設計特征的參與,而深度學習方法可以通過訓練網絡自動學習高級語義特征,因此基于卷積神經網絡的深度學習方法更具有可擴展性和檢測優勢。文獻[7]使用二維CNN 結構用于假陽性去除,效果明顯低于其他幾種三維CNN 結構,總體來看該文的方法CPM 得分為0.916,結果比表現最好的方法還高出2.5 個百分點。進一步對深度學習方法進行了比較,繪制了5 種方法的FROC 曲線如圖4 所示,可以看出文中方法在不同的假陽性率下均取得了較高的靈敏度,表明該方法更適合于結節檢測任務。

圖4 不同檢測方法性能比較
基于多尺度3DCNNs 的網絡框架結構,設計了Archi-1 和Archi-2 兩個不同感受野大小的模型,然后對模塊進行融合。如圖5 所示,不同模塊和模塊融合后的FROC 曲線表明融合后結果更有優勢,表3為模塊和模塊融合后在不同假陽性率下的靈敏度,同樣融合后的靈敏度更高。實驗結果表明,該框架可以準確地識別多種大小、形狀和位置的結節,具有很高的可信度。

圖5 不同模塊和模塊融合后的FROC曲線

表3 模塊和模塊融合后在不同假陽性率下的靈敏度
文中提出了一種基于多尺度三維卷積神經網絡的肺結節檢測方法。整個模型在弱標記的臨床數據檢測任務中表現良好。首先,由于肺結節的三維特征與血管等組織不同,傳統的二維卷積神經網絡無法充分挖掘肺結節的三維特征,因此文中使用2 個不同大小感受野的三維卷積神經網絡對三維空間信息進行熟練的編碼,處理不同大小和形狀的結節。此外,通過數據擴充增加正樣本數量,然后過采樣正樣本將正負樣本的比例提高到1∶2,解決了種類不平衡的問題,在一定程度上降低了數據不足的影響。最后,由于在臨床情況下需要檢測的數據與訓練數據基本不同,所以文中使用真實的臨床數據對該方法進行評估。
該文提出的方法是通用的,可以很容易地擴展到三維醫學圖像或類不平衡問題的其他檢測任務。今后的研究還需要進一步提高肺結節的檢測準確性,對結節惡性程度的量化也需要進一步研究,以便對患者進行更全面的病理診斷。未來的發展需要與肺部專家積極合作,通過專業知識的交流,以及大量包含有價值的空間和病理信息的數據流,可以使肺結節檢測的工作更加高效地進行。