论文阅读-Editing in Style: Uncovering the Local Semantics of GANs
概述
简单来说, 本文针对的是控制和调节GAN模型生成图像的局部特征.
跟换脸挺像的, 都是根据reference的一些属性修改原图片的属性值, 比如鼻子眼睛. 当然本文的立意在于可解释性, 现在GAN能生成几乎以假乱真的图像, 但是这些图像为什么是这样并不太好解释. 尽管有一些工作可以通过渐进训练获得不同分辨率的特征. 但本文的核心是所谓"a disentangled representation", 意思是解缠属性, 具体来说就是我们关注的属性(比如人的嘴, 卧室里的枕头等)可以独立于其他属性操作.
本文针对styleGAN的结构, 提出了一种简单而优雅(作者原话)的方法, 可以将原始图片中的本地语义特征转化为reference图片中的特征.
实际上face swapping有一些交换图片表情的工作, 和本文很像. 但本文作者表示他们的模型是独特的, 不需要换脸常用的空间处理, 比如扭曲和合成.
方法
特征分解
一图流解释全部.
真的是简单而优雅...作者做特征分解的基本方法是, 对生成器的隐藏层做K-means, 然后k个类人工监督一下类别.(啊这....)
特征修改
StyleGAN
本文主要基于styleGAN进行属性修改, styleGAN那篇文章我也看过属实难读, 建议移步其他人的解读增进理解.
建议阅读: https://zhuanlan.zhihu.com/p/62119852
styleGAN的结构如上图所示. 输入的latent code z经过一个非线性变换变成\(w\), 这个\(w\)经过一个仿射变换A, 输入到生成器G中用以控制每一层的style. 作者将仿射变换后变化得到的style向量命名为\(\sigma\).
在本文中, 作者将target图片\(S\)和reference的图片\(R\)的\(\sigma\)经过styleGAN提取出来, 并给出了全局变换的公式:
也就是生成图片G的\(\sigma\)的获取方法, \(\lambda \isin [0,1]\). 这个公式获得的图片G可以获得R全部的特征, 而丢失所有的S图片特征.
为了只改变局部的特征(而不是吸收全部R的特征), 作者启用一个矩阵转化:
Q是个半正定矩阵, 从而确定R和S对G的影响. 实际上本文直接做了个对角矩阵, 作者说这是查询向量, 实际上就是把R的特征直接替换掉S上的特征而已.
那么选择\(Q\)中的值\(q\)就很重要了, 已知\(q \isin [0,1]^C\), 那么对角矩阵\(Q\)里谁是1谁是0就确定了我们要替换什么特征.
做法简单粗暴:
这个公式体现了k-means时各个通道对k类的贡献, 作者排了个序, 然后最相关的那一行q定为1, 然后逐渐衰减..(啊这...)
实验
虽然方法很简单但结果却是挺离谱..
总结
学不来学不来...