在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割

文章持续更新,可以关注微公【医学图像人工智能实战营】获取最新动态。人手有限,文中涉及的链接前往微公对应文章查看。关注Tina姐,一起学习进步~

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_bundle

导读

本系列涵盖从 3D Slicer 医学图像查看器的基础使用到高级自动分割扩展程序的内容(从入门到高阶!),具体包括软件安装、基础使用教程,自动分割扩展(totalsegmentator, monai label)快速标注数据。

在本系列第三部分中,我们在工作站上安装了 MONAILabel 服务端和 MONAILabel 3D Slicer 客户端。在第四部分内容中,我们从一个简单的腹部CT脾脏分割案例开始,介绍了monai label使用的一些基础用法。在第五部分中,使用radiology app进行全脊柱的分割,并且详细介绍了radiology app所有用法。在第六部分中首次使用monai bundle 和model zoo里面的分割模型在MRI图像上分割全脑133个结构…

本节重点:在这一节中,我们展示了带有bundle应用程序的MONAI Label模型,用于全身CT分割。该模型使用totalSegmentator数据集进行训练。MONAI Label + 3D Slicer集成用于模型训练和推理,在MONAI Label中,我们提供了一个单一模型来分割104个解剖器官

全身CT器官的分割,我们之前也讲过两个其他版本,加上今天的monai label 版本,一共三个版本。
【添加链接】

  • 3D Slicer版totalSegmentator:
  • Python版totalSegmentator:

该系列之前的内容如下:
【添加链接】

Monai Bundle 和 Model Zoo简单介绍

MONAI Model Zoo 提供了一系列由社区开发的医学影像模型,采用 Monai Bundle 格式。Monai Bundle 允许您轻松获取任何来自 MONAI Model Zoo 的模型并将其导入 MONAILabel。

 Model Zoo提供的模型包括MRI脑肿瘤分割,CT肺结节检测,病理细胞核分割分类,CT胰腺分割,MRI前列腺分割,CT肾脏分割,CT脾脏分割,MRI脑切片生成等20几个模型。后面会用单独的篇幅分别介绍这些预训练模型的使用。

 MONAI Bundle 是一种基于规范和文件结构的方式,用于分发经过训练的 MONAI 模型以及相关元数据、代码、文档和其他资源。这些旨在让您更轻松地以某种格式分发模型,该格式说明了模型的用途、如何使用它、如何重现您用它完成的科学研究,并将其用于 Label 和 Deploy 等其他应用程序。详细的使用教程可以去 monai bundle github

接下来我们将用更多案例来演示monai bunlde在3D slicer中的用法

Whole Body CT TotalSegmentator Bundle

本教程使用全身CT分割bundle。该bundle提供了两个版本的模型,一个是使用(1.5 x 1.5 x 1.5)mm图像训练的高分辨率模型,另一个是使用(3.0 x 3.0 x 3.0)mm图像训练的低分辨率模型。MONAI Label提供了可视化配置选项的功能,用户可以在3D Slicer MONAI Label插件中选择使用哪个模型。

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_数据_02

在每一个教程开始前,会简单介绍这个预训练模型的基本信息,了解模型才能更好的适配模型,提高标注准确度。

模型简介
  • 名称:Wholebody ct segmentation
  • 概述: A pre-trained SegResNet model for volumetric (3D) segmentation of the 104 whole body segments
  • 作者:MONAI团队
  • 版本:0.1.9
模型概述

这个模型使用SegResNet网络进行训练。模型使用TotalSegmentator数据集进行训练。

训练配置

104种组织的分割被公式化为逐体素的多标签分割。

训练使用了以下配置:

  • GPU:48 GB的GPU内存
  • 实际模型输入:96 x 96 x 96
  • AMP:True
  • 优化器:AdamW
  • 学习率:1e-4
  • 损失函数:DiceCELoss

在3D slicer中进行全身CT器官分割

  • step1: 激活环境
conda activate monailabel
  • 1.
  • step2: 下载monaibundle app

如在之前的教程中下载过请忽略此步骤

monailabel apps --name monaibundle --download --output apps
  • 1.

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_人工智能_03

可以前往图片上地址查看下载了什么

  • step3: 下载实验数据

训练集是TotalSegmentator发布的数据集中的104个全身结构。用户可以在 TotalSegmentator数据集github找到关于数据集的更多详细信息。

  • 目标:104个结构
  • 模态:CT
  • 来源:TotalSegmentator
  • 挑战赛:Large volumes of structures in CT images

