2017-EnhanceNet: Single Image Super-Resolution Through Automated Texture Synthesis(EnhanceNet)

基本信息

作者: Mehdi S. M. Sajjadi Bernhard Sch¨olkopf Michael Hirsch
期刊: ICCV
引用: *
摘要: 单一图像超分辨率是指从单一低分辨率输入推断出高分辨率图像的任务。传统上,这项任务的算法性能是用像素级的重建措施来衡量的,如峰值信噪比(PSNR),这已被证明与人类对图像质量的感知关联性很差。因此,最小化这些指标的算法往往会产生过度平滑的图像,这些图像缺乏高频纹理,尽管产生了高PSNR值,但看起来并不自然。我们提出了一种新的自动纹理合成应用,结合感知损失,重点是创造真实的纹理,而不是在训练期间优化地面真实图像的像素精确再现。通过在对抗性训练环境中使用前馈全卷积神经网络,我们在高放大率下实现了图像质量的大幅提升。在一些数据集上的广泛实验显示了我们方法的有效性,在定量和定性的基准上都产生了最先进的结果。

1.简介

  • 超分辨的困难:当下采样时,大量不同的HR图像可以产生相同的LR图像。对于高倍率,这种一对多的映射问题变得更糟,使SISR成为一个高度复杂的问题。大的下采样系数导致高频信息的损失,使超分辨率图像中的纹理区域变得模糊,过于光滑,外观不自然。

  • 本文提出的方法比SOTA方法展示更清晰:这种行为的原因在于目前最先进的方法所采用的目标函数的选择:大多数系统最小化HR地面真实图像和它从LR观察的重建之间的像素平均平方误差(MSE),然而MSE已被证明与人类对图像质量的感知相关性很差。虽然容易最小化,但最佳MSE估计器返回许多可能的解决方案的平均值,这使得SISR的结果看起来不自然和不可靠。在超分辨率的背景下,这种回归平均的问题是一个众所周知的事实,然而,对自然图像的高维多模态分布进行建模仍然是一个具有挑战性的问题。
    上图表明最低MSE的最终视觉效果不尽人意,而对抗损失产生的图像却和原图很相似。耐人寻味的是,这个结果的PSNR比模糊的MSE样本低。

  • 本文的工作:提出了对最近的纹理合成网络的新颖修改,结合对抗性训练和感知损失,在大放大率下产生真实的纹理。该方法同时适用于所有的RGB通道,并以有竞争力的速度产生自然图像的清晰结果。通过适当的损失组合训练,我们在PSNR和使用感知指标方面都达到了最先进的结果。

2.相关工作

  • 介绍了SISR的多年发展历程,从最经典的插值,到频域法,再到重建法,到基于深度学习的方法。高倍率SISR背景下的真实纹理仅由用户指导的方法实现。
  • 自从SRCNN以来,PSNR就成为衡量SISR技术的指标,由于这些模型是通过MSE最小化来训练的,结果往往是模糊的,并且由于上述的回归平均问题而缺乏高频纹理。有人为CNN提出了其他的感知损失,其想法是将损失从图像空间转移到像VGG这样的物体识别系统的更高层次的特征空间,尽管PSNR值较低,但结果更清晰
  • 目前CNN用于纹理合成和风格转移比较有效,但是尚未用于SISR,同时对抗网络被证明在一些图像生成任务中产生了好结果

3.单幅图像超分辨

多数模型使用MSE之类的损失函数优化模型,虽然以PSNR衡量达到了很好的效果,但得到的图像往往看起来很模糊,缺乏原始图像中的高频纹理。这是SISR中高模糊性的直接影响:由于降采样从输入图像中删除了高频信息,没有任何方法可以希望以像素级的精度重现所有精细细节。因此,即使是最先进的模型也会学习在这些区域产生所有可能的纹理的平均值,以使输出图像的欧氏损失最小。

在上图中,所有的高频信息都被降采样所丢失。关于欧氏损失的最佳解决方案只是所有可能的图像的平均值,而更高级的损失函数会导致更真实的,尽管不是像素完美的再现。

4.方法

4.1.网络结构

网络结构如图所示:

