【醫學圖像】3D Deep Leaky Noisy-or Network 論文閱讀(轉)


文章來源:https://blog.csdn.net/u013058162/article/details/80470426

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舉辦的數據科學競賽中,第一名獲獎團隊的相關論文,若需查看代碼可訪問Github


簡介

根據CT圖像的肺癌自動診斷系統包含以下步驟:

  1. 檢測所有可疑病變;
  2. 評估整個肺部的惡性程度。

但目前大多數的研究主要集中於第一步,以及通過肺結節診斷肺癌存在較高的假陽性率。因此,肺癌的診斷需要對每個可疑結節進行細致分析,再聯合所有結節信息進行定性診斷。針對上述問題,本文提出了一個三維深度神經網絡(3D deep neural network)用於解決這些問題。該網絡由兩部分組成:

  1. 用於結節檢測的3D region proposal network;
  2. 基於置信檢測(the detection confidence)選出top-5結節並評估其癌症可能性,最后將此概率與Leaky noisy-or模型相結合評估患者患癌的可能性。

其中,上述兩個模型均采用修改后的U-net模型,並使用數據增強操作避免過擬合問題。

數據集和預處理

數據集

訓練集由LUNA16數據集(the Lung Nodule Analysis 2016)和NDSB3(Data Science Bowl 2017)數據集兩部分組成。其中,LUNA16數據集含有888個病例,標記了1186個肺結節;在NDSB3數據集中,1397個病例用於訓練,198個病例用於驗證,506個病例用於測試,且人工標注了訓練集中754個結節和驗證集中78個結節。

對於LUNA16數據集,其存在許多較小的注釋結節,且臨床經驗認為直徑6mm以下的肺結節無危險。但在NDSB3數據集中,存在較多的大直徑結節且結節多與主支氣管相連。因此,針對兩個數據集的差異,需去除LUNA16數據集中直徑6mm的結節,同時對NDSB3數據集進行人工標注。

此處說明了Julian de Wit的解決方案中,直接設置結節直徑為6mm的原因,以及為何需對NDSB3數據集進行人工標注。

image_1cdh21aa1402v6unub1jcj1pvh9.png-41.3kB

上圖為結節分布情況圖。其中,圖a為DSB(NDSB3)與LUNA(LUNA16)數據集中結節直徑分布情況;圖b為DSB數據集中患癌患者與健康人群的最大結節直徑分布情況。

預處理

首先將所有的原始數據轉變為HU值,如下圖a所示,再進行如下步驟:

Screenshot from 2018-05-15 13:41:24.png-65.1kB

  1. 掩膜提取:在2D切片上,首先使用標准差為1的高斯濾波和閾值為-600的處理得到肺部以及周圍較暗部分的掩膜,如上圖b所示,然后進行連通性分析去除小於 30 m m 2 的connected component和離心率大於0.99的部分(some high-luminance radial imaging noise),再計算得到二值的3D矩陣中所有的3D connected component,且僅保留非邊緣部分(用於去除肺部周圍較暗的部分)以及體積在0.68~7.5L之間的部分,結果如上圖c所示;
  2. 凸包與擴張:若結節與肺的外壁相連,則其將不會出現在上述提取的掩膜中。因此,對於這種情況,首先將肺部分為左右兩個部分,即左肺與右肺,如上圖d所示。然后分別對左右肺進行凸包處理,並向外擴張10像素,如上圖f所示。但對於一些2D切片而言,肺部的底部類似與月牙形,如下圖所示。若對於該類型進行凸包處理后,面積大於初始的1.5倍,則放棄凸包,從而避免引入過多的其他組織;
    image_1cdh5tfqkhgo1r941k60sts18l312.png-46.1kB

  3. 灰度標准化:將HU值([-1200, 600])線性變換至0~255內的灰度值,且掩膜以外的像素灰度值均設為170,以及擴張區域內的像素灰度值高於210則也設為170。

用於結節檢測的3D卷積神經網絡

該網絡是基於U-net的3D版RPN(Region Proposal Network)模型

輸入數據

受限於顯存,輸入數據大小為 128 × 128 × 128 × 1 H e i g h t × L e n g t h × W i d t h × C h a n n e l ,並隨機選擇兩種patch:一種為70%的輸入數據至少包含一個結節;另一種為30%的輸入數據不含結節。其中,patch超出圖像部分用灰度值為170填充。

為了避免過擬合問題,數據采用數據增強方法。

從輸入數據大小可看出,本文作者采用的顯卡為專業卡,其顯存大。鑒於此,可根據實際情況將輸入數據大小調整為64或者32。

網絡結構

網絡由前饋路徑和反饋路徑組成,如下圖圖a所示。

image_1ce37f9qh1aabrhk1qp174g19v49.png-143.2kB

前饋路徑

以兩層卷積核為 3 × 3 × 3 的卷積(channel為24)開始,且padding為1;其后為4個殘差塊,其中每個殘差塊由3個殘差單元組成(如上圖圖b所示),而每個殘差單元由卷積、Batch Norm、ReLU激活函數、卷積和Batch Norm組成,且卷積核大小均為 3 × 3 × 3 。除此之外,每個殘差塊均有一個最大池化層,大小為 2 × 2 × 2 ,步長為2。

反饋路徑

