CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

简介: 论文提出了一个基于梯度指导的结构保留超分辨率方法SPSR,缓解了感知驱动方法生成的SR结果中普遍存在的几何变形问题。不仅设计了梯度分支网络用于生成SR 梯度特征图,同时引入梯度 Loss 做了进一步的约束。这也给后续超分辨率方法的研究提供了一个新的思路,利用不同的图像先验信息作为约束,指导 SR 模型训练,以促使SR模型生成更自然和真实的图像。


CVPR2020:Structure-Preserving Super Resolution with Gradient Guidance


640.png



我们知道,结构信息在超分辨率问题中相当重要。目前已经有很多感知驱动的方法(SRGAN、ESRGAN、EnhanceNet)使用 GAN Loss 和 Perceptual Loss 生成较为逼真,且细节丰富的超分图像。然而,在这些恢复的图像中总是存在一些我们并不希望它出现的结构变形,如下图1所示。


仅仅使用 L1 Loss 的RCAN生成图像的轮廓边缘虽然相对规则,但是整体较为模糊。SRGAN、ESRGAN、NatSR等生成的图像则存在明显的结构变形。


640.jpg

                                                           图 1. 局部图像细节对比


因此,论文提出了结构保留超分辨率方法 SPSR,以缓解结构变形的同时,保留 GAN 方法生成丰富纹理细节的优点。特别的是,论文使用了图像的梯度信息去指导图像复原。


如何通过梯度信息指导图像复原?


主要有两点:


1.SPSR 采用了一个额外的梯度分支网络,生成高分辨率梯度图,作为额外的结构先验。


2.SPSR 引入了新的梯度损失,对超分辨率图像施加了二次约束。


因此,梯度信息以及梯度 Loss 能够进一步帮助生成网络更多的关注图像的几何结构。除此之外,SPSR 这个方法同样适用于其它 SR 模型方法。


从图 1 可以看到, SPSR 不仅能够生成比 RCAN 更清晰的结果,同时保留更加精细的几何结构。

640.jpg


                                                 图 2. Overall framework of SPSR


网络结构


1.梯度图 Gradient Map


首先SPSR 从 LR 图像中提取 LR 梯度图,通过计算相邻像素之间的差异获得:


image.png


基于公式自己实现的代码如下(具体实现请参考源码):


import torch
import torch.nn as nn
class Gradient_Map(nn.Module):
    def __init__(self):
        super(Gradient_Map,self).__init__()
        self.pad =  nn.ReplicationPad2d((1,0,1,0))
    def get_gray(self,x):
        ''' 
        Convert image to its gray one.
        '''
        gray_coeffs = [65.738, 129.057, 25.064]
        convert = x.new_tensor(gray_coeffs).view(1, 3, 1, 1) / 256
        x_gray = x.mul(convert).sum(dim=1)
        return x_gray.unsqueeze(1)
    def forward(self,x):
        x = self.pad(x)
        x = self.get_gray(x)
        h = x.size()[2]
        w = x.size()[3]
        I_x = torch.pow((x[:,:,1:,1:]-x[:,:,:h-1,1:]),2)
        I_y = torch.pow((x[:,:,1:,1:]-x[:,:,1:,:w-1]),2)
        M_I = torch.pow(I_x+I_y,0.5)
        return M_I


2.梯度分支网络Gradient branch


从图2中可以看到,梯度分支网络中的模块首先会合并来自SR分支网络的几个中间层输出特征,这是由于SR分支网络中间层包含丰富的结构信息,这对于梯度图的恢复有着关键的作用。其次,在梯度分支网络末端,梯度图的特征信息又会合并到 SR 分支网络,用于指导SR 重建过程。


3.SR分支网络 SR branch


对于SR分支网络一共有两个部分:


第一部分:采用了与 ESRGAN 相同的网络结构,一共有23个 RRDB 模块。并且第5,10,15,20个RRDB 模块的输出用于合并到梯度分支网络。


第二部分:连接从梯度分支网络获得的SR梯度特征图,再使用一个 RRDB 模块+一个卷积层生成最后的SR 特征。


PS关于网络模型的实现细节论文中并没有做过多的介绍,因此具体的实现还需要等待作者公开源码。


目标函数和损失


1.传统 Loss:


首先使用了 L1 Loss 和 Perceptual Loss:


image.png


同时还引入 GAN Loss:


image.png


2.梯度 Loss:


为了说明梯度 Loss 的作用,论文作者给出了一个1-D 情况下的示例。可以看到,如果仅通过L1损失在图像空间中对模型进行优化,当给定输入测试序列后,通常得到的SR序列,如图3(b)所示,而其GT序列 如图3(a)所示。


该模型无法恢复锋利的边缘,原因在于该模型倾向于从训练数据中给出所有的HR序列统计的中位数值。于是再这种情况下,如果计算并显示两个序列的梯度值,则可以观察到SR梯度是平坦且峰值较低,而HR的梯度是一个尖峰。两者梯度分布相差明显。


