天天看點

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

預測肺癌

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

介紹

為了通過胸部ct預測肺癌,總體的政策是将高維ct圖降維到一些感興趣的區域,基于這些感興趣的區域來預測肺癌。下面将解釋如何訓練幾個網絡來提取興趣區域。

大海撈針

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

luna資料集中平均惡性肺結節的半徑為4.8 mm,而普通的ct掃描圖圖采集的體積為400mm×400mm×400mm,真的是如大海撈針一樣,即我們正在尋找一個比輸入量小一百萬倍的特征;此外,該特征決定了整個輸入體積的分類。這對于放射科醫師來說是一個巨大的負擔,同時對于使用卷積網絡的正常分類算法來說,也是一個困難的任務。

在競賽中,上述問題變得更糟糕,因為必須從掃描日期的一年之内的一名患者中被診斷患有肺癌的患者ct圖開始預測肺癌。在我們的病例中,患者可能尚未發展為惡性結節。是以,假設直接對競争對手的資料和标簽進行訓練是不合理的。 

結節檢測 

結節分割

為了減少掃描圖中的資訊量,首先嘗試檢測肺結節。由于luna資料集包含了患者掃描圖中每個結節的位置和直徑資訊,是以可以通過建立了一個網絡來分割掃描圖中的結節,并使用資料集中記錄的資訊來訓練搭建的分割網絡。

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

本文将優化dice系數作為目标函數,dice系數是圖像分割常用的度量标準。dice系數的缺點在于若真值掩膜内沒有結節,則它的預設值為零,每個圖像塊中必須有一個結節,并将其回報給網絡。應用平移和旋轉增加方法引入額外的變化,選擇合适的平移和旋轉參數使得結節的一部分保留在64x64x64輸入圖像塊的中心周圍32x32x32立方體内。

網絡架構如下圖所示,該架構主要基于u-net架構(2d圖像分割的通用架構),可以看到該架構主要由3x3x3無填充的濾波器的卷積層組成。

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

斑點檢測

這個階段是對肺掃描圖中的每個立體像素進行預測,但是我們還想找出結節的中心,并将其中心将被用作結節候選者的中心。

   在斑點檢測之前應用肺分割

   訓練假陽性以減少專家網絡

肺的分割 

結節分割網絡無法看到全部内容,是以在肺的外部産生了許多假陽性結果,為了緩解這個問題,采用手工設計的肺分割方法。

起初,采用了類似于kaggle教程中提出的政策,它使用一些形态學操作來分割肺。但通過檢查後發現,肺分割的品質和計算時間太依賴于架構元素的大小。

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

最終采用的方法是3d方法,其重點是從圍繞肺部的凸包中切出非肺腔。 

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

減少假陽性

為了進一步減少結節候選人的數量,我們訓練了專家網絡來預測斑點檢測後的給定候選者是否确實是一個結節。我們使用假和真結節候選人的名單來訓練專家網絡。luna大挑戰為每個病人提供一個虛假和真正的結節候選人名單。

為了訓練假陽性減少專家,我們使用了48x48x48圖像塊,并應用全旋轉和微移增加方法(±3 mm)。

架構

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

空間縮減塊,通過應用不同的縮減方法,将輸入張量的空間尺寸減半。

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

特征縮減塊中的1x1x1濾波器核心卷積層是用來減少特征的數量。濾波器核心的數量(f/2)是輸入特征圖數量(f)的一半。 

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

該殘差卷積塊包含三個不同的堆疊,每個堆疊具有不同數量的卷積層。最淺的堆疊不會擴大接收域,因為它隻有一個具有1x1x1過濾器的卷積層。然而,最深的堆疊會擴大接收域。之後,不同堆疊的特征圖被連接配接和縮小後再次與輸入圖疊加到一起。最後,經過應用relu非線性激活函數。

通過實驗發現以下是減少假陽性最有效的架構: 

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

與初始版本的resnet v2架構相比的一個重要差別是建立的網絡開始時隻有一個卷積層。

結果

luna資料集的驗證子集由118個患者(總共238個結節)的組成。通過分割和斑點檢測後,發現229個結節中的,但仍然有大約17k個假陽性。為了減少假陽性,将候選人按照假陽性減少網絡給出的預測進行排名。 

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

惡性惡性良性腫瘤的預測

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

可以看到使用的網絡與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 :博士後研究員,對深度學習、人工智能、人機界面和計算機輔助設計算法感興趣。

文章原标題《predicting lung cancer》,作者:elias vansteenkiste,譯者:海棠,審閱:

翻譯者: 海棠 

wechat:269970760 

<a href="https://weibo.com/u/3910993635/" target="_blank">weibo:uncle_lld </a>

email:[email protected]

微信公衆号:ai科技時訊

幹貨|大神教你如何參加kaggle比賽——根據CT掃描圖預測肺癌

繼續閱讀