DocRes训练完全指南:从Doc3D、TDD等数据集准备到官方实验复现

发布时间:2026/11/4 6:56:20
DocRes训练完全指南:从Doc3D、TDD等数据集准备到官方实验复现 【免费下载链接】DocRes[CVPR 2024] DocRes: A Generalist Model Toward Unifying Document Image Restoration Tasks项目地址https://gitcode.com/gh_mirrors/do/DocRes点击查看免费下载DocRes 是 CVPR 2024 论文提出的统一文档图像复原通用模型一个 Restormer 网络即可完成去弯Dewarping、去阴影Deshadowing、外观增强Appearance、去模糊Deblurring和二值化Binarization五大任务。本文面向新手手把手讲清DocRes 文档图像复原训练的完整流程如何准备 Doc3D、TDD、FSDSRD、RealDAE 等数据集、如何编辑datasets_setting、如何用 8 卡分布式启动训练最后用eval.py复现论文中的官方评测结果。一、模型与训练代码速览在开始训练前先了解 DocRes 的核心结构有助于理解后面的数据准备要求模块文件作用网络结构models/restormer_arch.pyRestormer高效 Transformer输入 6 通道 3 通道图像 3 通道任务提示DTSPrompt输出 3 通道复原图训练入口train.py基于 PyTorch DDP 的多卡分布式训练含随机数据增强与 Cosine 学习率调度数据加载loaders/docres_loader.py按任务读取输入/真值/提示实现随机裁剪、亮度/对比度/染色等增强启动脚本start_train.sh8 卡torch.distributed.launch一键启动官方评测eval.py对 8 个公开基准数据集批量推理并计算指标数据集说明data/README.md官方数据目录结构与 JSON 格式规范训练输入不是裸图每个任务都会在线计算一个 3 通道提示如 Sobel 高频图、阴影背景图、Sauvola 二值化结果与输入图拼接后送入网络。提示的计算逻辑在 loaders/docres_loader.py 中。二、环境准备安装 PyTorch 与依赖建议新建 Python 3.8 虚拟环境安装项目声明的依赖锁定 torch 1.11 CUDA 11.3# 克隆仓库如尚未克隆 git clone https://gitcode.com/gh_mirrors/do/DocRes cd DocRes # 安装依赖 pip install -r requirements.txtrequirements.txt 中包含torch1.11.0cu113、opencv-python-headless、scikit-image、einops等。若显卡 CUDA 版本不同只需替换为对应版本的 PyTorch其余依赖无需改动。三、数据集准备Doc3D、TDD 等数据组织训练数据目录必须遵循 data/README.md 规定的结构data/ ├── eval/ # 评测集dir300 / kligler / jung / osr / realdae / docunet_docaligner / tdd / dibco18 │ └── realdae/1_in.png 1_gt.png └── train/ ├── dewarping/doc3d/ # 去弯Doc3D ├── deshadowing/{fsdsrd,tdd}/ # 去阴影FSDSRD TDD ├── appearance/{clean_pdfs,realdae}/ # 外观增强 ├── deblurring/tdd/ # 去模糊TDD └── binarization/{bickly,dibco,noise_office,phibd,msi}/ # 二值化每个任务还需要一份 JSON 清单描述输入图、真值图以及提示图的相对路径。3.1 去弯Doc3D 的 mask 与背景准备Doc3D 提供带 UV 数据的弯曲书页扫描图训练时要做两件事提取 mask从 Doc3D 的 uv 数据中为每张图提取页面 mask准备背景图用于在 mask 外填充随机背景增强模型对页面以外区域的鲁棒性需在 loaders/docres_loader.py 中把self.background_paths指向背景文件夹。Doc3D 中的页面 mask 示意白区域为页面JSON 需要同时给出in_path、mask_path、gt_pathgt 为 .npy 格式的基准映射[ { in_path: dewarping/doc3d/img/1/102_1-pp_Page_048-xov0001.png, mask_path: dewarping/doc3d/mask/1/102_1-pp_Page_048-xov0001.png, gt_path: dewarping/doc3d/bm/1/102_1-pp_Page_048-xov0001.npy } ]3.2 去阴影 / 去模糊TDD、FSDSRD 与 RDD去阴影使用 FSDSRD 与 RDD 数据集JSON 只需in_path和gt_path去模糊使用 TDD 数据集格式与去阴影相同。带阴影的文档训练样例DocRes 去阴影任务的典型输入3.3 外观增强Doc3DShade 影子提取外观增强任务的核心是 Doc3DShade 合成数据流程为收集网络 PDF 并转成图像appearance/clean_pdfs/作为干净的 gt运行 data/preprocess/shadow_extraction.py 提取影子图先利用 mask 把拍摄图cap_im与 PDF 渲染图alb_im分别去弯再由两者相除得到影子在 loaders/docres_loader.py 中将self.shadow_paths指向影子图文件夹。原始弯曲拍摄书页与对应 PDF 渲染图训练时 loader 会从影子库随机取一张影子乘到干净 PDF 上合成出带阴影的输入图in_path字段只写 PDF 路径即可RealDAE 真实数据则同时写in_path与gt_path。3.4 二值化5 个数据集 Sauvola 预处理二值化任务聚合了 Bickly、DIBCO、Noise Office、PHIDB、MSI 五个数据集。由于在线计算 DTPromptSauvola 二值化 阈值图 梯度图开销大官方选择离线预计算python data/preprocess/sauvola_binarize.py该脚本基于 utils.py 中的SauvolaModBinarization生成_bin.png、_thr.png、_gradient.png三张提示图。一份带噪点的二值化训练输入样例JSON 需列出 5 个字段[ { in_path: binarization/noise_office/imgs/1.png, gt_path: binarization/noise_office/gt_imgs/1.png, bin_path: binarization/noise_office/imgs/1_bin.png, thr_path: binarization/noise_office/imgs/1_thr.png, gradient_path: binarization/noise_office/imgs/1_gradient.png } ]3.5 评测数据集准备评测集包括 DIR300、Kligler、Jung、OSR、RealDAE、DocUNet_DocAligner、TDD、DIBCO18。下载后把输入图与真值图重命名为xxx_in.png/xxx_gt.png放入data/eval/数据集名/即可eval.py会自动匹配。四、编辑 datasets_setting接入你的数据数据就位后修改 train.py 中的datasets_setting把路径换成你自己的数据目录datasets_setting [ {task:deblurring,ratio:1,im_path:你的路径/train/deblurring/,json_paths:[.../deblurring/tdd/train.json]}, {task:dewarping,ratio:1,im_path:你的路径/train/dewarping/,json_paths:[.../dewarping/doc3d/train_1_19.json]}, {task:binarization,ratio:1,im_path:...,json_paths:[.../binarization/train.json]}, {task:deshadowing,ratio:1,im_path:...,json_paths:[.../deshadowing/train.json]}, {task:appearance,ratio:1,im_path:...,json_paths:[.../appearance/trainv2.json]} ]ratio控制该任务被随机采样的比例官方全部设为 1五任务均匀采样另外务必把 loaders/docres_loader.py 里硬编码的background_pathsDTD 背景图与shadow_pathsDoc3DShade 影子图改成实际路径否则去弯/外观增强任务会取不到数据。五、启动训练start_train.sh 一键 8 卡分布式训练基于 PyTorch DDPstart_train.sh 用 8 张 GPU 启动CUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 python -m torch.distributed.launch --nproc_per_node 8 --master_port 26413 train.pyGPU 数量不同时改CUDA_VISIBLE_DEVICES与--nproc_per_node即可。关键超参数train.py 中均有默认值参数默认值说明--im_size256随机裁剪块边长像素--total_iter100000总迭代步数--batch_size10每卡 batch size--l_rate2e-4初始学习率AdamWCosine 退火至 1e-6--resumeNone断点续训的 checkpoint 路径--logdir./checkpoints/日志与权重保存目录--tboard关闭加此参数开启 TensorBoard 曲线--experiment_nameexperiment_name实验名用于子目录命名训练过程中的行为每10 步在终端和logdir/实验名/log.txt打印 5 个任务的 loss 与剩余时间每5000 步在 rank0 保存{iter}.pkl含模型 优化器状态中断后可用--resume ckpt路径续训。六、官方实验复现eval.py 评测流程把 MBD 去弯辅助模型权重mbd.pkl放入data/MBD/checkpoint/把 DocRes 权重docres.pkl放入./checkpoints/下载地址见仓库 README 的 Inference/Evaluation 部分按 3.5 节放好评测集后运行python eval.py --dataset realdae--dataset可选dir300、kligler、jung、osr、docunet_docaligner、realdae、tdd、dibco18。eval.py 会自动对*_in.*图片批量推理结果存为*_docres.*并输出论文同款指标去阴影 / 外观 / 去模糊PSNR、SSIMscikit-image 计算二值化F-measure、pF-measure、PSNRutils.py 中bin_metric实现去弯DIR300 等只生成复原图指标按论文流程人工/脚本核对。七、常见坑与实用建议路径没改全datasets_setting、loader 中的background_paths、shadow_paths三处路径都要替换这是新手最常被卡住的点二值化提示必须预生成漏跑sauvola_binarize.py会导致bin_path等文件缺失直接报错显存不够先降--batch_size如 5或减少--nproc_per_nodeim_size保持 256 以对齐论文设置确定性复现train.py 提供seed_torch()固定随机种子被注释掉了需要严格复现时取消注释观察训练加--tboard参数后可用tensorboard --logdir ./checkpoints/查看五任务 loss 曲线正常情况下各任务 loss 应同步缓慢下降。准备好以上数据与配置后bash start_train.sh即可开启 DocRes 文档图像复原模型的统一训练训练收敛后再用eval.py跑通 8 个基准数据集即完成官方实验的完整复现 附关键文件速查数据集结构与 JSON 规范data/README.md影子提取预处理data/preprocess/shadow_extraction.pySauvola 二值化预处理data/preprocess/sauvola_binarize.py训练主脚本train.py启动脚本start_train.sh网络定义models/restormer_arch.py评测脚本eval.py工具函数Sauvola、bin_metricutils.py赞分享【免费下载链接】DocRes[CVPR 2024] DocRes: A Generalist Model Toward Unifying Document Image Restoration Tasks项目地址https://gitcode.com/gh_mirrors/do/DocRes点击查看免费下载相关推荐ECCV2022-RIFE训练完全指南从数据集准备到模型优化ECCV2022 RIFE训练完全指南从数据集准备到模型优化 想要掌握最先进的视频插帧技术吗ECCV2022 RIFE作为实时中间流估计算法的杰出代表能够计算机视觉视频处理深度学习StyleGAN2 官方 TensorFlow 实现完全指南环境搭建、图像生成、数据集准备与训练评估StyleGAN2 官方 TensorFlow 实现完全指南环境搭建、图像生成、数据集准备与训练评估 本篇指南基于 NVIDIA 官方开源的 StyleGAN人工智能深度学习计算机视觉媒体生成老照片修复训练数据构建全攻略从数据准备到模型训练的7步实战指南老照片修复训练数据构建全攻略从数据准备到模型训练的7步实战指南 Bringing Old Photos Back to Life是一个基于深度学习的老照片修复人工智能计算机视觉图像处理深度学习上一篇Nexent 多模态工具组实战指南文本、图片、视频、音频的统一分析与模型配置下一篇如何为RAG管道写可靠的单元测试ai-builders-curriculum 测试实战分块/余弦相似度/决策校验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考