该论文是出自于CVPR2022关于GAN的最新文章。要知道虽然目前GAN可以在某些领域的理想条件下能够生成逼真的图像,但由于发型、服装和姿势的多样性,生成全身人体图像仍然很困难,之前的方法一般是用单个GAN对这个复杂域进行建模。
作者提出了一种组合多个预训练的GAN的新方法,其中一个GAN生成一个全局人体图像和一组专门生成特定人体部分的GAN,然后将部分人体图像无缝插入到全体人体图像中。论文中大量的实验结果也表明该方法的有效性。
论文链接:https://arxiv.org/abs/2203.07293
视频链接:https://www.youtube.com/watch?v=YKFYEt5hvOo
在该论文中,作者提出了一个无条件生成方法,通过使用一个或者多个预训练生成器网络生成人的全身图像。该方法的原理图如下所示,给定两个隐向量{\bf{w}}_A 和{\bf{w}}_B ,将它们分别输入到预训练好的生成器\mathcal{G}_{A} 和\mathcal{G}_B 中,并生成对应的图像I_A=\mathcal{G}_A({\bf{w}}_A) 和I_B=\mathcal{G}_B({\bf{w}}_B) 。
作者使用一组损失L_{coarse} 和L_{border} 来描述优化过程中希望最小化的条件。右边给出了不同条件生成的图像,可以发现一开始直接将人脸图像复制粘贴操作会有粗糙的痕迹,而在优化的过程中生成的全身图像人脸部分和身体部分会无缝对接。
在该论文中作者采用了当前最先进的StyleGAN2的网络结构,以前大多数全身人体图像生成或编辑工作都是在256\times256 或512\times512 分辨率尺度下进行的,而作者首次尝试以1024\times1024 的分辨率进行无条件生成工作。由于目标域的复杂性,单个生成器产生的结果有时会产生形状怪异的身体部位和非照片真实感的外观等瑕疵,再加之人类姿势和外观的巨大多样性以及相关的对齐困难,使得单个生成器更难学习。因此,需要多个生成器相互配合去生成全身人体图像。
为了提高Full-body GAN生成能力,作者先使用特定的生成器去生成身体特定部分区域的图像,然后再将生成结果插入粘贴到Full-body GAN 的生成结果中,这样可以更好地模拟人体的复杂外观和可塑性。
作者证明了使用从全身训练图像中裁剪的面部区域训练的Face GAN可以用于改善Full-body GAN结果的外观,所以可以利用在其他数据集上训练过的人脸生成器来进行人脸增强。类似地,也可以使用专门的手或脚生成器来改善身体的其他区域。如下图所示,作者表明在多重优化过程中可以同时使用多部分生成器。
在该论文中作者最主要的面对的挑战是如何协调多个无条件GAN来产生彼此一致的像素。
在该论文中,\mathcal{G}_A 用于生成全身人体图像且有I_A:=\mathcal{G}_A({\bf{w}}_A) ,\mathcal{G}_B 用于生成人体子区域图像且有I_B:=\mathcal{G}_B({\bf{w}}_B) 。为了协调部分GAN和全局GAN的关系,作者用到一个边界检测器来识别图像I_A ,通过使用检测到的边界框裁剪I_A ,并将裁剪后的像素表示为\mathcal{B}(I_A) 。在图像I_A 中插入单独生成的部分图像I_B 的问题相当于找到一个隐向量对({\bf{w}}_A,{\bf{w}}_B) ,这样相应的图像I_A 和I_B 可以在\mathcal{B}(I_A) 和\mathcal{B}(I_B) 的边界区域可以在没有明显接缝的情况下进行组合。
为了生成最终结果,作者直接用I_B 生成的像素替换边界框\mathcal{B}(I_A) 内的原始像素,具体的公式如下所示:
其中\Omega:=\mathcal{B}(\mathcal{G}({\bf{w}}_A)) ,\mathcal{L} 主要用于测量I_A 和I_B 缝接处的损失。
当优化隐向量{\bf{w}}_A 和{\bf{w}}_B 时,作者考虑到了如下几个多重目标:
图像边界匹配损失如下所示
其中\mathcal{E}_x(I) 是宽度为x 像素的I 的边界区域。为了在优化过程中保持真实感,作者还添加了两个正则化项:
第一项防止优化后的隐向量偏离平均隐向量太远。作者通过在Z 空间中随机抽样大量隐向量,将其映射到W 空间,并通过计算平均值来得到{\bf{w}}_{avg} 。第二项是在{\bf{w}}^+ 隐空间中正则化隐向量。
给定一个随机生成全身人体图像\mathcal{G}_A({\bf{w}}_A) ,通过固定参数{\bf{w}}_A 来优化参数{\bf{w}}_B 使得图像\mathcal{G}_B({\bf{w}}_B) 看起来与\mathcal{B}(\mathcal{G}_A({\bf{w}}_A) 相似,则优化目标为
如下图所示,显示了使用专门的人脸模型对人脸进行训练的人脸细化结果,该人脸模型是从用于训练身体生成器的相同数据中裁剪出来的。
给定真实人脸或随机生成的人脸图像\mathcal{G}_B({\bf{w}}_B) ,作者通过固定参数{\bf{w}}_B 然后对参数{\bf{w}}_A 进行优化,这样\mathcal{G}_A({\bf{w}}_A) 生成的身体图像在姿势、肤色、性别、发型等方面与输入人脸兼容。为了在优化过程中保持人脸身份,作者使用了额外的人脸重建损失:
其中R^I 定义人脸裁剪的内部区域,I_{ref} 表示参考输入人脸。为了实现更精确的控制,可以使用人脸分割代替边界框,其中作者的目标函数是:
如下图所示,通过对{\bf{w}}_A 进行不同的初始化,可以为每个人脸生成多个结果。
在该论文中作者可以将任何真实的或生成的脸与任何生成的身体结合起来,生成一个组合体。对于真实的人脸,作者首先需要使用一个现成的编码器将其编码到\mathcal{G}_B 的隐空间中,作为{\bf{w}}_B 。类似地,一个真实的身体图片也可以被编码到隐空间中,但由于人身高差异,很难实现较低的重建误差,因此作者使用以下目标函数:
下图显示了用预训练FFHQ模型生成的人脸(顶行)与论文中方法生成器\mathcal{G}_A 生成的身体(最左列)相结合的结果。通过对人脸和身体隐向量的轻微调整,作者实现了保持身份一致的合成结果。
如下表所示作者使用了两种不同的截断设置分别是t=0.7 和t=0.4 ,并对全身图像和图像裁剪进行评估。FID分数的越小越好。由下表可以发现使用联合优化的人脸细化不会修改无条件生成器学习的分布,因此不会降低结果的多样性。
由下图可知,论文的方法InsetGAN(右上)与CoModGAN(右下)相比,在人脸对齐的精确度和生成的细致度上,InsetGAN的生成效果更好一些。
下图显示了通过对每个输入人脸使用几个随机初始化获得的两个最佳结果。