让 GLEAN 还原你女神的美妙容颜

简介: 在 CVPR 2021, 我们提出了 GLEAN, 利用预训练的 StyleGAN 作为 latent bank, 提高图像超分辨率的效能。当时,GLEAN 在 Bicubic 下采样获得非常好的效果。之后,我们向前踏出一步,在真实人脸复原上作出尝试。今天,我们就在这里分享一下我们现在的进展。

CVPR 2021, 我们提出了 GLEAN, 利用预训练的 StyleGAN 作为 latent bank, 提高图像超分辨率的效能。当时,GLEAN 在 Bicubic 下采样获得非常好的效果。


之后,我们向前踏出一步,在真实人脸复原上作出尝试。今天,我们就在这里分享一下我们现在的进展。

640.png

假如你突然找到自己十年之前的童年照,但是相机性能不足,和照片老化等等问题影响了它的品质,又或者你有一个非常喜欢的自拍照,但当时环境因素影响了清𥇦度,那这个时候应该怎么办?


我们无法回到过去再拍一次,那只可以依靠后处理了。这时候,就需要依靠一个强大的图像复原算法把图片质量提升。


近年来,随着深度学习的发展,各种复原任务的能力也获得显著提升。但早年的方法一般只能在有限的场景 (例如 Bicubic 下采样) 上发挥出效果。


近年,在合成退化下的发展已慢慢成熟,大家的注意力亦开始走向现实,发展能在实际场景应用的算法。

640.png


1. 概述



人脸复原是图像复原的一个子领域目的是从一个低质量的输入人脸图像,复原成一个高质量的人脸。相对于通用场景,人脸具有较强的结构信息,现有的工作一般也会利用相关的先验信息,例如五官位置,来提高复原质量。


虽然人脸有着较强的结构,但在实际情况中,网络需要适应图片中不同程度和类别的退化。这仍然是一个相当困难的问题。我们在 CVPR 2021 提出的 GLEAN, 通过利用预训练的生成网络 (StyleGAN) 来提供自然图片先验,能有效地提高超分辨率的表现。


我们猜想,这个思路在真实图像超分中可能发挥更大的作用,因为在真实图像中,除了分辨率的影响外,不同的退化(模糊,噪聲等)导致问题变得更病态,因此我们更需要额外的先验引导网络。所以,我们这次利用 MMEditing 对 GLEAN 的训练作出修改,使它能应用到真实图像当中。


2. 问题



Generative Adversarial Network (GAN) 已在超分辨率任务中被广泛使用,其目的是丰富复原图像中的纹理细节。现有方法一般可以分为两种:


1) 第一种方法(如 ESRGAN)训练生成器以处理放大任务,其中通过使用鉴别器将真实图像与生成器生成的放大图像区分开来进行对抗训练。在这种设置下,生成器既负责捕获自然图像特征,又负责保持对 ground-truth (GT) 的保真度。这不可避免地限制了生成自然细节的能力。因此, 这些方法经常产生伪像和不自然的纹理。


2)第二种方法(如 PULSE)通过优化来更好地利用 GAN 的隐空间来解决上述问题。但是,由于低维隐码 (latent code) 和图像空间中的约束不足以指导恢复过程,这些方法通常会生成低保真度的图像。


如下图所示,虽然 ESRGAN 能够恢复猫的结构(例如,姿势,耳朵的形状),但仍难以产生逼真的纹理。另一方面,尽管 PULSE 的输出是真实的,但其保真度非常低, 未能恢复物体的结构。

640.png


3. 训练方式



如上面所讲,真实图像复原除了需要提高分辨率外,还需要去除模糊,噪声等退化。因此,我们需要在训练当中让网络学习如何去除这些退化。


在这个工作中,我们在训练中加入生成的退化,例如高斯模糊和高斯噪声,而网络就跟我们 CVPR 2021 的结构保持一样。在训练中使用额外的退化,可以让网络进行超分办率的同时进行复原,在真实人脸上达到非常好的效果。


MMEditing 已经有一系列的退化,大家可以自由地组合这些退化来训练模型,非常方便。以下,我们会简单介绍我们的网络 - GLEAN


4. 方法



