作者 | 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 torchimport 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:

同时还引入 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. ESRGAN:基于GAN的增强超分辨率方法(附代码解析)

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

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

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

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

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

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

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

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

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

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

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

  9. 实践:基于深度学习的卫星图像超分辨率处理技术(一)

    本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译. 以下为译文: Yann Lecun曾将无监督学习比作蛋糕,将监督学习比作蛋糕上的糖霜,声称我们仅懂得如何做糖霜却不知道怎样才能做出蛋糕. ...

最新文章

  1. Unity学习笔记(5):动态加载Prefab
  2. 超详细SQLMap使用攻略及技巧分享
  3. Ubuntu 16.04 安装wine
  4. “之”字形打印矩阵~
  5. 【Python】之split()方法
  6. 前端项目使用阿里图标
  7. Supervisor 使用说明,轻松管理进程
  8. esayExcel自定义注解导出表头批注
  9. 求解:Encountered internal error running command: TypeError: Cannot read property 'toLowerCase' of unde
  10. 计算机末端网络,计算机线缆末端的圆球是什么?
  11. 使用Nginx负载均衡及动静分离
  12. 豪越HYDO医院运维监控及ITSM运维服务案例
  13. MYSQL高可用架构MMM实现
  14. php 文本编辑器 ueditor
  15. 关于5G最完整的PPT
  16. 江苏教育考试院官网显示服务器联系不上,浙江教育考试网进不去怎么回?
  17. 系统平台如何解决常见问题
  18. 孩子学计算机编程有用吗,孩子学编程有用吗?
  19. TransparentBlt的使用
  20. 京东商品获取优惠券API接口-京东优惠券如何获取-京东联盟API接口

热门文章

  1. 批处理延迟sleep应用
  2. 关于group by的用法 原理
  3. Leetcode-MySQL-197. 上升的温度
  4. Mesos container在360广告系统的应用
  5. Go: 清空 Slice 的两种方法:[:0]和nil
  6. 多容器,Nginx容器灵活切换PHP版本!同时运行多个PHP容器
  7. CentOS 6.6下Redis安装配置记录
  8. zookeeper专题:zookeeper集群模式下,leader选举流程分析
  9. 面试题:ConcurrentHashMap 和 Hashtable 的区别
  10. 基于jedis的Redis工具类