MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_3D

导读

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

在本系列第三部分中,我们在工作站上安装了 MONAILabel 服务端和 MONAILabel 3D Slicer 客户端。

这是在3D Slicer 中使用monai label标注系列的的第四部分内容,我们将从一个简单的案例开始,带你学会使用monai label标注数据。

[ MONAI Label 是一个服务器-客户端系统,它利用 AI 促进交互式医学图像注释。它是一个开源且易于安装的生态系统,可以在具有单个或多个 GPU 的机器上本地运行。服务器和客户端都在同一台/不同的机器上工作。它与MONAI共享相同的原理。

MONAI Label 减少了注释新数据集的时间和精力,并通过不断从用户交互和数据中学习,使 AI 能够适应手头的任务。MONAI Label 允许研究人员和开发人员以用户的方式与他们的应用程序交互,从而不断改进他们的应用程序。最终用户(临床医生、技术人员和一般注释者)受益于 AI 的不断学习,并更好地理解最终用户试图注释的内容。]

下表列出了MONAI Label支持的基本场景、模式、查看器和一般数据类型

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_02

从图中第一行可以看到,可对放射学领域‘Radiology’3D 图像进行交互式和自动分割.交互式工具包括 DeepEdit 和 Deepgrow,用于积极改进训练后的模型和部署。并且只针对CT和MRI图像,不包括x线图像。图像格式可以是NIfTI/NRRD/DICOM

MONAI Label初认识

首先,打开终端,激活monailabel环境conda activate monailabel

激活后,输入monailabel -h查看基础用法

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据集_03

没有正确运行的话,请检查你的安装是否正确
【添加安装链接】

为了帮助初学者尤其是临床医生理解这个命令的用法。请仔细阅读下面的说明:

基本命令结构
  • monailabel:这是你要运行的命令。
  • -h--help:这是一个可选参数,意思是显示帮助信息。运行 monailabel -h 会显示所有可用的子命令及其用途。
  • -v--version:这是另一个可选参数,意思是显示软件的版本信息。
子命令

monailabel 命令有四个子命令,你可以用它们来执行不同的任务:

  1. start_server:启动应用服务器。
  2. apps:列出或下载示例应用程序。
  3. datasets:列出或下载示例数据集。
  4. plugins:列出或下载查看器插件。

每个子命令还有自己的帮助信息,具体用法如下:

用法示例
  • 显示帮助信息monailabel -h 这会显示所有子命令的列表及其简要说明。
  • 启动应用服务器monailabel start_server 这会启动应用服务器,让你可以开始使用这个工具。这个是重点功能,使用’monailabel start_server -h’查看具体用法。特别注意图片上打勾的地方,是每次运行都要配置的参数信息

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据集_04

  • 列出或下载示例应用程序monailabel apps 这会显示所有可用的示例应用程序,并提供下载选项。

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_05

查看子命令的用法:monailabel apps -h

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_06

  • 列出或下载示例数据集monailabel datasets 这会显示所有可用的示例数据集,并提供下载选项。
  • 列出或下载查看器插件monailabel plugins 这会显示所有可用的查看器插件,并提供下载选项。

接下来的教程就会使用这些命令来完成,遇到问题时请再回来看看命令的用法,你会有更清晰的认知。

使用monailabel预置模型自动分割脾脏

step1: 激活环境
conda activate monailabel
  • 1.
step2:下载 radiology app
monailabel apps --download --name radiology --output apps
  • 1.

把radiology下载到‘apps’文件夹,请记住你的apps地址

step3:下载示例数据

使用 monailabel API 下载 MSD 脾脏数据集作为示例数据集。任务是从 CT 图像中进行脾脏的体积(3D)分割。

monailabel datasets --download --name Task09_Spleen --output datasets
  • 1.

可以前往文件夹查看下载信息,如因为网速下载不下来数据可联系Tina姐。之前下载过此数据可直接将数据放到此目录下,无需重复下载。

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据集_07

