大叔也能“变”萌妹?1张动漫头像就可以,说话唱歌样样行

还能让二次元老婆“说话”

萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

只需要1张动漫头像,就能让你的二次元老婆“开口说话”:

甚至可以像虚拟主播一样摇晃脑袋唱歌:

不仅如此,动漫头像还能模拟你的口型和头部动作,实时“唱”出想要的效果来(作者亲自上场):

简直是老二刺螈玩家的福音。而且,不想露面的主播,也有了新的免费“虚拟主播”可选择。

那么,这是用的什么原理,让模型能达到这样的效果?

用3D模型,让2D头像动起来

这个模型最核心的思想,就是将图片和姿态参数输入系统,来“改变”输入图片中动漫人物的姿态。

听起来非常简单,但实际上并不容易实现。其一,对应的数据集不好找;其二,网络的体系结构和训练不容易搭建。

而且,作者也没能如愿找到多姿态的2D动漫角色数据集。

怎么办?

经过思考,作者选择采用大量3D模型(约8000个)对网络进行训练,因为这些3D模型的参数,是可控的。

除此之外,也还需要设计模型注释,以“圈”出模型的头部、发型和配饰等“需要旋转”的地方。

而动漫人物经过变化的眼睛和嘴型,也需要单独提取出来,用于考虑各种人物表情的变化。

根据3D人物的实际动画效果,就能设计出对应的网络了:从人物最主要的两个动作,即改变表情旋转脸部,来让人物“动起来”。

也就是说,首先需要控制眼睛和嘴张开的程度,然后,再想办法让动漫人物的头部“转起来”。

先是改变表情。这一步骤相对简单,只需要找到一个张嘴、睁眼的动漫头像,就能用算法,让主角眨眼睛、改变嘴型。

但控制脸部旋转的算法,则要更复杂一些,因为伴随着脸部转动的,虽然只有头部,但还要连同发型和配饰一同转动。

作者进一步改进算法后,控制面部旋转的网络模型,变得更加细化了一些:

首先找到需要旋转的部分、完成旋转,然后将输出图像的颜色控制与输入像素对应,最后将效果进行结合。

从人物的晃头、前后摆动来看,效果还是非常不错的。

不过,这还不是作者想要的模型,毕竟虹膜和眉毛还不能变化。

在对算法进行优化后,最新的模型,不仅能惟妙惟肖地做出生气、厌恶、沮丧的表情来,还能改变瞳孔和眉毛的形状,人物看起来也更逼真了。

效果如何?

应用到单张2D头像上的效果,还是挺能打的:

不仅能通过视频人脸检测,实时模拟人物的口型和表情:

还能用已有的视频人物控制它“说话”、“唱歌”,化身“虚拟主播”:

不过,单从3D模型的渲染效果来看,偶尔会出现一些失误,需要适当进行调整。

例如……这位黄发少年身上的剑,就会“随头移动”:

尽管头部的旋转已经非常完美,不过,本该在背后的剑,却也随着头部转动了起来……

作者本人也提到了这些细节,而且也指出,对于某些发型比较特殊的动漫人物来说,的确会出现不那么完美的情况。

例如,随着头部转动,出现辫子被“割断”的情况:

不过,这些也都还是细节上的问题。

作者表示,数据集也需要重点关注:他找的动漫头像,基本都是人物头像。

也就是说,如果训练数据与角色外观差异较大(例如兽人),就会出现这种情况:

如果你是兽人玩家,可能还需要自行准备数据集,再训练一个模型出来。

作者介绍

Pramook Khungurn,本硕毕业于MIT,博士就读于康奈尔大学计算机科学系,目前在谷歌日本(Google Japan)工作,专注于渲染算法和外观建模的研究。

读书期间,他也有不少计算机系的论文发表在SIGGRAPH等顶会上。(而且,还拥有比满分更高的GPA)

项目地址:
https://pkhungurn.github.io/talking-head-anime/

参考链接:
https://www.cs.cornell.edu/~pramook/
https://www.reddit.com/r/MachineLearning/comments/lafy8i/rp_talking_head_anime_from_a_single_image_2_more/

版权所有,未经授权不得以任何形式转载及使用,违者必究。

相关阅读