Semantic factorization 调研

439 阅读9分钟

2021 Semantic Hierarchy Emerges in Deep Generative Representations for Scene Synthesis

背景

首先是背景,背景就是 GAN 在图片合成领域表现优异

动机

动机是现在目标检测的解释性工作比较多,对于 GAN 这种生成模型的解释性工作还比较少

目标

研究目标仍是探究latent code对属性的影响。本文研究的是StyleGan,它网络中的每个层次都会输入不同的latent code,也就称这种为layer-wise。

1629446173(1).png

本文想探究不同层次的latent code影响的属性类型,比如 layout(格局),category(种类), color(颜色)等不同格局的属性;若能够学习到层次性的关系,比如模型画画也先画布局,再画物体、光线...那么就和人类似了!

1629446452(1).png

方法

对于 bedroom 和 living room 这两种场景的属性的衡量,一些常规属性会用不同的分类器分出来的, 评估layout会先提取墙的线得到轮廓,评估对象会通过场景分割。

找潜在空间中的direction。具体的方法就是SVM,在 GAN 的 latent space 中,每个点对应着 image space 中的一张图片,同时也对应着潜在空间中的多种语义。Sample 一定量的图片后,用预训练好的分类器去获取他们对应的不同语义(对于某个属性,每个点代表的图片是属于哪一类值),接着对于某个属性,用一个 SVM 在 latent space 中学一个超平面,得到支持向量 n(可以分割开针对该属性属于不同类的样本),n作为我们的direction,和 InterfaceGAN 的方法几乎一样,不过 InterfaceGAN 处理的对象是 face,face 是容易定义的,而本文处理的是 scene,scene 的变化是很大的。

在获取了语义向量后,我们用 Re-score 来衡量这个语义方向,也就是说看编辑前后图片的语义变化程度,公式在下面,K 是样本数

验证完毕后,文章有三种编辑的手段,第一张很简单,就是在 latent space 中向语义的方向推,第二种是向两个语义方向的加和方向推,第三种是在推的时候加一点随机扰动

实验

实验研究的是不同层的y的表示,如下图:

image.png

2020 Interpreting the Latent Space of GANs for Semantic Face Editing

背景

  • 对GANs如何将latent code映射到图像还缺乏理解。
  • 语义是如何在latent space中产生和组织的?这些属性之前如何相互纠缠?

动机

  • 继续探究一个或多个语义是如何在latent space中编码的。
  • 进一步解决解纠缠的问题。
  • 获得更好的针对图片属性的编辑效果。

方法

semantics in the latent space

给定一个GAN,生成器可以被定义为 g:ZXg: Z → X。其中 ZRdZ \subseteq R^d 表示一个d维latent space,XX 表示图像空间,其中每个样本 xx 都含有语义。
定义一个打分函数 fS:XSf_S:X → SSRmS \subseteq R^m 表示带有m维的语义分数的语义空间。那么 s=fS(g(z))s = f_S(g(z)) 就连接了latent space ZZ 和语义空间 SS

由上篇文章可知,latent space中存在一个超平面(对应每类属性都有一个)作为分离边界,平面同侧的latent code对应的属性一致(比如性别都是男),跨过超平面则会改变。
定义超平面的单位法向量 nRdn ∈ R^d,定义样本 zz 到该超平面的距离 “distance” 为 d(n,z)=nTzd(n,z)=n^Tz。改变这个distance大小,语义属性的值会被改变,数值正负翻转时,属性也会翻转(男变女),所以我们也可以线性表示distance和语义分数的关系为:f(g(z))=λd(n,z)f(g(z))=λd(n,z)

对于多个语义:SfS(g(z))=ΛNTzS\equiv f_S(g(z)) = \Lambda N^TzΛ=diag(λ1,...,λm)\Lambda = diag(λ_1,...,λ_m)N=[n1,...,nm]N=[n_1,...,n_m] 表示所有单位法向量,也就是我们要找的direction,zz 的分布是 N(0,Id)N(0, I_d),我们计算语义分数s的均值和协方差为:

image.png

sN(0,Σs)s \sim N(0, \Sigma_s),是一个多元正态分布,Σs\Sigma_s 是一个对角矩阵时语义才是解纠缠的,即 n1,...,nm{n_1,...,n_m} 也是正交的。反之,可以用 niTnjn_i^Tn_j去衡量语义i和语义j的纠缠程度。

manipulation in the latent space

如何操作生成图像的属性呢?
单语义修改:我们使用 zedit=z+αnz_{edit} = z + αn 编辑,α>0α > 0时,合成结果在语义上更加正值化(老人更老),反之则负值化(老人更年轻)。编辑后的分数变为 f(g(zedit))=f(g(z))+λαf(g(z_{edit})) = f(g(z)) + λα

条件修改
由于不同属性间不能做到完全的解耦,因此仅沿着一种语义的方向一定时,可能会同时修改了其他属性
因此提出一种修改方法:在保留某一种语义(n2)不变的情况下,修改另一种语义(n1):

image.png

实验

latent space separation

探究是否可用于区分属性的超平面。基于有监督的方法,对于姿势、微笑、年龄、性别、眼睛等属性训练5个独立的SVM向量机(也就是找超平面),然后评估。结果是可以较好区分。

image.png

latent space manipulation

验证语义是否可操作

image.png

conditional manipulation

探究解耦情况。使用 cos(n1,n2)=n1Tn2cos(n_1,n_2)=n_1^Tn_2,发现:

image.png
发现Smile和Pose几乎与其他属性正交。然而,性别、年龄和眼镜是高度相关的。这个观察结果反映了训练数据集中的属性相关性。在某种程度上,这里的男性老年人更有可能戴眼镜。GAN在学习产生真实观察结果时也捕捉到了这一特点。

2020 Unsupervised discovery of interpretable directions in the GAN latent space

背景动机

  • GAN的latent space上存在有意义的direction供我们去解释。
  • 以往常以有监督或自监督的方式进行,限制了我们探究的范围。

目标

  • 提出无监督的方式解释latent space中的direction。
  • 发现更多的direction去控制更多的属性。

Method

联合学习 AARR ,固定 GG

1.png

  • 矩阵 ARd×kA ∈ R^{d×k},其中 dd 等于潜在空间的维数,kk 等于我们想要试图发现的direction的数量(取决于网络模型和数据集)。kk 表示one-hot 向量eke^k的第 kk 维为1,乘上矩阵 AA 后,也就等效于选择了 AA 中的第k个direction。εε 衡量对这个direction我们的变化程度。
z=z+A(εek)z' = z + A(εe_k)
  • 重构器 RR,其输入是一对图像 G(z)G(z)G(z+A(εek))G(z + A(εe_k))RR 输出一个标量对 (k,ε)(k', ε'),也就是找出之前选择的direction kk,和变化的幅度。

优化目标

1.png
为什么这种方法会有效呢?

  • 最小化 k,也就是试图精确定位到A中的具体列(direction),这个过程使得相应的图像转换更容易相互区分。可以看作一个解耦的过程。
  • 最小化 ε,我们迫使在这个direction上的移动是连续渐进的,而不是突变的。

对于A矩阵的限制

  • 所有列的向量模为1
  • 所有列正交 在实验中观察到,这两种效果都挺好,并且能发现一些相似的可解释性方向。通常更常使用单位向量的列的 ,因为其能发现更多的方向。但在某些数据集中,第二种能发现一些更有趣的细节。

实验

衡量解耦能力

可见,随着训练步数逐渐接近 ,往该方向的移动不再改变数字类型,仅仅改变数字的粗细,充分表明我们将数字类型和数字粗细这俩特征解耦了。 image.png

2019 GANalyze Toward Visual Definitions of Cognitive Image Properties

背景

  • 一些属性,比如“记忆性”,还没有明确的视觉定义。
  • 哪些属性可以定义这个图像更加值得记忆?
  • 如何控制这些属性?

