尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Vesuvius-Grandprize-Winner训练管道完全教程:PyTorch Lightning加WandB监控的墨迹检测实战

Vesuvius-Grandprize-Winner训练管道完全教程:PyTorch Lightning加WandB监控的墨迹检测实战 Vesuvius-Grandprize-Winner训练管道完全教程PyTorch Lightning加WandB监控的墨迹检测实战【免费下载链接】Vesuvius-Grandprize-Winner项目地址: https://gitcode.com/gh_mirrors/ve/Vesuvius-Grandprize-WinnerVesuvius-Grandprize-Winner 是 Vesuvius Challenge 2023 大奖赛冠军方案的官方开源实现使用 PyTorch Lightning 加 WandB 监控构建了一套完整的 3D 墨迹检测训练管道从赫库兰尼姆碳化卷轴的 CT 扫描体数据中自动定位并还原两千年前的古代墨迹。本教程面向新手带你从零搭建环境、准备数据、理解训练流程到跑通推理。 这个项目在做什么CT 体数据里的墨迹检测公元 79 年维苏威火山喷发庞贝城边的赫库兰尼姆纸莎草卷轴被碳化卷曲根本无法展开。科学家用 X 射线 CT 对卷轴做高分辨率扫描卷成一卷卷的薄片layer。墨水含有铅和铁密度比纸高因此在 CT 片上会“浮”出来。上面的图就是训练目标之一——黑底白字白色部分即人工标注的墨迹 mask。项目最终的冠军模型是TimeSformer Small带时空分离注意力的 Transformer另配有两个辅助架构预训练的ResNet3D-101和带非局部块non-local block的I3D。模型输入是连续的 26 层 CT 切片堆叠成的“视频”输出是每个像素的墨迹概率。 Docker 一键起步最快搭建 GPU 训练环境项目提供了开箱即用的 Dockerfile基于官方 PyTorch CUDA 镜像2.0.1 CUDA 11.7并且镜像构建时就已自动下载好冠军模型权重timesformer_weights.ckpt省去了手动配置的麻烦。# 构建镜像 docker build -t youssef_gp . # 启动容器把本地卷轴数据目录挂载进 /workspace/train_scrolls docker run --gpus all --shm-size150g -it \ -v /your-path-to-train-scrolls:/workspace/train_scrolls youssef_gp两点提醒--shm-size150g很重要训练时 16 个 worker 线程会并行读取大体量切片共享内存给小了会直接崩溃依赖清单在requirements.txt中核心是pytorch-lightning2.0.9、timesformer-pytorch、segmentation_models_pytorch、albumentations和wandb。⬇️ 数据准备下载卷轴卷体与墨迹标注训练数据是若干“片段”fragment每个片段一个目录包含layers/65 张 CT 切片和对应的墨迹标注图。两步走下载卷体执行download.sh脚本用 rclone 从官方服务器拉取全部片段的切片与 mask交互式输入账号密码传播标注执行python prepare.py它会把仓库根目录all_labels/下的墨迹标注*_inklabels.png/*_inklabels.tiff复制到对应片段文件夹里并做 sanity check 确认每个片段三层数据切片、墨迹标注、区域 mask齐全。标注文件集中存放在all_labels/目录共 40 余个片段prepare.py的run_sanity_checks()约 43-54 行会逐一断言文件名存在数据没下全时这里会第一时间报错是很好的排障入口。 训练管道拆解从 CT 切片到损失函数主训练脚本是train_timesformer_og.py整个流程可以拆成 5 步读数据read_image_mask()从每个片段的layers/读取第 17-42 层共 26 张切片in_chans 26对部分方向特殊的片段自动翻转时间轴images[:,:,::-1]并把灰度裁剪到 0-200切块先按 256×256 的 tile 滑动步长 32再在 tile 内切成 64×64 的训练 patch——只保留在有效 mask 内、且不是全空的块验证集则额外记录每个 patch 的原图坐标用于最后拼回整图数据增强Albumentations 管道包括随机翻转、亮度对比度、ShiftScaleRotate、高斯噪声/模糊/运动模糊、CoarseDropout还有一个独家的fourth_augment()约 253-273 行随机裁剪 18-26 个时间层并打乱拼回相当于“时间维 Cutout”让模型不能依赖固定层序前向与损失TimeSformer 主干dim512, patch_size16, depth8, heads6见约 317-329 行输出 4×4 概率图损失用smp.losses的 DiceLoss 与 SoftBCEWithLogitsLoss 各 50% 加权优化器AdamWlr3e-5 GradualWarmup 预热 余弦退火get_scheduler()约 401-407 行。⚡ PyTorch Lightning 核心配置多卡、混合精度与自动检查点pl.Trainer的构造参数约 443-458 行是这份管道的精华值得新手逐条对照参数取值作用accelerator/devicesgpu/-1自动使用所有可见 GPUprecision16-mixedAMP 混合精度显存与速度双赢strategyddp_find_unused_parameters_true多卡 DDP 容错TimeSformer 有分支参数gradient_clip_val1.0norm梯度裁剪防止 loss 爆 NaNcallbacksModelCheckpoint按train/total_loss保留最优 epoch 的权重模型被封装成RegressionPLModel(pl.LightningModule)训练/验证逻辑、优化器全部交给 Lightning 管理训练循环本身只有几十行这正是 Lightning 的价值把工程样板交给框架。 WandB 监控损失曲线与验证 mask 实时可视化脚本通过WandbLogger(projectvesivus)创建实验约 440 行并wandb_logger.watch(model)记录参数与梯度。每轮验证结束后on_validation_epoch_end()会把所有 patch 的预测概率按原图坐标拼回成整幅验证 mask 图直接作为图片日志上传到 WandB——你不用跑推理就能在网页上看到模型当前“看”到的墨迹长什么样是调试分割模型最直观的手段。训练时指定不同的valid_id验证片段即可做交叉验证脚本用循环对每个验证折各训一轮约 414-418 行。 一条命令推理对新片段跑墨迹检测训练完成后或直接用镜像里预置的权重推理脚本inference_timesformer.py支持命令行参数python inference_timesformer.py \ --model_path timesformer_weights.ckpt \ --segment_path train_scrolls \ --segment_id 20231210121321它的工程细节同样值得学习按 64×64 patch、步长tile_size // 3做重叠推理每个预测再乘以 21×21 高斯核gkern()约 53-58 行加权叠加消除 patch 边界痕迹支持--gpus多卡 DataParallel 与--out_path直接导出 PNG。多片段结果还可以用compose.py按坐标拼接成整卷长图。 关键代码路径清单train_timesformer_og.py/train_timesformer_deduped.pyTimeSformer 主训练脚本Lightning WandBtrain_resnet3d.py、64x64_256stride_i3d.pyResNet3D 与 I3D 两套辅助架构的训练脚本models/resnetall.py、models/i3dallnl.py、models/non_local_helper.pyResNet3D、I3D 与非局部模块定义inference_timesformer.py、infer.py推理与逐片段预测入口prepare.py、download.sh数据传播与下载Dockerfile、requirements.txt环境与依赖all_labels/全部片段的墨迹标注图✅ 新手常见问题OOM 或 worker 崩溃加大--shm-size或把CFG.num_workers从 16 调小loss 出现 NaN脚本内置了 NaN 检测打印同时gradient_clip_val1.0已做保护注意不要随意调高学习率微调用 3e-5数据校验失败先看prepare.py的 sanity check 输出确认切片、_inklabels.png、_mask.png三件套齐全部分旧片段目录带_superseded后缀代码已自动兼容。照着这条管道走一遍——Docker 起环境、脚本传标注、Lightning 跑训练、WandB 盯曲线、一条命令出结果——你就完整掌握了冠军方案从数据到推理的全部工程细节。【免费下载链接】Vesuvius-Grandprize-Winner项目地址: https://gitcode.com/gh_mirrors/ve/Vesuvius-Grandprize-Winner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表