不用寫代碼神器越庇!教你用4行命令輕松使用nnUNet訓(xùn)練自己的醫(yī)學(xué)圖像分割模型

給定某個數(shù)據(jù)集罩锐,nnU-Net完全自動執(zhí)行整個分割過程,包括數(shù)據(jù)預(yù)處理模型配置卤唉、模型訓(xùn)練涩惑、后處理集成的整個過程,而不需要人為干預(yù)桑驱。此外竭恬,訓(xùn)練好的模型還可以應(yīng)用到測試集中進(jìn)行推理。

博主強(qiáng)烈建議:==做醫(yī)學(xué)圖像分割的任何人熬的,都必須要會使用nnU-Net==

理由2個:

  • 首先用nnU-Net測試一下痊硕。看一下該任務(wù)的大致效果押框,心里有個大致預(yù)測岔绸。
  • 第二,寫論文的時候通常都要和nnU-Net對比橡伞,尤其是投英文期刊(SCI)盒揉。因為它太火了,審稿人都知道這個東西的骑歹,不要抱僥幸心理预烙。要么戰(zhàn)勝它,要么使用它??道媚。它的出現(xiàn)扁掸,真的是有好有壞,畢竟投論文更加難了~
在這里插入圖片描述

開始之前最域,確保你已經(jīng)學(xué)習(xí)了以下內(nèi)容

論文解讀- nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation(附實現(xiàn)教程)
nnU-Net 如何安裝--傻瓜式安裝教程
nnU-Net實戰(zhàn)一使用預(yù)訓(xùn)練nnU-Net模型進(jìn)行推理

@[TOC]

1 數(shù)據(jù)準(zhǔn)備

nnU-Net 需要結(jié)構(gòu)化格式的數(shù)據(jù)集谴分。并將原始數(shù)據(jù)存放在文件夾

nnUNet_raw_data_base/nnUNet_raw_data/TaskXXX_MYTASK

nnU-Net實戰(zhàn)一使用預(yù)訓(xùn)練nnU-Net模型進(jìn)行推理 ,3.1 nnU-Net支持的數(shù)據(jù)格式這一小節(jié)已經(jīng)講了你需要把數(shù)據(jù)轉(zhuǎn)換的格式镀脂。主要包含以下文件夾和文件牺蹄。

  • imagesTr: 訓(xùn)練圖像。
  • imagesTs(可選): 測試圖像
  • labelTr: 訓(xùn)練集標(biāo)簽薄翅。
  • dataset.json : 包含數(shù)據(jù)集的元數(shù)據(jù)沙兰, 如任務(wù)名字氓奈,模態(tài),標(biāo)簽含義鼎天,訓(xùn)練集包含的圖像地址??舀奶。

這里講一下,dataset.json這個文件怎么弄斋射。一個合格的文件應(yīng)該包含如下信息:

  • name: 數(shù)據(jù)集名字
  • dexcription: 對數(shù)據(jù)集的描述
  • modality: 模態(tài)育勺,0表示CT數(shù)據(jù),1表示MR數(shù)據(jù)罗岖。nnU-Net會根據(jù)不同模態(tài)進(jìn)行不同的預(yù)處理
  • labels: label中涧至,不同的數(shù)值代表的類別
  • numTraining: 訓(xùn)練集數(shù)量
  • numTest: 測試集數(shù)量
  • training: 訓(xùn)練集的image 和 label 地址對
  • test: ==只包含==測試集的image. 這里跟Training不一樣
    在這里插入圖片描述

    現(xiàn)在我們知道長什么樣了,那么怎么把我們的數(shù)據(jù)準(zhǔn)備成這個樣子呢桑包。最簡單的方法就是copy別人的代碼南蓬,在前人的基礎(chǔ)上修改一下。如: dataset_conversion

當(dāng)然捡多,代碼能力強(qiáng)的可以自己寫一個~

2 一行命令數(shù)據(jù)預(yù)處理

使用命令: ==nnUNet_plan_and_preprocess==

nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity

作用: 它會自動讀取 ==數(shù)據(jù)集的屬性蓖康,例如圖像大小、體素間距垒手、強(qiáng)度信息==等。并轉(zhuǎn)換成模型需要的格式倒信。

