Pytorch 医学图像分割
阅读中文介绍:点击这里!
注意事项
我们计划在近期对代码进行重大更新,如果您有任何建议,请随时发送邮件至我的邮箱或在 issue 中提出。
最近更新
- 2021.1.8 发布了训练和测试代码。
- 2021.2.6 在Shanshan Li的帮助下修复了 dice 计算中的一个 bug。
- 2021.2.24 发布了视频教程(https://www.bilibili.com/video/BV1gp4y1H7kq/)。
- 2021.5.16 修复了 Unet3D 实现中的一个 bug。
- 2021.5.16 发布了评估指标代码。
- 2021.6.24 所有参数现在可以在 hparam.py 中调整。
- 2021.7.7 现在您可以参考 Pytorch-Medical-Classification 中的医学分类。
- 2022.5.15 现在您可以参考 SSL-For-Medical-Segmentation 中医学分割的半监督学习。
- 2022.5.17 我们更新了训练和推理代码,并修复了一些 bug。
环境要求
- pytorch1.7
- torchio<=0.18.20
- python>=3.6
注意事项
- 您可以修改 hparam.py 来决定是进行 2D 还是 3D 分割,以及是否进行多类别分割。
- 我们提供了几乎所有 2D 和 3D 分割算法。
- 本仓库兼容几乎所有医学数据格式(如 nii.gz, nii, mhd, nrrd 等),只需在配置的 hparam.py 中修改 fold_arch。我建议您在使用前将源图像和标签图像都转换为相同的类型,其中标签用 1 标记,而不是 255。
- 如果您想使用多类别程序,请自行修改相应的代码。我无法识别您的具体类别。
- 无论是 2D 还是 3D,本项目都使用patch进行处理。因此,图像不必严格保持相同大小。但在 2D 中,您应该将 patch 设置得足够大。
准备数据集
示例1
如果您的源数据集是:
source_dataset
├── source_1.mhd
├── source_1.zraw
├── source_2.mhd
├── source_2.zraw
├── source_3.mhd
├── source_3.zraw
├── source_4.mhd
├── source_4.zraw
└── ...
而您的标签数据集是:
label_dataset
├── label_1.mhd
├── label_1.zraw
├── label_2.mhd
├── label_2.zraw
├── label_3.mhd
├── label_3.zraw
├── label_4.mhd
├── label_4.zraw
└── ...
那么您应该在 hparam.py 中将 fold_arch 修改为 *.mhd,source_train_dir 修改为 source_dataset,label_train_dir 修改为 label_dataset。
示例2
如果您的源数据集是:
source_dataset
├── 1
├── source_1.mhd
├── source_1.zraw
├── 2
├── source_2.mhd
├── source_2.zraw
├── 3
├── source_3.mhd
├── source_3.zraw
├── 4
├── source_4.mhd
├── source_4.zraw
└── ...
而您的标签数据集是:
label_dataset
├── 1
├── label_1.mhd
├── label_1.zraw
├── 2
├── label_2.mhd
├── label_2.zraw
├── 3
├── label_3.mhd
├── label_3.zraw
├── 4
├── label_4.mhd
├── label_4.zraw
└── ...
那么您应该在 hparam.py 中将 fold_arch 修改为 */*.mhd,source_train_dir 修改为 source_dataset,label_train_dir 修改为 label_dataset。
训练
- 不使用预训练模型
将 hparam.train_or_test 设置为 'train'
python main.py
- 使用预训练模型
将 hparam.train_or_test 设置为 'train'
python main.py -k True
推理
- 测试
将 hparam.train_or_test 设置为 'test'
python main.py
示例
教程
已完成
网络
- 2D
- unet
- unet++
- miniseg
- segnet
- pspnet
- highresnet(从 https://github.com/fepegar/highresnet 复制,感谢 fepegar 的慷慨分享!)
- deeplab
- fcn
- 3D
- unet3d
- residual-unet3d
- densevoxelnet3d
- fcn3d
- vnet3d
- highresnert(从 https://github.com/fepegar/highresnet 复制,感谢 fepegar 的慷慨分享!)
- densenet3d
- unetr (从 https://github.com/tamasino52/UNETR 复制)
评估指标
- metrics.py 用于评估您的结果
待办事项
- 数据集
- 基准测试
- nnunet
顺便说一下
这个项目还不完善,仍存在许多问题。如果您正在使用这个项目并想给作者一些反馈,可以发送邮件至 我的邮箱。
致谢
这个仓库是医学图像分割在3D和2D上的非官方PyTorch实现,主要基于 MedicalZooPytorch 和 torchio。感谢以上仓库。本项目在 肖若秀教授、宋爽教授 和 陈诚博士 的指导下完成。感谢 张有明、高代恒、张杰、陶星、姜伟利 和 李珊珊 给予的所有帮助。