基于扩散的图像超分辨率模型:ResShift

1 论文解读

论文地址:ResShift: Efficient Diffusion Model for Image Super-resolution by Residual Shifting

代码地址:https://github.com/zsyOAOA/ResShift

1.1 前言

基于扩散的图像超分辨率(SR)方法由于需要数百甚至数千个采样步骤,导致推理速度较低。现有的加速采样技术不可避免地会在一定程度上牺牲性能,导致SR结果过于模糊。为了解决这个问题,我们提出了一种新颖有效的SR扩散模型,该模型显著减少了扩散步骤的数量,从而消除了推理过程中对后加速的需求及其相关的性能下降。我们的方法构建了一个马尔可夫链,通过移动高分辨率图像和低分辨率图像之间的残差来实现高分辨率图像和低分辨率图像之间的转换,大大提高了转换效率。此外,还设计了一套复杂的噪声控制方案,以灵活控制扩散过程中的换档速度和噪声强度。大量的实验表明,即使只有15个采样步骤,所提出的方法在合成和真实数据集上的性能也优于或至少与当前最先进的方法相当。

1.2 方法

一种常见的方法是将LR图像插入当前扩散模型的输入(例如,DDPM),并在sr的训练数据上从头开始重新训练模型。另一种流行的方法是使用无条件预训练的扩散模型作为先验,并修改其反向路径以生成预期的HR图像。不幸的是,这两种策略都继承了DDPM底层的马尔可夫链,这在推理中可能是低效的,通常需要数百甚至数千个采样步骤。虽然已经开发了一些加速技术来压缩推理中的采样步骤,但它们不可避免地会导致性能的显著下降,导致结果过于平滑。

在本节中,我们介绍了一个为sr量身定制的扩散模型ResShift。为了便于表示,LR图像和HR图像分别表示为y0​和x0​。此外,我们假设y0​和x0​具有相同的空间分辨率,这可以很容易地通过在必要时使用最近邻插值对LR图像y0​进行预上采样来实现。

1.2.1 模型设计

扩散模型的迭代生成范式已被证明在捕获复杂分布方面非常有效,这也激励我们迭代地处理SR问题。我们提出的方法构建了一个马尔可夫链,作为HR和LR图像之间的桥梁。这样,SR任务可以通过对给定任何LR图像的马尔可夫链进行反向采样来完成。接下来,我们将详细介绍专门为SR构建这样一个马尔可夫链的过程。

1.2.2 噪声策略

1.3 实验

本节对ResShift进行了实证分析,并提供了广泛的实验结果,以验证其在一个合成数据集和三个真实数据集上的有效性。我们的研究特别关注更具挑战性的×4 SR任务。

1.3.1 实验设置

训练细节。我们的训练数据中分辨率为256 × 256的HR图像是根据LDM从ImageNet的训练集中随机裁剪出来的。我们使用RealESRGAN的降解管道合成LR图像。Adam算法使用PyTorch的默认设置和64的mini-batch大小来训练ResShift。在训练期间,我们使用固定的学习率5e-5,并每500K次迭代更新权重参数。在网络架构方面,我们在DDPM中简单地采用UNet结构。为了提高ResShift对任意图像分辨率的鲁棒性,我们用Swin Transformer块替换UNet中的自关注层。

测试数据集。我们基于常用的退化模型合成了一个测试数据集, 即y=(x∗k)↓+n,其中k为模糊核, n为噪声, y和x分别表示LR图像和HR图像。为了全面评估ResShift的性能,我们考虑了更复杂类型的模糊核、下采样算子和噪声类型。对于HR图像,我们从ImageNet的验证集中随机选择了3000张图像,而不是SR中流行的数据集,例如Set5 , Set14和Urban100。这是因为这些数据集只包含少量的源图像,无法全面评估各种方法在不同退化类型下的性能。为方便起见,我们将此数据集命名为ImageNet-Test。采用两个真实数据集来评估ResShift的有效性。第一个是RealSR,包含100张由佳能5D3和尼康D810相机拍摄的真实图像。此外,我们收集另一个名为RealSet65的真实世界数据集。它包括最近文献中广泛使用的35张LR图像。剩下的30张图片是我们自己从网上获取的。

