安裝:
pip install nnunetv2
## 或者是把他下載下來(lái),自行安裝
git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .
GitHub代碼:
GitHub - MIC-DKFZ/nnUNet
十項(xiàng)醫(yī)學(xué)分割數(shù)據(jù)集:
Medical Segmentation Decathlon
注意:安裝時(shí)一定不能使用魔法,否則會(huì)被伏地魔(False)
配置:
這里有幾個(gè)鐵汁,可以一起參考,以他們的為主,我的為輔,一起食用
(四:2020.07.28)nnUNet最舒服的訓(xùn)練教程(讓我的奶奶也會(huì)用nnUNet(上))(21.04.20更新)_nnuet_花卷湯圓的博客-CSDN博客
nnUNet實(shí)戰(zhàn)一使用預(yù)訓(xùn)練nnUNet模型進(jìn)行推理_Tina姐的博客-CSDN博客
nnUNet 使用不完全指南(上) - No Visitor Website(這里有自定義生成json的代碼)
我引用一下吧:
from collections import OrderedDict
from batchgenerators.utilities.file_and_folder_operations import save_json
def main():
foldername = "Task128_LungLobe"
numTraining = 80
numTest = 6
numClass = 6
json_dict = OrderedDict()
json_dict['name'] = foldername
json_dict['description'] = foldername
json_dict['tensorImageSize'] = "4D"
json_dict['reference'] = "see challenge website"
json_dict['licence'] = "see challenge website"
json_dict['release'] = "0.0"
json_dict['modality'] = {
"0": "CT",
}
json_dict['labels'] = {i: str(i) for i in range(numClass)}
json_dict['numTraining'] = numTraining
json_dict['numTest'] = numTest
json_dict['training'] = [{'image': "./imagesTr/LungLobe_{:0>3d}.nii.gz".format(i),
"label": "./labelsTr/LungLobe_{:0>3d}.nii.gz".format(i)}
for i in range(numTraining)]
json_dict['test'] = ["./imagesTs/LungLobe_{:0>3d}.nii.gz".format(i)
for i in range(numTraining, numTraining+numTest)]
save_json(json_dict, "./dataset.json")
if __name__ == "__main__":
main()
nnUNet保姆級(jí)使用教程!從環(huán)境配置到訓(xùn)練與推理(新手必看) | AI技術(shù)聚合
在windows下安裝nnUnet,并制作數(shù)據(jù)集以及運(yùn)行(讓隔壁奶奶也能學(xué)會(huì)的教程)_花生米生花@的博客-CSDN博客
數(shù)據(jù)文件夾:
其實(shí)就是需要自己自行手動(dòng)建立幾個(gè)文件夾,
?進(jìn)入紅色文件夾:
在紅色文件夾里,丟如數(shù)據(jù)文件夾Task14_Vessel,這是固定的命名形式Task數(shù)字_名字
數(shù)字的話(huà),建議是10以上,但是不能三位數(shù),就說(shuō)如果你是13的話(huà),不要013,如果你里面的數(shù)據(jù)格式是正確的話(huà),就是訓(xùn)練數(shù)據(jù)后面是_0000,nii.gz后綴的話(huà),可以忽略這個(gè)規(guī)則,可直接跳到 --然后
因?yàn)榈奈业臄?shù)據(jù)是這樣的
?肯定是不符合格式的,所以得改,可以利用nnunet自帶的代碼進(jìn)行更改:
nnUNet_convert_decathlon_task -i F:/data/data_1100/nnUNet_raw_data_base/nnUNet_raw/nnUNet_raw_dat
a/Task14_Vessel
這時(shí),他會(huì)再次生成一個(gè)文件夾,這個(gè)文件夾叫Task014_Vessel,原來(lái)的叫Task14_Vessel,所以你應(yīng)該懂了吧?。?!
?其中這個(gè)過(guò)程中你是回遇到錯(cuò)誤的,如果你的是Windows環(huán)境的話(huà),解決方案,如下:
nnUNet windows 遇到的 bug_nnunet windows_*小呆的博客-CSDN博客
還有個(gè)最重的是,image和label的名字得一樣
?
然后
運(yùn)行指令,數(shù)字是自己任務(wù)的代號(hào):
nnUNet_plan_and_preprocess -t 14 --verify_dataset_integrity
## 或者是
nnUNet_plan_and_preprocess -t 14
然后又遇到報(bào)錯(cuò)了,一般是到了這步才會(huì)報(bào)錯(cuò)的:
?File "D:\Python\anaconda3\envs\pytorch\lib\site-packages\nnunet\preprocessing\sanity_checks.py", line 129, in verify_dataset_integrity
? ? assert isfile(expected_label_file), "could not find label file for case %s. Expected file: \n%s" % (
AssertionError: could not find label file for case img_001. Expected file:
上面所有的問(wèn)題皆是Windows下出現(xiàn)的,Linux的話(huà),我是一次通過(guò)的。
解決方案:裝Windows版的nnunet,它會(huì)解決Windows下的線(xiàn)程問(wèn)題,不會(huì)報(bào)這么多奇奇怪怪的問(wèn)題
最后就是運(yùn)行指令進(jìn)行訓(xùn)練:
nnUNet_train 3d_fullres nnUNetTrainerV2 13 0-4
nnUNetTrainerV2:代表是訓(xùn)練的模型,
13:任務(wù)數(shù)據(jù)集
0-4:五折中的其中一折
若是訓(xùn)練到一半,想接著訓(xùn)練,則
nnUNet_train 3d_fullres nnUNetTrainerV2 13 0-4 -c
-c:continue的意思
nnunet默認(rèn)是每50個(gè)epoch保存一次
總共訓(xùn)練1000個(gè)epoch
?
#############################################################################
指令總結(jié)
#############################################################################
nnUNet_convert_decathlon_task -i F:/data/data_1100/nnUNet_raw_data_base/nnUNet_raw/nnUNet_raw_dat
a/Task14_VesselnnUNet_plan_and_preprocess -t 14?
nnUNet_train 3d_fullres nnUNetTrainerV2 13 0
文件位置?
?nnUNet_convert_decathlon_task:
\nnunet\experiment_planning\?nnUNet_convert_decathlon_task
nnUNet_plan_and_preprocess:
\nnunet\experiment_planning\?nnUNet_plan_and_preprocess
nnUNet_train:
\nnunet\run\run_training
##########################################################################################################################################################
訓(xùn)練的一些源代碼筆記
如果用的是nnUNet_train 3d_fullres nnUNetTrainerV2的話(huà),主要看這五個(gè)文件代碼:
?run_training.py:
位置:\nnunet\run\run_training
功能:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-567371.html
主流程都在這里
?nnUNetTrainerV2.py:
位置:\nnunet\training\network_training\nnUNetTrainerV2
功能:
1、定義訓(xùn)練的網(wǎng)絡(luò)模型、初始化網(wǎng)絡(luò)
2、加載和解壓數(shù)據(jù)集,數(shù)據(jù)的增強(qiáng)
3、定義損失函數(shù)、優(yōu)化器、學(xué)習(xí)率之類(lèi)的
4、加載數(shù)據(jù)參數(shù)定義
5、訓(xùn)練的入口,(在代碼最后一段)
nnUNetTrainer.py:
位置:\nnunet\training\nnUNetTrainer.py
功能:
1、加載的一些數(shù)據(jù)參數(shù)定義,分配到self總體上
2、在這個(gè)可以自己改batch大小和patch_size大小
一般默認(rèn)的batch是2,patch_size是【90,190,190】
self.batch_size? ?和? ??self.patch_size
3、劃分訓(xùn)練集和驗(yàn)證集
4、加載數(shù)據(jù)集
network_trainer.py:
位置:
位置:\nnunet\training\network_trainer.py
功能:
1、設(shè)置一些參數(shù)
self.num_batches_per_epoch = 250????????## 訓(xùn)練塊
self.num_val_batches_per_epoch = 50????????## 測(cè)試塊
self.save_every = 50? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## 每多少個(gè)epoch保存一下
2、加載權(quán)重
3、保存debug日志文件到輸出文件夾下
4、訓(xùn)練的while:epoch < max_num_epochs:在這
generic_UNet.py:
位置:\nnunet\network_architecture\generic_UNet.py
功能:
網(wǎng)絡(luò)結(jié)構(gòu)模型文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-567371.html
到了這里,關(guān)于【nnunet】個(gè)人數(shù)據(jù)訓(xùn)練心得的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!