首页 二次元 正文

新型模型 TwinGAN:打通二次元和三次元的世界,让 AI 把现实人脸转换成漫画风格图片

二次元 2024-09-20 10

在这篇萌文里,作者提出了一个新模型TwinGAN,可以将现实生活中的肖像转化为卡通风格的肖像,连接二维和三维世界的方法都在这里了~

成为宅男以来最大的遗憾之一,就是从小就没学过画画,唯一能提的大概就是在美术课上把新垣结衣画成吴三桂的悲剧了。

真人版二次元发型_真人二次元发型_真人是什么次元

学习了机器学习之后,我感觉自己还有救。毕竟,AI 可以下棋、开车、背诵好诗。看来它还可以画画。

为此,我研究了如下课题:是否有可能打破次元壁,让AI将真实的人脸转换成漫画风格的图片?

其实,近年来已经有无数次尝试教 AI 画画,我在之前的文章中介绍过其中两种:图像风格迁移和使用生成对抗网络(GAN)进行线条画上色,这两者都与我们的主题密切相关。

图像风格转换

真人版二次元发型_真人二次元发型_真人是什么次元

△图像风格迁移最新成果

简单来说,图像风格迁移就是将绘画的风格迁移到照片中,风格可以包括笔触、色彩、光影、物体比例等。

自2015年Gatys发明利用神经网络的图像迁移方法以来,一直困扰研究者的一个问题是,由于图像风格迁移大都采用预先训练好的物体识别网络,而用于物体识别的训练集是真实生活中的图片,现有的图像迁移方法对于与真实生活中的物体比例不同的画作束手无策。

具体到二维和三维,存在着头身比例不同,眼睛、鼻子大小不同等一系列问题。

其实最直接的解决办法并不难:花钱。找人标注一个专门用于艺术绘画的数据集,重新训练物体识别器,但很少有研究人员愿意花钱做这种苦差事。用图像风格迁移把人脸转换成二维风格,基本被堵死了。

生成对抗网络

如果说图像风格迁移是打破维度壁垒的一种方法,那么另一种方法就是生成对抗网络,又称GAN(Generative Adversarial Network)。

GAN 是如今大名鼎鼎的研究者 Ian Goodfellow 在 2014 年提出的一种算法,用于生成任何数据,只要给予足够的训练数据和时间,以及足够强大的神经网络。通过两个相互竞争的神经网络,GAN 可以模仿并生成难以区分真假的图像。

其中比较著名的应用案例有生成二维头像的MakeGirlsMoe,以及Nvidia Research推出的高清真人头像生成模型PGGAN等。

真人是什么次元_真人二次元发型_真人版二次元发型

△图片来自PGGAN

经过几年的改进,GAN 现在已经可以生成质量相当高的图像,不仅如此,GAN 还能将一种类型的图像转换成另一种类型的图像。

2016 年底,伯克利大学的 Phillip Isola 等人提出了一个名为 pix2pix 的模型,给定两对不同类型的图片(例如地图和卫星图像),Pix2pix 可以将这两类图片相互转换。与此同时,Preferred Networks 的 Taizan Yonetsuji 也提出了一种基于 UNet 的线描着色算法。

这两个算法非常适合我们的人脸尺寸转换项目,但遗憾的是,这两个算法都需要成对的训练图像。由于资金成本,到目前为止还没有人发布成对的二维和三维人脸数据集。

真人二次元发型_真人是什么次元_真人版二次元发型

△图片来自pix2pix

不成对的跨域图像翻译

使用不成对图像的限制使图像类型转换变得更加困难,就像在没有字典的情况下学习一门新语言一样。

幸好想象力受限于贫穷的不只我一个,还有Facebook AI研究院,2016年Facebook发布了一篇论文叫《无监督跨域图像生成》,论文的核心内容就是在没有配对数据但有一类图像被标注的情况下,如何实现两类图像之间的相互“翻译”。

不久之后,2017 年,Jun-Yan Zhu 等人针对未标记未配对数据集提出了一种名为 CycleGan 的模型。

这两个模型的一大共同点是,为了解决不成对数据集的问题,两个模型都做出了如下假设:在将 A 类图像转换为 B 类,再将 B 类图像转换回 A 类时,原始图像与两次平移后的图像之间的差异不应该太大。

以翻译为例,将一个中文句子翻译成英文后,再将英文句子翻译回中文时得到的句子应该与原句子相同,第二次翻译与原始输入的差异可以看作是循环一致性损失。

CycleGAN通过减少循环误差和实现两类不成对图像之间的相互转换来训练神经网络。

真人二次元发型_真人版二次元发型_真人是什么次元

尝试 CycleGAN

好消息是 CycleGan 有现成的开源代码,找到现有的算法后,我开始收集训练所需的数据,利用 CelebA 的 20 万张图片作为三维头像数据库,用 MakeGirlsMoe 中提到的方法从日本游戏网站 Getchu 抓取了总共约 3 万个二维头像。

真人是什么次元_真人版二次元发型_真人二次元发型

△ 二维头像数据集的示例图引自Getchu(樱花大法好)

结果如下:

看起来还行,但好像有些不对劲……事实证明 CycleGAN 有其局限性。它对恢复误差的要求迫使它将原始图像中的所有信息映射到翻译后的图像上。

在3D到2D的转换过程中,2D和3D的信息并不对称,比如3D人脸的细节明显比2D人脸多,而2D人脸的头发颜色、眼睛颜色在3D人脸中并不常见,要求2D和3D人脸一一对应显然是不合理的,使用这样不合理的损失函数训练效果也不会好。

如何在缺乏标记数据的情况下,保留尽可能多的对应部分,并在无法一一对应的地方进行创新,将三维肖像转化为二维肖像?

