日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > Caffe >内容正文

Caffe

如何用深度学习进行CT影像肺结节探测(附有基于Intel Extended Caffe的3D Faster RCNN代码开源)

發布時間:2024/9/21 Caffe 236 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用深度学习进行CT影像肺结节探测(附有基于Intel Extended Caffe的3D Faster RCNN代码开源) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


近期宜遠智能參加阿里天池醫療AI大賽,用3D Faster RCNN模型在CT影像的肺結節探測上,取得了較好的成績,特別是在計算資源充足的情況下,模型效果表現優異。這是他們的經驗分享(tianchi.aliyun.com/comp?),末尾還附有代碼開源地址。

1.數據預處理

首先用SimpleITK把mhd圖片讀入,對每個切片使用Gaussian filter然后使用閾值-600把肺部圖片二值化,然后再分析該切片的面積,去掉面積小于30mm2的區域和離心率大于0.99的區域,找到3D的連通區域。

只保留0.68L到8.2L體積的區域,并且如果大于6000 mm2的區域到切片的中心區域的距離大于62mm也刪除該連通區。最后只留下一個最大的連通區域。

左邊是原始圖,右邊是切完肺的。


在實際中預處理中,我們可視化了每個肺的部分切片,存在一些bad case。主要有以下3種,我們也對這3種情況做了優化:

  • 把肺邊緣結節切掉。因為閾值導致的,把二值化環境-600改成-150有改善。
  • 切出來全部為黑的(未找到任何肺部區域)。有些ct圖是從頭部開始掃描的,導致影響了連通區域判斷,需要手動查看該mhd文件,看里面的從第個切片到第幾個切片是肺部,在做完二值化操作后,人為把前面和后面的切片全部設置為0。
  • 切出來只有一側肺部情況。
  • 有些患者兩個肺的大小差別比較大,需要調整閾值,放寬閾值標注,把大于6000 mm2的區域到切片的中心區域的距離大于62mm也刪除該連通區,改為大于1500 mm2的區域到切片的中心區域的距離大于92mm也刪除該連通區。并且在最后一步,不只保留最大的連通區,同時保留最大的兩個連通區。

    2.模型網絡結構

    我們的網絡如圖所示,整體上是采用Unet+Resnet的思想。里面每個Resnet Block都是由多個卷積層和bn層和relu層組成的。我們只展示主體結構(整體深度大概150多層):


    3.整體優化思路

    3.1 數據優化

  • 肺部切割優化:這塊其實沒有完美的方法能把所有的肺一次性都切好。具體的思路我們已經在第1章數據預處理部分寫出來了:我們會先切一遍,然后將切肺中切的不好的,再調參數重新切一次。
  • 10mm 以下結節的訓練數據增強。我們在沒做數據增強的情況下跑出來的模型,在驗證集上漏掉了不少10mm以下的結節,所以對這部分的結節做了增強。
  • 3.2 工業界優化思路:模型架構 > 模型網絡

    我們的優化思路非常的工業界,用更多的計算資源,和更復雜的模型架構,并不把大量的時間用在調模型網絡上面。

    3.3 層次化Hard Mining

    業界兩套網絡的做法比較普遍,比如用Unet切割或Faster RCNN檢測,用3D CNN分類,如下圖所示。



    我們用的是如下統一的一套模型架構,即3D Faster RCNN的RPN網絡,沒有后續的全連接做分類,也并沒有

    再在后面接一套3D CNN來做降假陽。能減少需要調節的網絡參數。



    該hard mining的過程,其實就是用上一層的模型作為下一層的輸入,每一層的訓練數據都選取比上一層更難分的。




    這套架構,無需2套網絡,只需要選擇一套較深的網絡。

    根據我們的經驗,采取層次化模型訓練,第二層模型froc能比第一層效果提升0.05,第三層能比第二層提升0.02。

    3.4 LOSS 函數的設計

    在計算loss函數的時候,我們做了2點優化。

    1.在使用hard mining的時候,每個batchsize里面負例的個數會明顯多于正例。為了防止算loss的時候被負例主導。我們將loss函數分成3個部分,負例的loss,正例的loss和邊框的loss。


    2.在上一節提到的層次化hard mining,我們在最后一層訓練模型的時候,會修改loss函數的計算,對于分錯的負例和正例,做加權。這個思路和focal loss是很像的。


    比如:

    紅框里面的部分,本來是負例,卻以很大的概率被分成正例,這部分在算loss的時候權值就大些。紅框外面的部分權值就小些。



    4.本次比賽的關鍵點總結:

    1) 解決了基于Intel extended Caffe的150多層深度網絡的 3D Faster RCNN RPN網絡收斂問題。

    可以從2個方向來解決(線下Phi卡平臺均已驗證過)。

    a)將 drop out設置為 0.1。缺點是會容易過擬合。

    b)先訓練一個crop size為32的模型

    用這個模型做pre train model,訓練crop size 64的模型

    依次類推。

    直到完成crop size為128的模型訓練

    由于時間關系,我們并未比較這2種思路的效果。比賽中使用的是第1個思路,收斂的更快些。

    2) 提出層次化Hard Mining的訓練框架。并沒有采用常見的,unet做分割+3D CNN降假陽 或者 2d faster rcnn做檢測+3D CNN降假陽的思路。我們只用了一套網絡。減少了需要調節的網絡參數。

    3) 重新設計了loss函數,防止負例主導loss的計算, 并且在降低loss的過程中,更聚焦于分錯的訓練樣本。

    5. 經驗總結:

    我們團隊雖然過往深度學習架構經驗多,但對醫學影像處理的know how屬于尚在探索之中。所以,我們的優化思路,是用更多的計算資源,和更復雜的模型架構,來彌補沒有專用模型網絡積累的短板。在第一輪比賽時通過調用比較充足的計算資源時效果比較顯著,但在第二輪限定計算資源的多CPU的框架上,比較受限于計算資源及時間。

    在計算資源比較充沛的情況下,選取比較深的Resnet效果會明顯。在資源受限的實際場合或者現實的生產環境,我們有兩點啟發:

  • 學會認同重復造輪子的基礎性工作。第一輪比賽我們是pytorch框架,第二輪按要求在caffe上實現,特別是在Intel Extended Caffe對3D支持有限,重寫了不少很基礎的模塊,這種貌似重復造輪子的工作,對我們提出了更高的要求,但也鍛煉了我們深入到框架底層的能力,從而對不同框架的性能特點有更深的認識,這種重寫甚至還因此幫我們找到我們第一版pytorch代碼里detect部分存在的一個bug。
  • 根據資源靈活優化訓練策略乃至模型。我們的3D Faster RCNN 初期在Extended Caffe 上過于耗時,但因為在計算資源充足環境下我們的做法比較有效,所以沒有去考慮一些更快的檢測算法,比如SSD、YOLO等,這點也算是路徑依賴的教訓了。
  • 代碼開源說明:

    我們在GitHub (github.com/YiYuanIntell?) 開源了核心代碼,特別是將我們基于Intel Extended Caffe的3D Faster RCNN RPN訓練模塊發布到社區,相信這也是業內首個Intel extended Caffe版的150層網絡3D Faster RCNN開源,希望對Intel 的深度學習社區用戶有幫助。

    該代碼對醫學影像的處理也展示了有效性,相信對醫學影像領域AI實踐的發展,對技術如何造福大眾,能起到一些幫助。

    通過開源,希望有同行提出性能優化、功能擴充等的修改建議,互相促進。

    宜遠智能是一家專注于大健康領域的AI創新企業,團隊由多名AI博士、來自騰訊的算法高手、醫療領域專家構成。目前提供醫學影像圖像分析平臺及服務。還提供專業皮膚AI方案以及基于阿里云市場的測膚API平臺。對我們的開源代碼及相關醫學影像處理有任何疑問、建議、合作與求職意向,可聯系:

    tkots_wu@sina.com?JohnnyGambler

    csshshi@comp.hkbu.edu.hk?施少懷

    End.

    諾藍4 個月前


    近期宜遠智能參加阿里天池醫療AI大賽,用3D Faster RCNN模型在CT影像的肺結節探測上,取得了較好的成績,特別是在計算資源充足的情況下,模型效果表現優異。這是他們的經驗分享(tianchi.aliyun.com/comp?),末尾還附有代碼開源地址。

    1.數據預處理

    首先用SimpleITK把mhd圖片讀入,對每個切片使用Gaussian filter然后使用閾值-600把肺部圖片二值化,然后再分析該切片的面積,去掉面積小于30mm2的區域和離心率大于0.99的區域,找到3D的連通區域。

    只保留0.68L到8.2L體積的區域,并且如果大于6000 mm2的區域到切片的中心區域的距離大于62mm也刪除該連通區。最后只留下一個最大的連通區域。

    左邊是原始圖,右邊是切完肺的。



    在實際中預處理中,我們可視化了每個肺的部分切片,存在一些bad case。主要有以下3種,我們也對這3種情況做了優化:

  • 把肺邊緣結節切掉。因為閾值導致的,把二值化環境-600改成-150有改善。
  • 切出來全部為黑的(未找到任何肺部區域)。有些ct圖是從頭部開始掃描的,導致影響了連通區域判斷,需要手動查看該mhd文件,看里面的從第個切片到第幾個切片是肺部,在做完二值化操作后,人為把前面和后面的切片全部設置為0。
  • 切出來只有一側肺部情況。
  • 有些患者兩個肺的大小差別比較大,需要調整閾值,放寬閾值標注,把大于6000 mm2的區域到切片的中心區域的距離大于62mm也刪除該連通區,改為大于1500 mm2的區域到切片的中心區域的距離大于92mm也刪除該連通區。并且在最后一步,不只保留最大的連通區,同時保留最大的兩個連通區。

    2.模型網絡結構

    我們的網絡如圖所示,整體上是采用Unet+Resnet的思想。里面每個Resnet Block都是由多個卷積層和bn層和relu層組成的。我們只展示主體結構(整體深度大概150多層):



    3.整體優化思路

    3.1 數據優化

  • 肺部切割優化:這塊其實沒有完美的方法能把所有的肺一次性都切好。具體的思路我們已經在第1章數據預處理部分寫出來了:我們會先切一遍,然后將切肺中切的不好的,再調參數重新切一次。
  • 10mm 以下結節的訓練數據增強。我們在沒做數據增強的情況下跑出來的模型,在驗證集上漏掉了不少10mm以下的結節,所以對這部分的結節做了增強。
  • 3.2 工業界優化思路:模型架構 > 模型網絡

    我們的優化思路非常的工業界,用更多的計算資源,和更復雜的模型架構,并不把大量的時間用在調模型網絡上面。

    3.3 層次化Hard Mining

    業界兩套網絡的做法比較普遍,比如用Unet切割或Faster RCNN檢測,用3D CNN分類,如下圖所示。



    我們用的是如下統一的一套模型架構,即3D Faster RCNN的RPN網絡,沒有后續的全連接做分類,也并沒有

    再在后面接一套3D CNN來做降假陽。能減少需要調節的網絡參數。



    該hard mining的過程,其實就是用上一層的模型作為下一層的輸入,每一層的訓練數據都選取比上一層更難分的。



    這套架構,無需2套網絡,只需要選擇一套較深的網絡。

    根據我們的經驗,采取層次化模型訓練,第二層模型froc能比第一層效果提升0.05,第三層能比第二層提升0.02。

    3.4 LOSS 函數的設計

    在計算loss函數的時候,我們做了2點優化。

    1.在使用hard mining的時候,每個batchsize里面負例的個數會明顯多于正例。為了防止算loss的時候被負例主導。我們將loss函數分成3個部分,負例的loss,正例的loss和邊框的loss。



    2.在上一節提到的層次化hard mining,我們在最后一層訓練模型的時候,會修改loss函數的計算,對于分錯的負例和正例,做加權。這個思路和focal loss是很像的。



    比如:

    紅框里面的部分,本來是負例,卻以很大的概率被分成正例,這部分在算loss的時候權值就大些。紅框外面的部分權值就小些。



    4.本次比賽的關鍵點總結:

    1) 解決了基于Intel extended Caffe的150多層深度網絡的 3D Faster RCNN RPN網絡收斂問題。

    可以從2個方向來解決(線下Phi卡平臺均已驗證過)。

    a)將 drop out設置為 0.1。缺點是會容易過擬合。

    b)先訓練一個crop size為32的模型

    用這個模型做pre train model,訓練crop size 64的模型

    依次類推。

    直到完成crop size為128的模型訓練

    由于時間關系,我們并未比較這2種思路的效果。比賽中使用的是第1個思路,收斂的更快些。

    2) 提出層次化Hard Mining的訓練框架。并沒有采用常見的,unet做分割+3D CNN降假陽 或者 2d faster rcnn做檢測+3D CNN降假陽的思路。我們只用了一套網絡。減少了需要調節的網絡參數。

    3) 重新設計了loss函數,防止負例主導loss的計算, 并且在降低loss的過程中,更聚焦于分錯的訓練樣本。

    5. 經驗總結:

    我們團隊雖然過往深度學習架構經驗多,但對醫學影像處理的know how屬于尚在探索之中。所以,我們的優化思路,是用更多的計算資源,和更復雜的模型架構,來彌補沒有專用模型網絡積累的短板。在第一輪比賽時通過調用比較充足的計算資源時效果比較顯著,但在第二輪限定計算資源的多CPU的框架上,比較受限于計算資源及時間。

    在計算資源比較充沛的情況下,選取比較深的Resnet效果會明顯。在資源受限的實際場合或者現實的生產環境,我們有兩點啟發:

  • 學會認同重復造輪子的基礎性工作。第一輪比賽我們是pytorch框架,第二輪按要求在caffe上實現,特別是在Intel Extended Caffe對3D支持有限,重寫了不少很基礎的模塊,這種貌似重復造輪子的工作,對我們提出了更高的要求,但也鍛煉了我們深入到框架底層的能力,從而對不同框架的性能特點有更深的認識,這種重寫甚至還因此幫我們找到我們第一版pytorch代碼里detect部分存在的一個bug。
  • 根據資源靈活優化訓練策略乃至模型。我們的3D Faster RCNN 初期在Extended Caffe 上過于耗時,但因為在計算資源充足環境下我們的做法比較有效,所以沒有去考慮一些更快的檢測算法,比如SSD、YOLO等,這點也算是路徑依賴的教訓了。
  • 代碼開源說明:

    我們在GitHub (github.com/YiYuanIntell?) 開源了核心代碼,特別是將我們基于Intel Extended Caffe的3D Faster RCNN RPN訓練模塊發布到社區,相信這也是業內首個Intel extended Caffe版的150層網絡3D Faster RCNN開源,希望對Intel 的深度學習社區用戶有幫助。

    該代碼對醫學影像的處理也展示了有效性,相信對醫學影像領域AI實踐的發展,對技術如何造福大眾,能起到一些幫助。

    通過開源,希望有同行提出性能優化、功能擴充等的修改建議,互相促進。

    宜遠智能是一家專注于大健康領域的AI創新企業,團隊由多名AI博士、來自騰訊的算法高手、醫療領域專家構成。目前提供醫學影像圖像分析平臺及服務。還提供專業皮膚AI方案以及基于阿里云市場的測膚API平臺。對我們的開源代碼及相關醫學影像處理有任何疑問、建議、合作與求職意向,可聯系:

    tkots_wu@sina.com?JohnnyGambler

    csshshi@comp.hkbu.edu.hk?施少懷

    End.

    總結

    以上是生活随笔為你收集整理的如何用深度学习进行CT影像肺结节探测(附有基于Intel Extended Caffe的3D Faster RCNN代码开源)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。