代码的解读——自用
- 开源代码
- 2025-09-18 17:33:01

代码来自: github /ChuHan89/WSSS-Tissue?tab=readme-ov-file
借助了一些人工智能
run_pipeline.sh
功能总结该脚本用于执行一个 弱监督语义分割(WSSS) 的完整流程,包含三个阶段:
Stage1:训练一个基于 ResNet38 的多标签分类模型,生成图像级标签。
生成伪掩码(PM):利用 Stage1 的模型生成 3 种级别的伪分割掩码。
Stage2:使用伪掩码训练 DeepLab v3+ 分割模型,完成像素级分割任务。
代码解释 1. 设置数据集变量 DATASET=luad DATASETNAME=LUAD-HistoSeg作用:定义数据集变量。DATASET 是数据集的缩写(用于代码内部标识),DATASETNAME 是数据集文件夹的实际名称。
用户需修改:替换这两个变量以切换不同数据集(例如 bcss 和 BCSS-WSSS)。
2. Stage1: 训练分类模型 python 1_train_stage1.py \ --dataset $DATASET \ --trainroot datasets/$DATASETNAME/train/ \ --testroot datasets/$DATASETNAME/test/ \ --max_epoches 20 \ >> logs/stage1_log_on_$DATASET.txt参数解析:
--dataset:指定数据集标识符(与代码内部逻辑匹配)。
--trainroot/--testroot:训练集和测试集的路径。
--max_epoches:最大训练轮数(20轮)。
输出:模型权重保存为 checkpoints/stage1_checkpoint_trained_on_$DATASET.pth,日志重定向到 logs/stage1_log_on_$DATASET.txt。
3. 生成伪掩码(PM) python 2_generate_PM.py \ --dataroot datasets/$DATASETNAME \ --dataset $DATASET \ --weights checkpoints/stage1_checkpoint_trained_on_$DATASET.pth \ >> logs/stagePM_log_on_$DATASET.txt参数解析:
--dataroot:数据集根目录(包含训练和测试数据)。
--weights:Stage1 训练好的分类模型权重路径。
作用:利用分类模型生成 3 种级别的伪分割掩码(如 CAM、边界增强掩码等)。
输出:伪掩码保存在数据集目录中,日志写入 logs/stagePM_log_on_$DATASET.txt。
4. Stage2: 训练分割模型 python 3_train_stage2.py \ --dataset $DATASET \ --dataroot datasets/$DATASETNAME \ --epochs 30 \ --Is_GM False \ --resume_stage1 checkpoints/stage1_checkpoint_trained_on_$DATASET.pth \ --resume init_weights/deeplab-resnet.pth.tar \ >> logs/stage2_log_on_$DATASET.txt参数解析:
--epochs:训练轮数(30轮)。
--Is_GM:是否使用全局模型(此处为 False)。
--resume_stage1:加载 Stage1 的模型权重(用于初始化部分参数)。
--resume:DeepLab v3+ 的预训练权重路径(ImageNet 预训练)。
作用:使用伪掩码训练 DeepLab v3+ 分割模型,实现像素级预测。
输出:分割模型权重保存,日志写入 logs/stage2_log_on_$DATASET.txt。
潜在注意事项
路径依赖:需确保 datasets/、checkpoints/、logs/ 和 init_weights/ 目录存在且结构正确。
预训练权重:deeplab-resnet.pth.tar 需事先下载并放入 init_weights/。
GPU 支持:代码默认可能使用 GPU,如需 CPU 训练需查看 Python 代码内部是否支持。
日志监控:可通过 tail -f logs/stage1_log_on_$DATASET.txt 实时监控训练进度。
流程图 graph TD A[Stage1: 训练分类模型] --> B[生成伪掩码 PM] B --> C[Stage2: 训练分割模型]上一篇
c语言getchar