3D Deep Leaky Noisy-or Network 論文閱讀
原文:Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network
博文參考:Doublle Tree的博客中Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network 論文閱讀一文。
注:本文為2017年Kaggle舉辦的數(shù)據(jù)科學競賽中,第一名獲獎團隊的相關論文,若需查看代碼可訪問Github。
簡介
根據(jù)CT圖像的肺癌自動診斷系統(tǒng)包含以下步驟:
- 檢測所有可疑病變;
- 評估整個肺部的惡性程度。
但目前大多數(shù)的研究主要集中于第一步,以及通過肺結節(jié)診斷肺癌存在較高的假陽性率。因此,肺癌的診斷需要對每個可疑結節(jié)進行細致分析,再聯(lián)合所有結節(jié)信息進行定性診斷。針對上述問題,本文提出了一個三維深度神經網絡(3D deep neural network)用于解決這些問題。該網絡由兩部分組成:
- 用于結節(jié)檢測的3D region proposal network;
- 基于置信檢測(the detection confidence)選出top-5結節(jié)并評估其癌癥可能性,最后將此概率與Leaky noisy-or模型相結合評估患者患癌的可能性。
其中,上述兩個模型均采用修改后的U-net模型,并使用數(shù)據(jù)增強操作避免過擬合問題。
數(shù)據(jù)集和預處理
數(shù)據(jù)集
訓練集由LUNA16數(shù)據(jù)集(the Lung Nodule Analysis 2016)和NDSB3(Data Science Bowl 2017)數(shù)據(jù)集兩部分組成。其中,LUNA16數(shù)據(jù)集含有888個病例,標記了1186個肺結節(jié);在NDSB3數(shù)據(jù)集中,1397個病例用于訓練,198個病例用于驗證,506個病例用于測試,且人工標注了訓練集中754個結節(jié)和驗證集中78個結節(jié)。
對于LUNA16數(shù)據(jù)集,其存在許多較小的注釋結節(jié),且臨床經驗認為直徑6mm以下的肺結節(jié)無危險。但在NDSB3數(shù)據(jù)集中,存在較多的大直徑結節(jié)且結節(jié)多與主支氣管相連。因此,針對兩個數(shù)據(jù)集的差異,需去除LUNA16數(shù)據(jù)集中直徑6mm的結節(jié),同時對NDSB3數(shù)據(jù)集進行人工標注。
此處說明了Julian de Wit的解決方案中,直接設置結節(jié)直徑為6mm的原因,以及為何需對NDSB3數(shù)據(jù)集進行人工標注。
上圖為結節(jié)分布情況圖。其中,圖a為DSB(NDSB3)與LUNA(LUNA16)數(shù)據(jù)集中結節(jié)直徑分布情況;圖b為DSB數(shù)據(jù)集中患癌患者與健康人群的最大結節(jié)直徑分布情況。
預處理
首先將所有的原始數(shù)據(jù)轉變?yōu)镠U值,如下圖a所示,再進行如下步驟:
掩膜提?。涸?D切片上,首先使用標準差為1的高斯濾波和閾值為-600的處理得到肺部以及周圍較暗部分的掩膜,如上圖b所示,然后進行連通性分析去除小于
的connected component和離心率大于0.99的部分(some high-luminance radial imaging noise),再計算得到二值的3D矩陣中所有的3D connected component,且僅保留非邊緣部分(用于去除肺部周圍較暗的部分)以及體積在0.68~7.5L之間的部分,結果如上圖c所示;
-
凸包與擴張:若結節(jié)與肺的外壁相連,則其將不會出現(xiàn)在上述提取的掩膜中。因此,對于這種情況,首先將肺部分為左右兩個部分,即左肺與右肺,如上圖d所示。然后分別對左右肺進行凸包處理,并向外擴張10像素,如上圖f所示。但對于一些2D切片而言,肺部的底部類似與月牙形,如下圖所示。若對于該類型進行凸包處理后,面積大于初始的1.5倍,則放棄凸包,從而避免引入過多的其他組織;
灰度標準化:將HU值([-1200, 600])線性變換至0~255內的灰度值,且掩膜以外的像素灰度值均設為170,以及擴張區(qū)域內的像素灰度值高于210則也設為170。
用于結節(jié)檢測的3D卷積神經網絡
該網絡是基于U-net的3D版RPN(Region Proposal Network)模型。
輸入數(shù)據(jù)
受限于顯存,輸入數(shù)據(jù)大小為,并隨機選擇兩種patch:一種為70%的輸入數(shù)據(jù)至少包含一個結節(jié);另一種為30%的輸入數(shù)據(jù)不含結節(jié)。其中,patch超出圖像部分用灰度值為170填充。
為了避免過擬合問題,數(shù)據(jù)采用數(shù)據(jù)增強方法。
從輸入數(shù)據(jù)大小可看出,本文作者采用的顯卡為專業(yè)卡,其顯存大。鑒于此,可根據(jù)實際情況將輸入數(shù)據(jù)大小調整為64或者32。
網絡結構
網絡由前饋路徑和反饋路徑組成,如下圖圖a所示。
前饋路徑
以兩層卷積核為的卷積(channel為24)開始,且padding為1;其后為4個殘差塊,其中每個殘差塊由3個殘差單元組成(如上圖圖b所示),而每個殘差單元由卷積、Batch Norm、ReLU激活函數(shù)、卷積和Batch Norm組成,且卷積核大小均為
。除此之外,每個殘差塊均有一個最大池化層,大小為
,步長為2。
反饋路徑
反饋路徑由兩層反卷積(裝置卷積)層和兩個融合單元構成。最后,由卷積核均為且channel為64和15的兩層卷積層將數(shù)據(jù)大小轉換為
。
反卷積層
卷積核大小為2,步長為2。
注意該部分的代碼實現(xiàn)部分,原始U-net網絡設置為不可學習。
融合單元
每個融合單元(如上圖圖c所示)均由一個前饋blob和反饋blob組成,其結果作為殘差塊的輸入。
值得注意的一點,本文作者在此處引入了位置信息,作為額外的輸入數(shù)據(jù)。
位置信息
proposal的位置信息可能影響是否為結節(jié)和是否為惡性的判斷,因而引入位置信息。
具體方法:對于每個patch,計算其相對位置坐標,并將其大小轉換為。
其中,位置坐標對應歸一化后的X,Y和Z軸(每個軸的取值范圍為-1~1,對應于肺的兩端)。
輸出層
輸出數(shù)據(jù)為4D的tensor,,其中3表示anchor個數(shù),5表示回歸量(
,即概率,三維坐標和bounding box直徑大?。?/p>
其中,對于激活函數(shù)采用sigmoid函數(shù),其余不使用任何激活函數(shù)。
損失函數(shù)
真值標簽為,每個anchor記為
,IoU(Intersection over Unit)大于0.5記為Positive,小于0.02記為False,其他在訓練過程中忽略。
分類損失為:
其中,為anchor box的真值標簽,
為預測概率。
bounding box回歸標簽為:
回歸總損失為:
其中,為smoothed L1-norm函數(shù):
對于每個anchor box的損失函數(shù)為:
最后,整體的anchor box的損失函數(shù)為anchor box的損失值取平均。
正反例數(shù)據(jù)
正例數(shù)據(jù)
對于大結節(jié)而言,網絡會生成較多的positive anchor box,因此為了降低訓練數(shù)據(jù)之間的相關性,隨機挑選其中一個。
由于結節(jié)直徑大小分布不均,而NDSB3數(shù)據(jù)集多為大結節(jié),因而對大于30mm和40mm的結節(jié),采樣頻率分別是其他結節(jié)的2倍和6倍。
此處對于NDSB3競賽得分有利,實際是否可行有待商榷。
反例數(shù)據(jù)
對于一些易誤診為結節(jié)的反例數(shù)據(jù),通過使用hard negative mining方法解決。
具體方法為:
- 將不同的patch輸入至網絡得到不同置信度的輸出映射;
- 隨機選擇N個反例數(shù)據(jù)構成候選池;
- 侯選池中的數(shù)據(jù)以置信度值大小排序,且選出top-n的數(shù)據(jù)作為反例數(shù)據(jù)。
未選中的數(shù)據(jù)忽略且不參與損失計算。
此處可借鑒該方法,盡可能降低假陽性率,以及加速模型訓練。
圖像分割(測試過程)
輸入數(shù)據(jù)大小為,overlap為32像素。
輸出數(shù)據(jù)為,其中
表示proposal中心坐標,
表示其半徑大小,
表示其置信度。
輸出數(shù)據(jù)且使用非極大值抑制操作來去除overlaping proposal。
腫瘤分類
由于受限于訓練樣本數(shù),因而復用結節(jié)檢測器階段的N-net網絡。
輸入數(shù)據(jù)為結節(jié)的proposal,大小均為,其僅使用了結節(jié)中心點的信息。在分類器訓練階段,隨機挑選proposal,且其選中的概率與proposal的置信度成正比;在測試階段,只挑選top-5的proposal。
經卷積核為的最后一個卷積層得到輸出結果;隨后提取每個proposal中心處
的體素,并將其通過最大池化操作后得到128維的特征,如下圖圖a所示。
對比四種預測腫瘤類別的方法(Feature combining method,MaxP method,Noisy-or method和Leaky Noisy-or method),挑選出Leaky Noisy-or方法作為最終的分類方法,如下圖圖b所示。
Leaky Noisy-or Method
引入一個假想結節(jié),其患癌概率為,
的值在模型訓練階段學習獲得。
將特征輸入至兩層相同的Perceptron得到分類概率:
其中,表示第i個結節(jié)癌變的概率。
訓練過程
損失函數(shù)為交叉熵函數(shù)。為了避免過擬合采用了數(shù)據(jù)增強和正則化操作。
訓練的步驟:
- transfer檢測器訓練參數(shù)后,再訓練分類器;
- 采用gradient clipping方法訓練分類器,隨后存儲BN(Batch Normalization)參數(shù);
- 用存儲的BN參數(shù)和gradient clipping方法交替訓練檢測器和分類器。
注:BN在訓練階段和測試階段所計算的方法有所差異。因復用N-net網絡,分類器和檢測器交替訓練,因而需對BN的參數(shù)做特殊處理。