如果您打算使用TotalSegmentator的完整数据集,请参考数据集链接,下载数据。

在本教程中,我们准备了一个示例子集,重新采样并可以直接使用。该子集仅用于演示。请下载 monai 示例数据

要使用这个bundle,用户需要下载数据并将所有标注标签合并到一个NIFTI文件中。每个文件包含0-104的值,每个值代表一个解剖类别。

为了快速开始演示,本教程使用MSD Task09腹部CT扫描数据,就是之前教程使用过的脾脏分割数据。你也可以使用上面提供的原始TotalSegmentator示例数据集。

脾脏数据下载,已下载请忽略

monailabel datasets --download --name Task09_Spleen --output datasets
  • 1.
  • step4:启动MONAI Label Server

在–conf models 参数中指定bundle名称。例如:wholebody_ct_segmentation注意大小写

monailabel start_server --app apps/monaibundle --studies datasets/Task09_Spleen/imagesTs --conf models wholebody_ct_segmentation
  • 1.
  • step5: 自动分割

启动3D Slicer和MONAI Label插件,绿色刷新符号连接服务端,点解nextsample加载数据,最后点击run等待自动勾画

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_计算机视觉_04

高分辨率和低分辨率模型选择:为了满足不同的计算资源和性能需求,我们提供了1.5 mm模型和3.0 mm模型,这两个模型都使用了104个前景输出通道进行训练。

在这个bundle中,高分辨率模型默认命名为model.pt,低分辨率模型命名为model_lowres.pt。可以在下图中对应位置切换

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_bundle_05

  • step6: 运行自动推理并选择配置选项

MONAI Label已经加载了bundle内用于多器官分割任务的预训练权重,点击运行按钮对当前加载的数据进行推理。

注意:预训练模型位于bundle的“models”文件夹中。例如,在这个用例中,下载的预训练模型保存在“apps/monaibundle/model/wholeBody_ct_segmentation/models”文件夹中。

用户可以移动轴和切片来查看分割的正确位置。

用户可以在MONAI Label服务器终端中监控日志。

高分辨率分割结果:

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_数据_06

  • step7: 编辑注释并提交标签

用户可以使用MONAI Label分割编辑器手动编辑推理标签,点击Segment Editor面板。用户可以返回MONAI Label插件并点击Submit Label,将真实标签保存到文件系统。

注意:最终的注释将保存到研究数据集的labels/final文件夹中,例如,在这个用例中,真实标签将保存到“datasets/Task09_Spleen/imagesTs/labels/final”文件夹中。

  • step8: 训练和微调模型

通过多次迭代进行训练和主动微调模型是常见的标注场景。当保存了新的标注标签时,用户可以随时训练他们的模型。点击Train按钮,MONAI Label服务器将获取保存的最终真实标签并微调先前的模型。

训练配置选项:

  • 模型名称:选择要训练或微调的模型名称。
  • 学习率:设置模型训练的学习率。
  • 批次大小:设置每次训练迭代中使用的样本数量。
  • 练轮数:指定训练的总轮数。
  • 数据集路径:指定训练数据集的位置。
  • 标签路径:指定标注标签的位置。
  • 保存路径:指定训练后模型保存的位置。

用户可以根据需要调整这些选项,以便更好地满足训练和微调模型的需求。用户可以在MONAI Label服务器终端监控日志

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_bundle_07

与Radiology应用程序类似,用户可以使用最新的微调模型进行自动分割。主动学习过程将选择未标记的批处理数据。

下一个图像将被选中,已经训练过的图像将被标记为已标记数据,因此不会在下一个标记批次中被选中。主动学习策略(如“first/random”)将用于选择要获取的未标记数据。

  • step9: 重复直到所有数据被标注和训练

重复数据获取和主动学习过程(参考step5-step8),直到所有未标记数据都被标注和训练。

对于每个训练循环,新最佳指标模型将保存在“model/model.pt”中。在这个用例中,保存在“apps/monaibundle/wholeBody_ct_segmentation/model/model.pt”。

结论

本教程演示了如何使用MONAI Label和monaibundle应用程序,介绍了使用CT扫描进行104个解剖部位分割。包括主动学习过程、自动推理、分割编辑器、提交标签和保存模型。monaibundle应用程序突出了MONAI Label的强大模型部署能力。

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连

在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割_数据_08