ReStyle 水记(GAN反演,基于迭代细化的编码器)

ReStyle 水记(GAN反演,基于迭代细化的编码器)

《ReStyle: A Residual-Based StyleGAN Encoder via Iterative Refinement》

《ReStyle:一种基于残差的迭代细化StyleGAN编码器》

主页:https://yuval-alaluf.github.io/restyle-encoder/

论文:https://arxiv.org/abs/2104.02699

项目:https://github.com/yuval-alaluf/restyle-encoder

演示: BV1hv411J7mq ReStyle:人工智能“艺术家”生成近乎完美的卡通形象!万物皆可卡通化!

  • 一些截图

    在这里插入图片描述

    注意到,本方法在卡通化中成功保留了胡子

    在这里插入图片描述

    可以在卡通化的情况下进行插值

    在这里插入图片描述

    属性编辑

    在这里插入图片描述

    人脸插值

    在这里插入图片描述

    不仅可以在人脸上插值,还可以用于汽车、动物、建筑物

GAN 反演

想法很简单,不是直接预测正确编码,而是预测当前编码与正确编码的差(或者说,预测 当前重建结果 与 目标图像 之间的,在 隐空间 中的差),然后循环几次,这样就实现了迭代细化。

一般的编码器输入 target 图片,输出 隐编码

本方法:

  1. 初始化:使用 平均隐编码 作为初始的 隐编码 w 0 \mathbf{w}_0 w0
  2. 用 生成器 G G G 根据 当前隐编码 w t \mathbf{w}_t wt 重建出图片 y ^ t \mathbf{\hat y}_t y^t
  3. 用 编码器 E E E 输入 x \mathbf{x} x y ^ t \mathbf{\hat y}_t y^t ,输出两张图片隐编码之差 Δ t \Delta_{t} Δt
  4. 得到新的隐编码 w t + 1 ← w t + Δ t \mathbf{w}_{t+1} \leftarrow \mathbf{w}_{t}+\Delta_{t} wt+1wt+Δt

不断循环234,直到收敛(循环次数不多,一般小于10次)

在这里插入图片描述

在训练时,每次前向传播都会计算 loss (应该就是弄很多图片建立训练集,专门训练这个对两个图片做差的编码器)

注意,训练时每个 batch 都会执行 N 次迭代

相关工作

迭代细化并不是一个新点子。[8] 为 人体姿态估计 引入了 迭代反馈机制。一些工作将迭代细化引入了 光流 [22]、物体姿态估计 [45,20] 、物体检测 [36] 、语义分割 [50] 。

据我们所知,我们是第一个把迭代细化用在 GAN 反演上的。

GAN反演

GAN反演任务首先由 [53] 引入。

一些方法 [53, 30, 12, 3, 4, 27, 41] 通过直接优化 latent ,最小化重建误差来解决该问题。

另一些方法 [53, 34, 52, 17, 37, 42] 设计了一个编码器,直接把图片映射到对应的 latent 。这些方法比纯优化方法速度更快,但是重建质量更差。

为了在两种类型之间寻求平衡,一些工作提出混合两种方案,以编码器来初始化优化过程 [53, 7, 17, 52] 。

我们建议读者看看 [46] ,这是一篇 GAN 反演 的综述。

基于可学习编码器的隐空间嵌入

最近的工作 [32, 37, 6, 9] 提出了一种端到端的方法,利用 GAN 生成的高质量图像实现多种图像翻译以及图像编辑。在这些工作中,图像被直接编码为 变换后的 latent,然后喂给生成器得到变换后的图像。通过训练一个带有额外约束的编码器,这些工作可以在不用提前反演图像的情况下,直接地解决多种任务。

另外的工作 [47] 研究了利用一个 训练好的StyleGAN编码器 产生的 隐编码 去解决下游任务,比如人脸识别和布局预测。这些工作进一步强调了训练一个强大的编码器,将预训练的不可控的GAN映射到隐空间,的优势。

隐空间操纵

有很多工作 [14,15,38] 使用 完全有监督 的方法,找到隐空间中与属性相关的方向,比如年龄、性别、表情。

有一些工作 [18,43,44] 使用 完全无监督 的方法,来找到方向。

另外一些工作研究比线性遍历更复杂的技术。

[40] 采用了一个预训练的 3DMM 来学习语义人脸编辑。

[39] 通过对 生成器权重 做 特征向量分解 学习到 多功能的编辑方向。

[5] 通过 受 target 属性控制的 normalizing flows 学习到 非线性的路径。

[33] 利用输入的 text-prompt 和 CLIP 来操作图像。

只要设计一个高效且精准的反演方法,我们就可以利用以上技术来操作真实图像。

方法

给定一个图像 x \mathbf{x} x ,ReStyle 执行 N>1 个 step 来得到反演结果 w = E ( x ) \mathbf{w}=E(\mathbf{x}) w=E(x) ,以及对应的重建结果 y ^ \hat y y^ 。我们将一个 step 定义为一次从 E E E G G G 的前向过程。如果只做一个 step,那么这就是一个传统的编码器反演方法。

对于训练编码器 E E E ,我们定义一次迭代为一个 batch 上的 N 个 step。训练时只训练编码器,生成器保持固定。

在推理时,我们使用同样的 多 step 过程做图像反演和重建(不计算loss)。我们注意到,给定一个 batch 的图像,只需要较少的 step (N<10)就可以收敛,而且推理时速度也会更快。

下面我们形式化的描述本方法

首先构造 ReStyle 的输入,我们将输入图像 x \mathbf{x} x 与当前重建出的图像 y ^ t \mathbf{\hat y}_t y^t 连接起来,得到一个6通道的 x t \mathbf{x}_{t} xt

x t : = x ∥ y ^ t \mathbf{x}_{t}:=\mathbf{x} \| \hat{\mathbf{y}}_{t} xt:=xy^t

然后我们将 x t \mathbf{x}_{t} xt 输入编码器得到 残差编码:

Δ t : = E ( x t ) \Delta_{t}:=E\left(\mathbf{x}_{t}\right) Δt:=E(xt)

于是我们得到新的隐编码 w t + 1 \mathbf{w}_{t+1} wt+1

w t + 1 ← Δ t + w t \mathbf{w}_{t+1} \leftarrow \Delta_{t}+\mathbf{w}_{t} wt+1Δt+wt

我们用新的隐编码计算出新的重建出的图像 y ^ t + 1 \mathbf{\hat y}_{t+1} y^t+1

y ^ t + 1 : = G ( w t + 1 ) \hat{\mathbf{y}}_{t+1}:=G\left(\mathbf{w}_{t+1}\right) y^t+1:=G(wt+1)

然后我们再把 y ^ t + 1 \mathbf{\hat y}_{t+1} y^t+1 x \mathbf{x} x 连接,进行新一轮的迭代。

我们用 平均编码 作为 w 0 \mathbf{w}_0 w0

编码器结构

我们采用了当前 SOTA 的 编码器架构,[37] (pSp) 和 [42] (e4e) 。这两个编码器在 ResNet 骨架中引入了 特征金字塔网络 [29] ,并且从三个中间层提取特征。

我们发现 ReStyle 的多step流程 减轻了对 结构复杂的编码器 的需求。

于是我们选择设计一个 pSp 和 e4e 编码器 的简化的变体。只从最后一层提取特征。

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值