1. 程式人生 > >如何利用深度學習診斷心臟病

如何利用深度學習診斷心臟病

摘要:本文探討的是開發一個能夠對心臟磁共振成像(MRI)資料集影象中的右心室自動分割的系統。到目前為止,這主要是通過經典的影象處理方法來處理的。而現代深度學習技術有可能提供更可靠、更自動化的解決方案。

人類心臟是一臺令人驚歎的機器,它能持續運轉長達一個世紀而不失靈。測量心臟功能的關鍵方法之一是計算其射血分數,即每搏輸出量佔心室舒張末期容積量的百分比。而測量這個指標的第一步依賴於對心臟影象心室的分割。

當我在紐約從事Insight AI計劃時,我決定著手處理右心室分割問題。下面我將簡單介紹一下整個過程。

問題描述

2016年由Kaggle贊助的左心室分割挑戰賽中的三名獲獎者都採用了深度學習解決方案。然而,分割右心室(RV)則更具挑戰性,因為:

撇開醫學術語不談,要識別RV就更困難了。左心室是一個厚壁圓環,而右心室是一個形狀不規則的物體,有薄的壁,有時會與周圍的組織混合在一起。這是MRI快照右心室內壁和外壁(心內膜和心外膜)的手工繪製輪廓:

這是一個分割起來很容易的例子。這一個比較困難:

而這對於沒有經過訓練的眼睛來說完全是一個挑戰:

事實上,與左心室相比,醫生需要耗費兩倍的時間來確定右心室的體積並生成結果。這項工作的目的是建立一個高度準確的右心室自動分割深度學習模型。模型的輸出是*分割掩碼*,即一個逐畫素的掩碼,用來表示某個畫素是否是右心室的一部分或只是背景。

資料集

對於當前這個問題,深度學習需要面對的最大挑戰是資料集太小。 資料集僅包含了來自於16例患者的243張醫師分割的MRI影象。 另外還有3697張未標記的影象,這對於無監督或半監督技術可能會有用,但是我將這些放在了一邊,因為這是一個監督學習問題。 影象尺寸為216×256畫素。

由於資料集過小,人們可能會懷疑無法將其一般化到尚未看到的影象!但是很不幸,醫療上標記過的資料非常昂貴,並且很難獲取到。對資料集進行處理的標準程式是對影象應用仿射變換:隨機旋轉、平移、縮放和剪下。此外,我實現了彈性變形,也就是對影象的區域性區域進行拉伸和壓縮。

應用這種影象增強演算法的目的是為了防止神經網路只記住訓練的樣例,並強迫其學習RV是一個實心的、月牙形的、方向任意的物體。在我實現的訓練框架中,我會隨時對資料集應用影象變換演算法,這樣,神經網路就會在每次訓練時看到新的隨機變換。

由於大多數畫素都屬於背景,所以各個種類之間分佈不平衡。如果將畫素強度歸一化在0和1之間,那麼在整個資料集中,只有5%的畫素屬於RV腔的一部分。

在建立損失函式時,我嘗試了重加權方案來平衡種類的分佈情況,但最終發現未加權平均演算法的表現最好。

在訓練中,有20%的影象被取出來作為驗證集使用。 RV分割挑戰賽的組織者有一個單獨的測試集,它由另外32個患者的514張MRI影象組成。我提交的預測輪廓就是使用這個測試集進行最終評估的。

還需要有一種方法來對資料集上的模型效能進行量化。RV分割挑戰賽的組織者選擇使用了戴斯係數。模型會輸出一個掩碼*X*來描述RV,而戴斯係數將*X*與由醫師建立的掩碼*Y*通過以下方式進行比較:

計算值是交叉區域與兩區域之和的比率的兩倍。對於不相交的區域,值為0;如果兩區域完全一致,則值為1。

下面我們來看下模型架構。

U-net:基線模型

由於我們只有四周的時間來完成這個專案,所以我想盡快實現一個基線模型並讓它執行起來。我選擇了由Ronneberger、Fischer和Brox提出的u-net模型,因為它曾在生物醫學分割專案中取得過成功,而且它的作者能夠通過使用積極的影象增強和逐像重新加權演算法並僅基於*30張圖片*來訓練網路。

u-net架構由一個收縮路徑組成,就是將影象摺疊成一組高階特徵,隨後是使用特徵資訊構建畫素分割掩碼的擴充套件路徑。 u-net獨特的地方就是它的“複製和合並”連線,這些連線能夠將資訊從早期特徵圖傳遞到構建分割掩碼網路的後續部分。作者指出,這些連線允許網路同時併入高階特徵和畫素方面的細節。

我們使用的架構如下所示:

由於我們影象尺寸是u-net作者原本考慮的一半大小,所以我們需要將原始模型中的降取樣層數從4個減少到3個來適應網格。我們也要用零來填充卷積,以保持影象的大小不變。該模型是用Keras實現的。

