[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

童田明治

只要输入一张静态的老婆 , 就能让她动起来 , 会张嘴会眨眼 , 还能东张西望 , 抬眼看天 。 仿佛成了3D老婆 。

并且 , 你想让妹子怎样动 , 姿势都可以定制 。 比如 , 渴望她一直对你wink , 就调眼睛的参数:

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

这里有一只造福人类的AI , 作者是名叫Pramook Khungurn的死宅少年 。

此宅因长期沉迷虚拟偶像小姐姐 , 想到用深度学习自己做一只 , 结果成功了 。

他把喜讯发上Reddit , 7小时热度便突破200点 。 楼下有小伙伴发来贺电:

为了科学!

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

完全无法反驳 。

既然如此 , 背后的科学究竟是怎样的?

静态老婆动起来

我们先粗略了解一下 , 打造一只虚拟老婆 , 原本是个怎样的技术任务 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

Pramook说 , 至少得有一个人物模型 , ta的动作要能控制:

一种方法是做3D模型 , 有些虚拟偶像 (VTuber) 的确是这样诞生的 。 只是比较贵 , 需要人物设计师和3D建模师 , 一人很难完成 。 如果是没有艺术技能的普通人类 , 就更做不到了 。

另一种是做2D模型 , 成本比较低 , 这种方法制造的VTuber更常见 。 2D人物的动作也会简单一些 。

于是Pramook明白了 , 2D老婆更容易获得 。 但即便这样 , 2D模型还是分成几个可动的部分 , 建模师要把这些部分的动作整合到一起 , 依然非常耗时 。

既然如此 , 作为一只合格的技术宅 , 当然要用深度学习 , 把手动2D建模的繁琐步骤跳过去 , 直接用一张静态图 , 生成会动的老婆了 。 (至于静态图从哪来 , 有GAN可以直接生成啊↓↓↓)

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

来自waifulabs

少年打定主意之后 , 第一步就是要搞个数据集 , 才好训练算法:

自制数据集

这里需要的是 , 标注好姿势的脸部数据集 。

如果是真实人脸 , 就有EmotioNet这样的数据集可以用 。 但二次元应该还没有这样直接可用的数据集 。

少年机智地想到 , 虽然自己要的是2D老婆 , 但训练数据可以用3D模型来提取 。 熟悉初音的他 , 知道MikuMikuDance里面有大量的3D模型 , 于是下载了8000多个虚拟人物 。

这些人物的动作都可以控制 , 只要想到一个姿势 , 就能渲染出一张这种姿势的图片来 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

每个3D模型都可以得出成百上千张图 , 8000多个模型合在一起 , 就是很大的数据集了 。

一个训练实例分三张图 , 第一张是原图 (直视前方) , 第二张是表情修改后的图 (如闭眼/闭嘴) , 第三张是在第二张基础上转动了脸的朝向 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

表情的变化 , 是由6个参数决定的:两个负责眼睛开闭 , 一个负责嘴巴开闭 , 还有三个负责脸部转向 (x、y、z轴) 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

数据集有了 , 算法又是怎样的呢?

两步走

一是表情变化器 (Face Morpher) , 二是脸部旋转器 (Face Rotator) 。

表情变化器比较简单 , 少年借用了中选ECCV 2018的GANimation算法:

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

原理是 , 把从原图到第二张图之间要发生的变化 , 用另一张图表示出来 。

然后用一个Alpha Mask , 把这张图片和原图结合起来 , 就有了第二张图 (Mask也是网络自己生成的) 。

这个算法很适合用来修改图像的一小部分 , 比如闭眼 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

脸部旋转器就复杂一些 , 用到了两个互补算法 。

其中一个依然是GANimation (下图红框) , 原本它只用来改变表情 , 但少年又让它去做脸部旋转了 。

另一个是来自Zhou等人2016年的视角合成算法 (下图蓝框) , 用来让图片里的3D物体转起来 。 要做到这一点 , 网络会计算出一个外观流 (Appearance Flow) :它知道 , 输出的每个像素 , 色彩是来自输入中的哪个像素 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

外观流擅长保存原图的纹理 , 生成精细的结果 , 但不擅长脑补旋转之后才露出的部分 (如下图a) ;

而GANimation生成的图像比较模糊 , 却能脑补出旋转前没有露出的部分 (如下图b) 。

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

最后 , 把两个互补算法输出的结果合为一体 , 用到的主要是U-Net结构 。

现在观看一下成果吧 。

顺利迁移

首先 , 既然AI是用3D模型里提取的图片训练的 , 就先用3D模型的图片测试一下:

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

3D考试顺利通过 。

那么 , 输入2D图片也能行么?试一下手绘图:

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

AI依然没有被难住 , 不论输入的是彩虹社虚拟偶像的照片 , 还是用Waifulabs自动生成的新妹子 (上图右) 。

不过 , 这还不算完 。

还能怎么玩

和一个面部追踪算法搭配食用 , 就能让妹子随着视频里的人脸 , 做出一样的动作 。

比如 , 输入一段奥巴马的视频 , 妹子就学着他说起话来:

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

大叔变老婆 , 一点也不难 。 这就是虚拟偶像的本质吧 (误) 。

另外 , 视频不一定要从网上找 , 也可以自己录 , 作者Pramook已经试过了:

[量子位]只用一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊

----[量子位]只用一张图 , 就能让二次元老婆动起来 , 宛如3D:这全是为了科学啊 //----[ http://www.caoding.cn]

这样 , 教二次元老婆用温柔的表情 , 说出爱你的话 , 就可以顺畅地恋爱了 。 要是找不到可爱的声优 , 可以考虑一下谷歌娘啊 。

一切就等算法开源啦 。

https://pkhungurn.github.io/talking-head-anime/

大咖齐聚!参会嘉宾重磅揭晓

量子位 MEET 2020 智能未来大会启幕 , 李开复、倪光南、景鲲、周伯文、吴明辉、曹旭东、叶杰平、唐文斌、王砚峰、黄刚、马原等AI大咖与你一起读懂人工智能 。 观众票即将售罄 , 扫码报名预定席位 ~


    推荐阅读