在3D Slicer中使用 Monai Bundle 和 Model Zoo 标注医学影像数据-全身CT器官分割
文章持续更新,可以关注微公【医学图像人工智能实战营】获取最新动态。人手有限,文中涉及的链接前往微公对应文章查看。关注Tina姐,一起学习进步~
导读
本系列涵盖从 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插件中选择使用哪个模型。
在每一个教程开始前,会简单介绍这个预训练模型的基本信息,了解模型才能更好的适配模型,提高标注准确度。
模型简介
- 名称: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
- step2: 下载monaibundle app
如在之前的教程中下载过请忽略此步骤
monailabel apps --name monaibundle --download --output apps
可以前往图片上地址查看下载了什么
- 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
- 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
- step5: 自动分割
启动3D Slicer和MONAI Label插件,绿色刷新符号连接服务端,点解nextsample加载数据,最后点击run等待自动勾画
高分辨率和低分辨率模型选择:为了满足不同的计算资源和性能需求,我们提供了1.5 mm模型和3.0 mm模型,这两个模型都使用了104个前景输出通道进行训练。
在这个bundle中,高分辨率模型默认命名为model.pt,低分辨率模型命名为model_lowres.pt。可以在下图中对应位置切换
- step6: 运行自动推理并选择配置选项
MONAI Label已经加载了bundle内用于多器官分割任务的预训练权重,点击运行按钮对当前加载的数据进行推理。
注意:预训练模型位于bundle的“models”文件夹中。例如,在这个用例中,下载的预训练模型保存在“apps/monaibundle/model/wholeBody_ct_segmentation/models”文件夹中。
用户可以移动轴和切片来查看分割的正确位置。
用户可以在MONAI Label服务器终端中监控日志。
高分辨率分割结果:
- step7: 编辑注释并提交标签
用户可以使用MONAI Label分割编辑器手动编辑推理标签,点击Segment Editor
面板。用户可以返回MONAI Label插件并点击Submit Label
,将真实标签保存到文件系统。
注意:最终的注释将保存到研究数据集的labels/final
文件夹中,例如,在这个用例中,真实标签将保存到“datasets/Task09_Spleen/imagesTs/labels/final”文件夹中。
- step8: 训练和微调模型
通过多次迭代进行训练和主动微调模型是常见的标注场景。当保存了新的标注标签时,用户可以随时训练他们的模型。点击Train
按钮,MONAI Label服务器将获取保存的最终真实标签并微调先前的模型。
训练配置选项:
- 模型名称:选择要训练或微调的模型名称。
- 学习率:设置模型训练的学习率。
- 批次大小:设置每次训练迭代中使用的样本数量。
- 练轮数:指定训练的总轮数。
- 数据集路径:指定训练数据集的位置。
- 标签路径:指定标注标签的位置。
- 保存路径:指定训练后模型保存的位置。
用户可以根据需要调整这些选项,以便更好地满足训练和微调模型的需求。用户可以在MONAI Label服务器终端监控日志
与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, 我们下篇博客见~
白天工作晚上写文,呕心沥血
觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连