中文解读参考: 量子位 | 鬼道2022博客
InsetGAN 不一定限于创造人类,它是使用两个不相关的 StyleGAN2 生成器的一般策略,其中一个(插图)用于改善另一个(画布)的子区域的视觉细节。 我们的论文在人体和面部的实际用例中展示了这种方法。
图1
:InsetGAN的功能。我们的全身人物生成器,能生成1024x1024高清的全身人像。。(a)
能看到明显的人工痕迹,最明显在四肢和脸部
(extremities and face)(b)
,我们利用第二个专门的生成器,来无缝地(seamlessly)改善面部区域
。(c)
,我们也可以使用一个给定的脸作为无条件生成身体的输入。(d)
, 同时选择不同的脸和身体,进一步拼接。虽然GANs可以在某些领域的理想条件下( ideal conditions)生成逼真的(photo-realistic)图像,但由于身份( identities,)、发型、服装和姿势的差异,生成全身的人体图像仍然困难
核心思想:
不使用单个GAN对复杂的域进行建模,我们提出一种新的方法结合多个预先训练过的GAN,其中一个生成一个总体画布(如人体)和一组专门的GAN,或插入(inset),关注不同的部分(例如,脸、鞋子),这些部分可以无缝地插入到总体的画布。
我们将这个问题建模为共同探索(jointly exploring)各自的潜在空间(respective latent spaces),这样生成的图像就可以被组合起来,通过插入来自专门的生成器(specialized generators)的部分到全局画布上(global canvas),而不引入接缝(seams)。
我们通过将一个全身的GAN和一个专用的高质量的面部GAN相结合来演示这个设置,以生产出看似可信的人。
我们用定量指标(quantitative metrics)和用户研究来评估(evaluate)我们的结果。
一种方法是将目标图像分解成平贴图(tiles,原意瓦片平贴图),并训练一个GAN按顺序生成它们
另一种方法是收集非常高分辨率的图像,并在全分辨率下训练单个GAN。这使得数据收集和训练任务非常昂贵,而且对象配置/姿态的变化导致了进一步的挑战。据我们所知,这样的高分辨率数据集和相应的高分辨率GAN架构都没有发布
。
我们建议将一个生成器结合起来,以画布的形式提供全局上下文(global context),以及一组为不同感兴趣区域提供细节的专门部件生成器 (specialized part generators), 以插图的形式粘贴到画布上,以生成最后j结果。
不一定需对齐
(not necessarily aligned)。虽然这导致画布上的个别部分有些模糊(例如,人体的模糊/扭曲的(fuzzy/distorted faces)脸),但这足以为以后插入的特定部分提供全局协调。不同分辨率
下进行训练,从而降低了数据(质量)要求。CollageGANs
[20]在条件下探索了类似的想法。给定一个提供有用的形状和对齐提示的语义映射,他们使用特定于类的gan的输出集合创建一个拼贴图. 相比之下,我们的工作集中在无条件设置上,这更具挑战性,因为我们的多个生成器需要相互协作,以一起生成连贯的形状和外观,而无需访问提示的语义映射。当边界条件是非普通的(nontrival),并且插入的边界本身是未知的时,这方面尤其具有挑战性。。例如,当一张脸添加到身体时,应该具有一致的肤色、衣服边界和头发流。我们通过在(预训练)的画布和局部GAN中联合寻找潜在代码
(jointly seeking latent )来解决这个问题,这样通过在画布上插入部分插图而形成的最终图像就不会显示任何接缝
对于ImageNet数据集上的类条件(class-conditional)图像生成,BigGAN常是首选的架构
本文采用 StyleGAN2-ADA
因为更好的FID、准确率和召回率在我们的域对比stylegan3而言。
此外,使用StyleGAN2生成完整的人体图像是我们希望在工作中改进的一个基线
图像外画((Image outpainting)是指缺失的像素不被可用的像素包围的图像补全(image completion)问题。
但我们发现GAN架构CoModGAN
在图像输出方面有更令人印象深刻的结果(见Sec5的比较)
开发新架构的另一种替代方法是有条件地嵌入到无条件生成器的潜在空间中.在此环境中使用的两种方法是使用优化的StyleGAN嵌入或者一个编码器结构
styelagan embeding using optimization
StyleGAN embeding
using an encoder articture
本文使用了上述两种技术
我们提出了一种使用一个或多个独立的预训练的无条件生成器(independent pretrained unconditional
generator networks)网络来无条件生成全身人体图像的方法。根据所需的应用程序和输出配置,我们描述了协调多个生成器
(coordinate)的不同方法。
下面这些方法,只使用单个gan,生成512x512,256x256
CollageGAN
: Collaging class-specific GANs for semantic image synthesis (为语义图像合成拼贴特定类别的 GAN)结果采用了我们自适应截断方法
(adaptive truncation) (说明见补充材料
(supplementary material)),并且切除了边框的。
乍看起来,结果比较真实、但脸部区域能发现明显的人工痕迹(请放大看)
为了改进由单个全身GAN生成的问题区域,我们使用在特定身体区域的图像上训练的其他生成器来生成(局部图像),并作为插图粘贴
到(to be pasted ,as insets)全身GAN结果中
基本的全身GAN和专用的(dedicated)身体部分GAN可以使用相同或不同的数据集进行训练。在任何一种情况下,包含在多个GANs中的额外网络容量都可以更好地模拟人体的复杂外观和可变性
作为一个概念的证明,我们展示了用从我们的全身训练图像中裁剪出来的面部区域训练的人脸GAN可以用来改善身体GAN结果的外观。或者,我们也可以利用在其他数据集上训练的人脸生成器,如FFHQ[14]来进行人脸增强。类似地,专门的手或脚发电机也可以用于我们的框架来改善身体的其他区域。我们表明,我们还可以在一个多重优化过程中一起使用多个部件生成器,如图4所示
主要的挑战
是如何协调 (coordinate) 多个无条件的差距来产生彼此一致(coherent with one another)的像素。
子区域
(sub-region)或插图(inset)omega
,是 ω \omega ω 的小写,这里表示生成全身图替换的局部区域为了能协调专用部分GAN与全局/画布GAN,我们需要一个边界框检测器
(bounding box detector)来识别局部GAN生成的区域相对应的与 I A I_A IA的。剪切 I A I_A IA全身图像的相应区域 表示 为 B ( I A ) B(I_A) B(IA)。。问题等同于,找到一个·潜在的代码对· ( w A , w B w_A,w_B wA,wB),这样各自的图像IA和IB就可以组合在 B ( I A ) B(I_A) B(IA)和IB的边界区域中没有明显的接缝
为了生成最终的结果,我们直接
将全身图像的局部图像边界框 B ( I A ) B(I_A) B(IA)内的原始像素替换
为 I B I_B IB 中生成的像素,
其中 L L L损失表示,在 Ω \Omega Ω区域内,计算全身与局部图像的相似度(similarity)以及沿Ω边界测量煤缝质量。
优化潜在代码wA、wB或两者时,我们考虑多个目标
粗糙尺度
(at a coarse scale )上,应该具有相似的外观(similar appearance,这样当由人脸GAN生成的像素被粘贴到主体GAN画布上时,属性匹配(例如,面部的肤色
(skin tone)与颈部的肤色相匹配。
边界匹配
(boundry matching), 任然采用L1和感知loss的混合, ξ x ( I ) \xi_x(I) ξx(I)表示宽度为x的去边界区域,见
为了在优化过程中保持真实性,我们还添加了两个正则化术语,见公式4
:
第一项防止优化的潜在代码偏离平均潜在代码
(average latent): 我们通过在Z空间中随机采样大量的latent,将它们映射到W空间,来计算 W a v g W_{avg} Wavg,并计算平均值
StyleGAN2时推理时,相同的
512维潜在代码 w w w被输入到生成器中n个输入层中 ( n依赖于输出分辨率)。
而许多GAN反演方法
却优化在 n x 512维的W+潜在空间
.
我们遵循最近的工作,将w+隐码分解(decompose)为一个单基 w ∗ w^* w∗在和n个偏移的潜在 δ i \delta_i δi(读音为delta)。用于 i i i层的潜码表示为 w + δ i w+\delta_i w+δi。我们使用L2规范作为正则化器,以确保 δ i \delta_i δi保持较小。
基于我们对结果的可视化分析,对于这种正则化矩阵
(regularizer),我们在身体生成器上使用了比脸部生成器更大的权重。(下图出自论文[31],说明了不同潜码空间的含义)
[31] 2101.GAN inversion: A survey.
粗尺度
(coarse scale)使边界区域在细粒度尺度
(fine scale )看起来很像,如公式5所示为了在优化 W A W_A WA过程中保持身体外观不变
,我们引入了一个额外的损失项:
脸部区域外的身体区域
,我们还使用平均潜在正则化项 L r e g L_{reg} Lreg来防止产生伪影。最终的目标函数变成了
Insets
)使用专用鞋部
生成器(训练的鞋由原始数据集的全身人物数据上剪切
来),并同事使用我们的脸部
生成器,原始全身人物生成结果改进了。所有三个生成器
(全身生成做画布(canvas)和两个插图(insets))都共同优化
(jointly optimized),以产生无缝(seamless)一致的输出
给定生成的全身人类,我们使用在同一数据集上训练专用的(dedicated)人脸模型来提高人脸区域的质量。
我们共同优化
(jointly optimize) 人脸和全身人类生成器的潜在码(latent codes
),使两个生成器相互协调(coordinate),产生一致的(coherent)结果。。(人左边)两张插入的人脸裁剪图分别来自全身人物生成器(body GAN
)(下面一张人脸),和专用的人脸生成器的结果(face GAN
)(左上的人脸)
在实践中,我们发现最好地保持边界连续性(maintain boundary continuity),特别是当生成身体匹配复杂的发型的脸时,通常是防止
人脸生成器相关隐码wB变化大
,这样脸部的身份信息被大多数保存,但边界和背景像素可以稍微调整使身体生成器隐码wA的优化更容易。。
为了在优化过程中保持人脸的身份,我们使用了一个额外的人脸重建损失:
其中, R I R^I RI表示人脸剪切的内部, I r e f I_{ref} Iref 表示 引用的给定的输入人脸。为了进行更精确的控制,可以使用人脸语义分割
来代替人脸检测边界框
。我们的目标功能成为:
公式更新为:
基于不同的初始化身体 W A W_A WA,每张脸可以产生多个结果,如图6所示,所生成的身体肤色通常与输入的面部肤色相匹配
Multimodal
)身体生成对于预先训练的FFHQ模型生成的每个人脸(中间列),我们使用联合优化生成三个不同的身体,同时保持来自输入脸的面部特征(facial identities)。
我们可以结合任何真实的或生成的脸与任何生成的身体来产生一个照片蒙太奇。
对于一个真实的人脸,我们需要首先要使用一个额外的编码器(e4e)将其编码为人脸生成器的潜在空间作为wB。
同样,真实的身体可以被编码到遗传算法的潜在空间中,但由于人体的高变异性,很难实现较低的重建误差。
所有的蒙太奇结果都是由GB生成的合成体创建的。我们使用以下目标函数:
定由预先训练的FFHQ模型生成的目标人脸(最上行)和由我们的全身人体生成器生成的身体(最左边的列),我们应用联合潜在优化来找到兼容的人脸和人类潜在代码(latent code),这些代码可以组合起来产生连贯的全身人类。请注意面部
和皮肤颜色
是如何同步的(synchronized),并放大以观察面部插图周围的(缺少)接缝。
虽然差异很细微(subtle),但我们观察到,当使用L1比L2
损失时,视觉性能( visual performance )略好。
我们将我们的许多损失应用于图像D64(B(IA))和D64(IB)的降采样版本
,以允许在优化过程中具有更大的灵活性,并减少对来自源图像的伪影
(artifacts)进行过拟合的风险
wA和wB联合优化的一个挑战是边界条件Ω依赖于变量wA。过交替优化wA和wB,并在每次wA更新后重新评估边界来解决这个问题。当更新收敛时,我们就停止这个过程。
为了改进在深度时尚上训练的全身模型生成的人,我们使用预先训练的FFHQ模型来合成各种无缝合并的结果面,这些结果面看起来都与输入体兼容
wA或wB的默认
初始化选择是它们对应的平均潜在向量
wavg。
这通常会很快产生合理的结果。然而,我们希望为应用程序生成变化结果
(variety of results),如为输入人脸IB寻找匹配体IA
因此,我们使用随机截断的潜码
(truncated latent codes)作为初始化向量
w t r u n c = w r a n d ∗ ( 1 − α ) + w a v g ∗ α w_{trunc}=w_{rand}*(1-\alpha)+w_{avg}*\alpha wtrunc=wrand∗(1−α)+wavg∗α
官方的值
数据集
的创建83972张高品质的全身数据集,
这些图像来自于从第三方数据供应商(third-party data vender)购买的100,718张野外不同照片的数据集
包含
特征对齐
,在高品质图像生成中扮演了重要角色,我们仔细的对齐了全身人像,基于姿态骨架(pose skeletons)
基于颈部和髋关节
(neck and hip joints)定义了一个上半身的轴(upper body axis)
我们定位人的位置,使上身轴在图像的中心对齐…
由于(as the variance)视角(perspective)和姿势(pose)的差异非常大,因此在每个人的图像框架中为他们选择合适的尺度
(appropriate scale)是具有挑战性的。
我们根据人的上半身长度
(upper-body length)对他们进行调整,然后评估由分割掩模定义的面部区域
的范围(extent)。如果面长度小于(大于)给定的最小值(最大值),我们重新缩放,使面长度等于最小值(最大值)。
最后,我们使用反射填充(refkection paddiing)放大背景,并使用大小为27的高斯核严重模糊它们,将生成器集中在只建模前景人像上(foreground humans)
基于stylegan2-ada 训练1024x1024分辨率,基于4块titan vgpu, 花了28天,18小时,
总计处理42M(42000k)张图片(生成判断)
deepfashion 1024x768 9天
使用预训练模型 FaceNet 去检测和对齐边界框
InsetGAN提高了面部质量(右上),产生了比CoModGAN(右下)更令人信服的结果。CoModGAN结果是通过在面区域周围的矩形孔( rectangular holes)来生成的。
我们展示了由CoModGAN训练产生的结果,以填充在给定图像中覆盖身体的矩形孔。带有孔的输入显示在插图中。我们在每个输入中生成几个结果,并在这里显示出最好看的两个结果。我们对相同输入面的检测结果见图6。我们观察到CoModGAN创建了无缝的内容,但视觉质量比我们的更差。
我们证明了我们的技术可以捕获广泛的脸方向,并生成自然外观的脸-身体组成,这些方向适合每个各自的输入脸。
我们展示了以256×256px分辨率无条件生成的结果,该人脸生成器与我们的全身人体生成器训练相同的数据。
我们展示了从数据集中裁剪的人脸(左)与insetgan生成改进后人脸(右)的比较。放大以观察输入数据的可变质量。
由于我们的生成器是在非常多样的数据(diverse data)上训练的,在生成未截断输出时,我们可以观察到图像质量参差不齐(a wide range of )
当截断原始StyleGAN2论文中描述的生成结果时,通过从w空间中的样本位置到平均潜在Wavg 的线性插值
(linearly interpolation),我们可以大大减少姿态和细节上的伪影。 然而,这一技巧也减少了样本输出的多样性
,并显著降低了(notably)输出图像的颜色变动
(color vibrancy),因为服装的颜色被插值到一个平均的灰白色色调(an averaged greyish hue)。
在我们的方法中,只要有可能(即只要我们不限于在w空间中操作),我们使用层自适应截断方案来生成视觉上令人愉悦的改善感知质量的结果,同时从未截断的样本中保留尽可能多的不同特征,`如图9所示
截断
(Truncation)我们展示了一组来自我们的全身人像生成器的未截断的样本,显示出不现实的姿态和不需要的伪影
。标准截断(t=0.6,最小方一排)减少了伪影,但也删除了理想的服装细节,减少了颜色活力
(color vibrancy)。我们的自适应截断(第2行,中间行)更好地保留了颜色,纹理细节和饰品(accessories)
为实现自适应截断,
在生成无条件样本时,我们使用 w+空间
,并为每个层定义一个单独的截断值。在我们的生成器中,我们有18层,我们将逐层的
(layer-wise)截断值定义为
这些值是通过实验选择
的,我们分别截断单个层,以识别导致最多伪影的层,
注意,我们在后面的层上几乎没有应用截断,因为它们可以用来生成衣服的细节()
我们在实验中观察到,网络的中间层(4-7)的潜在代码对伪影最负责,所以我们截断它们最多。。
我们还测量了使用我们的自适应截断方案产生的4K随机结果的Fr‘echet起始距离(FID),并观察到与使用t=0.6(71.89)的常规截断相比,FID显著较低(53.26)。我们想指出的是,当我们在正文中进行定量评估时,我们没有使用自适应截断技巧,这是为了清晰和简单,也因为我们在w+δi空间
中进行优化,这限制了自适应截断的效果。
在执行联合优化时,我们为wA和wB定义了两个不同的优化器,并每50次迭代切换一次优化目标。