只需要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/
—完—
@量子位 · 追踪AI技术和产品新动态
深有感触的朋友,欢迎赞同、关注、分享三连վ'ᴗ' ի ❤