==XXX==是與您的任務(wù)名稱相關(guān)聯(lián)的整數(shù)標(biāo)識符TaskXXX_MYTASK(如005科贬, 就寫5)。您可以一次傳遞多個任務(wù) ID鳖悠。

==--verify_dataset_integrity== 對數(shù)據(jù)集執(zhí)行一些檢查以確保它與 nnU-Net 兼容榜掌。如果此檢查已通過一次,則可以在以后的運行中省略乘综。如果您遵守數(shù)據(jù)集轉(zhuǎn)換指南(見上文)憎账,那么這應(yīng)該毫無問題地通過:-)

nnUNet_plan_and_preprocess完成后,結(jié)果保存在文件夾

nnUNet_preprocessed / TaskXXX_MYTASK卡辰。

主要包含以下文件:


在這里插入圖片描述

[圖片上傳失敗...(image-132680-1631149835878)]

3 一行命令開始訓(xùn)練

使用命令 ==nnUNet_train==

該命令參數(shù)很多胞皱,可以使用nnUNet_train -h查看參數(shù)的含義

該命令的一般結(jié)構(gòu)為:

nnUNet_train CONFIGURATION TRAINER_CLASS_NAME TASK_NAME_OR_ID FOLD (additional options)
  • CONFIGURATION: 模型架構(gòu),三種Unet: 2D U-Net, 3D U-Net and a U-Net Cascade(U-Net級聯(lián))九妈。
  • TRAINER_CLASS_NAME: 使用的model trainer. 默認(rèn)為nnUNetTrainerV2就可以
  • TASK_NAME_OR_ID: 任務(wù)全名TaskXXX_MYTASK或者是ID號
  • FOLD: 第幾折交叉驗證反砌,可選 [0, 1, 2, 3, 4],一共五折萌朱。

舉例一: 2D U-Net 訓(xùn)練第三折

nnUNet_train 2d nnUNetTrainerV2 Task100_adrenal 3

或者

nnUNet_train 2d nnUNetTrainerV2 100 3

舉例二: 3D full resolution U-Net 訓(xùn)練第二折

nnUNet_train 3d_fullres nnUNetTrainerV2 Task100_adrenal 2

舉例三: 3D U-Net cascade 訓(xùn)練第二折

分為兩步

step1 : 3D low resolution U-Net 訓(xùn)練

nnUNet_train 3d_lowres nnUNetTrainerV2 TaskXXX_MYTASK FOLD

step2: 3D full resolution U-Net 訓(xùn)練

nnUNet_train 3d_cascade_fullres nnUNetTrainerV2CascadeFullRes TaskXXX_MYTASK FOLD

tips: 3D full resolution U-Net 訓(xùn)練需要使用nnUNetTrainerV2CascadeFullRes

訓(xùn)練過程中宴树,終端會輸出以下信息:大致包括使用的模型,數(shù)據(jù)信息晶疼,損失函數(shù)酒贬,網(wǎng)絡(luò)架構(gòu)又憨,每個epoch的輸出。


image

我們將訓(xùn)練好的模型寫入 RESULTS_FOLDER/nnUNet 文件夾锭吨。每次訓(xùn)練都會獲得一個自動生成的輸出文件夾名稱:

nnUNet_preprocessed/CONFIGURATION/TaskXXX_MYTASKNAME/TRAINER_CLASS_NAME__PLANS_FILE_NAME/FOLD

文件樹大致如下


在這里插入圖片描述

每一折里面蠢莺,又有圖上紅框所示內(nèi)容。大致包括

  • debug.json:包含用于訓(xùn)練此模型的藍(lán)圖和推斷參數(shù)的摘要耐齐。不容易閱讀浪秘,但對調(diào)試非常有用;-)
  • model_best.model / model_best.model.pkl:訓(xùn)練期間確定的最佳模型的檢查點文件。暫時沒用埠况。
  • model_final_checkpoint.model / model_final_checkpoint.model.pkl:最終模型的檢查點文件(訓(xùn)練結(jié)束后)耸携。這是用于==驗證和推理==的內(nèi)容。
  • progress.png:訓(xùn)練過程中的訓(xùn)練(藍(lán)色)和驗證(紅色)損失圖辕翰。還顯示了評估指標(biāo)的近似值(綠色)夺衍。這個近似值是前景類的==平均 Dice 分?jǐn)?shù)==。


    在這里插入圖片描述
  • validation_raw:在這個文件夾中是訓(xùn)練完成后預(yù)測的驗證案例喜命。

