CariGAN: Caricature Generation through Weakly Paired Adversarial Learning
CariGAN: Caricature Generation through Weakly Paired Adversarial Learning
传统的漫画生成方法主要采用低层次的几何变换(如图像扭曲)来生成夸张的图像,但在内容和风格上缺乏丰富性和多样性。在本论文中,为了实现合理的夸张和面部变形,采用facial land marks作为约束生成图像的附加条件。此外,我们还设计了一种image fusion mechanism,以鼓励我们的模型将重点放在关键的面部部位,以便在这些区域生成更生动的细节。最后,提出了一个diversity loss,以鼓励模型产生不同的结果,以帮助缓解传统GaN模型的“mode collapse”问题。
在本文中,给出一个人的任意面部形象,我们的首要目标是用合理的夸张和适当的漫画风格来生成令人满意或可信的漫画。
在漫画生成中需要考虑的四个关键方面:
- Identity Preservation
- Plausibility: 生成的漫画应该在视觉上是令人满意的或可信的;生成图像的风格应该与普通的卡通或漫画相一致。
- Exaggeration: input face的不同部位应以合理的方式变形,以夸大人脸的突出特征。
- Diversity: 给定input face,应该生成不同风格的不同漫画。
本文的主要贡献如下:
- 由于获取严格paired training data,的困难,我们引入了一种新的Gans训练环境,即weakly paired training(一对输入人脸和地面真实漫画只有相同的身份,但没有像素对像素的对应或姿态对姿态的对应)。
- 我们提出了一种新的 image fusion mechanism,以鼓励模型同时关注生成的图像的全局和局部外观,并更多地关注人脸的关键部位。
- 我们提出了一个新的diversity loss,以鼓励我们的模型在风格、颜色和内容上创造出更多样性的漫画。注:diversity loss使输出图像之间的差异成为输入随机噪声差的线性函数。
cGAN:
- Caricature generation可以看作是一个图像翻译问题,因此可以用条件生成的对抗性网络来建模。
- cGAN的一个主要问题是模式崩溃问题。解决这个问题关键在于如何学习更丰富的输出模式,并避免多个输入被映射到相同的输出。
3 our model
3.1 Adversarial Learning with Weak Pairs(弱对抗性学习)
-
Weakly paired training setting:(x, y) 是一对训练数据,其中x是输入人脸图像,y是对应的漫画;X和y图像大小为256×256,属于同一个人,但两个可以是不同姿势。
-
Adversarial loss: 我们的任务是将一个输入的人脸图像x映射到一个漫画图像xˆ上,使得变量xˆ的分布接近于弱配对地真实卡通图像y的分布。noise:我们首先从高斯分布中提取长度为4的噪声矢量。然后在空间位置重复256×256次,得到 4×256×256的噪声系数Z,然后我们直接连接x和z作为生成器的输入。这种有条件的GaN的对抗性损失可以表述为:
L a d v = E [ l o g D ( y ) ] + E [ l o g ( 1 − D ( G ( x , z ) ) ) ] L_{adv}=E[logD(y)]+E[log(1-D(G(x,z)))] Ladv=E[logD(y)]+E[log(1−D(G(x,z)))](此公式非完整) -
Facial mask as an additional condition
仅在输入面上进行调节使得很难在输出漫画中学习合理的夸张,所以我们使用facial mask p作为附加条件,并将其与x一起输入生成器G中。facial mask是由17个面部标志组成的二值图像。在掩码中,每个landmark用11×11平方块表示,我们用1填充块中的像素,用0填充背景像素。
在训练中,我们直接使用真实的卡通图像y的facial mask作为输入,并约束G的输出xˆ在面部夸张和观点上与y相似。具体来说,我们直接连接x,p和z,形成一个8通道映射作为我们生成器的输入。当facial mask作为额外输入时,我们的模型的adversarial loss如下:
L a d v = E [ l o g D ( p , y ) ] + E [ l o g ( 1 − D ( p , G ( x , p , z ) ) ) ] L_{adv}=E[logD(p,y)]+E[log(1-D(p,G(x,p,z)))] Ladv=E[logD(p,y)]+E[log(1−D(p,G(x,p,z)))] -
Content loss: 之前的cGAN是使用L1loss来计算fake image 和 ground-true之间的损失的。虽然我们的cariGAN并不是bijective maping,但是发现使用这个L1loss可以稳定训练,故在我们的carigan中也是用上L1loss,公式如下: