Image2StyleGAN:如何把图像嵌入StyleGAN的隐空间(latent space)

Image2StyleGAN: How to embed images into the StyleGAN latent space? 

公众号:EDPJ

目录

0. 摘要

1. 介绍

2. 相关工作

3. 什么图像能被嵌入到 StyleGAN 的 latent space?

3.1 不同图像类别的嵌入结果

3.2 面部图像的抗噪性如何?

3.3 选择什么样的 latent space?

4. Embedding 的意义

4.1 变形(渐变,Morphing) 

4.2 风格转换 

4.3 表情转换和人脸重建

5. 嵌入算法

5.1 初始化

5.2 Loss Function

5.3 其它参数 

6. 结论

参考

总结 & 一些想法


0. 摘要

我们提出了一种有效的算法把图像嵌入(embed)到 StyleGAN 的隐空间(latent space)中。 这种 embedding 可用于照片语义图像编辑。 以在 FFHD 数据集上训练的 StyleGAN 为例,我们展示了图像变形、风格迁移和表情迁移的结果。 研究 embedding 算法帮助我们了解 StyleGAN 的 latent space 的结构。 我们提出了一组实验来测试可以嵌入什么类别的图像、如何嵌入它们、适合嵌入的 latent space 以及 embedding 是否具有语义意义。

为避免图像违规,对部分人脸图像进行了打码处理。原始图像参见论文。

1. 介绍

我们的目的是修改给定图像而不是随机生成的 GAN 图像。

当使用扩展的latent space W+ 时,预训练 StyleGAN 的泛化能力得到显著增强(参见 3.3 节)。因此,我们的嵌入算法不仅能够嵌入人脸图像,还能嵌入来自不同类别的非人脸图像。通过分析 embedding 的质量来继续调查,看看 embedding 是否在语义上有意义。 为此,对 latent space 的向量使用三种基本操作:线性插值、交叉以及向量加减。 这些操作对应三种处理:变形、风格迁移和表情迁移。 最终,我们对 latent space 的结构有了更多的了解,并知道了为什么可以嵌入非面部图像实例(例如汽车)。

主要贡献:

  • 一种高效的嵌入算法,可以将给定图像映射到预训练 StyleGAN 的扩展 latent space  W+。
  • 我们研究了多个问题,以深入了解 StyleGAN latent space 的结构,例如:可以嵌入什么类型的图像? 可以嵌入什么类型的面孔? 什么 latent space 可以用于嵌入?
  • 我们对向量使用三个基本操作来研究 embedding 的质量。 因此,我们可以更好地理解 latent space 以及不同类别的图像是如何嵌入的。 作为副产品,我们在多个面部图像编辑应用程序(包括变形、风格转换和表情转换)上获得了出色的结果。

2. 相关工作

高质量 GAN。最近,Karras 等人,收集了更多样化和更高质量的人脸数据集 FFHQ,并提出了一种受神经风格迁移(neural style transfer)思想启发的新生成器架构,进一步提高了 GAN 在人脸生成任务上的性能。 然而,神经网络的可解释性的缺失,导致对图像修改缺乏控制。在本文中,通过把图像嵌入回 GAN latent space 来解决可解释性问题,从而产生各种潜在应用。

Latent Space Embedding。一般而言,现存两种方法把图像映射到 latent space:

  • 学习将给定图像映射到 latent space 的编码器(例如变分自动编码器);
  • 选择一个随机的初始 latent code 并使用梯度下降对其进行优化

第一种方法通过编码器快速生成 embedding。然而,它通常在训练数据集之外泛化时存在问题。 在本文中,将第二种方法作为更通用、更稳定的解决方案。

Perceptual Loss。Gatys 等人观察到 VGG 图像分类模型的学习过滤器是优秀的通用特征提取器,并提出使用提取特征的协方差统计来感知地测量图像之间的高层次相似性,即形式化为感知损失(perceptual loss)

3. 什么图像能被嵌入到 StyleGAN 的 latent space?

3.1 不同图像类别的嵌入结果

为了测试,我们收集了一个包含 5 个类别(即人脸、猫、狗、汽车和绘画)的 25 张不同图像的小规模数据集。我们使用 StyleGAN 对人脸图像进行预处理。 此预处理包括调整到规范的面部位置。 

研究更多种类图像类的 embedding,从而更好地理解 latent space 的结构和属性。我们选择猫、狗和画出来的面孔,因为它们与人脸具有相同的整体结构,但风格却截然不同。 选择汽车是因为它们与面部没有结构相似性。

