MRI图像右心室分割
人的心臟是一個驚人的機器,能不間斷地運作長達一個世紀。測量心臟功能的重要方法之一是計算其射血分數:心臟在舒張期充滿血液后,在收縮期射出血液的百分比。獲得這一指標的第一步,便依賴于心臟圖像的心室分割(描繪區(qū)域)。作者在紐約進行InsightAI計劃(http://insightdata.ai/)期間,決定響應AI Open Network主持的研究呼吁,參與解決右心室精確分割挑戰(zhàn)(https://ai-on.org/projects/cardiac-mri-segmentation.html)。設法通過超過少于當前一個數量級的參數,來達到目前最佳的結果。下面簡要說明一下過程。
▍問題描述
研究呼吁:
開發(fā)能夠從心臟核磁共振成圖像(MRI)數據庫中,自動分割右心室的系統(tǒng)。到目前為止,右心室分割主要由經典的圖像處理方法處理,現代深度學習技術將有可能提供更可靠,全自動化的解決方案。
2016年,由Kaggle發(fā)起的左心室分割挑戰(zhàn)的三名獲獎者,都采用了深度學習的解決方案。相比較而言,右心室(RV)分割更具挑戰(zhàn)性,原因如下:
在腔內存在與心肌相似的信號強度;右心室是復雜的新月形,從基部到頂點一直變化;分割頂點圖像的切片十分困難;患者的心室內形態(tài)和信號強度差異相當大,特別是有病理改變的病例,等等。
不使用醫(yī)學術語,識別右心室困難的原因是:左心室是一個厚壁的圓柱型區(qū)域,而右心室是一個不規(guī)則形狀的物體,較薄的心室壁有時會與周圍的組織混在一起。下圖是MRI快照中手工繪制的右心室內壁和外壁(心內膜和心外膜)輪廓:
上圖的分割較簡單。下面是一個比較困難的分割:
分割這些MRI對于未經專門訓練的人來說是非常困難的:
事實上,相比較左心室,人類醫(yī)生需要兩倍的時間來確定右心室的體積,且結果比左心室具有2-3倍的變異性[1]。這項工作的目的是,建立一個高精度的自動化右心室分割的深度學習模型。模型的輸出是分割掩碼,逐個像素的掩碼指示出每個像素是否是右心室的一部分或背景。
▍數據庫
利用深度學習方法解決這個問題,面臨的最大挑戰(zhàn)是數據集太小。數據集僅包含如上圖所示的243張醫(yī)師已分割的、來自有16例患者的MRI圖像。另外還有3697個未標記圖像,它們對于無監(jiān)督或半監(jiān)督學習可能有用的,但這個項目是一個監(jiān)督學習的問題,我不考慮使用這些圖像。圖像大小為216×256像素。
對于較小的數據集,人們對于模型泛華到沒見過的圖像的效果是不抱希望的! 不幸的是,醫(yī)療環(huán)境中的典型情況就是如此,昂貴的標記數據和的難以獲取的數據。通用的流程是應用仿射變換增強數據:隨機旋轉,平移,縮放和剪切。此外,我還應用了彈性形變,局部拉伸和壓縮了圖像[2]。
應用這種圖像增強算法的目的是為了防止神經網絡只記住訓練的樣例,并強迫其學習RV是一個實心的、月牙形的、方向任意的物體。在我實現的訓練框架中,我會隨時對數據集應用圖像變換算法,這樣,神經網絡就會在每次訓練時看到新的隨機變換。
同樣常見的是,由于大部分像素都屬于背景,所以存在類別的不平衡。將像素強度歸一化到0和1之間,我們看到在整個數據集中,只有5.1%的像素是右心室腔的一部分。
在構建損失函數時,我嘗試了重新加權方案以平衡類別的分布,但最終發(fā)現未加權的平均表現最好。
在訓練期間,20%的圖像被作為驗證集。右心室分割挑戰(zhàn)的組織者有一個單獨的測試集,由其他32個患者的514個MRI圖像組成,用以最終評估提交的預測模型。
現在讓我們來看模型架構。
▍U-net:基線模型
由于我們只有4周的時間來完成我們在Insight的項目,所以我想盡可能快地獲得一個基準模型并實施。我選擇由Ronneberger,Fischer和Brox提出的u-net模型,因為它在生物醫(yī)學分割任務中已經取得了相當的成功。
U-net模型很有潛力,其作者能夠只用30張圖像,通過激進的圖像增強和像素加權來訓練他們的網絡。
u-net架構由一個收縮路徑組成,其將圖像折疊成一組高級特征,隨后是使用特征信息構建像素分割掩碼的擴展路徑。U-net獨特的方面是其“復制和連接(copy and concatenate)”連接方式,它將信息從早期特征圖傳遞到構建分割掩碼的網絡的后續(xù)部分。作者提出,這些連接允許網絡同時并入高級特征和像素方面的細節(jié)。
我們使用的架構如下所示:
由于我們的圖像大小是u-net作者所使用圖像大小的一半,所以我們將原始模型中的下采樣層數從4個減少到3個。同時,我們采用零填充卷積(而非無填充),以保持圖像的大小相同。該模型在Keras實施。
U-net不需要很長的時間來應用和檢測,所以我們有時間探索新的架構。我會介紹我開發(fā)的另外兩種架構,然后展示所有三種架構的結果。
▍擴展u-nets(Dilated u-nets):全局感受野
器官分割需要了解器官如何相對于彼此排列的全局視野。事實證明,即使在u-net的最深的神經元也只有跨越68×68像素的感受野。網絡的任何部分都不能“看到”整個圖像并將全局上下整合在生成分割蒙版中。原因是網絡不了解人類只有一個右心室。例如,下圖中它將箭頭標記的斑塊錯誤分類為右心室:
我們采用擴展卷積來增加網絡的感受野,而不是增加兩個會使參數劇增的下采樣層網絡。
擴展卷積通過擴展因子空出卷積中累加的像素。在上圖中,底層的卷積是常規(guī)的3×3卷積。上一層,擴展因子為2,我們將卷積擴大了2倍,所以在原始圖像中的有效感受野是7×7。頂層卷積擴大4,產生15×15個感受野。相較于堆疊傳統(tǒng)卷積的線性膨脹,擴展卷積產生具有深度的指數級膨脹的感受野。
在我們的u-net原理圖中,我們用黃色標識出擴展卷積特征圖,代替了傳統(tǒng)的卷積層。最內層的神經元現在具有覆蓋整個輸入圖像的感受野。我們稱這個架構為“擴展u-net(dilated u-net)”。
▍擴展densenets:一次性完成多尺度信息收集
對于分割任務,我們需要來自多個尺度的全局內容和信息來產生像素掩碼。如果我們只使用擴展卷積來產生全局內容,而不采用下采樣將圖像“粉碎”到一個教小的高度和寬度,能行嗎?現在卷積層都具有相同的大小,我們可以在所有層之間使用“復制和連接”的連接方式:
這是一個“擴展densenets”,它結合了兩個想法:擴展的卷積和densenets,由Huang等人開發(fā)。
在densenets中,第一卷積層的輸出作為輸入傳送到所有后續(xù)層中,類似的第二,第三層也向后傳送,等等。作者表示densenets有幾個優(yōu)點:
減輕梯度消失的問題,加強特征傳播,鼓勵特征重用,大幅減少參數數量。
在論文中,densenets已超過了CIFAR和ImageNet分類的最佳表現。
然而,densenets有一個嚴重的缺陷:由于特征的數量會隨著網絡的深入而呈倍數增長,因此會極度消耗內存。作者使用“過渡層”來減少通過網絡中途的特征圖的數量,以便分別訓練其40,100和250層densenets。因為只需要8層就能“查看”整個256×256圖像,擴展卷積消除了對這種深層網絡和過渡層的需求。
在擴展densenets的最終卷積層中,神經元可以訪問全局內容以及網絡中每一個之前產生的特征。在我們的工作中,我們使用8層擴展densenets,并將生長率從12增加到32。令人吃驚的是:擴展densenets非常節(jié)省參數。我們的最終模型僅僅使用了190K個參數,我們將在討論結果時說到這一點。
現在,讓我們來看看如何訓練這些模型,然后看看它們在分割右心室的表現。
▍訓練:損失函數和超參數?
還需要有一種方法來對數據集上的模型性能進行量化。RV分割挑戰(zhàn)賽的組織者選擇使用了戴斯系數。模型會輸出一個掩碼*X*來描述RV,而戴斯系數將*X*與由醫(yī)師創(chuàng)建的掩碼*Y*通過以下方式進行比較:
計算值是交叉區(qū)域與兩區(qū)域之和的比率的兩倍。對于不相交的區(qū)域,值為0;如果兩區(qū)域完全一致,則值為1。
度量是掩碼(2倍)交集與區(qū)域之和的比。不相交的區(qū)域為0,完全一致的區(qū)域為1。(戴斯系數系數也被稱為信息檢索領域中的F1得分,因為我們希望最大限度地提高精確度和回收率。)在本節(jié)的其余部分,提供了訓練方法的各種技術細節(jié)–您也可以略過該部分,隨時跳到結果部分。
我們使用標準的像素方向交叉熵損失,同時也使用“軟”戴斯系數損失進行實驗。由nk表示模型的輸出,其中n表示遍歷所有像素,k表示遍歷類(在我們的例子中,背景與右心室)。真實值進行單熱編碼并用ynk表示。
對于像素方向的交叉熵,我們使用了權重wk來重新加權嚴重不平衡的類別:
相較于簡單平均對應的wbackground = wRV= 0.5,我們用wbackground = 0.1 和wRV = 0. 9進行實驗,以調整模型更加傾向右心室的像素。
我們還使用一個“軟”戴斯系數損失函數再次總結類別與權重wk,使其重新平衡:
我們用1減去戴斯系數,使損失趨于零。在每個像素nk的輸出概率不為[nk]∈{0,1} 的時候,該戴斯系數是“軟的”。當舍入后的值不可微分時,該函數不能用作損失函數。我們使用通常的“硬”戴斯系數來報告分類表現。
在我們的訓練中,我們改變了以下超參數:
批量歸一化(Batch normalization)
Dropout
學習率(Learning rate)
增長率(Growth rate -- 擴展 densenets)
對于下面顯示的最終結果,我們使用了adam優(yōu)化器的默認初始學習率10-3,并訓練500個周期。數據集中的每個圖像通過減去其平均值,并除以其標準偏差進行單獨歸一化。
因為表現得比加權和戴斯損失函數更好,我們使用未加權像素交叉熵作為損失函數。沒有使用Dropout,因為它實際上降低了驗證表現。預激活批量歸一化僅用于擴展densenets,因為批量歸一化降低了u-net和擴展u-net的性能。
擴展 densenets的增長率為24,達到模型性能與大小的良好平衡。除了擴展densenets層,我們使用的批量大小為32。由于內存限制,我們的16GB GPU只能以批量大小為3處理擴展densenets。
▍結果
吳恩達在這個十分有益的談話中,解釋了如何通過評估人類表現,來提供評估模型表現的路線圖。研究人員估計,人類對右心室分割任務的骰子評分為0.90(0.10)(我們在括號中寫出標準偏差) [8]。早先發(fā)布的模型是Tran [9]的完全卷積網絡(FCN),其在測試集上的精度為0.84(0.21)。
u-net基線模型在訓練集上得到0.91(0.06)的戴斯得分,這意味著該模型和人類表現沒有明顯差距。然而,其驗證集的精度僅為0.82(0.23),有著較大的方差。正如吳恩達所說,這些都是可以通過獲得更多的數據(這個項目中不可能),正則化(dropout和批量歸一化并沒有幫助)或嘗試新的模型架構來解決。
這導致了對極端案例的審查,對感受野更好的了解,最終形成了擴展u-net架構。它突破了原始的u-net表現,在訓練集上的精度達到0.92(0.08),在驗證集上的精度達到0.85(0.19)。
最后,受到物理學中擴展卷積和tensor networks 的相似性啟發(fā)的,擴展densenets應運而生。 該架構在訓練集上的精度達到0.91(0.10),并僅以0.19M個參數在驗證集上使精度達到0.87(0.15)。
最終測試需要提交模型到右心室分割挑戰(zhàn),利用組織舉辦者提供的測試集評估模型產生的分割輪廓。擴展u-net打破了最先進的技術,盡管減少了?20×的參數,擴展densenets的表現也緊隨其后!
結果總結在下表中。表中的值是骰子系數,括號中的是模型的不確定性。最先進的技術是足夠大膽的。對心內膜的分割:
Method | Train | Val | Test | Params |
Human | – | – | 0.90 (0.10) | – |
FCN (Tran 2017) | – | – | 0.84 (0.21) | ~11M |
U-net | 0.91 (0.06) | 0.82 (0.23) | 0.79 (0.28) | 1.9M |
Dilated u-net | 0.92 (0.08) | 0.85 (0.19) | 0.84 (0.21) | 3.7M |
Dilated densenet | 0.91 (0.10) | 0.87 (0.15) | 0.83 (0.22) | 0.19M |
對心外膜的分割:
Method | Train | Val | Test | Params |
Human | – | – | 0.90 (0.10) | – |
FCN (Tran 2017) | – | – | 0.86 (0.20) | ~11M |
U-net | 0.93 (0.07) | 0.86 (0.17) | 0.77 (0.30) | 1.9M |
Dilated u-net | 0.94 (0.05) | 0.90 (0.14) | 0.88 (0.18) | 3.7M |
Dilated densenet | 0.94 (0.04) | 0.89 (0.15) | 0.85 (0.20) | 0.19M |
典型的學習曲線如下所示。在所有情況下,驗證損失高原并沒有表現出過度擬合的上升特性。在每個周期,都可以看到擴展densenets的學習速度相對于u-net和擴展u-net的驚人表現。
回到心臟分割,在我們的結果以及出版的文獻中,戴斯評分顯示出很大的標準偏差。 箱形圖顯示,對于某些圖像,網絡難以在任何程度上分割右心室:
檢查異常值時,我們發(fā)現它們主要來自右心室難以識別的心臟頂端切片(靠近底部尖端)。 這是驗證集上擴展densenets的所示異常值:
右心室在原始圖像中幾乎看不到,真實值的面積也相當小。將其與比較成功的分割比較:
或者簡單的情況比較:
考慮到這些極端案例,很明顯,這些模型面臨的一個巨大挑戰(zhàn)在于消除災難性的失敗,因為它們會導致心臟體積的變化。通過消除這些異常值來減少標準偏差將提高平均骰子得分。
▍總結和展望
深度學習模型的表現有時候似乎是神奇的,但它們的結果卻是一個個精心的工程。即使在具有小數據集的情況下,精心挑選的數據增強方案也可以使深度學習模型得到廣泛的應用。
通過對數據經過模型的過程的推理,可以得到與問題領域良好匹配的架構。按照這些想法,我們能夠創(chuàng)建最先進的模型,來分割心臟MRI中的右心室。我將非常高興看到擴展densenets在其他圖像分割任務的應用,并探索其架構布局。
我將以對未來的一些想法作為本篇的結束:
重新權重數據集,以強調難以分割的頂點切片。
探索準3D模型,可以將完整的心臟切片同時投入模型。
探索多步(本地化,注冊,細分)管道。
在生產系統(tǒng)中優(yōu)化投射分數(最終品質因數)。
高效利用內存的擴展densenets:密集連接網絡對內存的大量需求惡名昭彰。原始的TensorFlow更是特別令人震驚,將我們限制在8層網絡,16GB GPU上的批量大小僅能為3。切換到最近提出的內存高效實現[10]方法,將允許更深層次的體系架構。
▍關于這個項目
Insight AI研究員計劃是一個高強度的7周計劃,讓已經擁有深厚技術的研究人員填補技能空白,進入AI領域。填補空白的一個重要組成部分,便是完成一個深度學習項目,以獲得AI的實踐經驗。
作為深度學習的新手,我像一位新的研究生一樣:選擇一個可以在4周內解決,有著明確的動機和應用范圍很廣的問題。我故意選擇了一個小數據集的項目,以便我能夠快速迭代并獲得經驗。這個項目達到了上述目標,并提供了創(chuàng)造擴展densenets的智力樂園。
項目代碼:https://github.com/chuckyee/cardiac-segmentation
數據集:http://www.litislab.fr/?sub_project=how-to-download-the-data
總結
以上是生活随笔為你收集整理的MRI图像右心室分割的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#生成随机位数的汉字字符串
- 下一篇: DnCNN论文阅读笔记【MATLAB】