英伟达家的新AI,可以把视频里的一只金毛,迅速变成猫鼬。
只要给AI看两张猫鼬的静态图:
在看到这两张图之前,AI从来没有见过猫鼬这种动物,训练集里没有。
AI没见过的动物还有很多,只要给它一两张照片熟悉一下,就可以把金毛换成它们的脸。
比如,凶猛的大型猫科动物:
这样说来,金毛的亲戚如哈士奇等辈,更加不在话下:
虽说同是图到图的翻译,同是无监督,这只AI和马变斑马的前辈非常不同。前辈只能在自己见过的动物之间做翻译。训练的时候,看过许多马,也看过许多斑马;
而英伟达的新选手,相当于训练中从没见过斑马。训练集里没有的动物,只要测试的时候能看到一两张图,就够了。
小样本学习 (Few-Shot Learning) 算法,对训练数据的要求大大大大大大降低了。
团队把算法开源了,还上线了一键换脸Demo。所以,今天先玩耍一下再讲原理。
错误与正确的打开方式
在下鸡冻地尝试了Demo。
第一题,把一只高冷的喵传了上去,用方框选中头部。
于是,各种动物都获得了半侧面的冷峻:
第二题,把一只雷布斯传了上去,也是半侧面:
意想不到,生成了贵族气息的半兽人:
AI的艺术天分扑面而来,不过还是要郑重提醒各位:
Demo应用叫做宠物换脸 (PetSwap) ,请选择正确的打开方式,下面是正确示范。
第三题,冲破次元壁。去吧,大侦探皮卡丘:
大家都戴上了福尔摩斯的帽子,不过只有右上角的猎犬,解锁了性感的腮红。
真是一个优雅又充实的早晨。
玩够,该看原理了。
没见过的动物,只要看一眼
就像开头讲到的,这是一个小样本翻译器。它要把内容图 (Content Image) 如金毛,换成类别图 (Class Image) ,如哈士奇或者美洲狮。
模型分为三个部分:
一是内容编码器 (Content Encoder) ,粉色部分。它把输入的内容图 (金毛) ,映射到一个内容潜码 (Content Latent Code) 上。二是类别编码器 (Class Encoder) ,绿色部分。先把每张类别图 (哈士奇) 映射到一个潜码上。然后取个平均,就得到整个类别的潜码了。三是解码器 (Decoder) ,蓝色部分。先把类别潜码映射到adaIN参数上,然后把内容潜码做个解码,来生成翻译的结果图。
训练的时候,数据集里有金毛也有哈士奇。AI就在这些见过的类别之间,修炼换脸技能:
可是,训练集里没有美洲狮。测试的时候,要生成美洲狮怎么办呢?
秘密就在这里:当类别图和内容图长得一样的时候,就让模型生成一个重构 (Reconstruction) 。
这样,只要在测试的过程中,临时看一张美洲狮 (或者几张) ,就能把没见过的瞬间变为见过的。AI把训练集里的狗,翻译美洲狮,也就不难了:
大功告成。
你也快去玩啊
这样 (优) 秀的AI,你一定也想调教一下。
代码、Demo、论文,都在这里了:
Demo传送门:
https://nvlabs.github.io/FUNIT/petswap.html
论文传送门:
https://arxiv.org/abs/1905.01723
代码传送门:
https://github.com/nvlabs/FUNIT/
主页传送门:
https://nvlabs.github.io/FUNIT/
“