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 上跑通,我们做了两处兼容修改
-
在 cldm.py 里去掉推理路径对 deepspeed 的硬依赖。
原因:原仓库把训练优化器 import 写死在模型定义里,导致推理也强制要求 deepspeed。 -
在 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

浙公网安备 33010602011771号