分享一个用于医学图像分割 的开源框架,支持处理 2D 和 3D 医学数据,并集成了多种流行的分割网络架构。本项目旨在简化研究人员在医学图像分割领域的开发和实验过程,具有模块化、可扩展性强的特点,能够快速定制和测试各种分割模型。

集成模型 Swin UNet、MissFormer、TransUNet、Swin UNetr、UNETR、nnUNet、nnFormer

该框架支持的主要功能包括:

  • 2D 与 3D 医学数据的处理,如CT、MRI、自然图片数据等。
  • 流行的分割网络集成:包括 U-Net、3D U-Net、Attention U-Net、ResUNet、Swin UNet、MissFormer、TransUNet、Swin UNetr、UNETR、nnUNet、nnFormer 等(目前正在拓展中)。
  • 高扩展性:可以轻松集成新模型和数据处理方法。
  • 完整的训练与测试流程,包括数据预处理、训练、验证、评估等模块。

目录结构

DeepMedSeg/
├── 2d/                             # 2D医学图像分割部分
│   ├── data/                       # 存放2D切片数据
│   ├── networks/                   # 2D分割模型
│   ├── other_networks/             # 其他扩展的网络
│   ├── utils/                      # 2D工具函数
│   ├── test.py                     # 2D分割的测试代码
│   ├── tester.py                   
│   ├── trainer.py                  
│   └── train.py                    # 2D分割的训练代码
├── 3d/                             # 3D医学图像分割部分
│   ├── lib/                        # 存放3D分割相关的库
│   ├── networks/                   # 3D分割模型
│   ├── dataset_AMOS.json           # AMOS数据集配置文件
│   ├── dataset_FeTA.json           # FeTA数据集配置文件
│   ├── dataset_FLARE.json          # FLARE数据集配置文件
│   ├── load_datasets_transforms.py # 数据加载及增强
│   ├── main_finetune.py            # 3D模型微调代码
│   ├── main_train.py               # 3D模型训练代码
│   ├── test_seg.py                 # 3D分割测试代码
├── README.md                       # 项目说明文件
├── requirements.txt                # Python依赖包文件
└── data                            # 训练数据

安装指南

环境依赖

请确保您的系统安装了以下依赖:

  • Python 3.7+
  • PyTorch 1.8+
  • torchvision
  • numpy
  • matplotlib
  • SimpleITK
  • scikit-learn
  • albumentations

安装步骤

  1. 克隆项目到本地:

    git clone https://github.com/your-username/DeepMedSeg.git
    cd DeepMedSeg
  2. 安装依赖:

    pip install -r requirements.txt

数据集准备

项目支持多个公开医学数据集,支持对3D数据的切片

Synapse、AMOS、FLARE

此项目支持以上数据集的二维分割与三维分割,二维分割3D数据的深度切片

将以上数据集按照如下方式组织以支持三维分割

root_dir/
├── imagesTr
├── labelsTr
├── imagesVal
├── labelsVal
├── imagesTs

对于二维分割 ,运行以下命令进行预处理3D数据(以Synapse数据集为例):

cd data/Synapse
python Slice_Synapse.py

此后会得到切片后的2D数据,请按照以下结构组织切片数据:

data/synapse
├── Synapse/synapse_2d/
│   ├── train_npz_new/ 
│   ├── test_vol_h5_new/
│   ├── test_h5_new/

ACDC

以上下载链接为预处理后的数据,将ACDC数据集下载后并放到data/ACDC下面


使用说明

2D 医学图像分割

训练

启动2D模型的训练:

cd 2d
python train.py --args.model <网络名称>
测试

训练完成后,测试2D模型:

python test.py --args.model <网络名称> --pretrained_pth <权重路径>

3D 医学图像分割

训练

使用3D模型进行训练:

注意:此部分参考自3DUX-Net,修复了monai的裁剪问题,更多的细节请移步原作者主页 3DUX-Net

cd 3d
python main_train.py --root <root_folder> --output <output_folder> \
--dataset flare --network 3DUXNET --mode train --pretrain False \
--batch_size 1 --crop_sample 2 --lr 0.0001 --optim AdamW --max_iter 40000 \ 
--eval_step 500 --gpu 0 --cache_rate 0.2 --num_workers 2
测试

测试3D分割模型:

python test_seg.py --root <path_to_image_folder> --output <path_to_output> \
--dataset flare --network 3DUXNET --trained_weights <path_to_trained_weights> \
--mode test --sw_batch_size 4 --overlap 0.7 --gpu 0 --cache_rate 0.2

模型集成

2D 网络

2d/other_networks/ 文件夹中包含了各种2D分割模型,如U-Net、Swin UNet等。您可以根据需要修改或添加新的网络。

3D 网络

3d/networks/ 文件夹用于存储3D模型,如3D U-Net、nnFormer等。您可以在此处扩展新的3D模型架构。

可视化代码在相邻仓库

代码有问题欢迎小伙伴们联系我,后续会上传半监督的分割框架
GitHub - aixiaobaikkk/DeepMedSeg

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