幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌
Data Science Bowl是由Kaggle主辦的年度數據科學比賽,今年的參賽題目是根據一年內診斷為癌症的人的胸部CT圖像來進行預測肺癌。競賽平台可以在此查看。
為了完成此次挑戰,由來自根特大學的博士生和博士後們Andreas Verleysen,Elias Vansteenkiste,FrédericGodin,Ira Korshunova,Jonas Degrave,Lionel Pigou和Matthias Freiberger組成機器學習團隊Deep Breath,沒有任何一個成員具有關於醫學圖像分析或癌症預測方麵的具體知識。比賽結束後,Deep Breath團隊取得了第9名的成績!在這篇文章中將說明該團隊采用的方法。
從圖中可以看到肺癌是全球癌症死亡的最常見原因,其次是乳腺癌。為了預防肺癌死亡,高風險個體正在使用小劑量的CT掃描圖來進行篩查,這是因為早期檢測使肺癌患者的存活率增加了一倍。從CT掃描圖圖中自動識別癌性病變可以節省放射科醫生的時間,這將使得診斷變得更加實惠,從而挽救更多的生命。
為了通過胸部CT預測肺癌,總體的策略是將高維CT圖降維到一些感興趣的區域,基於這些感興趣的區域來預測肺癌。下麵將解釋如何訓練幾個網絡來提取興趣區域。
為了確定是否有人會發展成肺癌,不得不尋找早期階段的惡性肺結節,而在肺部CT圖中發現早期惡性結節就像大海撈針。為了說明這個聲明,下麵一起看看LngC / IDRI數據集中的惡性結節的例子,這些數據集是從LUng Node Analysis Grand Challenge中獲得的,本文廣泛使用了這個數據集(通常也被稱為LUNA數據集,該數據集中包含已被診斷患有肺癌的患者)。
LUNA數據集中平均惡性肺結節的半徑為4.8 mm,而普通的CT掃描圖圖采集的體積為400mm×400mm×400mm,真的是如大海撈針一樣,即我們正在尋找一個比輸入量小一百萬倍的特征;此外,該特征決定了整個輸入體積的分類。這對於放射科醫師來說是一個巨大的負擔,同時對於使用卷積網絡的常規分類算法來說,也是一個困難的任務。
在競賽中,上述問題變得更糟糕,因為必須從掃描日期的一年之內的一名患者中被診斷患有肺癌的患者CT圖開始預測肺癌。在我們的病例中,患者可能尚未發展為惡性結節。因此,假設直接對競爭對手的數據和標簽進行訓練是不合理的。
結節檢測
為了減少掃描圖中的信息量,首先嚐試檢測肺結節。由於LUNA數據集包含了患者掃描圖中每個結節的位置和直徑信息,因此可以通過建立了一個網絡來分割掃描圖中的結節,並使用數據集中記錄的信息來訓練搭建的分割網絡。
為了解決不同CT掃描圖儀產生的胸部掃描圖的立體像素間距存在的差異,對所有CT掃描圖圖進行縮放和插值,以使得每個立體像素代表1x1x1毫米的立方體。為了訓練分割網絡,將CT掃描圖中切割為64x64x64大小的圖像塊並將其作為分段網絡的輸入。對於每個圖像塊,其真值是一個32x32x32毫米的掩膜。掩膜中的每個立體像素表示該立體像素是否在結節內。掩模通過使用結節注釋中的直徑來構造。
本文將優化Dice係數作為目標函數,Dice係數是圖像分割常用的度量標準。Dice係數的缺點在於若真值掩膜內沒有結節,則它的默認值為零,每個圖像塊中必須有一個結節,並將其反饋給網絡。應用平移和旋轉增加方法引入額外的變化,選擇合適的平移和旋轉參數使得結節的一部分保留在64x64x64輸入圖像塊的中心周圍32x32x32立方體內。
網絡架構如下圖所示,該架構主要基於U-net架構(2D圖像分割的通用架構),可以看到該架構主要由3x3x3無填充的濾波器的卷積層組成。
張量形狀用深灰色框表示,淺灰色方框內表示網絡操作。C1卷積層是1x1x1大小的濾波器,C3卷積層是3×3×3大小的濾波器。將訓練好的網絡用於分割LUNA和DSB數據集中患者CT掃描圖,64x64x64的圖像塊以32x32x32的速度取出,並將輸出拚接在一起後得到的一個張量中,張量中的每個值表示立體像素位於結節內的預測概率。
這個階段是對肺掃描圖中的每個立體像素進行預測,但是我們還想找出結節的中心,並將其中心將被用作結節候選者的中心。
本文使用高斯差分(DoG)方法檢測斑塊,使用拉普拉斯算子計算密度較小的近似值。另外使用以下兩種方法可以降低結節候選者的數量:
- 在斑點檢測之前應用肺分割
- 訓練假陽性以減少專家網絡
肺的分割
結節分割網絡無法看到全部內容,因此在肺的外部產生了許多假陽性結果,為了緩解這個問題,采用手工設計的肺分割方法。
起初,采用了類似於Kaggle教程中提出的策略,它使用一些形態學操作來分割肺。但通過檢查後發現,肺分割的質量和計算時間太依賴於架構元素的大小。
最終采用的方法是3D方法,其重點是從圍繞肺部的凸包中切出非肺腔。

