目录
3.2.1 骰子系数 - 最差结果 - Worst Cases编辑编辑
3.2.2 骰子系数 - 最优结果 - Best Cases编辑编辑模型分析
4.2.1 骰子系数 - 最差结果 - Worst Cases编辑编辑
4.2.2 骰子系数 - 最优结果 - Best Cases编辑编辑
4.3.3 周长误差 (Circumference Error in mm)
5.2 豪斯多夫距离 (Hausdorff Distance)
发的第一篇文,有很多要改进的地方。求各路大神多多指引
费时5天完成的一个Segmentation挑战,之前没有做过segmentation所以走了一点点弯路
nnUNet的github链接 - GitHub - MIC-DKFZ/nnUNet
nnUNet的文章链接- -nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation | Nature Methods
Fatal Head Segmentation Challenge的链接 - Home - Grand Challenge
*部分代码非原创,会标注出处以及链接*
1. nnUNet 介绍
nnUNet是一款可以自己调整数据预处理,模型架构,训练,和后处理的深度学习医疗图片分割模型。在没有人工调参的情况下,nnUNet 在23个图形切割挑战上得到了最优的分数/前沿的效果。作者把nnUNet开源,让更多人,不论背景,都能轻松的接触到医疗图形切割的领域。
1.1 nnUNet 特点
- 衡量标准:nnUNet 在很多数据集都达到了最优的结果。作者表示nnUNet可以算是行业标杆,让其他用户的模型和nnUNet做准确率比对。(咱也不敢问,咱也不敢说,大佬说什么都对)
- 开箱即食:nnUNet 是第一个“开箱即食”的先进图像分割系统。没有segmentation经验的用户也可以(相对)流畅的使用nnUNet来做图像分割的任务。
- 框架:nnUNet的模块化框架可以让用户替换/优化部分,可以有效的看到自己优化的效果。
2. 准备工作
2.1 整理数据格式 - 用自己的数据集
nnUNet 对数据的格式要求比较高,是根据Medical Segmentation Decathlon (MSD)的格式。
nnUNet_raw_data_base/nnUNet_raw_data/
├── Task001_BrainTumour
├── Task002_Heart
├── Task003_Liver
├── Task004_Hippocampus
├── Task005_Prostate
├── ...
~/Task001_BrainTumour/
├── dataset.json
├── imagesTr
├── (imagesTs)
└── labelsTr
详细转换方法请借鉴作者 github:nnUNet/dataset_conversion.md at master · MIC-DKFZ/nnUNet · GitHub
2.2 设置路径
nnUNet的初衷是能让每个数据集都能用这个模型跑,所以环境设置很重要!我是在colab上面跑的,如果要本地跑的话需要修改。这里有三个环境设置:
- Raw database - 源数据路径
- Preprocessed - 处理后的数据路径
- Results Folder - 结果储存路径
os.environ['nnUNet_raw_data_base'] = "content/raw_data_base"
os.environ['nnUNet_preprocessed'] = "content/raw_data_base/nnUNet_preprocessed"
os.environ["RESULTS_FOLDER"] = "content/raw_data_base/results"
2.3 nnUNet预处理数据
在训练nnUNet之前需要用他们的代码预处理一下数据,代码如下:
nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity
这里nnUNet_plan_and_preprocess是命令,XXX是自定义的任务编号,建议设置在500+以防和现有模型冲突。如果这代码跑出来没问题就可以开始训练了。
3. 训练
3.1 训练代码
!nnUNet_train 2d nnUNetTrainerV2 555 0
!nnUNet_train 2d nnUNetTrainerV2 555 1
!nnUNet_train 2d nnUNetTrainerV2 555 2
!nnUNet_train 2d nnUNetTrainerV2 555 3
!nnUNet_train 2d nnUNetTrainerV2 555 4
#nnUNet_train 命令
#2d 跑2d nnUNet
#nnUNetTrainerV2 基础nnUNet
#555 任务编号
#0/1/2/3/4 多重编号
#!nnUNet_train 2d nnUNetTrainerV2 555 4 -c
#Add -c to continue train from the last check point