4.2.训练与损失函数

  1. 图像空间的像素级损失
    LE=∥Iest−IHR∥22\mathcal{L}_E=\left\|I_{\mathrm{est}}-I_{\mathrm{HR}}\right\|_2^2LE​=∥Iest​−IHR​∥22​
  2. 特征空间的感知损失
    LP=∥ϕ(Iest)−ϕ(IHR)∥22\mathcal{L}_P=\left\|\phi\left(I_{\mathrm{est}}\right)-\phi\left(I_{\mathrm{HR}}\right)\right\|_2^2LP​=∥ϕ(Iest​)−ϕ(IHR​)∥22​
    这允许模型产生的输出可能与地面真实图像的像素精度不一致,鼓励网络产生具有类似特征表示的图像。其中Φ使用预训练的VGG19网络
  3. 纹理(匹配)损失
    LT=∥G(ϕ(Iest))−G(ϕ(IHR))∥22\mathcal{L}_T=\left\|G\left(\phi\left(I_{\mathrm{est}}\right)\right)-G\left(\phi\left(I_{\mathrm{HR}}\right)\right)\right\|_2^2LT​=∥G(ϕ(Iest​))−G(ϕ(IHR​))∥22​
    通过将从预训练的网络中提取的统计数据与目标纹理相匹配,迭代地生成输出图像。作为统计数据,在一个给定的VGG层上,使用了长度为m的n个特征的特征激活两个图像之间的相关性。G是格拉姆矩阵,训练一个可以生成全局纹理的神经网络(使用Patch纹理)
  4. 对抗损失
    LA=−log⁡(D(G(z)))\mathcal{L}_A=-\log (D(G(z)))LA​=−log(D(G(z)))
    LD=−log⁡(D(x))−log⁡(1−D(G(z)))\mathcal{L}_D=-\log (D(x))-\log (1-D(G(z)))LD​=−log(D(x))−log(1−D(G(z)))

5.评估实验

5.1.不同损失函数的影响


ENet-P的结果看起来比ENet-E的略微清晰,但它也产生了令人不快的棋盘假象。ENet-PA产生的图像明显更清晰,但包含不自然的纹理,而我们发现ENet-PAT产生的纹理更逼真,导致接近原始HR图像的逼真图像

ENet-E产生了最高的PSNR值,因为它被训练为最小化每像素与地面真相的距离。用感知损失训练的模型都产生较低的PSNR,因为它允许像素强度与地面实况的偏差。正是这些异常值大大降低了PSNR的得分。纹理损失通过减少对抗性损失项的假象来增加PSNR值。

5.2.与其他模型对比

5.2.1.PSNR质量方面


以前的方法在恢复更清晰的边缘方面不断改进,产生了更高的PSNR,ENet-E延续了这一趋势,使边缘略微清晰,细节更加精细(例如眼睛下面的区域)。通过我们的纹理合成方法,ENet-PAT是唯一能产生锐利线条和再现纹理的方法,从而使图像看起来最逼真。此外,ENet-PAT产生了在LR图像中完全缺失的高频图案,例如,斑马额头上的线条或草地纹理,表明该模型能够检测和产生导致逼真图像的图案。

5.2.2.目标识别表现

ResNet对ImageNet数据集中的图片的识别性能和报告的置信度,在使用不同的算法将图片缩小到56×56之后,又将其放大了4倍。基线显示了ResNet在原始224×224大小的图片上的表现。与PSNR相比,这些分数与人类对图像质量的感知更为相关。ENet-E只取得了比DRCN或PSyCo稍高的分数,因为所有这些模型都能使像素级的MSE最小化。ENet-PAT取得了更高的分数,因为它能产生更清晰的图像和更真实的纹理。ENet-EA是在没有VGG的情况下训练出来的,其良好的结果表明,ENet-PAT的高分并不仅仅是由于用VGG训练出来的,而可能是由于图像更清晰的结果

5.2.3.观感质量评估

将ENet-E和ENet-PAT分别展示给用户看,结果91%的观众选择了ENet-PAT(PSNR较小的)

5.3.训练与推理速度

使用COCO数据集训练,推理也很快。

6.讨论,未来工作的方向

  • 本文提出了一个架构,通过使用欧氏损失或对抗性训练的新组合、感知损失和新提出的用于超分辨率的纹理转移损失进行训练,能够通过定量和定性措施产生最先进的结果。

  • 虽然ENet-PAT产生的图像看起来很真实,但它们在像素上与真实图像并不一致。此外,对抗性训练有时会在输出中产生假象,这些假象在加入纹理损失后会大大减少,但不能完全消除。同时该文章的方法也会有一些有趣的故障。

  • 未来的工作可能会减少网络的深度,并应用缩小的方法来加快模型在高分辨率数据上的实时性能:增加一个时间一致性的术语,然后可以使该模型用于视频超级分辨率

代码实现

论文主页:http://webdav.tue.mpg.de/pixel/enhancenet
开源代码:https://github.com/msmsajjadi/EnhanceNet-Code

个人总结

  1. 传统的以MSE等损失的模型以获得最佳PSNR为目的,可是获得更高的PSNR却不一定会有更清晰的图像,而只是SR与HR有最小的像素差
  2. 本文提出的ENet-E以PSNR为导向,以MSE为损失函数,获得了最佳的PSNR指标;本文提出的ENet-PAT以图像细节纹理为导向,以像素损失+感知损失+纹理损失+对抗损失为损失函数,获得了最佳的视觉质量,并在目标识别中取得了最佳的效果。
  3. 本文的ENet-PAT对我们更有启示。对于高级视觉任务(如目标识别)来说,细节、纹理更加丰富,目标与背景区别比较明显的图像作为输入才会达到更优的效果,而不是PSNR更高的图像,所以本文的四大损失对于低级视觉任务+高级视觉任务具有启示意义。