比较的方法。我们将ResShift与最近的七种SR方法(ESRGAN、RealSR-JPEG、BSRGAN、RealESRGAN、SwinIR、DASR和LDM)进行了对比,评估了ResShift的有效性。注意,LDM是一种基于扩散的方法,有1000个扩散步骤。为了公平比较,我们将LDM加速到与ResShiftusing DDIM相同的步数,并将其表示为“LDM- a”,其中“a”表示推理步数。DDIM中的超参数 η η η被设置为1,因为该值产生最真实的恢复图像。使用5个指标评估各种方法的性能,包括PSNR、SSIM、LPIPS、MUSIQ和CLIPIQA。值得注意的是,后两者是非参考指标,专门用于评估图像的真实感。特别是CLIPIQA,它利用了在大规模数据集(即Laion400M)上预训练的CLIP模型,因此表现出很强的泛化能力。在真实数据集上,我们主要依靠CLIPIQA和MUSIQ作为评价指标来比较不同方法的性能。

1.3.2 模型分析

我们分析了不同设置下ResShift在扩散步数和超参数p和k上的性能。

扩散步骤T和超参数p:在Eq.(1)中提出的过渡分布显著地减少了马尔可夫链中的扩散步骤T。超参数p允许在过渡期间灵活控制剩余移位的速度。表1总结了在不同的T和p配置下ResShift在ImageNet-Test上的性能。我们可以看到,T和p都呈现了一种权衡,在由参考指标(如PSNR、SSIM和LPIPS)测量的保真度与由非参考指标(包括CLIPIQA和MUSIQ)测量的超分辨率结果的真实感之间。以p为例,当p增加时,参考指标会改善,而非参考指标会恶化。此外,从图3的视觉对比可以看出,较大的p值会抑制模型产生更多图像细节的幻觉能力,导致输出模糊。

超参数k:由式(2)可知,状态xt​时k主导噪声强度。我们在表1中报告了k对ResShift性能的影响。结合图3的可视化,我们可以发现,过大或过小的k值都会使恢复结果平滑,而不管它们的有利指标是PSNR和SSIM。当k在[1.0,2.0]范围内时,我们的方法达到了CLIPIQA和MUSIQ所指示的最真实的质量,在实际应用中更理想。因此,我们将k设为2.0。

效率的比较:为了提高推理效率,需要限制扩散步数T。然而,这会导致还原的HR图像的真实感降低。为了折衷,可以将超参数 p设置为较小的值。因此,我们设置T = 15和p = 0.3,并产生我们的模型ResShift。表2总结了在ImageNet-Test上与LDM的效率和性能比较。在LPIPS和CLIPIQA方面,提出的ResShift即使在1000个采样步长下也优于LDM。在这种配置下,ResShift比LDM快40倍,有望解决当前基于扩散的SR方法固有的效率限制。

1.4 结论

在这项工作中,我们为SR引入了一种高效的扩散模型ResShift。与现有基于扩散的SR方法需要大量迭代才能获得满意的结果不同,我们提出的方法构建了一个仅15个采样步骤的扩散模型,从而显著提高了推理效率。其核心思想是将HR图像向LR图像腐蚀,而不是高斯白噪声,这样可以有效地切断扩散模型的长度。在合成和真实数据集上的大量实验证明了我们提出的方法的优越性。我们相信,我们的工作将为开发更高效的扩散模型铺平道路,以解决SR问题。


2 ResShift模型部署及实战

 2.1 conda环境准备

conda环境准备详见:annoconda

2.2 运行环境构建

git clone https://github.com/zsyOAOA/ResShift
cd ResShift

conda env create -f environment.yaml
conda activate ResShift

mkdir weights

2.3 预训练模型下载

模型1地址:resshift_realsrx4_s15.pth

模型2地址:autoencoder_vq_f4.pth

模型3地址:resshift_bicsrx4_matlab_s15.pth

模型4地址:resshift_bicsrx4_opencv_s15.pth

下载模型,保存到weights目录下,显示如下:

(ResShift) [root@localhost ResShift]# ll weights/
总用量 1616304
-rw-r--r-- 1 root root 221364711 12月 14 23:04 autoencoder_vq_f4.pth
-rw-r--r-- 1 root root 477905305 12月 14 23:19 resshift_bicsrx4_matlab_s15.pth
-rw-r--r-- 1 root root 477905305 12月 14 23:22 resshift_bicsrx4_opencv_s15.pth
-rw-r--r-- 1 root root 477905305 12月 14 23:00 resshift_realsrx4_s15.pth

2.4 模型推理

python inference_resshift.py -i testdata/RealSet128/dog.png -o result/ --scale 4 --task realsrx4 --chop_size 512

python inference_resshift.py -i testdata/RealSet128/tiger.png -o result/ --scale 4 --task realsrx4 --chop_size 512

猜你喜欢

转载自blog.csdn.net/lsb2002/article/details/135002906