论文名称:Unsupervised Discovery of Interpretable Directions in the GAN Latent Space
论文作者:Andrey V oynov, Artem Babenko
发行时间:Submitted on 10 Feb 2020, last revised 18 Feb 2020
论文地址:https://arxiv.org/abs/2002.03754
代码开源:https://github.com/anvoynov/GanLatentDiscovery
本文首次提出使用无监督的方法来研究预先训练好的 GAN
中潜在空间的可解释性。这不同于其他如需要人为标签、预先训练的处理模型或某种形式的自我监督方法,无需花费较昂贵的代价就能有效地发现潜在编码的有效的可解释性移动方向。此外,提出的方法还能发现之前监督方法难以发现的方向:背景的去除。这说明可以用提出的方法来生成大规模的显著性实例检测的数据集,大大节省了人工力。
具体来说作者通过设置两组一定范围内的随机数来分别决定潜在编码的移动方向和移动幅度,然后用训练完毕的 GAN
模型中的生成器来生成原始潜在编码生成的图像和由沿着随机数确定的方向和位移移动了潜码生成的图像,然后通过一个重构组件得到预测的潜码移动方向和移动幅度。这样我们可以对其他图像的潜在编码进行预测到的移动,得到属性的操控。如 图1 所示,由无监督的方法在几个数据集上发现的可解释的方向。可见生成效果还是很不错的。
如 图2 所示,作者仅仅使用预训练好的 GAN
的生成器 G : z → I G:z\to I G:z→I 来将潜在编码生成图片(不使用其辨别器), 这个生成器是不可训练的,其参数在作者方法的处理阶段是固定的。同时作者还提出了两个可训练的组件 A A A 和 R R R:
数组 A ∈ R d × K A \in \mathbb{R}^{d\times K} A∈Rd×K,其中 d d d 等于 G G G 中潜在空间的维度, K K K 等于作者提出的方法试图解决的方向的数量(这取决于网络模型的选择和训练的数据集)。
z + A ( ε e k ) z+A(\varepsilon e_k) z+A(εek)
重构器 R R R,其输入是图像对 ( G ( z ) , G ( z + A ( ε e k ) ) (G(z),G(z+A(\varepsilon e_k)) (G(z),G(z+A(εek)),其中 z ∼ N ( 0 , I ) z \sim \mathcal{N}(0,I) z∼N(0,I), z + A ( ε e k ) z+A(\varepsilon e_k) z+A(εek) 是移动了的潜在编码, e k e_k ek 表示轴对齐单位向量 ( 0 , ⋯ , 1 k , ⋯ , 0 ) (0,\cdots,1_k,\cdots,0) (0,⋯,1k,⋯,0), ε \varepsilon ε 是一个标量;输出是一个标量对 ( k ^ , ε ^ ) (\hat{k},\hat{\varepsilon}) (k^,ε^),其中 k ^ \hat{k} k^ 表示预测的方向的索引, ε ^ \hat{\varepsilon} ε^ 表示预测的移动幅度。 R R R 的目标是: 让潜码 z z z 往 A A A 的第 k k k 行决定的方向上移动 ε \varepsilon ε 实现了图像转换,然后 R R R 试图重现这种在潜在空间上的偏移。
R ( G ( z ) , G ( z + A ( ε e k ) ) = ( k ^ , ε ^ ) R(G(z),G(z+A(\varepsilon e_k))=(\hat{k},\hat{\varepsilon}) R(G(z),G(z+A(εek))=(k^,ε^)
作者选择的优化目标的表达式如下:
min A , R E z , k , ε L ( A , R ) = min A , R E z , k , ε [ L c l ( k , k ^ ) + λ L r ( ε , ε ^ ) ] \mathop{\min}\limits_{A,R}\mathop{\mathbb{E}}\limits_{z,k,\varepsilon}\mathcal{L}(A,R)=\mathop{\min}\limits_{A,R}\mathop{\mathbb{E}}\limits_{z,k,\varepsilon}[\mathcal{L}_{cl}(k,\hat{k})+\lambda\mathcal{L}_{r}(\varepsilon,\hat{\varepsilon})] A,Rminz,k,εEL(A,R)=A,Rminz,k,εE[Lcl(k,k^)+λLr(ε,ε^)]
上式中分别使用到了分类项 L c l ( ⋅ , ⋅ ) \mathcal{L}_{cl}(\cdot,\cdot) Lcl(⋅,⋅) 交叉熵损失和回归项 L r ( ⋅ , ⋅ ) \mathcal{L}_{r}(\cdot,\cdot) Lr(⋅,⋅) 平均绝对误差。这里的 λ \lambda λ 取值为 0.25 0.25 0.25。
作者在几个不同类别的数据集下(手写数据集MNIST、动漫人脸数据集AnimeFaces、真实人脸数据集CelebA-HQ和自然景观数据集ImageNet)进行了本文方法的实验。
对于重构模型 R R R:
MNIST
和 AnimeFaces
数据集,使用 LeNet
骨干网络ImageNet
和 CelebA-HQ
数据集,使用 ResNet-18
作为骨干网络在所有实验中,除能 MNIST
的输入通道为 2 2 2 外,其他数据集的输入通道都为 6 6 6,因为输入 R R R 的是图像对。作者还往其中加上了两个单独的 heads
分别用于预测方向索引和位移幅度。
由于当 ε → 0 \varepsilon \to 0 ε→0 时,由于位移幅度过小,几乎不会对位移后的生成图像造成影响,所以在实验中作者对 ε \varepsilon ε 的取值做了以下约束:
ε = s i g n ( ε ) ⋅ max ( ∣ ε ∣ , 0.5 ) \varepsilon = {\rm sign}(\varepsilon)\cdot \max(|\varepsilon|,0.5) ε=sign(ε)⋅max(∣ε∣,0.5)
通常 K K K 的取值要等于潜在空间的维度(Spectral Norm GAN
维度是 128 128 128,BigGAN
维度是 120 120 120,ProgGAN
维度是 512 512 512)。但是由于模型的限制和数据集的限制,需要有一定的取舍,具体取值如下所示:
Spectral Norm GAN
处理 MNIST
数据集时 K = 64 K=64 K=64,因为若取值为 128 128 128 时模型很难讲较简单的数字图形弄出过多的不同的可解释性方向。Spectral Norm GAN
处理 AnimeFaces
数据集时 K = 128 K=128 K=128。BigGAN
处理 ImageNet
数据集时 K = 120 K=120 K=120。ProgGAN
处理 CelebA-HQ
数据集时 K = 200 K=200 K=200,因为若取值为 512 512 512 时,作者提出的方法很重构出合理的评价指标值。在实验中作者用到了两种 A A A :
在实验中观察到,这两种 A A A 的效果都挺好,并且能发现一些相似的可解释性方向。通常更常使用单位向量的列的 A A A,因为其能发现更多的方向。但在某些数据集中,第二种 A A A 能发现一些更有趣的细节。
MNIST
,包含 32 × 32 32\times32 32×32 大小的图像,使用 3 3 3 个残差块的 ResNet-like
生成器的 Spectral Norm GAN
。AnimeFaces
,包含 64 × 64 64\times64 64×64 大小的图像,使用 4 4 4 个残差块的 ResNet-like
生成器的 Spectral Norm GAN
。CelebA-HQ
,包含 1024 × 1024 1024\times1024 1024×1024 大小的图像,使用预训练好的 ProGAN
生成器 online available。ImageNet
,包含 128 × 128 128\times128 128×128 大小的图像,使用在 ILSVRC
数据集上预训练好的 BigGAN
生成器 online available。全部使用 Adam
优化器,固定学习率 0.0001 0.0001 0.0001,除了 ProGAN
使用梯度回传训练了 1 0 5 10^5 105 次外,其他都是 2 × 1 0 5 2\times10^5 2×105 次。在 MNIST
上的 batch=128
,在 AnimeFaces
上的 batch=128
,在 CelebA-HQ
上的 batch=10
,在 ImageNet
上的 batch=32
。
RCA,Reconstructor Classification Accuracy,重构分类准确率。作为重构模型中的分类头,其处理的是一个多分类问题。因此,RCA越高,该方向表示的特征和其他特征的解耦度越低,区分性更高。此外,RCA的计算上还能将我们方法和随机得到的方法(A:Random Matrix)或沿坐标轴移动的方法(A:Identity Matrix)进行结果比对。
DVN,Direction Variation Naturalness,方向变化的自然度。表示在潜空间中让隐编码沿着特定方向变化其生成的图像的自然性。按照常识,自然性应该是沿着某个方向移动生成的图像和真实图像之间的变化因子应该是相同的,于是,作者通过使用如下方法达到自然性的计算:
LeNet
对该数据集进行训练,得到一个二分类模型 M F : G ( z ) → { − 1 , 1 } M_{\mathcal{F}}:G(z)\to \left \{ -1,1 \right \} MF:G(z)→{−1,1}。图6是提出方法在 MNIST
上的定性分析,可见图像伴随着潜在编码沿着学习到的方向移动的效果还是很好的。
为了衡量方法的解耦能力,作者设计了如下实验:
实验结果如 图7 所示,可见,随着训练步数逐渐接近 1 0 5 10^5 105,往该方向的移动不再改变数字类型,仅仅改变数字的粗细,充分表明我们将数字类型和数字粗细这俩特征解耦了。
就是在这个数据集上发现将 A A A 的各列正交可增强方向的多样性。 但不提倡用这个方法到所有数据集上,因为未必都能取得这样的效果(作者对MNIST、CelebA上实验效果没这样好)。实验结果如 图8 所示。
图9 即为实验结果,这些方向为图像的处理提供了有用信息。
图10 便是提出的方法发现的一些方向。值得一提的是,上图中的 背景模糊 和 背景消除 这俩方向可为构建显著性实例分割任务轻松构建大规模的训练数据集。而这俩方向便是正交列矩阵 A A A 的功劳。