【图像超分辨率重建】——EnhanceNet论文精读笔记相关推荐

  1. 学习笔记之——基于深度学习的图像超分辨率重建

    最近开展图像超分辨率( Image Super Resolution)方面的研究,做了一些列的调研,并结合本人的理解总结成本博文~(本博文仅用于本人的学习笔记,不做商业用途) 本博文涉及的paper已 ...

  2. 基于深度学习的图像超分辨率重建

    最近开展图像超分辨率( Image Super Resolution)方面的研究,做了一些列的调研,并结合本人的理解总结成本博文~(本博文仅用于本人的学习笔记,不做商业用途) 本博文涉及的paper已 ...

  3. 图像超分辨率重建之SRCNN

    新版本请访问简书链接:https://www.jianshu.com/p/dfe85a3c2096 图像超分辨率重建:指通过低分辨率图像或图像序列恢复出高分辨率图像.高分辨率图像意味着图像具有更多的细 ...

  4. 基于SRGAN实现图像超分辨率重建或复原

    基于SRGAN实现图像超分辨率重建或复原 2018年04月20日 11:50:26 山水之间2018 阅读数 14064 文章标签: SRGAN图像超分辨率重建 更多 分类专栏: 深度学习 图像处理  ...

  5. 【数字图像处理3 】(上)图像超分辨率重建(SR)概述

    图像超分辨率重建 一.前言(废话时间) 二.扫盲知识 什么是 超分辨率重建? 兴起原因 三.传统超分辨率重建 1.基于插值的超分辨率重建 2.基于退化模型的超分辨率重建 3.基于学习的超分辨率重建 四 ...

  6. 图像超分辨率重建算法,让模糊图像变清晰(附数据和代码)

    一.  图像超分辨率重建概述 1. 概念 图像分辨率是一组用于评估图像中蕴含细节信息丰富程度的性能参数,包括时间分辨率.空间分辨率及色阶分辨率等,体现了成像系统实际所能反映物体细节信息的能力.相较于低 ...

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

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

  8. 一文掌握图像超分辨率重建(算法原理、Pytorch实现)——含完整代码和数据

    目录 一.  图像超分辨率重建概述 1. 概念 2. 应用领域 3. 研究进展 3.1 传统超分辨率重建算法 3.2 基于深度学习的超分辨率重建算法 二.  SRResNet算法原理和Pytorch实 ...

  9. 超分辨率——基于SRGAN的图像超分辨率重建(Pytorch实现)

    基于SRGAN的图像超分辨率重建 本文偏新手项,因此只是作为定性学习使用,因此不涉及最后的定量评估环节 目录 基于SRGAN的图像超分辨率重建 1 简要介绍 2 代码实现 2.1 开发环境 2.2 主 ...

  10. 【毕业设计】基于深度学习的图像超分辨率重建 - opencv python cnn

    文章目录 0 前言 1 什么是图像超分辨率重建 2 应用场景 3 实现方法 4 SRResNet算法原理 5 SRCNN设计思路 6 代码实现 6.1 代码结构组织 6.2 train_srresne ...

最新文章

  1. 栈与队列7——单调栈结构(进阶问题)
  2. 意大利物联网技术发展现状
  3. apache solr rce cve-2019-0192 分析
  4. 解决JDBC连接mysql时server time zone问题及com.mysql.jdbc.Driver is deprecated
  5. Samba服务器问题汇总
  6. 【渝粤教育】电大中专职业应用写作_1作业 题库
  7. Linux设置RSA密钥登录
  8. ubuntu中提示找到make命令的解决方案
  9. “飞天、无影、小蛮驴…”带你走进2020云栖大会
  10. 微信小程序架构分析 (中)
  11. Tricks(二十六) —— 妙用关键字参数(keyword arguments)创建字典
  12. [bzoj1269]文本编辑器editor [bzoj1500]维修数列
  13. spring 处理带有特殊字符的请求_Spring爸爸又给Spring MVC生了个弟弟叫Spring WebFlux...
  14. 记事本下编写并运行Java代码
  15. PDMS软光刻加工过程
  16. 几种欧姆龙PLC型号的辨识
  17. homeassistant搭建_安卓环境home assistant搭建
  18. 谷歌浏览器无法访问怎么办
  19. window系统中,交换键盘中win键和ctl键
  20. nginx 在线一键安装

热门文章

  1. Excel多工作薄汇总——《超级处理器》应用
  2. Scratch软件编程等级考试四级——20200913
  3. arcgis 空间数据 坐标转换 工具
  4. jython 调用java_Jython简介,第1部分:Java编程变得更容易
  5. 8051单片机基础6:通用指针和定向指针
  6. Commonly Used Afx Functions
  7. wordpress实现文章阅读次数
  8. 【读书2】【2014】基于MATLAB的雷达信号处理基础(第二版)——多普勒频移(1)
  9. 2sa1943放大倍数_2SC5200 2SA1943和TTC5200,TTA1943这2个对管的资料技术参数的区别-亿配芯城...
  10. Screen.SetResolution 设置分辨率