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