1

QuadPrior 在 5070 Ti 上的实际推理复现步骤总结

这次我们复现的是当前仓库的 CVPR 2024 QuadPrior 主干推理,不是完整 TPAMI 2026 扩展版。仓库路径是 README.md,推理入口是 test.py

一、环境
实际可运行环境如下:

  • 系统:Windows
  • GPU:NVIDIA GeForce RTX 5070 Ti
  • 驱动:591.74
  • Python:3.10
  • PyTorch:2.9.1+cu128
  • CUDA runtime:12.8

验证命令:

python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no cuda')"

你这边成功输出的是:

  • 2.9.1+cu128
  • 12.8
  • True
  • NVIDIA GeForce RTX 5070 Ti

二、权重
需要准备 3 个权重文件,并替换仓库里的空占位文件:

可以用下面命令检查大小不是 0:

python -c "import os; print('COCO-final', os.path.getsize(r'checkpoints/COCO-final.ckpt')); print('bypass', os.path.getsize(r'checkpoints/main-epoch=00-step=7000.ckpt')); print('sd_init', os.path.getsize(r'models/control_sd15_ini.ckpt'))"

你这次实际拿到的是有效文件:

  • COCO-final.ckpt 约 1.61 GB
  • main-epoch=00-step=7000.ckpt 约 1.17 GB
  • control_sd15_ini.ckpt 约 5.22 GB

三、为了在 5070 Ti / Windows / 新 PyTorch 上跑通,我们做了两处兼容修改

  1. 在 cldm.py 里去掉推理路径对 deepspeed 的硬依赖。
    原因:原仓库把训练优化器 import 写死在模型定义里,导致推理也强制要求 deepspeed。

  2. 在 cldm.py 里修复新 PyTorch 下 torch.load 的 weights_only=True 默认行为。
    原因:PyTorch 2.6+ 默认更严格,而 main-epoch=00-step=7000.ckpt 里带有 OmegaConf 元数据。

如果你后面写博客,这两点建议单独写成“复现时的工程兼容性问题”。

四、推理运行命令
进入仓库根目录:

cd D:\optical_workplace\QuadPrior-main\QuadPrior-main

运行示例推理:

python test.py --input_folder .\test_data --same_folder .\output_QuadPrior

这次跑通后,输出结果会在:
output_QuadPrior

参考结果在:
output_QuadPrior-reference

五、成功运行时的典型日志特征
如果推理正常,通常会看到这些信息:

  • ====== Load parameters ======
  • Successfully load new auto-encoder
  • ====== Finish loading parameters ======
  • Find 3 files in .\test_data
  • Data shape for DPM-Solver sampling is ...
  • DPM init order ...
  • DPM multistep ...

这说明:

  • 主干模型加载成功
  • bypass decoder 加载成功
  • DPM-Solver 采样成功
  • 3 张测试图都处理完成

如果你要换成自己拍的图片,怎么做?

很简单,不需要改代码。

方法 1:直接新建一个文件夹

比如你新建:
D:\optical_workplace\QuadPrior-main\QuadPrior-main\my_test

把你自己拍的低照图放进去,比如:

  • night1.jpg
  • room_dark.png
  • street.jpeg

然后运行:

python test.py --input_folder .\my_test --same_folder .\output_my_test

输出会在:
output_my_test

方法 2:直接替换 test_data

也可以把你自己的图放到:
test_data

然后继续运行:

python test.py --input_folder .\test_data --same_folder .\output_QuadPrior

但我更推荐 方法 1,这样不会覆盖原始示例。


对自己拍图片的几个建议

1. 尽量用常见格式
这份代码会遍历 *.*,所以常见的:

  • .jpg
  • .jpeg
  • .png
    基本都可以。

2. 不用手动 resize
代码里会自动 resize 到适合网络的分辨率,见 test.py

3. 文件名最好简单一点
虽然代码能处理复杂文件名,但建议用:

  • img1.jpg
  • night_room.png
    这种更稳。

4. 输出统一会保存成 .png
在 test.py 里,保存时会强制改成 .png。


一个完整例子

假设你把自己拍的 2 张图放进:
D:\optical_workplace\QuadPrior-main\QuadPrior-main\my_phone_photos

运行:

cd D:\optical_workplace\QuadPrior-main\QuadPrior-main python test.py --input_folder .\my_phone_photos --same_folder .\output_phone_results

处理结果会在:
output_phone_results

posted @ 2026-03-24 11:42  伟大的船长  阅读(5)  评论(0)    收藏  举报