在大规模自然图像上训练的 GAN 模型可捕获丰富的纹理和形状先验。先前的研究表明,可以通过 GAN Inversion 来获取此类先验信息,以使各种图像恢复任务受益。但是,如何利用先验而不进行反演过程中的复杂优化仍然是一个没有被充分研究的问题。


在这项研究中,我们在一种新颖的 encoder-bank-decoder 结构中设计了 GLEAN,该体系结构允许人们只需要一个 forward-pass 就可以利用生成先验。如下图所示,给定严重降采样的图像,GLEAN 应用 encoder 提取潜在矢量 (latent vector) 和多分辨率卷积特征,这些特征捕获了重要的高层线索以及 LR 图像的空间结构,可以用于调节 latent bank,为 decoder 产生了另一组多分辨率特征。


最后, decoder 通过集成来自 encoder 和 latent bank 的特征来生成最终输出。在这项工作中,我们采用 StyleGAN 作为 latent bank。这里要强调的是这个概念可以扩展到其他网络,例如 BigGAN。

640.png


Encoder


为了产生 latent vector,我们首先使用 RRDBNet 从输入图像中提取特征。然后,我们通过以下方法逐渐降低特征的分辨率:

640.png

其中 Ei (i =1, 2, …, N)表示一个 stride-2 卷积和 stride-1 卷积的堆栈。最后,使用卷积和全连接层来生成 latent vector:

640.png

其中 C 是一个矩阵,其列表示 StyleGAN 需要的 latent vectors。C 中的 latent vector 是捕获图像的压缩表示,为 latent bank (StyleGAN) 提供 high-level 信息。为了进一步获得 LR 图像的局部结构并为结构恢复提供其他指导,我们还将多分辨率卷积特征 f_i 嵌入到 latent bank。


Generative Latent Bank


给定卷积特征 f_i 和 latent vector C,我们利用预训练的生成器 (StyleGAN) 作为 latent bank 来提供纹理和细节生成的先验。由于 StyleGAN 是为图像生成任务而设计的,因此无法直接集成到建议的 encoder-bank-decoder 框架中。在这项工作中,我们进行了三处修改,使 StyleGAN 更能配合我们的超分网络:


1)生成器的每个块都采用一个不同的 latent vector 来提高表达能力,而不是将一个latent vector作为输入。更具体地说,假设 StyleGAN 有 k 个块,那 C=(c_0, c_1, …, c_{k-1}),其中每个 c_i 代表一个 latent vector。我们发现这种修改导致输出的伪像更少。在以前的工作中也可以看到这种修改。


2)为了允许使用encoder的特征,我们在每个块中使用了一个附加的卷积来进行特征融合:

640.png

其中 S_i 表示具有附加卷积的块,而 g_i 代表第 i 个块的输出特征。


3)我们不是直接从 StyleGAN 生成输出,而是输出特征 g_i 并将它们传递给 decoder,以更好地融合 latent bank 和 encoder 中的特征。


优点: 我们的 Generative Latent Bank 与 Reference-Based SR 有着类似的想法。在 Reference-Based SR 中, 虽然使用外部 HR 信息作为图像字典可带来显着改善,但其网络性能对输入和参考之间的相似性很敏感。当参考图像或人脸部位(如眼睛、鼻子、嘴)选择不当时,不匹配的字典可能导致结果变差。另外,这些方法经常需要计算量大的全局匹配或人脸部位检测/选择来从参考中聚集适当的信息,阻碍了对具有严格计算约束的场景的应用。


相反地,GLEAN 并未构建图像字典,而是采用了 GAN-based 字典。我们的字典不依赖于任何特定的参考图像块。取而代之的是,它捕获图像的分布,并且可能具有无限的大小和多样性。此外,GLEAN 的计算效率很高,无需全局匹配和参考图像块选择。


Decoder


GLEAN 使用附加的具有渐进融合功能的 decoder 来集成 encoder 和 latent bank 中的特征以生成输出图像。它以 RRDBNet 特征作为输入,并将特征与 latent bank 中的多分辨率特征逐步融合:

640.png

其中 D_i 和 d_i 分别表示 3x3 卷积及其输出。除最终输出层外,每个卷积后面都有一个 pixel-shuffle层。通过 decoder 和 encoder 之间的跳过连接,可以增强 encoder 捕获的信息,因此 latent bank 可以将更多的精力集中在纹理和细节生成上。