上图显示了嵌入结果,其中包含收集的测试数据集中每个图像类的一个示例。 可以看出,嵌入的人脸具有非常高的感知质量,忠实地再现了输入。 然而,嵌入的人脸略微平滑并且缺少小细节。 

有趣的是,除了人脸之外,我们发现尽管 StyleGAN 生成器是在人脸数据集上训练的,但嵌入算法能够远远超出人脸。 如图上图所示,虽然比人脸略差(分辨率、细节等),但我们可以获得合理且质量相对较高的猫、狗、甚至绘画和汽车的 embedding。

另一个有趣的问题是预训练 latent space 的质量如何影响 embedding。 为了进行这些测试,我们还使用了在汽车、猫……上训练过的 StyleGAN。然而,这些结果的质量明显较低。

3.2 面部图像的抗噪性如何?

仿射变换(Affine Transformation)。如图 2 和 表 1 所示,StyleGAN embedding 的性能对仿射变换(平移、调整大小和旋转)非常敏感。 其中,平移性能最差,因为它无法生成有效的人脸 embedding。 对于调整大小和旋转,结果是有效的面孔。 然而,它们是模糊的并且丢失了很多细节,这仍然比正常的 embedding 差。 从这些观察中,我们认为 GAN 的泛化能力对仿射变换很敏感,这意味着学习到的 representation 在某种程度上仍然依赖于尺度和位置。

嵌入有缺陷的图像。如图 3 所示,StyleGAN  embedding 可良好应对图像的缺陷。不同面部特征的 embedding 是相互独立的。 例如,mask 鼻子对眼睛和嘴巴的 embedding 没有明显影响。一方面,这有利于一般的图像编辑。另一方面,它表明 latent space 不会强制嵌入图像成为完整的人脸,即它不会修复缺失的信息。

3.3 选择什么样的 latent space?

StyleGAN 中有多个 latent space 可用于嵌入。两个明显的候选者是初始 latent space Z 和中间latent space W。将 512 维向量 z ∈ Z 通过一个全连接神经网络,获得 512 维向量 w ∈ W。直接嵌入到 W 或 Z 中并不容易。 因此,我们建议嵌入一个扩展的 latent space W+。 W+ 是 18 个不同的 512 维 w 向量的串联,用于通过 AdaIn 接收输入的 StyleGAN 架构的每一层。

如图 5 (c)(d) 所示,直接嵌入到 W 中不会得到好结果。 另一个有趣的问题是,学习到的网络权重对结果有多重要?我们在图 5 (b)(e) 中回答了这个问题。方法是对一个简单地用随机权重初始化的网络进行嵌入。

4. Embedding 的意义

我们提出了三个测试来评估 embedding 是否在语义上有意义。 这些测试都可以通过对向量 w_i 进行简单的 latent code 操作来完成。这些测试对应于语义图像编辑:变形、表情迁移和风格迁移。 如果由此产生的操作产生高质量图像,我们认为测试成功。

4.1 变形(渐变,Morphing) 

给定两个具有各自 latent code w_1 和 w_2 的嵌入图像,通过线性插值计算变形,w = λw_1 + (1 − λ)w_2,λ ∈ (0, 1),并使用 w 生成后续图像。

如图 4 所示,我们的方法在人脸图像(第 1、2、3 行)之间生成高质量变形,但在类内(第 4 行)和类间(第 5 行)变形中对非人脸图像均失败。

有趣的是,在类间变形的中间图像中存在人脸轮廓,这表明该 StyleGAN 的 latent space 结构专用于人脸。 因此我们推测非人脸图像实际上是通过以下方式嵌入的:最初的层创建了一个类似脸的结构,但后面的层在这个结构上描绘,以至于它不再被识别。

虽然对变形的扩展性研究超出了本文的范围,但我们相信面部变形结果非常好,可能优于当前的技术水平。我们将此调查留待以后的工作。

4.2 风格转换 

给定两个 latent code w1 和 w2,通过交叉(crossover)进行风格迁移。 我们展示了嵌入图像与其他面部图像之间的风格转换结果(图 6)以及不同类别的嵌入图像之间的风格转换结果(图 8)。

更具体地说,在图 8 中,我们保留了嵌入图像前 9 层的 latent code(对应于空间分辨率 42 - 642),并用的目标风格图像相应的的 latent code 覆盖了嵌入图像最后 9 层 latent code(对应于空间分辨率 642 − 10242)。

