当前位置: 首页 > article >正文

代码的解读——自用

代码来自:https://github.com/ChuHan89/WSSS-Tissue?tab=readme-ov-file

借助了一些人工智能

run_pipeline.sh

功能总结

该脚本用于执行一个 弱监督语义分割(WSSS) 的完整流程,包含三个阶段:

  1. Stage1:训练一个基于 ResNet38 的多标签分类模型,生成图像级标签。

  2. 生成伪掩码(PM):利用 Stage1 的模型生成 3 种级别的伪分割掩码。

  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


潜在注意事项

  1. 路径依赖:需确保 datasets/checkpoints/logs/ 和 init_weights/ 目录存在且结构正确。

  2. 预训练权重deeplab-resnet.pth.tar 需事先下载并放入 init_weights/

  3. GPU 支持:代码默认可能使用 GPU,如需 CPU 训练需查看 Python 代码内部是否支持。

  4. 日志监控:可通过 tail -f logs/stage1_log_on_$DATASET.txt 实时监控训练进度。

流程图

graph TD
    A[Stage1: 训练分类模型] --> B[生成伪掩码 PM]
    B --> C[Stage2: 训练分割模型]


http://www.kler.cn/a/568816.html

相关文章:

  • 如何把网络ip改为动态:全面指南
  • 当JMeter遇见AI:性能测试进入智能时代(附实战案例)
  • 链表OJ(十二)23. 合并 K 个升序链表 困难 优先级队列中存放指针结点
  • 计算器算法题
  • Maven 与持续集成(CI)/ 持续部署(CD)(二)
  • EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案
  • 前端正则表达式完全指南:从入门到实战
  • (贪心 合并区间)leetcode 56
  • 系统或软件的可靠性(Reliability)
  • 面试之《前端开发者需要关注哪些性能指标?》
  • 多元数据直观表示(R语言)
  • 如何学习人工智能(如Transformer架构和DeepSeek等)
  • 24、Java 集合
  • DOM HTML:深入理解与高效运用
  • 3月2日 C++日常习题测试一答案
  • 电商平台项目需求文档(精简版)
  • c#编程,使用 事件 编程入门
  • C++(Qt)软件调试---Windows 性能分析器WPA(28)
  • [KEIL]单片机技巧 01
  • 如何用生成式AI工具(如GitHub Copilot)提升编程效率:实战技巧与避坑指南