从不同的角度再试一次!

幸好,当现有的GAN算法不起作用时,仍然有图像风格迁移的经验可以学习。

早在 2016 年,Google Brain 的 Vincent Dumoulin 等人发现,通过简单地让神经网络在 Batch Norm(批量归一化层)中学习两个参数,就能将一张图片转化成多种不同的风格,甚至可以将不同的风格相互混合。

他们的论文《A Learned Representation For Artistic Style》表明,原本用于让神经网络训练更加稳定的Batch Norm参数还有更多的潜力可以挖掘。

Twin-GAN - 技术细节

借鉴上面提到的思路,经过一番尝试,我确定了下面这个网络结构,叫做Twin-GAN:对于图像生成器,我使用了NVIDIA的PGGAN,这是目前为止效果最好的。

由于PGGAN的输入是随机的高维向量,而我们的输入是图像,所以我使用了与PGGAN对称的编码器,将输入的头像图像编码成高维向量。为了还原图像的细节,我使用了UNet结构连接编码器和图像生成网络之间的卷积层。

我的神经网络有三种主要类型的输入和输出:

3D头像 -> 编码器 -> 高维向量 -> PGGAN生成器+3D批量范数参数 -> 3D头像

2D头像 -> 编码器 -> 高维向量 -> PGGAN生成器+2D Batch Norm参数 -> 2D头像

3D 头像 -> 编码器 -> 高维向量 -> PGGAN 生成器 + 2D 的 Batch Norm 参数 -> 2D 头像

正如 Facebook 论文中提到的,3D 和 2D 头像共享相同的编码器和生成器的主要目的是让神经网络能够识别出虽然看起来不同,但 2D 和 3D 图像描绘的都是人脸。这对于 2D 和 3D 图像的转换至关重要。最终决定是 2D 还是 3D 的开关在 Batch Norm 参数中。

在损失函数方面,我主要使用了以下四个函数:

3D到3D恢复损失函数(l1+GAN损失)

从2D到2D的恢复损失函数(l1+GAN损失)

GAN 损失函数从 3D 到 2D

从三维到二维的循环一致性损失。

结果

训练完成后实际效果如下:

真人是什么次元_真人版二次元发型_真人二次元发型

Twin-GAN 的功能远不止这些,由于二维和三维图片共用同一个 embedding,我可以提取图片的 embedding 进行最近邻搜索,在二维和三维图片中都找到最相似的图像。

真人版二次元发型_真人二次元发型_真人是什么次元

其中大多数都非常准确,这表明我们训练的神经网络对图像的理解能力很强。

它觉得金色的头发和动漫里的颜色比较相似,而立体的棕色头发对于二次元世界来说太过无趣,所以就用了一点小技巧给大家染了头发。

有些图片里可以找到一些表情、发型等,对于无法匹配的,神经网络会做出一些创新。

比如中间右边戴俄罗斯冬帽的女孩,由于二维数据集中没有这种帽子,所以神经网络简单地将其当成了发饰。

这张图片中的瑕疵也清晰可见。有时它会使用背景作为头发颜色(例如左下角),有时会反转人物的方向。转换图像时也可以看到这些错误。

其实我们算法的应用范围并不局限于二维、三维的转换,那用猫脸来训练呢?

真人版二次元发型_真人二次元发型_真人是什么次元

喵呜!感觉被治愈了。虽然看上去不错,但还是有很多时候我可能对一张图片的转换效果不满意,比如原图是黑色的头发,但我希望转换后的头像是绿色的头发。

之前设计的网络结构不支持直接调整这些细节,所以我借鉴了Conditional generative adversarial nets,用illust2vec提取了人物的头发颜色,眼睛颜色等一系列相关信息,在训练神经网络的同时,将这些信息通过特征向量(embedding)提供给生成器。

在生成图像的时候,我给神经网络额外加了一个 2D 人物肖像作为输入,转换后的图像就会变成这个人物的样子,同时保留了原始 3D 图像的姿势和表情(TODO)。效果大致是这样的:

真人二次元发型_真人版二次元发型_真人是什么次元

结果远非完美,还可以进一步改进。但重要的是,我现在有了一种算法,可以将 3D 头像变成动物、AI 原创角色或任何 2D 角色,而且我再也不用担心我的手笨拙了。

后记

现有算法最大的问题之一是数据集。由于我收集的大多数 2D 头像都是女性,神经网络会将 3D 男性女性化为 2D 女性。此外,将背景错误地视为头发颜色、忽略或错误识别某些特征等情况也很常见。例如,以下是一个失败的例子:

真人版二次元发型_真人二次元发型_真人是什么次元

需要做的事情不仅仅是对已有的模型进行改进和优化,另外在三维和二维图像的转换上其实还有很多可以做的事情,比如如何把生成的图像从人脸拓展到更加多样化的图像,当生成结果不理想的时候如何实时改进,或者把这个算法拓展到视频上等等。

值得一提的是,马爽几个月前提出的使用 Attention Map 的图像生成算法 DA-GAN 也取得了不错的效果,算法中有很多地方值得借鉴。而 NVIDIA 昨天公布了他们的最新研究,展示了一个能把猫变成狗的神经网络。

这让我期待图像转换领域的进一步发展。这太令人兴奋了!

相关论文及网站将会尽快发布,请关注我的知乎账号(ID:李嘉明)获取相关更新,感谢阅读!

注:本文为了便于理解,简化了很多论证,并不严谨,请大家注意理解。如果对技术细节感兴趣,可以阅读参考论文。

二次元影像测量仪:强大的测量大脑,精准测量的得力助手
« 上一篇 2024-09-20
精密检测仪器:从手动到自动化,如何提高工业产品检测效率?
下一篇 » 2024-09-20

文章评论