我们的方法能够迁移低级特征(例如颜色和纹理),但无法忠实地保持非面部图像的内容结构(图 8 第二列),尤其是绘画。 这一现象表明,StyleGAN 的泛化和表达能力更可能驻留在与更高空间分辨率对应的风格层中。 

4.3 表情转换和人脸重建

给定三个输入向量 w1、w2、w3,转换表达式 w = w1 + λ(w3 − w2),其中 w1 是目标图像的 latent code,w2 对应于源图像的中性表情,w3 对应于更突出的表情。 例如,w3 可以对应于同一个人的笑脸,而 w2 可以对应于同一个人的无表情脸。

为了消除噪声(例如背景噪声),我们启发式地在不同 latent code 通道的 L2-范数上设置一个下限阈值,低于该阈值,通道被设为零向量。 对于上述实验,阈值的选定值为 1。我们对结果向量进行归一化,以控制特定方向上表达式的强度。如上图所示。

5. 嵌入算法

我们的方法遵循一个简单的优化框架,将给定图像嵌入到预训练生成器的流形(manifold)中。 从一个合适的初始化 w 开始,我们搜索一个最小化损失函数的 w*,该损失函数测量给定图像和从 w* 生成的图像之间的相似性。

算法如上图所示。并非所有设计都会产生良好的结果。

5.1 初始化

我们研究了两种初始化设计选择。 第一种选择是随机初始化。 在这种情况下,每个变量都独立于均匀分布 U[−1, 1] 进行采样。 第二种选择的动机是观察到平均 latent code {\bar w} 的距离可以用来识别低质量的人脸。 因此,我们建议使用 {\bar w} 作为初始化,并期望优化收敛到一个更接近 {\bar w} 的向量 w∗。

为了评估这两种设计选择,我们比较了优化后的损失值和优化后的 latent code w∗ 和平均 latent code {\bar w} 之间的距离 \left\| {\mathop w\nolimits^* - \bar w} \right\|

如表 2 所示,为人脸图像 embedding 初始化 w = {\bar w} ,不仅使优化后的 w∗ 更接近 {\bar w} ,而且还实现了更低的损失。 然而,对于其他类别的图像(例如狗),随机初始化被证明是更好的选择。 直观上,该现象表明该分布只有一个面孔簇,其他实例(例如狗、猫)是簇周围的散点,没有明显的 patterns。 定性结果如图 5 (f)(g) 所示。

5.2 Loss Function

为了在优化过程中衡量输入图像和生成图像之间的相似性,我们采用了一个损失函数,它是 VGG-16 感知损失与像素级 MSE 损失的加权组合:

其中 I \in \mathop R\nolimits^{n \times n \times 3} 是输入图像,G(·) 是预训练生成器,N 是图像中标量(scalar)的数目(即 N = n × n × 3),w 是要优化的 latent code, λmse = 1 凭经验获得且性能良好。 对于等式 1 中的感知损失项 Lpercept(·),我们使用: 

其中 \mathop I\nolimits_1 ,\mathop I\nolimits_2 \in \mathop R\nolimits^{n \times n \times 3} 为输入图像,Fj 分别为VGG-16层 conv1_1、conv1_2、conv3_2和conv4_2的特征输出,Nj 为第 j 层输出的标量(scalar)的数目,λj = 1 凭经验获得且性能良好。

我们选择感知损失和像素级 MSE 损失是因为单独使用像素级 MSE 损失无法找到高质量的 embedding。 因此,感知损失充当正则化项,以引导优化进入 latent space 的正确区域。

我们进行了一项消融(ablation)研究,以证明我们在等式 1 中选择的损失函数是正确的。

如图 9 所示,单独使用像素级 MSE 损失项(第 2 列)可以很好地嵌入一般颜色,但无法捕获非人脸图像的特征。 此外,它具有平滑效果,即使对于人脸,也不会保留细节。 有趣的是,由于像素级 MSE loss 在像素空间工作,忽略了特征空间的差异,其 embedding 在非面部图像(例如汽车和绘画)上,倾向于使用预训练的 Style-GAN 的平均人脸。 这个问题通过测量特征空间中图像相似性的感知损失(第 3、5 列)解决。 由于我们的嵌入任务要求嵌入图像在所有尺度上都接近输入,我们发现在 VGG-16 网络的多层(第 5 列)匹配特征比仅使用单层(第 3 列)效果更好。 这进一步促使我们将像素级 MSE 损失与感知损失(第 4、6 列)结合起来,因为像素级 MSE loss 可以被视为像素级的最低级别感知损失。 图 9 的第 6 列显示了我们最终选择的嵌入结果(逐像素 MSE + 多层感知损失),它具有最佳性能。