在訓(xùn)練期間沟沙,觀察進(jìn)度通常很有用。因此壁榕,我們隨時可以查看 progress.png矛紫。它將在每個epoch后進(jìn)行更新。

4 一行命令從斷點開始訓(xùn)練

nnU-Net訓(xùn)練時間還是比較久的牌里,畢竟默認(rèn)跑1000epochs, 假如突然斷電了怎么辦颊咬,難道要重新來嗎?

當(dāng)然不是牡辽, nnU-Net 每 50 個 epoch 存儲一個檢查點喳篇。如果您需要繼續(xù)之前的訓(xùn)練,只需在訓(xùn)練命令中添加一個==-c==即可态辛。如:

nnUNet_train 2d nnUNetTrainerV2 100 3 -c

5 一行命令進(jìn)行預(yù)測

訓(xùn)練完成后麸澜,我們當(dāng)然要看看在測試集上的表現(xiàn)啦。

使用命令 ==nnUNet_predict==

nnUNet_predict -i INPUT_FOLDER -o OUTPUT_FOLDER -t TASK_NAME_OR_ID -m CONFIGURATION

INPUT_FOLDER: 測試數(shù)據(jù)地址
OUTPUT_FOLDER: 分割數(shù)據(jù)存放地址
CONFIGURATION: 使用的什么架構(gòu)奏黑,2d or 3d_fullres or 3d_cascade_fullres等

如:

nnUNet_predict -i /home/.../nnunet_file/nnUNet_raw/nnUNet_raw_data/Task100_adrenal/imagesTs -o /home/.../nnunet_file/output -t 100 -m 2d -f 2

分割結(jié)果保存在OUTPUT_FOLDER炊邦,自行打開查看吧~

總結(jié): 雖然寫了這么多,其實也就4行命令就搞定了攀涵,每個步驟一行命令铣耘。nnUNet有一個不好的地方是,他的預(yù)測是沒有Dice得分的以故,因為他不接收測試集的標(biāo)簽蜗细。

到這里,nnUNet的使用就分享結(jié)束了呀,歡迎評論區(qū)交流~

我是Tina, 我們下篇博客見~

最后炉媒,求點贊踪区,評論,收藏

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吊骤,一起剝皮案震驚了整個濱河市缎岗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌白粉,老刑警劉巖传泊,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鸭巴,居然都是意外死亡眷细,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門鹃祖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溪椎,“玉大人,你說我怎么就攤上這事恬口⌒6粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵祖能,是天一觀的道長歉秫。 經(jīng)常有香客問我,道長养铸,這世上最難降的妖魔是什么端考? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮揭厚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扶供。我一直安慰自己筛圆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布椿浓。 她就那樣靜靜地躺著太援,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扳碍。 梳的紋絲不亂的頭發(fā)上提岔,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音笋敞,去河邊找鬼碱蒙。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赛惩。 我是一名探鬼主播哀墓,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喷兼!你這毒婦竟也來了篮绰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤季惯,失蹤者是張志新(化名)和其女友劉穎吠各,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勉抓,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡贾漏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了琳状。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磕瓷。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖念逞,靈堂內(nèi)的尸體忽然破棺而出困食,到底是詐尸還是另有隱情,我是刑警寧澤翎承,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布硕盹,位于F島的核電站,受9級特大地震影響叨咖,放射性物質(zhì)發(fā)生泄漏瘩例。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一甸各、第九天 我趴在偏房一處隱蔽的房頂上張望垛贤。 院中可真熱鬧,春花似錦趣倾、人聲如沸聘惦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽善绎。三九已至,卻和暖如春诫尽,著一層夾襖步出監(jiān)牢的瞬間禀酱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工牧嫉, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留剂跟,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像浩聋,于是被迫代替她去往敵國和親观蜗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容