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

news2024/9/25 1:09:40

在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。可以在下图中对应位置切换

在3Dslicer中切换模型版本

  • 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, 我们下篇博客见~

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算基础之Docker

云计算是什么 云计算的本质是计算资源的虚拟化。 与磁盘逻辑卷的分配类似,云计算是在负载波动时动态调整服务器计算资源,避免资源浪费的做法,生产环境中,厂商一般将服务器组成一个池,实现逻辑管理计算资源&#xff0…

实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!

今天给大家介绍Adobe研究院新的研究TurboEdit&#xff0c;可以通过文本来编辑图像&#xff0c;通过一句话就能改变图像中的头发颜色、衣服、帽子、围巾等等。而且编辑飞快&#xff0c;<0.5秒。简直是图像编辑的利器。 相关链接 项目&#xff1a;betterze.github.io/TurboE…

闪存刷新机制文献的解读

闪存刷新机制文献的解读 一、文献信息1、标题&#xff1a;Flash Correct-and-Refresh: Retention-Aware Error Management for Increased Flash Memory Lifetime2、作者来源&#xff1a;卡耐基梅隆大学 二、Motivation三、Technique ( Flash Correct-and-Refresh, FCR )1、Repr…

如何使用Svg矢量图封装引用到vue3项目中

前言 在现代前端开发中&#xff0c;SVG&#xff08;可缩放矢量图形&#xff09;因其高质量和灵活性成为了图标和图形设计的热门选择。对于 Vue 3 项目而言&#xff0c;将 SVG 图标封装和引用到项目中不仅能提升性能&#xff0c;还能带来更高的可维护性和一致性。SVG 图标本质上…

LED的使用寿命评估

一&#xff0e;前言 LED光源随着时间的推移&#xff0c;输出光功率会逐渐衰减。在某一时间点&#xff0c;当LED发出的光衰减到一定水平&#xff0c;就无法满足应用要求。因此&#xff0c;常遇见客户会索取产品中LED光源的使用寿命数据。那么怎样确认LED的使用寿命呢&#xff1…

视觉Mamba综述——Visual Mamba: A Survey and New Outlooks论文总结

Visual Mamba: A Survey and New Outlooks &#xff08;31页&#xff0c;视觉Mamba综述&#xff09; 香港科技大学计算机科学与工程系 https://github.com/Ruixxxx/Awesome-Vision-Mamba-Models. 任务背景 0.摘要 Mamba是最近提出的一种选择性结构化状态空间模型&#xff…

公共DNS大测评,哪个解析性能最好?

日前阿里云方面发布公告称&#xff0c;由于产品升级&#xff0c;将于2024年9月30日24时起对公共DNS中免费的解析请求采取智能流量管控措施。据其透露&#xff0c;“公共DNS仍会致力于为广大免费用户提供高质量的基础递归解析服务&#xff0c;但在高并发解析场景&#xff0c;将对…

建模杂谈系列249 增量数据的正态分布拟合

说明 从分布开始&#xff0c;分布又要从正态开始 假设有一批数据&#xff0c;只有通过在线的方式增量获得。 内容 1 生成 先通过numpy生成一堆随机数据&#xff0c;从3个正态分布生成&#xff0c;然后拼接起来。 import numpy as np import matplotlib.pyplot as plt from …

【智能算法改进】路径规划问题的多策略改进樽海鞘群算法研究

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】樽海鞘群算法&#xff08;SSA)原理及实现 2.改进点 无标度网络策略 复杂网络在图论中可以用边和节点表示&#xff0c; Barabasi 等于1999年通过分析大量的数据提出了无标度网络模型. 该网络…

框架 +【Mybatis】概述 以及 基础环境搭建

目录 什么是框架&#xff1f; java后端框架包括 Mybatis概述 1、背景介绍 2、mybatis介绍 Mybatis环境搭建 1.创建一个maven项目 2.导入mysql数据库驱动包 导入mybatis依赖的jar包 3.创建一个全局的mybatis配置文件 4.创建数据库,创建表,准备数据 5.创建一个访问接口…

