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

海哥  金牌会员 | 2024-6-13 21:32:40 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 535|帖子 535|积分 1605

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 运行环境构建

  1. git clone https://github.com/zsyOAOA/ResShift
  2. cd ResShift
  3. conda env create -f environment.yaml
  4. conda activate ResShift
  5. 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目录下,显示如下:
  1. (ResShift) [root@localhost ResShift]# ll weights/
  2. 总用量 1616304
  3. -rw-r--r-- 1 root root 221364711 12月 14 23:04 autoencoder_vq_f4.pth
  4. -rw-r--r-- 1 root root 477905305 12月 14 23:19 resshift_bicsrx4_matlab_s15.pth
  5. -rw-r--r-- 1 root root 477905305 12月 14 23:22 resshift_bicsrx4_opencv_s15.pth
  6. -rw-r--r-- 1 root root 477905305 12月 14 23:00 resshift_realsrx4_s15.pth
复制代码
2.4 模子推理

  1. python inference_resshift.py -i testdata/RealSet128/dog.png -o result/ --scale 4 --task realsrx4 --chop_size 512
复制代码

  1. python inference_resshift.py -i testdata/RealSet128/tiger.png -o result/ --scale 4 --task realsrx4 --chop_size 512
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表