0.6 版本新特性#

  • 解批处理作为重要的后处理步骤

  • Python 风格的 API,用于加载 Clara Train MMAR 中的预训练模型

  • UNETR: 用于医学图像分割的 Transformer 模型

  • 基础度量接口的增强

  • 通过 PyTorch JIT 编译的 C++/CUDA 扩展模块

  • 向后兼容性及增强的持续集成/持续交付

  • 与 Project-MONAI/MONAILabel 协作实现平滑集成

解批处理作为重要的后处理步骤#

decollate batch 在 MONAI v0.6 中引入,用于简化后处理转换,并对批量模型输出进行灵活操作。它可以将批量数据(例如模型推理结果)解压为张量列表——作为 PyTorch 数据加载器的 collate_fn 的“逆”操作。它的优点包括:

  • 为每个项目独立启用后处理转换,例如,随机转换可以对批处理中的每个预测项目应用不同的方式。

  • 简化转换 API 并减少输入验证负担,因为现在预处理和后处理转换都只支持“channel-first”输入格式。

  • 为不同原始形状的数据项目启用转换逆操作,因为逆转后的项目是列表形式,而不是堆叠在单个张量中。

  • 允许使用“batch-first”张量和“channel-first”张量列表进行灵活的指标计算。

decollate batch 的典型过程如下图所示(以 batch_size=N 的模型预测和标签为例): decollate_batch

decollate batch 教程 展示了基于 PyTorch 原生工作流的详细使用示例。

将 v0.5 代码迁移到 v0.6 wiki 展示了如何将现有程序从 v0.5 迁移到 v0.6 以适应 decollate batch 逻辑。

UNETR: 用于医学图像分割的 Transformer 模型#

UNETR 是一个基于 Transformer 的体绘制 (3D) 医学图像分割模型,目前在 BTCV 数据集 测试服务器上的多器官语义分割任务中处于领先地位。UNETR 在 MONAI v0.6 中引入,其灵活的实现支持各种分割任务。UNETR

project-monai/tutorials 中提供了一个使用 UNETR 进行 3D 多器官语义分割任务的教程。它包含以下特性:

  • 用于字典格式数据的转换,

  • 根据 MONAI 转换 API 定义新的转换,

  • 加载包含元数据的 Nifti 图像,加载图像列表并堆叠它们,

  • 随机调整强度以进行数据增强,

  • 优化缓存 IO 和转换以加速训练和验证,

  • 用于多器官分割任务的 3D UNETR 模型、DiceCE 损失函数和 Mean Dice 度量,

下图展示了在本教程中进行分割的目标身体器官: BTCV_organs

请访问 UNETR 仓库了解更多详情:https://monai.org.cn/research/unetr-btcv-multi-organ-segmentation

Python 风格的 API,用于加载 Clara Train MMAR 中的预训练模型#

MMAR (Medical Model ARchive) 定义了一种数据结构,用于组织模型开发生命周期中产生的所有工件。NVIDIA Clara 提供 各种医学领域特定模型的 MMAR。这些 MMAR 包含关于模型的所有信息,包括配置和脚本,提供一个工作空间来执行模型开发任务。为了更好地利用在 Nvidia GPU 云上发布的已训练 MMAR,MONAI 提供了 Python 风格的 API 来访问它们。

为了演示这一新功能,在 project-monai/tutorials 中创建了一个医学图像分割教程。它主要生成下图,用于比较以下情况的损失曲线和验证分数:

  • 从头开始训练(绿线),

  • 应用预训练 MMAR 权重但不进行训练(品红线),

  • 从 MMAR 模型权重开始训练(蓝线),

根据训练 epoch 数量。

transfer_mmar

本教程展示了封装 MMAR 解析细节的能力,以及使用预训练 MMAR 进行迁移学习的潜力。这些 API 也被集成到 AI 辅助的交互式工作流中,以加速手动标注过程(例如,通过 project-MONAI/MONAILabel)。

基础度量接口的增强#

基础度量 API 现在得到增强,以支持基于迭代和基于 epoch 的度量的核心计算逻辑。通过此更新,MONAI 度量模块变得更具可扩展性,因此是定制度量的一个良好起点。这些 API 默认也支持数据并行计算并考虑计算效率:通过 Cumulative 基类,中间度量结果可以自动缓存、累加、跨分布式进程同步,并聚合最终结果。多进程计算示例 展示了如何在多进程环境中基于保存的预测和标签计算度量。

通过 PyTorch JIT 编译的 C++/CUDA 扩展模块#

为了进一步加速工作流中的领域特定例程,MONAI 引入了 C++/CUDA 模块作为 PyTorch 原生实现的扩展。它现在提供了使用 从 PyTorch 构建 C++ 扩展的两种方法 的模块:

  • 通过 setuptools(自 MONAI v0.5 起),用于包括 ResamplerConditional random field (CRF)Fast bilateral filtering using the permutohedral lattice 在内的模块。

  • 通过即时 (JIT) 编译(自 MONAI v0.6 起),用于 Gaussian mixtures 模块。这种方法允许根据用户指定的参数和本地系统环境进行动态优化。下图展示了 MONAI 的高斯混合模型应用于组织和手术工具分割任务的结果: 高斯混合模型作为后处理步骤

向后兼容性及增强的持续集成/持续交付#

从这个版本开始,我们尝试基本的向后兼容性策略。在现有的语义版本控制模块和 Git 分支模型之上引入了新的工具。

同时,我们积极分析高效、可扩展和安全的 CI/CD 解决方案,以适应快速协作的代码库开发。

尽管完整的机制仍在开发中,但这为 MONAI 的 API 稳定版本、可持续发布周期以及高效开源协作迈出了又一个重要步骤。

Project-MONAI/MONAILabel 协作实现平滑集成#

自 MONAI v0.6 起,我们欢迎 MONAILabel 加入 Project-MONAI

MONAI Label 是一个智能开源图像标注和学习工具,使用户能够创建带标注的数据集并构建用于临床评估的 AI 标注模型。MONAI Label 使应用程序开发人员能够以无服务器的方式构建标注应用,通过 MONAI Label 服务器将自定义标注应用作为服务公开。

请访问 MONAILabel 文档网站了解详情:https://docs.monai.org.cn/projects/label/en/stable/