nnU-Net实战一使用预训练nnU-Net模型进行推理

Posted Tina姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nnU-Net实战一使用预训练nnU-Net模型进行推理相关的知识,希望对你有一定的参考价值。

nnU-Net到底怎么使用,好不好用,我们看一个实战例子

本次实战项目为使用预训练nnU-Net模型进行推理
数据集: 医学分割十项全能的前列腺数据集(Prostate)

本系列还有
1 论文解读- nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation(附实现教程)
2 nnU-Net 如何安装–傻瓜式安装教程

这是该系列第3篇✍️✍️✍️

1 安装nnU-Net

确保已经安装nnU-Net。确保设置所有相关路径,

具体操作见nnU-Net 如何安装–傻瓜式安装教程

2 下载 Prostate dataset

下载链接
在这里插入图片描述
tips: 文件不是很大(< 250MB), 使用vpn应该可以下载下来。下载不下来,联系我,我发给你。

3 数据集格式转换

十项全能的数据都是 4D nii格式。这与nnU-Net不兼容。将前列腺数据集转换为正确的格式。

3.1 nnU-Net支持的数据格式

这一个知识点很重要,很重要。也是你使用nnU-Net唯一需要做的事情。

nnU-Net的所有数据集都存放在nnUNet_raw_data_base/nnUNet_raw_data 文件夹(nnUNet_raw_data_base安装nnU-Net时指定了该文件夹的地址!)。

比如,我的nnUNet_raw_data_base文件夹在/home/.../.../nnunet_file/