5. 实验结果



我们这次的重点是在人脸复原上,所以我们多放一些在人脸上复原的效果给大家看。


如果想看更多的分析和实验结果,请到我们的论文查看。链接:https://arxiv.org/abs/2012.00739

640.png

640.png

640.png

640.png


6. 总结



1) 提出利用预训练的 StyleGAN 用作先验,提升复原质量。

2.)跟现有方法相比,GLEAN 在 质量和保质量均有明显的提升。

3.)可以拓展到真实人脸图像复原中,模型已开源到 MMEditing。


7. 如何使用 GLEAN



MMEditing 已经提供了预训练的模型。为了更方便大家使用,我们也提供了人脸对齐的工具包和人脸复原的 demo,现在,用家只需要准备好需要复原的图片,我们会自动找出图片里面的人脸,进行复原,然后贴回原来的照片中。


有了 MMEditing,现在有机会让你不用再忍受低清的痛苦,快点来把你的男神女神换成高清版本吧!


文章来源:公众号【OpenMMLab】

 2021-11-30 19:30


目录
相关文章
|
3月前
|
Web App开发 自然语言处理
一盏茶的功夫带你掌握烦人的 this 指向问题( 二 )
一盏茶的功夫带你掌握烦人的 this 指向问题( 二 )
|
6月前
|
前端开发 JavaScript 程序员
程序员教你用代码制作3d爱心跳动特效,正好拿去送给女神给她个惊喜
使用HTML、CSS和JavaScript实现了一个三维网格采样器`MeshSurfaceSampler`,适用于任意浏览器,推荐谷歌。代码创建了一个类,从缓冲几何体的三角形网格中进行随机采样。提供了设置权重属性、构建分布和自定义随机数生成器的功能。用户只需将代码复制到文本文档并保存为HTML文件,即可运行。适合编程爱好者尝试,也可分享给他人。
205 1
|
6月前
|
前端开发 JavaScript 程序员
程序员教你用代码制作圣诞树,正好圣诞节拿去送给女神给她个惊喜
使用HTML、CSS和JavaScript实现了一个圣诞树效果,包括一个闪烁的圣诞树和一个动态的光斑。代码包含一个<div>元素作为遮罩,一个<canvas>元素绘制星星动画,以及一个SVG元素绘制圣诞树。页面还包含一个提示用户先点赞再观看的提示。此效果适用于任何浏览器,推荐使用谷歌浏览器。提供了一段HTML代码,可以直接复制粘贴到文件中并以.html格式打开查看效果。
77 0
|
前端开发 容器 API
摸鱼时刻打造优弧语录,经典的你小子
各位掘友,知道juejin正式会员群里什么最多吗?
159 2
摸鱼时刻打造优弧语录,经典的你小子
|
Java
Java福尔摩斯的约会大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了
Java福尔摩斯的约会大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了
131 0
Java福尔摩斯的约会大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了
|
小程序 数据安全/隐私保护 计算机视觉
切勿外传,我要把我的写作“小心思”放出来了!| 年终总结之学习篇🚩
切勿外传,我要把我的写作“小心思”放出来了!| 年终总结之学习篇🚩
177 0
切勿外传,我要把我的写作“小心思”放出来了!| 年终总结之学习篇🚩
|
Java
老爷子这代码,看跪了! (上)
老爷子这代码,看跪了! (上)
147 0
老爷子这代码,看跪了! (上)
|
Java 程序员
老爷子这代码,看跪了! (中)
老爷子这代码,看跪了! (中)
141 0
老爷子这代码,看跪了! (中)
|
安全 Java
老爷子这代码,看跪了! (下)
老爷子这代码,看跪了! (下)
130 0
老爷子这代码,看跪了! (下)
|
监控 测试技术 iOS开发
大侦探福老师——幽灵Crash谜踪案
作者:闲鱼技术-福居 闲鱼Flutter技术的基础设施已基本趋于稳定,就在我们准备松口气的时候,一个Crash却异军突起冲击着我们的稳定性防线!闲鱼技术火速成立侦探小组执行嫌犯侦查行动,经理重重磨难终于在一个隐蔽的角落将其绳之以法! 幽灵Crash 问题要从闲鱼Flutter基础设施上一次大规模升级说起。
2359 0