单图生成 2D 和 3D 人物,高质量图像处理模型 CharacterGen来啦!

CharacterGen引入了一个简化的生成流程和一个图像条件的多视图扩散模型。该模型有效地将输入姿态校准到规范形式&#xff0c;同时保留输入图像的关键属性&#xff0c;从而解决了多样化姿态带来的挑战。 CharacterGen的另一个核心组成部分是基于Transformer的、可泛化的稀疏视图…

httpx:一个神奇的 Python HTTP客户端

文章目录 httpx&#xff1a;一个神奇的 Python HTTP客户端1. 背景&#xff1a;为什么选择 httpx&#xff1f;2. httpx 是什么&#xff1f;3. 如何安装 httpx&#xff1f;4. 简单的库函数使用方法5. 场景应用6. 常见问题及解决方案7. 总结 httpx&#xff1a;一个神奇的 Python H…

第 8 章 数据的家——MySQL的数据目录

8.1 数据库和文件系统的关系 数据库把表存储在文件系统上。当我们读取数据时&#xff0c;存储引擎会从文件系统中把数据读出来返回给我们&#xff1b;当我们写入数据时&#xff0c;存储引擎会把这些数据写回文件系统。 8.2 MySQL数据目录 8.2.1 数据目录和安装目录的区别 数…

C++从入门到起飞之——list模拟实现 全方位剖析!

​ ​ ​ &#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 ​ ​1、list的整体框架 2、list迭代器 >整体分析 >整体框架 >成员函数 >运…

操作系统:实验六文件操作实验

一、实验目的 1、了解文件系统功能及实现原理。 2、掌握LINUX下文件操作的有关系统调用。 3、熟悉main函数带参数运行的有关操作过程。 4、通过模拟程序实现简单的一级文件系统或二级文件系统。 二、实验内容 1、编程显示文件自身。&#xff08;1分&#xff09; #includ…

分享两个方法分析python打包exe

在Python开发中&#xff0c;常常需要将Python脚本打包成独立的可执行文件&#xff0c;以便在没有Python环境的电脑上运行。你是否曾为此感到困惑&#xff0c;不知道该选择哪种工具来实现这一目标&#xff1f;其实&#xff0c;打包Python脚本并不难&#xff0c;关键在于选择合适…

Mybatis框架——缓存(一级缓存,二级缓存)

本章将简单介绍Mybatis框架中的缓存&#xff0c;欢迎大家点赞➕收藏&#xff0c;蟹蟹&#xff01;&#xff01;&#xff01;&#x1f495; &#x1f308;个人主页&#xff1a;404_NOT_FOUND &#x1f308;MyBatis环境搭建步骤&#xff08;超全解析&#xff01;&#xff01;&am…

AI写论文真的可靠吗?免费推荐6款AI论文写作助手

在当今的学术研究和写作领域&#xff0c;AI论文写作助手已经成为不可或缺的工具。这些工具不仅能够提高写作效率&#xff0c;还能帮助研究者生成高质量的论文。以下是六款免费推荐的AI论文写作助手&#xff0c;包括千笔-aipasspaper&#xff0c;它们各自具有独特的功能和优势。…

【hot100篇-python刷题记录】【最小路径和】

R6-多维动态规划篇 好经典的dp题&#xff0c;纯粹的题。 多维动态规划无论是二维还是三维&#xff0c;无非是创建dp表&#xff0c;dp[][][][][][]即可 动态规划式子 dp[i][j]当前值min(dp[i][j-1],dp[i-1][j]) 边界问题处理&#xff1a;是否存在即可。哦对了好像不用这样&a…

探索异步之美:aiohttp库的魔力与奥秘

文章目录 探索异步之美&#xff1a;aiohttp库的魔力与奥秘背景&#xff1a;为何选择aiohttp&#xff1f;什么是aiohttp&#xff1f;如何安装aiohttp&#xff1f;简单函数使用方法场景应用常见Bug及解决方案总结 探索异步之美&#xff1a;aiohttp库的魔力与奥秘 背景&#xff1…