每个数据集都存储为单独的“Task”。统一命名为(“Task”“ID”_“任务名称”), “ID”是三位数的整, 任务名称(您可以自由选择. 比如 Task005_Prostate以’Prostate’作为任务名称任务ID为5。像这样存储在nnUNet_raw_data_base / nnUNet_raw_data文件夹中:

在这里插入图片描述
在每一个Task文件夹里,又包含以下文件夹。
在这里插入图片描述

  • imagesTr: 训练图像。
  • imagesTs(可选): 测试图像
  • labelTr: 训练集标签。
  • dataset.json : 包含数据集的元数据, 如任务名字,模态,标签含义,训练集包含的图像地址👇。
    在这里插入图片描述
    注意: 请使您的自定义任务ID从500开始,以确保与下载的预训练模型不会有冲突!!!(ID不能超过999)

另外,对图像的名称还要要求!

图像和标签最好是相同的名字。所有图像(包括标签)必须是3D nifti文件(.nii.gz)!

图像的统一命名格式case_identifier_XXXX.nii.gz, 标签的统一命名格式case_identifier.nii.gz

XXXX是模态标识符, 四位整数。

此命名方案将导致以下文件夹结构。必须严格将其数据转换为这种格式!

举例1:这是MSD的第一个任务的示例:BrainTumour。每个图像都有四个模态:FLAIR(0000),T1w(0001),T1gd(0002)和T2w(0003)。
在这里插入图片描述
在这里插入图片描述
举例2 这是MSD第二个任务的另一个示例,它只有一个模态,也要如下命名:
在这里插入图片描述
nnU-Net使用的dataset.json文件与MSD使用的文件相同。对于自定义任务,把dataset.json的内容替换一下就可以了,从而完全遵循相同的结构。

如果你想用于2D 数据,参见如何通过nnU-Net使用2D数据

3.2 转换数据

我们下载好的Task005_Prostate数据集是以下格式
在这里插入图片描述
将其转换成如下格式
在这里插入图片描述
具体步骤:
step1 :激活nnUNet
step2: 使用nnUNet_convert_decathlon_task命令自动转格式

 nnUNet_convert_decathlon_task -i $nnUNet_raw_data_base/nnUNet_raw_data/Task05_Prostate

-i 后面 接 Task05_Prostate(下载的数据)存放地址

转换成功后, Task05_Prostate 会重新命名为 Task005_Prostate

4 下载与训练模型

nnUNet_download_pretrained_model Task005_Prostate

下载的模型会自动保存到 RESULTS_FOLDER="/media/fabian/nnUNet_trained_models"

因为使用了五折交叉验证,所以会有5个文件夹,每个文件夹都包含一个预训练模型。
在这里插入图片描述

5 获取预训练模型信息

前列腺数据集需要两个图像模式作为输入。这很像RGB图像有三个颜色通道。

nnUNet通过文件结尾识别模式:前列腺数据集的单个测试用例因此由两个文件case_0000.nii.gz和case_0001.nii.gz组成。

每个文件都是一个三维图像。以0000.nii.gz结尾的文件必须始终包含T2图像和0001.nii.gz ADC图像。无论何时使用预训练模型,都可以使用

nnUNet_print_pretrained_model_info Task005_Prostate

得到如下的结果

Prostate Segmentation.
Segmentation targets are peripheral and central zone,
input modalities are 0: T2, 1: ADC.
Also see Medical Segmentation Decathlon, http://medicaldecathlon.com/

6 预测

你现在可以用预训练模型预测前列腺测试病例。我们在这里举例使用3D full resoltion U-Net:

nnUNet_predict -i $nnUNet_raw_data_base/nnUNet_raw_data/Task005_Prostate/imagesTs/ -o OUTPUT_DIRECTORY -t 5 -m 3d_fullres

-i: 测试图像文件夹地址 -o : 模型输出地址 -t: id号, 您还可以提供完整的任务名称(Task005_Prostate, -m: 选择的模型为3d_fullres

预测应该很快,您应该在几分钟之内就沉迷其中。如果您想加快速度(以降低分割质量为代价),可以通过设置--disable_tta标志(8倍加速)来禁用测试时间数据扩充(TTA)。

如果这对于您来说仍然太慢,可以通过指定使用单个模型而不是整体模型-f 0。这将仅使用在交叉验证的折数0上训练的模型来实现另外5倍的加速。

到这里,可以结束今天的教程

但是,下面还有进阶操作~~~~~

7 集成模型推理

如果要使用一组不同的U-Net配置进行推理,则需要运行以下命令:

使用3d全分辨率U-Net进行预测(此命令与上面的命令有些不同)。

nnUNet_predict -i $nnUNet_raw_data_base/nnUNet_raw_data/Task005_Prostate/imagesTs/ -o OUTPUT_DIRECTORY_3D -t 5 --save_npz -m 3d_fullres

二维U-Net预测

nnUNet_predict -i $nnUNet_raw_data_base/nnUNet_raw_data/Task005_Prostate/imagesTs/ -o OUTPUT_DIRECTORY_2D -t 5 --save_npz -m 2d

--save_npz会告诉nnU-Net还存储softmax概率进行集合。

还可以集成模型

nnUNet_ensemble -f OUTPUT_DIRECTORY_3D OUTPUT_DIRECTORY_2D -o OUTPUT_FOLDER_ENSEMBLE -pp POSTPROCESSING_FILE

这将合并来自OUTPUT_DIRECTORY_2D和的预测OUTPUT_DIRECTORY_3D。

-pp POSTPROCESSING_FILE : (可选!)是一个文件,提供有关如何对集合进行后处理的nnU-Net信息。

这些文件也作为预训练模型权重的一部分下载,位于RESULTS_FOLDER/nnUNet/ensembles/ Task005_Prostate/ensemble_2d__nnUNetTrainerV2__nnUNetPlansv2.1–3d_fullres__nnUNetTrainerV2__nnUNetPlansv2.1/postprocessing.json。

我们将在以后的版本(很快!)中使后处理文件更易于访问。

关注我,共同学习更多医学图像处理相关知识~~

小试牛刀后,下一次我们就试试 如何在自己的数据集上训练nn-UNet吧~~
在这里插入图片描述

最后,喜欢这篇文章,请点赞,评论(夸我也行),收藏。

在这里插入图片描述

以上是关于nnU-Net实战一使用预训练nnU-Net模型进行推理的主要内容,如果未能解决你的问题,请参考以下文章

不用写代码神器!教你用4行命令轻松使用nnUNet训练自己的医学图像分割模型

论文笔记:nnU-Net: Self-adapting Frameworkfor U-Net-Based Medical Image Segmentation

nnU-Net 如何安装--傻瓜式安装教程

论文笔记:nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation

《自然语言处理实战入门》深度学习 ---- 预训练模型的使用(ALBERT)

《自然语言处理实战入门》深度学习 ---- 预训练模型的使用(ALBERT 进行多标签文本分类与微调 fine tune)