為了進一步減少結節候選人的數量,我們訓練了專家網絡來預測斑點檢測後的給定候選者是否確實是一個結節。我們使用假和真結節候選人的名單來訓練專家網絡。LUNA大挑戰為每個病人提供一個虛假和真正的結節候選人名單。
為了訓練假陽性減少專家,我們使用了48x48x48圖像塊,並應用全旋轉和微移增加方法(±3 mm)。
如果想要網絡檢測到小結節(直徑<= 3mm)和大結節(直徑> 30 mm),架構應使網絡能夠以非常窄的和廣泛的接受域來訓練這兩個特征。我們的架構主要是基於RESNET V2這種架構(非常適合於不同的感受野的訓練特點),並對其簡化,將其原理應用於具有3個空間維度的張量。
空間縮減塊,通過應用不同的縮減方法,將輸入張量的空間尺寸減半。
特征縮減塊中的1x1x1濾波器內核卷積層是用來減少特征的數量。濾波器內核的數量(f/2)是輸入特征圖數量(f)的一半。
該殘差卷積塊包含三個不同的堆疊,每個堆疊具有不同數量的卷積層。最淺的堆疊不會擴大接收域,因為它隻有一個具有1x1x1過濾器的卷積層。然而,最深的堆疊會擴大接收域。之後,不同堆疊的特征圖被連接和縮小後再次與輸入圖疊加到一起。最後,經過應用ReLu非線性激活函數。
通過實驗發現以下是減少假陽性最有效的架構:
與初始版本的resnet v2架構相比的一個重要區別是創建的網絡開始時隻有一個卷積層。
LUNA數據集的驗證子集由118個患者(總共238個結節)的組成。通過分割和斑點檢測後,發現229個結節中的,但仍然有大約17K個假陽性。為了減少假陽性,將候選人按照假陽性減少網絡給出的預測進行排名。
惡性腫瘤的預測
在比賽的最後2周裏,我們發現LUNA數據集中的結節存在惡性腫瘤標簽。這些標簽是LUNA所基於的LIDC-IDRI數據集的一部分。隻有當我們訓練了一個模型來預測個體結節/圖像塊的惡性腫瘤時,才能夠接近LB的最高分數。
可以看到使用的網絡與FPR網絡架構非常相似。
之後重新縮放惡性腫瘤標簽,以便它們在0和1之間表示。通過在LUNA數據集中抽取等量的不具有惡性腫瘤標簽的候選結節來作為訓練集。
另外使用均方誤差(MSE)損失作為目標函數,這比二進製交叉熵目標函數性能更好。
肺癌預測
使用假陽性減少網絡對候選結節進行排序,並訓練構建的惡性腫瘤預測網絡,之後就可以在Kaggle數據集上訓練一個肺癌預測網絡。采用的方法是通過相同的子網發送一組n個靠前的候選結節,並將最終匯聚層中的各個評分/預測值/激活值結合起來。
遷移學習
在訓練了不同的架構後,我們意識到需要更好的推理特征的方法。雖然CT掃描圖被縮減到一些感興趣的區域,但患者數量仍然很低,這也導致惡性結節的數量很少。因此,我們專注於使用預先訓練的權重來初始化網絡。
遷移學習的思想在彩色圖像分類任務中非常流行,其中大多數的遷移學習方法是將ImageNet數據集上訓練的網絡作為其自己網絡的卷積層,這些卷積層在大數據集上學到了很好的特征,然後作為另一個神經網絡/另一個分類任務的一部分重新使用(遷移)。然而,對於CT掃描圖,需要自己訓練一個這樣的網絡。
起初使用的是一些改進的fpr網絡,後來是訓練了一個網絡來預測結節的大小。在這兩種情況下,我們的主要方法是反複使用卷積層,但都是隨機初始化。
在最後幾個星期裏,我們使用完整的惡性腫瘤網絡並在添加了一個聚合層,這就得到了最好的解決方案。
聚合結節的預測
我們嚐試幾種不同的方法去結合節點的惡性腫瘤預測,下麵強調兩種最成功的聚合方法:
-
P_patient_cancer = 1 - Π P_nodule_benign:這種聚合背後的想法是,如果所有結節都是良性的,那麼患癌症的概率等於1;如果一個結節被分類為惡性腫瘤,P_patient_cancer將是1。這種方法存在的問題是,當惡性腫瘤預測網絡相信有一個結節是惡性時,其表現不佳,所有一旦網絡正確地預測到一個結節是惡性的時,終止學習。
-
對數平均指數(LME):這種聚合背後的想法是,癌症概率是由最惡性/最不良良性結節來決定,它以指數方式打破了單個結節的預測,因此專注於最大的概率。與簡單的最大函數相比,此函數還允許通過其他預測的網絡進行反向傳播。
我們整體合並了30個最後階段模型的預測,由於Kaggle允許兩次提交,因此使用以下兩種集成方法:
積極集成:交叉驗證用於選擇均勻混合的高分模型。在這個集成中使用的模型對所有數據進行了訓練,因此命名為“積極集成”。統一地混合這些“好”模型以避免由於在權重優化過程中具有較高修剪因子而導致極少數模型集成的風險。它還可以減少過載模型的影響。
挑戰賽的很大一部分工作是建立一個完整的係統,它包括相當多的步驟。由於沒有時間完全了解每一個部分,所以該係統還有很大的改進空間,另外感謝比賽的組織者。
在比賽開始之前,巧妙地推出了排行榜的真值標簽,它利用了從提交預測時返回的高精度分數得到的信息。因此,每個人都可以通過有限數量的提交結果來更新排行榜。
通常,排行榜真實地表明了其他隊伍的表現,但由於隊伍完全處於不知情中,這會對其動力產生不利的影響。因此,Kaggle通過截斷提交後返回的分數來避免這種情況的出現。
Elias Vansteenkiste :博士後研究員,對深度學習、人工智能、人機界麵和計算機輔助設計算法感興趣。
Github:https://github.com/EliasVansteenkiste
Linkedin:https://www.linkedin.com/in/elias-vansteenkiste-33060839/
Youtubu:https://www.youtube.com/EliasVansteenkiste
Twitter:https://twitter.com/sailenav
本文由北郵@愛可可-愛生活老師推薦,阿裏雲雲棲社區組織翻譯。
文章原標題《Predicting lung cancer》,作者:Elias Vansteenkiste,譯者:海棠,審閱:
附件為原文的pdf
文章為簡譯,更為詳細的內容,請查看原文
最後更新:2017-07-12 22:12:05