论文复现 - IDM
IDM
PKU TPAMI 2025
架构
主干网络
噪声估计器基于 SD1.5,并对其 U-Net 结构进行了修改 (we further simplify the U-Net by removing its time embeddings, cross-attention layers, and the final three scales to balance efficiency and performance.)
论文给出的结构图。对原模型进行了不少剪枝。
这部分可以结合代码理解
1 | del unet.time_embedding, unet.mid_block |
的选取
实验部分对去噪步数分析了参数敏感性,结论是 取 3 时综合收益最大。
可逆布线
Notably, with our two level invertible models, the peak memory use per GPU is suppressed to 14.64 GB, making it manageable not only for A100 but also for other GPUs like 3090 and 4090 (24GB).
出发点是训练过程保存太多中间结果导致显存需求大。从可逆神经网络 (INN) 获得灵感,将上一级输入连接到下一级输出,参考上图 (a)。过程可以表示为
其中 是可学习的参数,。
这样之后在反向传播过程中就可以使用 恢复 ,从而优化 memory,实际测试确实可以在 3090 完成训练。
Injector
在 U-Net 的 Residual Block 和 Attention Block 之后插入 Injector (见上图 (b)),把采样矩阵和测量值 作为特征融合进网络。提到,直接融合测量值的效果不好,因此通过卷积先进行特征提取,然后通过 pixel unshuffle 的方式把特征图和 融合并保持形状。
实验
原文的工作量非常大,对比了两个预训练模型 SD1.5 和 UIDM 作为噪声估计器,针对灰度通道和 RGB 三通道重建训练了两个模型。复现时只训练了灰度模型。
Setup
在一张 3090 上训练了 11 天 (中途 screen 挂了一次),,batch_size 默认 8,显存消耗 20G 左右,每个 epoch 耗时 5h 左右。仅训练灰度通道。
Results
测试 PSNR 和 SSIM,如下。
PSNR/SSIM | Set11 | DIV2K | Urban100 | CBSD68 |
---|---|---|---|---|
权重 (论文仓库) | 32.80/0.9203 | 30.97/0.8422 | 31.17/0.8973 | 28.65/0.7861 |
权重 (复现训练) | 32.77/0.9197 | 30.95/0.8412 | 31.13/0.8962 | 28.62/0.7849 |
重建效果如下。
(‘test_03’ from CBSD68)
(‘0805’ from DIV2K)
(‘img_019’ from Urban100)
(‘Monarch’ from Set11)
可以看到,恢复建筑纹理效果很好,其他网络相比之下生成了过于平滑的图像。