GAN Sketching 水记 (微调现有GAN)
主页:https://peterwang512.github.io/GANSketching/
论文:https://arxiv.org/abs/2108.02774
项目:https://github.com/PeterWang512/GANSketching
设计目标
目标是根据手绘草图生成真实图像
也就是 草图 → 图片
亮点
one-shot
只使用单张手绘草图就行,不需要提供几百几千张手绘草图
用户提供的手绘草图不需要与真实图像配对
可控
可以与条件GAN共同工作
缺点
需要一个预训练的、效果较好的GAN(噪声→图片)
本质上是把一个正常GAN微调为只生成特定姿态图像的GAN,
所以经过微调后图像质量可能会下降(反正肯定不会提升就是了)
生成时间长
每张草图都需要 30K 次迭代来微调GAN
每次更改草图都需要重新训练
需要准备一个训练好的 图片→草图 转换器
草图-草图鉴别器最好预训练一下(对最终效果有不小的提升)
但是看视频效果,感觉只是对控制目标的位置比较在行,对姿势啥的控制精度不是很够
模型架构
本质就是朴素GAN加了一个判别器,这个判别器的功能是,判断生成的真实图片的草图是否符合用户提供的草图
简单来说,就是在朴素的GAN架构做了点改动,在生成器后面接了一个图片→草图的转化器,再给转化器接了一个判别器,用来判断草图是用户画的还是生成的
注意图片→草图转化器是不参与训练的。
图片→草图转化器
这是一个 img2img 的转化器,我们必须提前训练好这个转化器。
可以直接用配对的图像,有监督地训练一个转化器。
也可以用一些无监督方法,使用未配对图像训练[78, 25]
转化器必须是可微的。
他们使用 Photosketch [36] 作为转化器
图片→草图转化器在参与生成器的训练时,网络权重是固定的
预训练草图鉴别器会对结果有不少提升
生成器
生成器是在朴素 GAN 任务上预训练过的,可以从噪声生成真实图像
训练过程有点像在微调这个生成器
生成器的正则化约束
为了保证生成质量,使用一个鉴别器来保证图像生成真实图片,但注意这种方法需要有原生成器的训练集
也可以对生成器的权重更新做一个 L1 约束,以保证生成器经过微调后不会与原生成器产生的图片质量相差太大。
这种方法不需要原生成器的训练集。
不过这种方法的效果相比用鉴别器来约束,生成图片质量会稍微差一些。
相比于 L1约束,他们也试了 EWC (Elastic Weight Consolidation)约束,这是一种防止灾难性遗忘的技术,他们发现这个实际效果和 L1 差不多。
他们发现同时使用鉴别器约束和权重约束,并不会比单独用鉴别器约束效果更好。
生成器的训练
他们用的是预训练的 StyleGAN2
他们训练时只微调了 StyleGAN2 的 mapping 网络(将噪声映射到隐空间的网络)。
他们发现这种方法很有效,因为实际上这个模型只是生成原始分布的一个子集。这也是之前的一些小样本 GAN 选择的方案[66]。
数据增强
使用了可微的数据增强
他们发现温和的数据增强比想象中更有效
他们的数据增强方式是平移。
当提供30张草图时,数据增强不一定有效果,
但是当只提供一张或几张草图时,数据增强是必要的。
提供的多张草图要看起来画的是同一个东西
实验
他们挑选目标分布用了 chamfer distance (一种用于衡量特征点匹配度的算法)结合手工挑选。他们试过 SBIR,但是挑出的图片对姿势的匹配性不高。
网络只能看到目标分布中的30张图片的草图。
他们从 QuickDraw 数据集中得到真实的手绘草图。
不同约束与数据增强的比较
不同约束下生成效果的比较
不同训练方法的比较
预训练草图鉴别器会对结果有不少提升
那个 Full 是相对于只微调 bias 来说的,这个 Full 也只微调 mapping 网络
当用户画的比较抽象或者复杂的时候,增加用户绘制的草图数量是有效的
手绘草图与数据增强
对于手绘草图来说,数据增强是必要的
可以与条件生成模型共同工作,达成图像编辑效果
与GANSpace 共同工作
讨论
没法生成复杂姿势
可能这个方法只能生成在原生成器数据集中比较常见的姿势
没法适应毕加索的素描风格(不知道是不是抽象画)
需要超过30K次迭代来训练