如果你曾經(jīng)使用過(guò)nnUNet V1指攒,那你一定明白數(shù)據(jù)集的命名是有嚴(yán)格要求的慷妙,必須按照特定的格式來(lái)進(jìn)行命名才能正常使用。
這一節(jié)的學(xué)習(xí)需要有數(shù)據(jù)允悦,如果你有自己的數(shù)據(jù)膝擂,可以拿自己的數(shù)據(jù)來(lái)實(shí)驗(yàn),如果沒(méi)有隙弛,可以用十項(xiàng)全能數(shù)據(jù)集架馋,在之前分享過(guò) nnUNet實(shí)戰(zhàn)一使用預(yù)訓(xùn)練nnUNet模型進(jìn)行推理,這篇文章里有數(shù)據(jù)集的下載地址和方法。如果網(wǎng)絡(luò)問(wèn)題下載不下來(lái)驶鹉,可以微我绩蜻。
nnUNet v2 支持的數(shù)據(jù)格式
在V2版本中支持的數(shù)據(jù)格式類型更多,默認(rèn)情況下室埋,支持以下文件格式:
- NaturalImage2DIO:.png办绝、.bmp、.tif
- NibabelIO:.nii.gz姚淆、.nrrd孕蝉、.mha
- NibabelIOWithReorient:.nii.gz、.nrrd腌逢、.mha降淮。該閱讀器會(huì)將圖像重新定向?yàn)?RAS!
- SimpleITKIO:.nii.gz、.nrrd佳鳖、.mha
- Tiff3DIO:.tif霍殴、.tiff。3D tif 圖像系吩!由于 TIF 沒(méi)有存儲(chǔ)間距信息的標(biāo)準(zhǔn)化方法来庭,因此 nnU-Net 期望每個(gè) TIF 文件都附帶一個(gè)同名的 .json 文件,其中包含三個(gè)數(shù)字(沒(méi)有單位穿挨,沒(méi)有逗號(hào)月弛。只是用空格分隔),每個(gè)數(shù)字一個(gè)方面科盛。
nnU-Net V2 的一大變化是支持多種輸入文件類型帽衙。將所有內(nèi)容轉(zhuǎn)換為 .nii.gz 的日子已經(jīng)一去不復(fù)返了!nnU-Net 附帶了廣泛的讀取器+寫(xiě)入器集合贞绵,您甚至可以添加自己的讀取器+寫(xiě)入器來(lái)支持您的數(shù)據(jù)格式厉萝!請(qǐng)參閱此處[1]。
數(shù)據(jù)集文件夾結(jié)構(gòu)
數(shù)據(jù)集必須位于該nnUNet_raw
文件夾中,
<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">nnUNet_raw/ ├── Dataset001_BrainTumour ├── Dataset002_Heart ├── Dataset003_Liver ├── Dataset004_Hippocampus ├── Dataset005_Prostate ├── ... 在每個(gè)數(shù)據(jù)集文件夾中但壮,具有以下結(jié)構(gòu): Dataset001_BrainTumour/ ├── dataset.json ├── imagesTr ├── imagesTs # optional └── labelsTr nnUNet_raw/Dataset001_BrainTumour/ ├── dataset.json ├── imagesTr │ ├── BRATS_001_0000.nii.gz │ ├── BRATS_001_0001.nii.gz │ ├── BRATS_001_0002.nii.gz │ ├── BRATS_001_0003.nii.gz │ ├── BRATS_002_0000.nii.gz │ ├── BRATS_002_0001.nii.gz │ ├── BRATS_002_0002.nii.gz │ ├── BRATS_002_0003.nii.gz │ ├── ... ├── imagesTs │ ├── BRATS_485_0000.nii.gz │ ├── BRATS_485_0001.nii.gz │ ├── BRATS_485_0002.nii.gz │ ├── BRATS_485_0003.nii.gz │ ├── BRATS_486_0000.nii.gz │ ├── BRATS_486_0001.nii.gz │ ├── BRATS_486_0002.nii.gz │ ├── BRATS_486_0003.nii.gz │ ├── ... └── labelsTr ├── BRATS_001.nii.gz ├── BRATS_002.nii.gz ├── ...
</pre>
需要注意的是冀泻,與第一版本中的文件夾及數(shù)據(jù)集命名有些許差別 [圖片上傳失敗...(image-70d070-1693737704302)]
比如,第一版數(shù)據(jù)集用 TaskXXXX, V2版本用 DatasetXXX
dataset.json 文件構(gòu)建
第二版本的 dataset.json
文件也發(fā)生了變化
dataset.json 包含 nnU-Net 訓(xùn)練所需的元數(shù)據(jù)蜡饵。自版本 1 以來(lái)弹渔,我們大大減少了必填字段的數(shù)量! (第一版見(jiàn) nnUNet實(shí)戰(zhàn)一使用預(yù)訓(xùn)練nnUNet模型進(jìn)行推理)
以下是 MSD 的 Dataset005_Prostate 示例中的 dataset.json 的樣子:
<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">{ "channel_names": { # formerly modalities "0": "T2", "1": "ADC" }, "labels": { # THIS IS DIFFERENT NOW! "background": 0, "PZ": 1, "TZ": 2 }, "numTraining": 32, "file_ending": ".nii.gz" "overwrite_image_reader_writer": "SimpleITKIO" # optional! If not provided nnU-Net will automatically determine the ReaderWriter }
</pre>
Channel_names
確定 nnU-Net 使用的歸一化溯祸。如果通道被標(biāo)記為“CT”肢专,則將使用基于前景像素強(qiáng)度的全局歸一化。如果是其他情況焦辅,將使用 per-channel z-scoring
相對(duì)于 nnU-Net v1 的重要變化: [圖片上傳失敗...(image-4451cb-1693737704302)]
-
modality
現(xiàn)在稱為channel_names
博杖,以消除對(duì)醫(yī)學(xué)圖像的強(qiáng)烈偏見(jiàn) - Lable 的結(jié)構(gòu)不同(name -> int 而不是 int -> name)。這樣做的好處有助于層次標(biāo)簽的使用筷登,具體見(jiàn) 【nnUNet v2版本與V1版有什么不同剃根?】 這一部分
- 添加
file_ending
字段:以支持不同的輸入文件類型 -
overwrite_image_reader_writer
可選!可用于指定ReaderWriter 類前方。如果不提供狈醉,nnU-Net會(huì)自動(dòng)判斷ReaderWriter -
regions_class_order
僅用于基于regions的訓(xùn)練,具體見(jiàn) region based trianing
由于V2版中惠险,不需要指定訓(xùn)練和測(cè)試集的圖像名字苗傅,減少了很多字段,構(gòu)建起來(lái)就很簡(jiǎn)單了班巩≡剑可以把上述 dataset.json 復(fù)制下來(lái),按照自己的數(shù)據(jù)集手動(dòng)修改一下。
nnUNet v1 的數(shù)據(jù)格式如何轉(zhuǎn)換為 V2 的格式
假設(shè)有一個(gè)數(shù)據(jù)集已經(jīng)在 V1 上跑過(guò)了逊桦,如果您要從 v1 上遷移過(guò)來(lái)眨猎,請(qǐng)使用nnUNetv2_convert_old_nnUNet_dataset
轉(zhuǎn)換現(xiàn)有數(shù)據(jù)集。
遷移 nnU-Net v1 任務(wù)的示例:
<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">nnUNetv2_convert_old_nnUNet_dataset INPUT_FOLDER OUTPUT_FOLDER eg: nnUNetv2_convert_old_nnUNet_dataset /nnUNet_raw_data_base/nnUNet_raw_data/Task131_WORD/ Dataset131_WORD
</pre>
- input_folder:指的是 V1 版本里要轉(zhuǎn)換的數(shù)據(jù)(需要給出具體地址)
- output_folder: 只需要給出名字强经,不需要具體地址
此處遷移宵呛,主要是自動(dòng)幫你修改 dataset.json.并幫你把數(shù)據(jù)放入 V2 的 nnUNet_raw 文件夾里面去
參考資料
[1]
加載自己的讀取器: https://github.com/MIC-DKFZ/nnUNet/blob/master/nnunetv2/imageio/readme.md