5.3 其它参数 

我们在所有实验中使用参数为 \eta = 0.01,\mathop \beta \nolimits_1 = 0.9,\mathop \beta \nolimits_2 = 0.999,\varepsilon = \mathop {1e}\nolimits^{ - 8} 的 Adam 优化器。 我们使用 5000 个梯度下降步骤进行优化,在 32GB Nvidia TITAN V100 GPU 上每张图像花费不到 7 分钟。

为了证明我们选择 5000 个优化步骤的合理性,我们研究了损失函数随迭代次数的变化。 如图10所示,人脸图像的损失值下降最快,在1000优化步左右收敛; 猫、狗和汽车图像在大约 3000 个优化步骤时收敛速度较慢; 而绘画曲线最慢,收敛了大约 5000 个优化步骤。 我们选择在所有实验中优化 5000 步的损失函数。

迭代嵌入。我们测试了迭代嵌入方法的鲁棒性,即我们迭代地将嵌入结果作为新的输入图像并再次进行嵌入。这个过程重复七次。 如图 11 所示,虽然可以保证输入图像在第一次嵌入后存在于模型分布中,性能会随着迭代嵌入次数的增加而缓慢退化(丢失更多细节)。 这种观察的原因可能是所采用的优化方法在局部最优附近收敛缓慢。 对于人脸以外的嵌入,随机初始化 latent code 也可能是退化的一个因素。 总之,这些观察表明我们的嵌入方法可以很容易地在模型分布上达到合理的“良好”嵌入,但很难达到“完美”的嵌入。

6. 结论

我们提出了一种有效的算法把图像嵌入到 StyleGAN 的 latent space 中。 该算法支持语义图像编辑,例如图像变形、风格迁移和表情迁移。 我们还使用该算法研究了 StyleGAN latent space的多个方面。 我们提出了一些实验来分析可以嵌入什么类型的图像、如何嵌入以及嵌入的意义。 我们的结论是,任何类型的图像可进行嵌入,embedding 在扩展的 latent space W+ 中效果最好。 然而,只有人脸的 embedding 在语义上是有意义的(可进行语义图像编辑)。

我们的框架仍然有一些局限性。 首先,预训练 StyleGAN 的图像错误(与预期不符的生成)。 其次,优化需要数分钟时间。而可以在一秒钟内完成的算法对于交互式编辑才更具吸引力。

在未来的工作中,我们希望扩展我们的框架以处理视频以及静态图像。 此外,我们想探索在三维数据(例如点云或网格)上训练的 GAN 中的 embedding。 

参考

Abdal, R., Qin, Y., & Wonka, P. (2019). Image2stylegan: How to embed images into the stylegan latent space?. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 4432-4441).

总结 & 一些想法

(3.1 节)对于在人脸域预训练的 StyleGAN,除了实现人脸的嵌入,还能实现其它域的嵌入(例如,猫,狗,车),这为之后的 few-shot learning 甚至是 zero-shot learning 打下了基础。

(3.3 节)为获取相比于初始 latent space Z 和中间 latent space W 更好的性能,使用一个扩展的 latent space W+: 若 StyleGAN 总共有 L 层,则把 L 个不同的 latent code w 串联,并送入 StyleGAN 的每一层。如上图所示。StyleGAN 的层数由输出图像分辨率决定:L=2log2 R - 2。最大分辨率 1024*1024 对应 18 层的结构。

(4 节)通过对图像的 latent code 进行插值(加权和)、交叉(嫁接)、加减等操作,分别实现两个图像的融合、风格转换、表情转换。

(5.2 节)优化过程中,为衡量输入图像与生成图像的相似性,本文使用的损失函数是感知损失(使用提取特征的协方差统计来感知地测量图像之间的高层次(卷积层的特征输出,embedding)相似性)与像素级 MSE 损失的加权组合。之所以这样做是因为,单独使用 MSE 无法获得高质量的 embedding,所以需要感知损失作为正则化项,以引导优化向着 latent space 的正确区域。

猜你喜欢

转载自blog.csdn.net/qq_44681809/article/details/129634548