step4: 启动MONAI Label Server

segmentation_spleen模型将在启动 MONAI Label 服务器时自动下载。网络和检查点将在 monailabel 命令的初始化步骤中进行处理。

monailabel start_server --app apps/radiology --studies datasets/Task09_Spleen/imagesTr --conf models segmentation_spleen
  • 1.

Tina姐:一个简单的服务端启动命令你总得告诉它你用什么app,分割哪个数据集,用哪个预置model

启动好后,可以看看程序响应,了解它加载的模型来自哪里,加载的数据信息,以及提供的端口号(默认为8000,见下方图片打勾的地方)

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据_08

如果你顺利到这一步,那么恭喜您,成功启动了服务端。

如果遇到bug:如 ImportError: cannot import name ‘AddChanneld’ from 'monai.transforms’可尝试将monai版本降到1.2。

step5: 打开3D Slicer加载模型和数据

服务端启动好后,就可以打开3D Slicer,并加载MONAI Label模块。加载之后,如下图,点击绿色刷新符号启动服务,如果没有正常启动,把step4中的地址复制进来(http://0.0.0.0:8000)再点刷新

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_09

我们在启动服务端时,告诉了monailabel数据地址对不对,点击Next Sample就可以把数据加载进来。数据加载有三种方式:随机,正序,倒序加载。可以在Strategy里面选择

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_10

step6: 使用模型进行分割

加载好数据之后,在Auto Segmentation模块下点击run按钮,就开始自动分割了,分割运行时,鼠标会打转转,等分割好了就正常了。在这个案例中,我在mac上CPU分割一例脾脏的时间是1分钟。

注意:在“模型”文件夹中启动MONAI Label服务器时,将下载预先训练好的模型。例如,在这个用例中,下载的预训练模型保存在“apps/radiology/model/pretrained_segmentation_spleen.pt”中。

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_11

step7:查看和手动编辑分割并保存

自动分割好后,点击Segment Editor可以修改和查看所有的分割目标,点击show 3D可以在图上显示三维表面轮廓。如果对分割的细节不满意可以,可以使用手动工具进行矫正。

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_计算机视觉_12

标注完成后,单击Active Learning模块中Submit Label将标签保存到文件系统中。

注:最终注释将保存到数据集中的“labels/final”文件夹中,例如,在本用例中,标签将保存到datasets/Task09_Spleen/imagesTr/labels/finall

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_人工智能_13

step8:主动学习微调模型

主动学习和交互式微调模型在MONAI标签中突出了功能,用户可以在保存新的注释标签时随时训练他们的模型。单击Active Learning模块中Train按钮,MONAI Label服务器将获取保存的最终标签,并对先前的模型进行微调。

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据集_14

用户可以使用最新的微调模型进行自动分割。主动学习过程将选择未标记的批次数据,也就是说下一个选择的图像,已经被用来训练的图像将不会再次标注

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据_15

但是我在笔记本演示的时候,训练准确率一直为0.不知道是不是版本问题。

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_数据_16

step9: 重复交互式标记过程

重复提取数据并进行第step8的主动学习过程,直到对所有未标记的数据进行注释和训练。

对于每个训练循环,新的最佳度量模型将保存在“model/<model_name>.pt”中,在本用例中,将保存“apps/radiology/model/sectionation_spleen.pt”。有关详细的训练统计数据和步骤模型,请参阅“apps/radiology/model/sectionaation_spleen/train_01”,

结论

本教程演示了MONAI label与radiology app的基本用法,其中介绍了脾脏分割任务。包括主动学习过程、自动分割、分割编辑器、提交标签和保存模型。我们在标记数据集时强调了交互式学习过程,借助monai平台可以实现增量改进,使研究人员和临床医生更高效的标注医疗数据。

可以关注微公【医学图像人工智能实战营】

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

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

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

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏_计算机视觉_17