
从碎片到整卷Vesuvius-Grandprize-Winner多片段预测拼合为24万像素Scroll全卷图的完整工作流【免费下载链接】Vesuvius-Grandprize-Winner项目地址: https://gitcode.com/gh_mirrors/ve/Vesuvius-Grandprize-WinnerVesuvius-Grandprize-Winner 是 2023 年 Vesuvius Challenge维苏威挑战赛大奖的官方获奖开源方案核心功能是用 AI 墨水检测识别碳化的维苏威卷轴碎片上的古希腊文字并把多个碎片的预测结果拼合成一张约 24 万像素宽的 Scroll 全卷图。本文带你完整走一遍碎片预测 → 整卷拼合的工作流新手也能照着跑通。项目是做什么的公元 79 年维苏威火山爆发将庞贝附近的赫库兰尼姆卷轴全部碳化卷起来 2000 多年无法打开。挑战赛的目标就是用 CT 扫描数据 深度学习无接触读卷️墨水检测在碎片的 3D CT 体数据中逐像素预测墨水位置️多架构模型冠军方案的主模型是 TimeSformer-Small时空分割注意力另含 ResNet3D-101 与带非局部块的 I3D源码分别在 train_timesformer_og.py、models/resnetall.py、models/i3dallnl.py全卷拼合把数十个碎片碎片的预测图按坐标拼回一张整卷图下图就是 Scroll 外层recto的墨水识别标签全卷图白色笔画即模型识别出的文字痕迹全卷图工作流一览5 步流水线整个流程可以拆成 5 步每步都有对应脚本步骤做什么关键文件1️⃣ 环境Docker 一键构建权重已预装Dockerfile2️⃣ 下载拉取各碎片 CT 层数据与掩码download.sh3️⃣ 准备把墨水标签分发到碎片目录并做完整性检查prepare.py4️⃣ 预测单碎片 3D 墨水检测输出逐碎片预测图inference_timesformer.py5️⃣ 拼合按 x/y 坐标、旋转角粘贴到超大画布compose.pyDocker 快速部署最快环境搭建方法项目提供了开箱即用的 Dockerfile基于pytorch:2.0.1-cuda11.7构建时会自动下载冠军 TimeSformer 权重timesformer_weights.ckpt省去手动配置的麻烦。git clone https://gitcode.com/gh_mirrors/ve/Vesuvius-Grandprize-Winner cd Vesuvius-Grandprize-Winner docker build -t youssef_gp . docker run --gpus all --shm-size150g -it \ -v /your-path-to-train-scrolls:/workspace/train_scrolls youssef_gp进入容器后先拉数据、再分发标签详见下两节。想重新训练模型时直接运行python train_timesformer_og.py即可。下载碎片数据并分发墨水标签第 1 步下载碎片体数据download.sh使用 rclone 从官方数据服务器拉取每个碎片的layers/约 65 层 CT 切片和*_mask.png碎片有效区域掩码并自动处理_superseded重扫替代版本的命名./download.sh # 交互输入用户名/密码第 2 步把 all_labels 标签分发到训练目录仓库内置了 all_labels/ 目录保存着冠军方案人工校对了约 15 轮的墨水标签。运行 prepare.py 后它会把每个*_inklabels.png复制到对应碎片文件夹并执行run_sanity_checks()断言校验——确保每个碎片都同时拥有 CT 层、墨水标签和掩码缺一个就会报错提示。单碎片 AI 墨水预测推理细节在容器内对单个碎片跑推理python inference_timesformer.py --segment_id 20231210121321 \ --segment_path ./train_scrolls --model_path timesformer_weights.ckptinference_timesformer.py 的推理策略值得新手学习切片读取每个碎片取第 17~43 层共 26 张 CT 切片组成 3D 体数据in_chans26并对部分特殊碎片自动水平翻转分块滑窗把碎片切成 64×64 的小块、按步长 2 滑窗跳过掩码外的无效区域GPU 批量推理支持多卡 DataParallel⚖️高斯核加权融合重叠块之间用高斯核加权平均gkern函数避免拼缝产生网格状伪影输出归一化预测图sigmoid后裁剪到 [0,1] 并除以最大值保存为{fragment_id}_prediction_*.png下图是编号 20230701020044 的大碎片预测得到的墨水识别结果可以看到多行文字笔画被完整还原多片段拼合生成 24 万像素 Scroll 全卷图这是整个项目的压轴环节。compose.py 维护了一张碎片坐标表data为每个碎片指定x/y碎片在整卷画布上的粘贴起点从 0 一路排到 160000 像素rotate/flip碎片的旋转角度与水平翻转用于校正拍摄朝向注释中还标注了阅读顺序141 → 538 → 653 right to left拼合逻辑非常直白先用所有碎片计算画布总尺寸max(x width)创建黑色大画布再用final_image.paste(img, (x, y), maskfragment_mask)把每个碎片的预测图按掩码粘贴上去。对已跑过推理的碎片还会直接读盘load_from_disk无需重复推理。最终产出两个文件composition.png—— 约 24 万像素宽的 Scroll 全卷墨水图composition_smaller.png—— 自动缩到 1/20 的预览版方便直接查看常见问题 FAQQ需要多大的显存推理时 Docker 建议加--shm-size150g碎片越大、层数越多越吃显存多卡场景下脚本会自动用 DataParallel 包裹模型。Q为什么有的碎片找不到目录部分碎片被重新扫描过原目录带_superseded后缀。inference_timesformer.py与prepare.py都做了自动回退查找不需要手动改路径。Q预测结果在哪里看脚本会把每个碎片的预测图同时上报到 Weights Biaseswandb本地则输出到--out_path指定目录默认命名{fragment_id}_prediction_rotated_{r}_layer_{i}.png。总结Vesuvius-Grandprize-Winner 用一个非常清晰的流水线示范了3D 深度学习 大规模拼合的完整落地方式Docker 解决环境、rclone 解决数据、滑窗 高斯核融合解决大尺寸推理、坐标表 掩码粘贴解决整卷拼合。按本文 5 步走下来你就能从一个个碎片预测图得到一张横跨 24 万像素的碳化石卷全卷墨水图——这也是冠军团队还原 2000 年前希腊文献的关键一步。【免费下载链接】Vesuvius-Grandprize-Winner项目地址: https://gitcode.com/gh_mirrors/ve/Vesuvius-Grandprize-Winner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考