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模型生成更自然和真实的图像。

相关文章
|
人工智能 搜索推荐 定位技术
AddressCLIP:一张照片就能准确定位!中科院联合阿里云推出街道级图像地理定位模型
AddressCLIP 是由中科院和阿里云联合开发的端到端图像地理定位模型,通过图像-文本对齐和地理匹配技术,实现街道级精度的定位,适用于城市管理、社交媒体、旅游导航等场景。
2301 30
AddressCLIP:一张照片就能准确定位!中科院联合阿里云推出街道级图像地理定位模型
|
算法
ECCV 2024:盲视频去闪烁通用方法BlazeBVD来了,美图&国科大联合提出
【8月更文挑战第15天】随着多媒体的兴起,视频成为信息传播的关键媒介,但视频中的闪烁问题影响观看体验。美图与中国科学院大学联合研发的BlazeBVD算法,采用直方图辅助方法简化学习过程,提高了视频去闪烁的质量与速度。该算法通过2D网络恢复纹理,3D网络修正时间一致性,实现了高效能与高保真度。实验结果显示,BlazeBVD在多种视频类型上表现优秀,推理速度提升显著。尽管如此,算法在处理局部闪烁和复杂场景时仍存在局限性,未来有进一步优化的空间。[论文链接](https://arxiv.org/pdf/2403.06243v1)
405 1
|
搜索推荐
如何用ChatGPT搭建品牌文本体系?(品牌名+slogan+品牌故事)
该场景对应的关键词库(26个): 品牌名、奶茶、中文名、情感联想度、饮料、价值观/理念、发音、slogan、产品功能导向、行业性质导向、经营理念导向、消费者观念导向、口语化、修辞手法、品牌故事、创始人初心品牌故事、里程碑事件故事、产品初心故事、时间、地点、人物、事件、结果、品牌定位、个性、品类价值
|
机器学习/深度学习 传感器 编解码
BSRGAN超分辨网络
BSRGAN超分辨网络
352 0
|
JavaScript JSON 前端开发
深/浅拷贝,有哪些实现方式
深/浅拷贝,有哪些实现方式
|
存储 NoSQL Java
Tablestore集成MCP协议: 标量与向量混合检索的新范式
基于表格存储(Tablestore)实现的MCP(Model Context Protocol)服务,支持文档存储与混合检索工具两大功能。通过Cherry-Studio界面和通义千问qwen-max模型进行演示,展示了文本数据上传、向量嵌入及查询过程。此外,详细说明了Python和Java版本的本地运行步骤、环境配置及二次开发方法,并提供了集成三方工具如Cherry Studio的应用示例。Tablestore凭借混合查询、Serverless低成本、弹性扩展等优势,为MCP场景提供高效解决方案。
1077 3
|
NoSQL Java Redis
Redis 从入门到精通之Redis操作删除指定Key
删除redis 可以使用Del、unlinke。推荐使用unlink。Redis是一个内存数据库,删除key会立即释放内存,因此要慎重删除,避免误删重要数据。
7411 113
|
7月前
|
JavaScript Java 大数据
基于springboot的美食文化和旅游推广系统
本研究聚焦美食文化与旅游推广系统的融合,探讨如何借助Java、Vue.js等技术构建数字化平台,整合地域美食资源与旅游产业,推动文化传承与经济协同发展。
|
搜索推荐 API 数据处理
Python魔法:打造个性化天气查询工具
【8月更文挑战第31天】 在这篇文章中,我们将一起探索如何用Python构建一个个性化的天气查询工具。不同于传统的技术文章,我们将通过一个简单的故事引入主题,让读者感受到编程的乐趣和实用性。文章将介绍如何使用API获取数据,处理这些数据,并以用户友好的方式展示信息。无论你是编程新手还是想扩展你的项目库,这篇文章都会给你提供有价值的见解和代码示例。
element-ui中的prop 的相关作用
element-ui中的prop 的相关作用
844 0