反饋路徑由兩層反卷積(裝置卷積)層和兩個融合單元構成。最后,由卷積核均為 1 × 1 × 1 且channel為64和15的兩層卷積層將數據大小轉換為 32 × 32 × 32 × 15

反卷積層

卷積核大小為2,步長為2。

注意該部分的代碼實現部分,原始U-net網絡設置為不可學習。

融合單元

每個融合單元(如上圖圖c所示)均由一個前饋blob和反饋blob組成,其結果作為殘差塊的輸入。

值得注意的一點,本文作者在此處引入了位置信息,作為額外的輸入數據。


位置信息

proposal的位置信息可能影響是否為結節和是否為惡性的判斷,因而引入位置信息。

具體方法:對於每個patch,計算其相對位置坐標,並將其大小轉換為 32 × 32 × 32 × 3

其中,位置坐標對應歸一化后的X,Y和Z軸(每個軸的取值范圍為-1~1,對應於肺的兩端)。


輸出層

輸出數據為4D的tensor, 32 × 32 × 32 × 3 × 5 ,其中3表示anchor個數,5表示回歸量( o ^ , d x ^ , d y ^ , d z ^ , d r ^ ,即概率,三維坐標和bounding box直徑大小)。

其中,對於 o ^ 激活函數采用sigmoid函數,其余不使用任何激活函數。

損失函數

真值標簽為 ( G x , G y , G z , G r ) ,每個anchor記為 ( A x , A y , A z , A r ) ,IoU(Intersection over Unit)大於0.5記為Positive,小於0.02記為False,其他在訓練過程中忽略。

分類損失為:

L c l s = p l o g ( p ^ ) + ( 1 p ) l o g ( 1 p ^ )

其中, p 為anchor box的真值標簽, p ^ 為預測概率。

bounding box回歸標簽為:

d x = ( G x A x ) A r d y = ( G y A y ) A r d z = ( G z A z ) A r d r = l o g ( G r A r )

回歸總損失為:

L r e g = k { x , y , z , r } S ( d k , d k ^ )

其中, S 為smoothed L1-norm函數:

S ( d , d ^ ) = { | d d ^ | , i f | d k d ^ | > 1 ( d d ^ ) 2 , e l s e

對於每個anchor box的損失函數為:

L = L c l s + p L r e g

最后,整體的anchor box的損失函數為anchor box的損失值取平均。

正反例數據

正例數據

對於大結節而言,網絡會生成較多的positive anchor box,因此為了降低訓練數據之間的相關性,隨機挑選其中一個。

由於結節直徑大小分布不均,而NDSB3數據集多為大結節,因而對大於30mm和40mm的結節,采樣頻率分別是其他結節的2倍和6倍。

此處對於NDSB3競賽得分有利,實際是否可行有待商榷。

反例數據

對於一些易誤診為結節的反例數據,通過使用hard negative mining方法解決。

具體方法為:

  1. 將不同的patch輸入至網絡得到不同置信度的輸出映射;
  2. 隨機選擇N個反例數據構成候選池;
  3. 侯選池中的數據以置信度值大小排序,且選出top-n的數據作為反例數據。

未選中的數據忽略且不參與損失計算。

此處可借鑒該方法,盡可能降低假陽性率,以及加速模型訓練。

圖像分割(測試過程)

輸入數據大小為 208 × 208 × 208 × 1 ,overlap為32像素。

輸出數據為 { x i , y i , z i , r i , p i } ,其中 x i , y i , z i 表示proposal中心坐標, r i 表示其半徑大小, p i 表示其置信度。

輸出數據且使用非極大值抑制操作來去除overlaping proposal。

腫瘤分類

由於受限於訓練樣本數,因而復用結節檢測器階段的N-net網絡。

輸入數據為結節的proposal,大小均為 96 × 96 × 96 × 1 ,其僅使用了結節中心點的信息。在分類器訓練階段,隨機挑選proposal,且其選中的概率與proposal的置信度成正比;在測試階段,只挑選top-5的proposal。

經卷積核為 24 × 24 × 24 × 128 的最后一個卷積層得到輸出結果;隨后提取每個proposal中心處 2 × 2 × 2 的體素,並將其通過最大池化操作后得到128維的特征,如下圖圖a所示。

對比四種預測腫瘤類別的方法(Feature combining method,MaxP method,Noisy-or method和Leaky Noisy-or method),挑選出Leaky Noisy-or方法作為最終的分類方法,如下圖圖b所示。

image_1cegc5gkk1pl114vv1lribh14rk9.png-104.3kB


Leaky Noisy-or Method

引入一個假想結節,其患癌概率為 P d P d 的值在模型訓練階段學習獲得。

將特征輸入至兩層相同的Perceptron得到分類概率 P

P = 1 ( 1 P d ) i ( 1 P i )

其中, P i 表示第i個結節癌變的概率。


訓練過程

損失函數為交叉熵函數。為了避免過擬合采用了數據增強和正則化操作。

訓練的步驟:

  1. transfer檢測器訓練參數后,再訓練分類器;
  2. 采用gradient clipping方法訓練分類器,隨后存儲BN(Batch Normalization)參數;
  3. 用存儲的BN參數和gradient clipping方法交替訓練檢測器和分類器。

注:BN在訓練階段和測試階段所計算的方法有所差異。因復用N-net網絡,分類器和檢測器交替訓練,因而需對BN的參數做特殊處理。

版權印版權標識


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM