赞
踩
最近拜读SVBRDF生成模型MaterialGAN,文章基于StyleGAN2,然后写下这一系列的阅读笔记与心得。本文不会论述前面ProGAN到StyleGAN2的细节,旨在搞懂这一系列网络的各自解决的问题,以及各作者对这些问题如何设计解决方案
论文: https://arxiv.org/abs/1710.10196
Git: https://github.com/akanimax/pro_gan_pytorch
问题一:生成高分辨率图像(例如,1024*1024)难点:一、高分辨率的图像更容易区分真假;二、采用当时最先进的GAN(例如,stackGAN,LapGan),必须增加网络深度,使得网络过于复杂,占用内存增大,minibatch必须减小,使得训练稳定性变差
回答一:Progressive
问题二:在图像质量和图像多样性之间的Tradeoff
已有回答:inception score (Salimans et al., 2016), multi-scale structural similarity (MS-SSIM) (Odena et al., 2017; Wang et al., 2003), birthday paradox (Arora & Zhang,2017), and explicit tests for the number of discrete modes discovered (Metz et al., 2016).
回答二:增强细节技术
→
\rightarrow
→Minibatch Standard Deviation、新的评估GAN生成结果的metric
→
\rightarrow
→基于拉普拉斯特征金字塔的Wasserstein Distance SWD
Minibatch Standard Deviation:一,在整个minibatch的训练样本中计算特征在各自空间位置得标准偏差;二,计算这个标准偏差的平均值(a single value);三,将这个平均值通过复制和concatenate方法传播到该minibatch的所有位置,这样就形成了一个新的常量特征图。作者提到该方法可以插入到判别器的所有层,但最后一层之前是最有效的。
其他细节增强技术:1. unrolling the discriminator (Metz et al., 2016) to regularize its updates; 2. a “repelling regularizer” (Zhao et al., 2017) that adds a new loss term to the generator, trying to encourage it to orthogonalize the feature vectors in a minibatch; 3. The multiple generators of Ghosh et al. (2017)
基于拉普拉斯特征金字塔的Wasserstein Distance SWD:该特征可以提供多尺度统计上的相似度
其他:当判别器梯度过大时,信号强度在生成器和判别器都会增大,它们之间的不良竞争随之而来。提出一种阻止生成器参与这种竞争的方法。
参考资料:
【GANs学习笔记】(十八)LAPGAN、ProGAN、SRGAN
ProGan: Step by Step, better than better
论文: https://arxiv.org/abs/1812.04948
Git: https://github.com/NVlabs/stylegan
问题: ProGAN与多数GAN一样,控制生成图像的特定特征的能力非常有限。这些属性相互纠缠,即使略微调整输入,会同时影响生成图像的多个属性。例如,改变输入图像的眼睛,得到的输出图像可能会脸型很不一样。如何解耦,以至于更方便编辑?
回答:基于风格的生成器
→
\rightarrow
→Style-based Generator
mapping network f f f:用一个多个全链接层的映射网络将latent code从空间 z ∈ Z z\in\mathcal{Z} z∈Z映射到耦合性低的空间 w ∈ W w\in\mathcal{W} w∈W,使得 W \mathcal{W} W空间的不同元素能控制不同特征。
AdaIN A A A: w w w通过AdaIN输入到生成器的每一层中。生成器的每一层的结构类似与风格迁移,但其缩放因子 y s , i y_{s,i} ys,i和平移因子 y b , i y_{b,i} yb,i是通过 w w w进行仿射变换得到的。 μ → m e a n \mu \rightarrow mean μ→mean , σ → v a r i a n c e \sigma\rightarrow variance σ→variance
Noise B B B:为生成器的每一层加入Noise输入以增强随机细节。噪声是由高斯噪声组成的单通道图像,将一个噪声图像提供给合成网络的一个特征图。在卷积之后、AdaIN之前将高斯噪声加入生成器网络中。B使用可学习的缩放参数对输入的高斯噪声进行变换,然后将噪声图像广播到所有的特征图中(分别加到每个特征图上,每个特征图对应一个可学习的scale参数)。
作者设计生成器网络的心路历程:A
⇒
\Rightarrow
⇒基于ProGAN的生成器,在CelebA-HQ和FFHQ上可以得到微小的提高,但是对于LSUN毫无效果;B
⇒
\Rightarrow
⇒将生成器和判别器中的near-neighbor up/down方法改为bilinear up/downsampling(
2
n
d
2^{nd}
2nd order binomial filter的低通滤波),从8*8开始像ProGAN一样进行progressive grow,用更多的数据,并且调节其他超参数;C
⇒
\Rightarrow
⇒加入映射网络和AdaIn,发现latent code对第一层的卷积的输入变得无效;D
⇒
\Rightarrow
⇒摒弃传统输入,将一个可学习的常数作为生成器的初始输入;E
⇒
\Rightarrow
⇒引入noise;F
⇒
\Rightarrow
⇒用混合正则化(mixing regularization)来减少相邻style之间的联系
风格混合插值:用两个latent codes
z
1
,
z
2
z_1,z_2
z1,z2 通过映射网络
f
f
f得到的
w
1
,
w
2
w_1, w_2
w1,w2进行插值
其他:两个量化插值质量和解耦效果的自动化方法
感知路径长度(Perceptual path length):纠缠越严重,对latent code进行插值在图像中产生非线性变化越明显。所以通过测量当在两个latent codes进行插值时图像的剧烈变化程度,可以反映隐空间的纠缠程度(特征分离程度)。定义:将两个latent codes之间的插值路径细分为小段,感知总长度定义为每段感知差异的总和。感知路径长度是这个和在无限细的细分下的极限,文中用latent sapce Z中所有可能端点(在路径中的位置)的平均感知路径长度来计算。
l
Z
=
E
[
1
ϵ
2
d
(
G
(
f
i
n
t
e
r
p
l
o
t
a
t
i
o
n
(
z
1
,
z
2
;
t
)
)
,
G
(
f
i
n
t
e
r
p
l
o
t
a
t
i
o
n
(
z
1
,
z
2
;
t
+
ϵ
)
)
)
]
l_{\mathcal{Z}}=\mathbb{E}[\tfrac{1}{\epsilon^2}d(G(f_{interplotation}(z_1, z_2;t)),G(f_{interplotation}(z_1, z_2;t+\epsilon)))]
lZ=E[ϵ21d(G(finterplotation(z1,z2;t)),G(finterplotation(z1,z2;t+ϵ)))]
其中
d
d
d使用基于感知的成对图像距离:两个VGG16 embeddings之间的差异,利用VGG16提取出图像的特征,在特征层面上计算距离。作者对
W
\mathcal{W}
W与
Z
\mathcal{Z}
Z分别采用不同的线性插值,因为
W
\mathcal{W}
W向量没有进行归一化。
线性可分性(linear separability):如果一个隐空间是充分解耦的,应该能够找到与每个变化因子对应的方向向量。作者提出了线性可分性来量化这种效果,测量通过线性超平面将latent space分割成两个不同的集合的程度,使每个集合对应于图像的特定的二元属性(比如男、女)。
①训练40个辅助分类器,分别对40个二元属性进行区分(每个分类器区分一个属性)。分类器与StyleGAN判别器结构相同。
②使用生成器生成200,000个图像,并使用辅助分类器进行分类,根据分类器的置信度对样本进行排序,去掉置信度最低的一半,得到100,000个已知类别的latent code
③对于每个属性,拟合一个线性SVM来预测标签-基于传统的隐空间点或基于样式的隐空间点w-并且根据这个超平面对这些隐空间点(512维,10000个点)进行分类。
④用条件熵
H
(
Y
∣
X
)
H(Y |X)
H(Y∣X)度量超平面将点划分为正确类别的能力,X是SVM预测的类别,Y是预先训练好的辅助分类器确定的类(作为真实类别);因此,根据SVM确定样本在超平面的哪一边,条件熵告诉我们需要多少额外的信息来确定样本的真实类别。直觉上,如果隐空间中的变化因子是耦合的(非线性的),那么用超平面来分离样本点将会更加困难(需要更多的额外信息),产生高的条件熵。较低的值表示易于分离(可分性好),因此解耦程度更大。
e
x
p
(
∑
i
H
(
Y
i
∣
X
i
)
)
exp(\sum_i{H(Y_i|X_i)})
exp(∑iH(Yi∣Xi))
参考资料:
论文阅读-人脸生成_StyleGAN
StyleGAN-基于样式的生成对抗网络(论文阅读总结)
源码解释系列参考资料:
一 试用分享:模型下载、结果、系列链接
二 generate_figure.py
三 基于ResNet50构造StyleGAN的逆向网络,从目标图像提取特征码
四 提取真实人脸训练过程的优化:前一篇的训练细节
五 提取真实人脸特征码第二布:微调:分享了一些思路(思路1不可行?)
六 真实人脸对应的特征码StyleGAN Encoder:建议下载源码对应该博文理解源码
七 应用
八 StyleGAN Encoder的align_images.py
论文: http://arxiv.org/abs/1912.04958
Git: https://github.com/NVlabs/stylegan2
问题:StyleGAN生成的图片还是会带来artifacts问题,例如头发等会出现明显的异常(水滴状异常);牙齿不会随着头部的转动而转动。
分析:
参考资料:
英伟达StyleGAN2升级:生成图像质量更高,修复特征伪影
如果没有StyleGAN2,真以为初代就是巅峰了
源码解释系列参考资料:
一 试用分享:训练准备、结果、Encoder、系列链接
二 真实人脸投射和重构:训练指南、结果
三 StypleGAN2 Encoder 真实人脸投射和重构:训练指南、结果
四 StyleGAN2 Encoder
五 StyleGAN2 Encoder projector.py和project_images.py:介绍了整体流程
六 StyleGAN2 Encoder dataset_tool.py和dataset.py:数据加载
七 StyleGAN2 training_loop.py:训练图构建
八 用 StyleGAN2 生成印象派油画
九 StyleGAN2真实人脸重构四种方法
论文: https://shuangz.com/projects/materialgan-sa20/
算法输入:
3
∗
3
3*3
3∗3盏可以覆盖全部材质的灯下,拍摄的9张图片
算法效率:
文章指出,第二步在Titan RTX GPU上每两分钟可以完成2000次迭代;一般情况,每个材质只需要约500次迭代就可以达到收敛
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。