作者 | Alan

授权转载自 | https://zhuanlan.zhihu.com/p/121721537

CVPR2020:Structure-Preserving Super Resolution with Gradient Guidance

  • 论文:https://arxiv.org/pdf/2003.13081.pdf

  • 代码:https://github.com/Maclory/SPSR

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

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

图 1. 局部图像细节对比

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

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

主要有两点:

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

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

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

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

图 2. Overall framework of SPSR

网络结构

1.梯度图 Gradient Map

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

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

import torch
import torch.nn as nnclass 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) / 256x_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:

同时还引入 GAN Loss:

2.梯度 Loss:

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

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

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

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

梯度 Loss 的具体形式如下:

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

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

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

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

整体优化目标函数为:

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

实验结果和分析

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

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

表1.Benchmark 上的性能评价

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

图4.局部细节对比

总结

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

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。加入微信群请扫码:

【CV】CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法相关推荐

  1. 合流超几何函数_【CV】CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

    作者 | Alan 授权转载自 | https://zhuanlan.zhihu.com/p/121721537 CVPR2020:Structure-Preserving Super Resolut ...

  2. CVPR 2021 | 基于跨任务场景结构知识迁移的单张深度图像超分辨率方法

    ©PaperWeekly 原创 · 作者|孙宝利 学校|大连理工大学硕士 研究方向|计算机视觉 项目主页: http://faculty.dlut.edu.cn/yexinchen/zh_CN/zdy ...

  3. PULSE:一种基于隐式空间的图像超分辨率算法

    分享一篇 CVPR 2020 录用论文:PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generati ...

  4. ESRGAN:基于GAN的增强超分辨率方法(附代码解析)

    作者丨左育莘 学校丨西安电子科技大学 研究方向丨计算机视觉 之前看的文章里有提到 GAN 在图像修复时更容易得到符合视觉上效果更好的图像,所以也是看了一些结合 GAN 的图像修复工作. ESRGAN: ...

  5. 基于深度学习的图像超分辨率方法 总结

    基于深度学习的SR方法 懒得总结,就从一篇综述中选取了一部分基于深度学习的图像超分辨率方法. 原文:基于深度学习的图像超分辨率复原研究进展 作者:孙旭 李晓光 李嘉锋 卓力 北京工业大学信号与信息处理 ...

  6. AI周报丨标清变4k?B站超分辨率算法开源;强化学习算法控制核聚变登上《nature》

    AI周刊丨标清变4k?B站超分辨率算法开源:强化学习算法控制核聚变登上<nature> 2022年2月22日 极链AI云 文章目录 AI周刊丨标清变4k?B站超分辨率算法开源:强化学习算法 ...

  7. PANet:基于金字塔注意力网络的图像超分辨率重建(Pytorch实现)

    PANet:基于金字塔注意力网络的图像超分辨率重建 [!] 为了提高代码的可读性,本文模型的具体实现与原文具有一定区别,因此会造成性能上的差异 文章目录 PANet:基于金字塔注意力网络的图像超分辨率 ...

  8. 经典论文复现 | 基于深度卷积网络的图像超分辨率算法

    过去几年发表于各大 AI 顶会论文提出的 400 多种算法中,公开算法代码的仅占 6%,其中三分之一的论文作者分享了测试数据,约 54% 的分享包含"伪代码".这是今年 AAAI ...

  9. 风格化图像_CVPR2019:基于神经网络纹理转换的图像超分辨率

    SRNTT: Image Super-Resolution by Neural Texture Transfer [Paper] [Code] SRNTT方法创新点:在 图像中找到与 图像中图像 pa ...

最新文章

  1. 2018-2019-2 网络对抗技术 20165328 Exp2 后门原理与实践
  2. Java多线程(四)之ConcurrentSkipListMap深入分析
  3. markdown流程图画法小结
  4. Linux Shell编程(25)——I/O 重定向
  5. Go 性能优化技巧 4/10
  6. CSS面试题汇总(三)
  7. IndentationError: expected an indented block解决方案
  8. 计算机插入的u盘文件打不开,U盘插入电脑显示盘符却打不开的解决方法
  9. vue 判断字符串是否是英文_Vuejs Element input组件区分中英文 统计长度
  10. c++20中的span
  11. 保龄球计分c语言程序,求C语言代码解释(保龄球记分程序)
  12. 任正非:《一江春水向东流》
  13. 关于Android SD卡
  14. c++ 问题:查找预编译头时遇到意外的文件结尾
  15. PX4二次开发——PX4程序架构
  16. 十二时辰和人体经络图文
  17. Spring Boot JPA实体类idea自动生成 其一-https://www.jianshu.com/p/44bb7e25f5c7
  18. 网站收录的一些奇葩事情
  19. Windows下Redmine 的安装步骤
  20. html anki编辑器,AnkiEditor | F-Droid - Free and Open Source Android App Repository

热门文章

  1. 求复变函数的 Taylor 展式与 Laurent 展式[华中师范大学2010年复变函数复试试题]...
  2. 一个linux 和 Windows下都可用的 scoket
  3. 抽象工厂模式(C#)
  4. Selenium3 + Python3自动化测试系列一——安装Python+selenium及selenium3 浏览器驱动
  5. vue路由 routers的写法:require用与不用
  6. mysql-5.7.21-winx64.zip 下载安装
  7. 2.1TF模型持久化
  8. javaweb jsp
  9. CocoaPods 的使用与一些异常情况的处理
  10. .NET打包工具怎么注册 .dll文件??