EditGAN阅读纪要

official code

背景

目前的GAN图像编辑往往遵循两条路线:输入一些condition作为额外输出,让模型在输入图像的全局信息下,修改图像使得符合该条件。条件一般有class label或者是semantic mask。第二种是在隐空间去解耦各种属性,得到控制该属性的方向向量。让隐变量朝向这个方向进行shift,就能实现编辑的目的。第二种也有用label训练分类器实现编辑效果,也有用无监督的方式获得方向向量的方式。同时也有修改隐变量,也有修改模型参数这两种实现编辑的方式。

然而,上面两种方式各有缺点:

  1. 前者需要大量的label,标注成本和获得代价很大。
  2. 后者分有监督和无监督两种方向,有监督也是需要大量label去训练分类器的。而无监督往往会有很多bad case。而修改模型参数的方式,需要迭代优化,非常的慢。

而EditGAN的贡献是:

  • 在低成本,少量的semantic mask标注下,使用datasetGAN的思路,可以实现执行速度非常快的编辑效果。

EditGAN follow的相关工作主要有:

  • datasetGAN
  • Encoder in style
  • pixel2style2pixel (style encoder)

方法

EditGAN有3个模块:

  • stylegan2
  • FPN encoder (和PSP一致)
  • 像素级别的语义分割(几层全连接层)

EditGAN通过学习生成图像x和对应的语义mask y,建模x和y的联合分布。通过编辑y,得到y’的隐变量,来实现生成编辑过的x’。
为了实现以上目的。作者在预训练的stylegan的基础上,训练encoder。

style encoder

训练集通过encoder得到w+空间隐变量,经过G(stylegan2)得到重构图像。约束重构图像和输入一致。同时还有LIPIS loss。
利用在噪声z生成的图像,也去训练encoder。即生成图像x1经过E,得到隐变量,和mapping(z)用L2 loss;隐变量经过truncation,得到第二次生成图像x2。x1和x2用L2 和 precet loss继续训练。

语义分类分支

是一个非常简单的MLP结构。先准备30张(少量的)标注Mask。然后使用stylegan2生成的特征,每个特征都上采样到512,然后concat在一起,使用一个MLP(1x1的conv)对这个特征进行语义分类,使用交叉熵训练。

如何实现语义编辑

和大部分工作相似,作者遵循了encoder得到隐变量,在此基础上找方向向量的范式:

  1. 用stylegan encoder先得到带编辑图像的embed vector v1。用语义分支模块得到分割mask m1
  2. 编辑分割mask m2,得到想要的效果。
  3. 优化delta向量,使得G(v1+delta)能生成m2。同时确保其他未编辑的区域不变。
    在这里插入图片描述
    红框标注的变量就是delta。即让生成的图像的未编辑部分和原始图像x一致,用r代表编辑区域,1-r未编辑区域。让生成的mask像编辑的mask M2。因为模型学到的是x和m的联合分布。因此得到的delta应该可以让G(v1 + delta)也满足M2的样子。从而实现编辑效果。

总结

目前的工作中,找方向向量的方式有以下几种:

  1. 用两类图像的隐变量的差,作为方向向量
  2. 用label训练的二分类器,找寻方向向量
  3. 无监督解耦,一个一个查看对应的效果(在工业界几乎没有价值)

EditGAN采用的方式属于第二种,但是只要很少的标注样本。
一句话总结:学习x和y的联合分割,通过修改y,实现修改x的目的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值