因此,引入梯度 Loss ,模型则能够更好地从梯度空间中学习图像特征。它有助于模型将注意力集中在图像邻域,以便可以更适当地推断出图像锐度的局部强度。于是,当图像梯度信息,如图3(f)的所示,被模型捕捉到,那么 SR 方法则能够更好地在这些梯度信息引导中,避免过度模糊或者过度锐化的复原,从而生成更加逼真的超分辨率图像。

640.png

                                                            图3. 梯度信息的1-D示例。


梯度 Loss 的具体形式如下:


image.png


image.png用于衡量SPSR 网络中生成的SR梯度特征图与真实梯度特征图之间的绝对误差。

SPSR 设计了额外的一个梯度判别网络用于优化以下损失函数,梯度特征图为 SR 图像的梯度特征图:


image.png


梯度判别网络通过对抗学习也能够监督SR 图像的生成网络:


image.png


值得注意的是:梯度提取操作符 image.png是可微的,因此模型可以直接端到端进行训练。


整体优化目标函数为:


image.png


其中, image.png 是不同 Loss的权重参数,论文中分别设置为image.png


实验结果和分析


为了说明 SPSR 的有效性,论文从定量和定性的比较进行了说明。


首先从定量的角度,论文选取了 SFTGAN,SRGAN,ESRGAN,NatSR 等基于 GAN 网络的SR 模型与 SPSR 进行对比。评价指标使用了PI 、PSNR、SSIM、LPIPS 4个指标。可以看到 SPSR 在 LPIPS指标和 PI 指标上取得了最佳的性能表现。


640.png

                                           表1.Benchmark 上的性能评价


然后通过生成图像的可视化对比,可以看到其它方法生成的图像局部区域几何结构上都存在较为明显的形变,SPSR 生成的结果则更加自然而且真实。除此之外,SPSR 图像更加纯净没有明显的伪影和形变。以上也充分说明了 SPSR 方法的有效性。


640.jpg

                                                                           图4.局部细节对比


总结


论文提出了一个基于梯度指导的结构保留超分辨率方法SPSR,缓解了感知驱动方法生成的SR结果中普遍存在的几何变形问题。不仅设计了梯度分支网络用于生成SR 梯度特征图,同时引入梯度 Loss 做了进一步的约束。这也给后续超分辨率方法的研究提供了一个新的思路,利用不同的图像先验信息作为约束,指导 SR 模型训练,以促使SR模型生成更自然和真实的图像。

相关文章
|
6月前
|
机器学习/深度学习 数据挖掘 计算机视觉
【论文速递】CVPR2021 - 基于自适应原型学习和分配的小样本分割
【论文速递】CVPR2021 - 基于自适应原型学习和分配的小样本分割
|
6月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进-论文笔记】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
4月前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。
|
6月前
|
计算机视觉
【YOLOv8改进】Inner-IoU: 基于辅助边框的IoU损失(论文笔记+引入代码)
YOLO目标检测专栏探讨了IoU损失的局限性,并提出创新改进。分析发现,不同尺度的辅助边框对高IoU和低IoU样本的回归有不同影响。因此,提出了Inner-IoU Loss,利用尺度因子ratio控制辅助边框大小以优化损失计算。实验验证了该方法能提升检测效果,增强泛化能力。创新点包括根据样本特性选择辅助边框尺度和Inner-IoU Loss的设计。更多详情见YOLO目标检测创新改进与实战案例专栏。
|
6月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】MPDIoU:有效和准确的边界框损失回归函数 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的有效改进和实战案例,包括卷积、主干网络、注意力机制和检测头的创新。提出了一种新的边界框回归损失函数MPDIoU,它基于最小点距离,能更好地处理不同宽高比的预测框,包含重叠、中心点距离和尺寸偏差的全面考虑。MPDIoU损失函数在YOLACT和YOLOv7等模型上的实验显示了优于现有损失函数的性能。此外,还介绍了WIoU_Scale类用于计算加权IoU,以及bbox_iou函数实现不同IoU变体的计算。详细实现和配置可在相应链接中查阅。
|
6月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv8改进】 SPD-Conv空间深度转换卷积,处理低分辨率图像和小对象问题 (论文笔记+引入代码)
YOLO目标检测专栏探讨了CNN在低分辨率和小目标检测中的局限性,提出SPD-Conv新架构,替代步长卷积和池化层,通过空间到深度层和非步长卷积保持细粒度信息。创新点包括消除信息损失、通用设计和性能提升。YOLOv5和ResNet应用SPD-Conv后,在困难任务上表现优越。详情见YOLO有效改进系列及项目实战目录。
|
6月前
|
机器学习/深度学习 编解码 自然语言处理
LRP-QViT完美而来 | 输出层分配相关性+剪切通道让Swin Transformer量化后居然涨1.5个点
LRP-QViT完美而来 | 输出层分配相关性+剪切通道让Swin Transformer量化后居然涨1.5个点
285 0
|
机器学习/深度学习 数据可视化 计算机视觉
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(1)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
127 0
|
机器学习/深度学习 数据可视化 数据挖掘
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(2)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
276 0
|
机器学习/深度学习 编解码 数据可视化
ConvNeXt V2:与屏蔽自动编码器共同设计和缩放ConvNets,论文+代码+实战
ConvNeXt V2:与屏蔽自动编码器共同设计和缩放ConvNets,论文+代码+实战