CVPR2024
论文代码:yangxy/PASD (github.com)
论文地址:[2308.14469v3] Pixel-Aware Stable Diffusion for Realistic Image Super-resolution and Personalized Stylization (arxiv.org)
Abstract
通过解决预训练的stableSR无法保持可信的像素结构以及跳跃连接需要在图像空间进行额外训练的问题,提出了一种像素感知稳定扩散(PASD)网络来实现图像的超分辨率和个性化。
具体地,引入了像素感知的交叉注意模块,使扩散模型在像素级感知图像局部结构。退化去除模块用于提取退化不敏感特征,以图像高级信息指导扩散过程。引入可调噪声调度,进一步提高图像恢复结果。
Pixel-Aware Stable Diffusion Network
该方法基于生成扩散先验。利用了预训练 StableDiffusion模型。除了预训练的SD模型外,PASD还有四个主要模块:
用于提取退化不敏感低层特征的退化去除模块
用于提取语义控制特征的高层信息提取模块
可调噪声调度(ANS)
像素感知交叉注意(PACA)模块来执行扩散的像素级指导。
Degradation Removal Module
现实世界的LQ图像通常遭受复杂和未知的退化。因此,我们采用退化去除模块来减少退化的影响,并从LQ图像中提取“干净”特征来控制扩散过程。如上图所示,
采用网络提取输入LQ图像的1/2、1/4和1/8缩放分辨率的多尺度特征图。期望这些特征能够在相应尺度上尽可能地逼近高质(HQ)图像,以便后续的扩散模块能够专
注于恢复真实的图像细节,减轻了区分图像退化的负担。
并且引入了一个中间监督,通过一个卷积层toRGB将每个单尺度的特征图转换到高分辨率RGB图像空间。在每个分辨率尺度上施加一个L1损失,以迫使该尺度上的重建接近真实HQ图像对应的尺度:
其中分别表示在尺度s下的真实HQ图像和超分输出。
该模块仅用在真实图像超分。
Pixel-Aware Cross Attention (PACA)
ControlNet提出了一种称为"零卷积"的独特类型的卷积层Z,给定特征x和跳跃特征y,通过零卷积来连接他们。
但是简单地将两个网络的特征图相加可能无法传递像素级的精确信息,从而导致输入的LQ和输出的HQ图像之间的结构不一致。
本文引入了一个简单的像素感知交叉注意力( PACA )来解决这个问题。
首先将
reshape为。并将 y′ 视为上下文输入。
PACA的计算如下:
条件特征输入 y' 长度为 h * w,等于潜在特征 x 的像素总数。由于特征 y' 没有被编码器转换为潜在空间,因此它很好地保留了原始图像结构。因此,我们的 PASD 模型可以通过 PACA 设法从条件输入 y' 感知像素级信息。
Adjustable Noise Schedule (ANS)
由于StableDiffusion中使用的噪声调度存在训练-测试差异。在训练期间,即使在最终扩散时间步 N 下,噪声调度也会留下一些残差信号,导致从随机高斯噪声中采样时模型性能的削弱。
提出了一种可调噪声调度(ANS),通过在测试时从输入图像中引入信号信息。
可以将潜在输入LQ嵌入到最终扩散时间步N的初始随机高斯噪声中作为补偿:
其中为时间步N时的潜在输入,为潜在LR图像,为初始随机高斯噪声。
这种措施可以部分缓解差异问题。然而,由于残差信号的来源不同,训练-测试差异仍然存在,当LQ图像遭受严重退化时,这可能会损害恢复结果。
为了抑制LQ数据中残差信号的副作用,我们在上式中引入了一个额外的高斯噪声
,此时的
由于高斯噪声 z 和 z′ 是独立的,它们可以组合为另一个高斯噪声 z′′。
得到最终结果:
其中
通过这种方式,通过选择的适当值,我们可以调整残差信号的强度以实现灵活的感知保真度权衡。
High-Level Information
Real - ISR通常以LQ图像作为输入,但基于预训练的SD模型也能以文本作为输入。
使用预训练的ResNet、YOLO和BLIP网络从LQ输入中提取图像分类、目标检测和图像标题信息,并使用CLIP编码器将文本信息转换为图像级特征,提供额外的语义信号来控制扩散过程。
在实践中,根据经验将“嘈杂”、“模糊”、“低分辨率”等词组合为负面提示,可以在推理过程中权衡模式覆盖率和样本质量。它是可选的,但可以提高 Real-ISR 性能。
Training Strategy
在模型训练中,我们首先获得HQ图像的潜在表示Z0
,并逐步添加噪声以产生潜在噪声Zt。给定扩散步长 t、LQ 输入和文本提示 c 等条件。
使PASD网络预测添加到Zt中的噪声。优化目标为:
在 Real-ISR 模型的训练过程中,共同更新退化去除模块。总损失为:
为平衡参数。在实验中简单地设置 γ = 1。冻结了预训练 SD 中的所有参数,只训练新添加的模块,包括退化去除模块、ControlNet 和 PACA。
Experiments
超分任务在三个数据集上的定量实验
消融实验
以及一些visualization的结果: