SSL4MIS:医疗影像分析的半监督学习解决方案
构建项目环境
如何获取项目代码?
获取SSL4MIS项目代码的方式非常简单,只需在终端执行以下命令:
git clone https://gitcode.com/gh_mirrors/ss/SSL4MIS # 克隆项目仓库到本地
项目工具箱如何组织?
SSL4MIS项目的目录结构就像一个精心整理的工具箱,每个文件夹都有其特定功能:
graph TD
A[SSL4MIS] --> B[code]
A --> C[data]
A --> D[LICENSE]
A --> E[README.md]
A --> F[environment.yml]
B --> G[augmentations]
B --> H[configs]
B --> I[dataloaders]
B --> J[networks]
B --> K[pretrained_ckpt]
B --> L[utils]
C --> M[ACDC]
C --> N[BraTS2019]
🔧 功能说明:
code/:核心代码区,包含模型、数据加载和训练脚本data/:数据存储区,存放医疗影像数据集environment.yml:环境配置文件,记录项目依赖
📌 注意事项:项目中没有docs/和experiments/目录,相关配置文件位于code/configs/下
如何配置运行环境?
项目使用Anaconda环境配置,执行以下命令即可搭建:
conda env create -f environment.yml # 根据配置文件创建环境
conda activate ssl4mis # 激活环境(环境名称以实际为准)
小贴士:如果创建环境时遇到网络问题,可以尝试更换conda源为国内镜像
启动训练流程
训练脚本如何选择?
在code/目录下提供了多种训练策略的脚本,命名格式为train_<策略名称>_<维度>.py,例如:
train_fully_supervised_2D.py:2D全监督训练train_mean_teacher_3D.py:3D_mean teacher半监督训练train_fixmatch_cta.py:基于CTAugment的数据增强训练
🔧 功能说明:脚本名称直观反映了训练策略和数据维度,新手建议从全监督脚本开始尝试
如何执行训练命令?
项目提供了便捷的bash脚本一键启动训练,以ACDC数据集为例:
cd code # 进入代码目录
bash train_acdc_unet_semi_seg.sh # 执行ACDC半监督训练脚本
📌 注意事项:运行前需确保data/ACDC/目录下存在正确格式的数据集
训练过程中需要关注哪些指标?
训练过程中主要关注以下指标:
- Dice系数:衡量分割结果与金标准的相似度,越接近1越好
- 损失值:包括监督损失和半监督损失,应总体呈下降趋势
- 准确率:像素级分类准确率,反映整体分割效果
小贴士:建议使用TensorBoard可视化训练过程,需在训练命令中添加--tensorboard参数
配置实践技巧
配置文件在哪里?
项目的配置文件位于code/configs/目录下,目前提供:
swin_tiny_patch4_window7_224_lite.yaml
🔧 功能说明:该文件配置了Swin Transformer模型的参数,包括输入尺寸、通道数和注意力机制设置
默认参数与推荐设置有何区别?
以关键参数为例进行对比:
| 参数 | 默认值 | 推荐设置 | 适用场景 |
|---|---|---|---|
| batch_size | 8 | 4 | 显存不足时 |
| learning_rate | 0.001 | 0.0005 | 训练不稳定时 |
| epochs | 100 | 200 | 小数据集 |
📌 注意事项:修改配置后需确保与训练脚本中的参数没有冲突
如何定制自己的实验参数?
创建新的配置文件步骤:
- 复制
swin_tiny_patch4_window7_224_lite.yaml - 重命名为
<自定义名称>.yaml - 修改以下关键参数:
data_path: "../data/ACDC" # 数据集路径 model_name: "swin_unet" # 模型名称 batch_size: 4 # 批次大小 lr: 0.0005 # 学习率 - 在训练脚本中引用新配置:
--config configs/<自定义名称>.yaml
常见问题解决
问题1:运行时提示"CUDA out of memory"
解决方案:
- 减小
batch_size参数,从默认8改为4或2 - 使用
--gradient_accumulation_steps参数累积梯度 - 降低输入图像分辨率,在数据加载器中调整
resize参数
问题2:训练损失不下降
解决方案:
- 检查学习率是否过高,尝试降低10倍
- 确认数据预处理是否正确,特别是标签格式
- 检查是否使用了正确的损失函数,医疗影像分割推荐使用Dice损失
问题3:测试时输出全为背景
解决方案:
- 检查模型权重是否正确加载,确认
--pretrained路径正确 - 验证测试集数据格式与训练集一致
- 检查阈值设置是否合理,可尝试降低分割阈值
模型与网络架构
有哪些可用的网络模型?
code/networks/目录提供了多种分割网络:
unet.py:经典U-Net架构,适用于2D医疗影像分割unet_3D.py:3D版本U-Net,处理体积医学图像swin_transformer_unet_skip_expand_decoder_sys.py:基于Transformer的U-Net变体,具有更强的上下文捕捉能力attention_unet.py:加入注意力机制的U-Net,提升小目标分割效果
🔧 功能说明:网络工厂文件net_factory.py和net_factory_3d.py提供了统一的模型创建接口
如何选择适合的网络?
| 网络类型 | 优势 | 适用场景 |
|---|---|---|
| 2D U-Net | 速度快,显存占用低 | 二维切片数据,如X光片 |
| 3D U-Net | 保留空间信息 | volumetric数据,如CT/MRI |
| Swin Transformer | 长距离依赖建模 | 复杂结构分割 |
小贴士:对于新手上手,建议从2D U-Net开始,熟悉后再尝试Transformer模型
数据准备指南
数据文件夹应该如何组织?
项目支持ACDC和BraTS2019两个数据集,标准结构如下:
data/
├── ACDC/
│ ├── test.list # 测试集文件列表
│ ├── train.list # 训练集文件列表
│ └── val.list # 验证集文件列表
└── BraTS2019/
├── test.txt # 测试集文件列表
├── train.txt # 训练集文件列表
└── val.txt # 验证集文件列表
📌 注意事项:列表文件中需包含图像和标签的完整路径
如何准备自己的数据集?
- 按照ACDC数据集的格式组织数据
- 创建训练、验证、测试集的列表文件
- 在配置文件中修改
data_path指向新数据集 - 根据数据特点调整
dataloaders/dataset.py中的预处理代码
小贴士:医疗数据通常需要进行归一化处理,可在dataset.py中添加z-score或min-max归一化
评估与测试
如何评估模型性能?
使用测试脚本进行模型评估:
cd code
python test_3D.py --model_path pretrained_ckpt/best_model.pth # 3D模型测试
# 或
python test_2D_fully.py --model_path pretrained_ckpt/best_model.pth # 2D模型测试
评估结果将包括Dice系数、交并比(IoU)和豪斯多夫距离等指标
测试结果如何可视化?
测试脚本会生成分割结果图像,默认保存在results/目录下(需手动创建)。可通过修改test_3D_util.py或test_urpc_util.py中的可视化参数调整输出格式。
📌 注意事项:可视化可能会增加内存占用,建议先在小批量数据上测试
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00