目标

  • 找到这类难定义属性,如“记忆性”的视觉上的清晰定义。
  • 实现对这类属性的连续性控制。

方法

公式

L(θ)=Ez,y,α[(A(G(Tθ(z,α),y))(A(G(z,y))+α))2]L(θ) =E_{z,y,α}[(A(G(T_θ(z, α), y))-(A(G(z,y))+α))^2]
T(z,α)=z+αθT(z,α)=z+αθ

记忆性分数评估函数 AA,使用MemNet实现。

实验

  • 通过在找到的direction上改变α,探究哪些属性是影响记忆性的。

1.png

2020 ON THE “STEERABILITY” OF GENERATIVE ADVERSARIAL NETWORKS

背景

  • GAN的生成存在可控制性
  • 生成图片的场景属性变化程度受限于训练数据的分布

目标

  • 自监督的方式实现latent code的游走来达到属性变换(镜头移动和颜色变化)
  • 考虑两种游走:线性和非线性
  • 评估可变化性和数据集的关系,量化可变化的程度

image.png

方法

image.png

w=arg minwEz,α[L(G(z+αw),edit(G(z),α)] w^* = {\underset {w}{\operatorname {arg\,min} }}\,E_{z,α}[L(G(z+αw), edit(G(z), α)]

editedit 是对生成的图像的变换操作,αα 是外部调节参数,ωω 是可学习参数,该公式假设的操作是线性操作。

L=Ez,n[G(fn(z))edit(G(z),nϵ))] L = E_{z,n}[||G(f^n(z))-edit(G(z), nϵ))||]

非线性操作就拟合一个对z的非线性函数 f(z)f(z),一次 f(z)f^*(z)代表对图像做一次编辑 edit(G(z),ϵ)edit(G(z),ϵ),递归变换n次就是n step的变换。其中n表示第n个step,ϵϵ 表示步长,fn(z)f^n(z) 是n次递归函数。我们看几次递归可以实现最优。

量化变换

对一些属性进行了评估的量化。

  • 对于颜色变换,量化指标是随机抽取变换前后100 pixels像素值的变化,归一化到1.
  • 对于zoom和shift的变换,量化指标是用一个目标检测网络输出物体中心位置,除以box的宽高归一化。

β-VAE: LEARNING BASIC VISUAL CONCEPTS WITH A CONSTRAINED VARIATIONAL FRAMEWORK

背景动机

  • disentangled representation可以提高后续控制属性等功能的性能。
  • 基于VAE的架构,如何权衡重建loss和正则loss?

目标贡献

  • 提出beta-VAE,提高latent representation的解耦性

方法

在VAE的lower bound中,由重建loss和正则loss组成。在KL项上面加了一个 ββ 超参数,用于控制这两个loss在优化过程中的比例。(注:KL用于使 p(zx)p(z|x) 的分布接近标准正态分布)
VAE: L=Eq(zx)[logp(xz)]KL[q(zx)p(z)]L = E_{q(z|x)}[logp(x|z)] - KL[q(z|x)||p(z)]
β-VAE:L=Eq(zx)[logp(xz)]βKL[q(zx)p(z)]L = E_{q(z|x)}[logp(x|z)]-β*KL[q(z|x)||p(z)]
具体讲
我们希望隐变量 zz 可以学到独立的factor的信息(也就是解耦的)。因为KL的减少会导致重构能力变差,所以使用原本的lower bound 作为评价方式就不合适,论文中提出了一种基于分类器的disentanglement评价度量方法(用于找到合适的β值)。

distanglement metric

对于某个factor固定住,然后其余的factor随机,得到一些表示x和x‘,一共L对,得到对应的z和z’,计算每对z和z‘之间的绝对值差,丢到分类器中,理想状态下,z中应该有一个维度的绝对值差为0,那么就对应到,这样也就得到了disentanglement。

对应的一个过程就在下面图中所示。训练一个分类器去找出这个绝对值接近0的direction,若找的出来,说明耦合性低,训练出来之后用它来度量当前 ββ 下factor是否耦合性好。

image.png