如果沒有影象增強,u-net在訓練資料集上的戴斯係數能達到0.99(0.01),這意味著該模型具有足夠的能力來捕獲RV分割問題的複雜性。然而,驗證戴斯係數為0.79(0.24),所以u-net過強。影象增強改進了泛化,並將驗證精度提高到了0.82(0.23),代價是將訓練精度降至0.91(0.06)。

我們如何進一步地降低訓練與驗證之間的差距呢?正如Andrew Ng在這個很棒的談話中描述的那樣,我們可以用更多的資料(這不太可能)、正則化(dropout和批處理規範化沒有效果)、或嘗試新的模型架構。

擴張U-net:全域性感受野

要對器官影象進行分割,需要了解器官之間排列的相關知識。事實證明,即使在u-net最深層的神經元也只有68×68畫素的感受野。網路的任何部分都無法“看到”整個影象。網路不知道人類只有一個右心室。例如,下面的圖片中,箭頭標記的地方被錯誤分類了:

我們使用擴張卷積來增加網路的感受野。

在上圖中,底層的卷積是規則的3×3卷積。下一層,我們將卷積擴大了2倍,所以在原始影象中它們的有效感受野是7×7。如果頂層卷積擴大4倍,則能產生15×15的感受野。以此類推。

從原理上來說,黃色標記的卷積層被u-net中的擴張卷積所替代。最內層的神經元現在具有了覆蓋整個輸入影象的感受野。我稱之為“擴張u-net”。

在數量上,擴張u-net確實提高了效果,達到了0.85(0.19)的驗證戴斯分數,同時保持了0.92(0.08)的訓練效果!

擴張DenseNet:一次性多個尺度

這個靈感來自於物理中的張量網路,我決定嘗試使用一個新型的影象分割架構,我稱之為“擴張DenseNet”。它結合了擴張卷積和DenseNet這兩種想法,這樣能夠大大減少網路的深度和引數。

對於分割而言,我們需要來自多個尺度的全域性上下文和資訊來產生畫素級掩碼。如果我們完全依賴於擴張卷積來產生全域性上下文,而不是通過降取樣來將影象變得更小呢?現在,所有卷積層的大小都相同,我們可以應用DenseNet架構的關鍵思想,並在所有層之間使用“複製和合並”連線。擴張DenseNet的結果如下圖所示:

在DenseNet中,第一個卷積層的輸出作為輸入饋送到所有的後續層中,第二、第三層也這樣。

擴張DenseNet表現不錯,在驗證集上得到了0.87(0.15)的戴斯得分,訓練精度為0.91(0.10),同時保持了極高的引數效率!

結果

對人類在RV分割方面的評估給如何對模型的表現進行評估指明瞭方向。研究人員估計,人類完成RV分割任務的戴斯得分為0.90(0.10)。上面所述的已經發布的模型是完全卷積網路(FCN),測試集上的精度為0.84(0.21)。

我開發的模型在驗證集上已經超過了最新的技術水平,並且正在接近人類的表現!然而,真正的評測是在測試集上評估模型的表現。此外,上面引用的數字是針對心內膜的, 那麼心外膜的表現如何呢?我在心外膜上訓練了一個單獨的模型,並將細分輪廓提交給了組織者,希望能獲得最好的成績。

以下是結果,首先是心內膜:

這個是心外膜:

擴張u-net與心內膜上的最新技術水平相當,並超過它在心外膜上的表現。擴張DenseNet緊跟其後,僅有190K個引數。

總結

深度學習模型的表現有時候看起來似乎很神奇,但這是精心設計的結果。即使資料集很小,精心挑選的資料增強方案也可以讓深度學習模型更好地一般化。

根據這些想法,我創建出了最先進的模型來分割心臟MRI中的右心室。我非常高興地看到了擴張DenseNet能夠在其他影象分割評測上成功執行。

文章的最後,我來談談本專案未來可能需要做的工作:

1. 對資料集進行加權,以突出難以分割的根尖切片。

2. 探索多級(本地化、註冊、細分)流水線。

3. 在生產系統中優化射血分數。

4. 記憶體高效的擴張DenseNet:密集連線的網路有一個很大的缺點,它需要佔用大量的記憶體。 而TensorFlow的實現卻與眾不同,它將我們限制在16GB GPU並且一個批次具有3個影象的8個層上。如果切換到之前提出的記憶高效的實現上的話,就可以創建出更深層次的體系架構來。

關注我們

大資料部落      -中國專業的第三方資料服務提供商,提供定製化的一站式資料探勘和

統計分析和資料探勘諮詢服務:y0.cn/teradat(諮詢服務請聯絡官網客服

點選這裡給我發訊息QQ:3025393450

【服務場景】        

 科研專案; 公司專案外包;線上線下一對一培訓;學術研究。

【大資料部落】提供定製化的一站式資料探勘和統計分析諮詢服務

 

分享最新的大資料資訊,每天學習一點資料分析,讓我們一起做有態度的資料人【大資料部落】大資料部落提供定製化的一站式資料探勘和統計分析諮詢服務

微信客服號:lico_9e

QQ交流群:186388004  

歡迎關注微信公眾號,瞭解更多資料乾貨資訊!