MONAI 教程
此仓库托管了 MONAI 的教程。
1. 系统要求
大部分的示例和教程需要 matplotlib 和 Jupyter Notebook。
这些可以通过以下命令安装:
python -m pip install -U pip
python -m pip install -U matplotlib
python -m pip install -U notebook
有些示例可能需要可选依赖项。如果遇到可选导入错误,请根据 MONAI 的 安装指南 安装相关软件包。或者安装所有可选依赖项:
pip install -r https://raw.githubusercontent.com/Project-MONAI/MONAI/dev/requirements-dev.txt
在 Colab 中运行笔记本
大部分 Jupyter 笔记本都有一个“在 Colab 中打开”的按钮。请右键点击该按钮,然后选择“在新标签页中打开链接”以启动包含相应笔记本内容的 Colab 页面。
要通过 Colab 使用 GPU 资源,请记得将运行时类型更改为 GPU
:
- 从
运行时
菜单中选择更改运行时类型
- 从下拉菜单中选择
GPU
- 点击
保存
这将重置笔记本,并可能询问您是否是机器人(这些说明假定您不是)。
运行以下命令可以验证 GPU 是否工作,并显示您所访问的硬件类型:
!nvidia-smi
数据
某些笔记本可能需要额外的数据。每个用户有责任检查数据集的内容和适用的许可证,并确定其是否适合预期用途。
2. 问题与漏洞
3. 成为贡献者
您可以在我们的 贡献指南 中阅读有关添加教程的详细信息。
4. 笔记本和示例列表
2D 分类
mednist_tutorial
此笔记本展示了如何轻松将 MONAI 功能集成到现有的 PyTorch 程序中。它基于 MedNIST 数据集,非常适合作为教程的入门案例。该教程还利用了 MONAI 内置的遮挡敏感度功能。
2D 分割
torch 示例
基于 UNet 和合成数据集的 2D 分割训练和评估示例。这些示例是标准的 PyTorch 程序,并且有基于字典和基于数组的版本。
3D 分类
ignite 示例
基于 DenseNet3D 和 IXI 数据集 的 3D 分类训练和评估示例。这些示例是 PyTorch Ignite 程序,并且有基于字典和基于数组的转换版本。
torch 示例
基于 DenseNet3D 和 IXI 数据集 的 3D 分类训练和评估示例。这些示例是标准的 PyTorch 程序,并且有基于字典和基于数组的转换版本。
3D 回归
densenet_training_array.ipynb
基于 DenseNet3D 和 IXI 数据集 的 3D 回归训练和评估示例。
3D 分割
ignite 示例
基于 UNet3D 和合成数据集的 3D 分割训练和评估示例。这些示例是 PyTorch Ignite 程序,并且有基于字典和基于数组的转换。
torch 示例
基于 UNet3D 和合成数据集的 3D 分割训练、评估和推理示例。这些示例是标准的 PyTorch 程序,并且有基于字典和基于数组的版本。
brats_segmentation_3d
此教程展示了如何基于 MSD 脑肿瘤数据集 构建多标签分割任务的训练工作流,以及如何将 PyTorch 模型转换为 ONNX 模型以进行推理和比较。
spleen_segmentation_3d_aim
此笔记本展示了如何将 MONAI 与 aimhubio/aim
结合使用。
spleen_segmentation_3d_lightning
此笔记本展示了如何将 MONAI 与 PyTorch Lightning 框架结合使用。
spleen_segmentation_3d
此笔记本是基于 MSD 脾脏数据集 的 3D 分割端到端训练和评估示例。该示例展示了 MONAI 模块在基于 PyTorch 程序中的灵活性:
- 基于字典的训练数据结构的变换。
- 加载带有元数据的 NIfTI 图像。
- 将医学图像强度缩放到预期范围。
- 基于正/负标签比率裁剪出一批平衡的图像补丁样本。
- 缓存 IO 和变换以加速训练和验证。
- 3D UNet、Dice 损失函数、用于 3D 分割任务的平均 Dice 指标。
- 滑动窗口推理。
- 可重复性训练。
unet_segmentation_3d_ignite
此笔记本是基于合成数据集的 3D 分割端到端训练和评估示例。该示例是 PyTorch Ignite 程序,展示了 MONAI 的几个关键功能,特别是医学领域特定的变换和用于分析的事件处理程序(日志记录、TensorBoard、MLFlow 等)。
COVID 19-20 挑战基线
此文件夹提供了 2020 年 COVID-19 肺 CT 病变分割挑战赛(MICCAI 认可的活动)的训练、验证和推理的简单基线方法。
unetr_btcv_segmentation_3d
此笔记本展示了如何使用 BTCV 挑战数据集构建基于 UNETR 的多器官分割任务的训练工作流。
unetr_btcv_segmentation_3d_lightning
此教程展示了如何将 MONAI 与 PyTorch Lightning 框架结合使用,以使用 BTCV 挑战数据集构建 UNETR 的多器官分割任务的训练工作流。
2D 配准
使用 MedNIST 进行配准
此笔记本展示了基于学习的 64 x 64
X 光手部图像的仿射配准的快速演示。
3D 配准
使用配对肺 CT 进行 3D 配准
此教程展示了如何使用 MONAI 配准在不同时间点为单个患者获取的肺 CT 体积。
使用未配对脑 MR 进行 3D 配准
此教程展示了如何开始使用 MONAI 提 示例是用 MONAI 工作流构建的,主要包括:训练器/评估器、处理器、后处理变换等。
3D 图像变换
本笔记本演示了对体积图像的变换。
2D 推理 3D 体积
本教程演示了当需要将 3D 体积输入逐片提供给 2D 模型并最终聚合成 3D 体积时,如何使用 monai 的 SlidingWindowInferer
。
自动编码器 MedNIST
本教程使用 MedNIST 手部 CT 扫描数据集来演示 MONAI 的自动编码器类。自动编码器用于身份编码/解码(即输入什么就应返回什么),并演示其在去模糊和去噪方面的使用。
批量输出变换
教程解释并展示如何设置处理器的 batch_transform
和 output_transform
以与 MONAI 引擎一起工作。
弯曲能量扩散损失笔记
本笔记本演示了何时以及如何计算归一化弯曲能量和扩散损失。
计算指标
示例展示了如何使用 PyTorch 多处理支持从保存的预测和标签中计算指标。
CSV 数据集
教程展示了 CSVDataset
和 CSVIterableDataset
的使用,加载多个 CSV 文件并执行后处理逻辑。
拆解批次
教程展示了如何拆解批次数据以简化后处理变换并执行更灵活的后续操作。
图像数据集
笔记本介绍了 monai.data.ImageDataset
模块的基本用法。
dynUNet 教程
本教程展示了如何在所有 10 个 decathlon 数据集上训练 3D 分割任务,使用 MONAI 中 dynUNet 的重新实现。
集成第三方变换
本教程展示了如何将第三方变换集成到 MONAI 程序中。主要展示来自 BatchGenerator、TorchIO、Rising 和 ITK 的变换。
逆变换和测试时增强
本笔记本演示了可逆变换的使用,然后利用逆变换进行测试时增强。
分层学习率
本笔记本演示了如何选择或过滤出预期的网络层并设置自定义学习率值。
学习率查找器
本笔记本演示了如何使用 LearningRateFinder
API 来调整网络的学习率值。
加载医学图像
本笔记本介绍了如何轻松加载 MONAI 中不同格式的医学图像并执行许多附加操作。
MedNIST GAN 教程
本笔记本说明了如何使用 MONAI 从随机输入张量训练网络以生成图像。使用一个简单的 GAN 来处理具有单独生成器和判别器网络的任务。
MedNIST GAN 工作流字典版
本笔记本展示了 GanTrainer
,这是一个 MONAI 工作流引擎,用于模块化对抗学习。使用 MedNIST 手部 CT 扫描数据集训练医学图像重建网络。字典版本。
MedNIST GAN 工作流数组版
本笔记本展示了 GanTrainer
,这是一个 MONAI 工作流引擎,用于模块化对抗学习。使用 MedNIST 手部 CT 扫描数据集训练医学图像重建网络。数组版本。
交叉验证模型集成
本教程展示了如何利用 CrossValidation
、EnsembleEvaluator
、MeanEnsemble
和 VoteEnsemble
模块在 MONAI 中设置交叉验证和集成程序。
NIfTI 读取示例
演示读取 NIfTI 文件并迭代从中加载的体积图像块。
网络 API
本教程说明了灵活的网络 API 和实用程序的使用。
后处理变换
本笔记本展示了基于脾脏分割任务模型输出的几种后处理变换的使用。
公共数据集
本笔记本展示了如何快速基于 MedNISTDataset
和 DecathlonDataset
设置训练工作流,以及如何创建新的数据集。
TCIA CSV 处理
本笔记本展示了如何从 CSV 文件中使用 CSVDataset 加载 TCIA 数据,并提取 TCIA 数据的信息以基于 REST API 获取 DICOM 图像。
2D 变换演示
本笔记本演示了对组织学图像的图像变换。
UNet 输入尺寸约束
本教程展示了如何为 MONAI UNet 确定合理的输入数据空间尺寸,该网络不仅支持残差单元,还可以使用比基本 UNet 实现更多的超参数(如 strides
、kernel_size
和 up_kernel_size
)。
TorchIO, MONAI, PyTorch Lightning
本笔记本演示了如何将 PyTorch 生态系统中的三个库结合使用,以对医学分割十项全能中的脑部 MRI 进行海马体分割。
变分自动编码器 MedNIST
本教程使用 MedNIST 扫描(或 MNIST)数据集来演示 MONAI 的变分自动编码器类的用法。
可解释性
此文件夹中的教程演示了 MONAI 的模型可视化和可解释性功能。目前,它包括 3D 分类模型可视化和分析的类激活映射和遮挡敏感性。
变换可视化
本教程展示了在变换增强期间对 3D 图像进行可视化的几种方法。
Auto3DSeg
此文件夹展示了如何以最少的输入运行全面的 Auto3DSeg 管道,并自定义 Auto3DSeg 模块以满足不同用户的需求。
自监督学习
自监督预训练
本教程展示了如何构建自监督学习的训练工作流,其中使用了未标注的数据。教程展示了如何在 TCIA 数据集中训练一个未标注的 Covid-19 病例模型。
基于自监督预训练的微调
本教程展示了如何利用自监督学习框架中未标注数据的预训练权重。教程展示了如何使用预训练权重来训练一个多类别 3D 分割模型。
生成模型
3D 潜在扩散模型
本教程展示了 3D 潜在扩散模型的训练和验证用例。
2D 潜在扩散模型
本教程展示了 2D 潜在扩散模型的训练和验证用例。