“怎么一眨眼的功夫,抖音里的我就变成了剪纸?”
抖音春节道具「好运剪纸」
“我就不一样了,我变成了漫画。”
入驻抖音的唐嫣演示了同样年味浓浓的「新春萌漫」道具
“我的苹果活了。”
抖音春节道具「万物来拜年」
这些五花八门的抖音道具,让抖音视频创作者们有了无数灵感:
还有古力娜扎、邓紫棋、蔡依林等明星都玩得不亦乐乎:
春节期间,抖音这三款最火热的新春抖音道具帮助创作者们拍摄了4000多万条短视频,每个道具的视频播放量均突破十亿,总共播放了超过40亿次。
要实现这些让人脸和物体变来变去的特效,靠的是字节跳动技术团队多样的算法和工程能力。今天,技术范儿为大家一一揭秘。
好运剪纸:用漫画数据生成剪纸
想让手机相机拍摄的图像变成剪纸,需要用到计算机视觉中的一类常用神经网络:GAN,生成对抗网络(Generative Adversarial Network)。
GAN中包含一个生成器和一个判别器。生成器就像乙方,负责画画;判别器就像甲方,负责审核乙方的画。甲乙双方不断互相“折磨”,画很多稿之后才能创造出和目标最像的作品,GAN这个整体也就学会了自动生成你想要的图片。
「好运剪纸」道具背后的技术团队参考了CycleGAN、MUNIT等业界流行的各种GAN,以及可以生成漫画的UGATIT、CartoonGAN等网络,设计了生成剪纸的GAN,这也是抖音端内第一款实时全图GAN,不仅覆盖人脸部分,整个画面都可以转变成剪纸的样子。
想要借助GAN来生成剪纸画面,需要先拿大量剪纸画面的数据来训练它。怎么才能迅速搜集大量剪纸画面呢?
剪纸图片和普通照片的一大区别是线条。剪纸往往只有少量流畅的线条,把物体的各部分之间分得明明白白;但普通照片却很难做到这一点。
于是,算法团队想到了一种类似的画面——漫画。他们找到了开源漫画人像数据集中的图片,经过形变、美妆、边缘检测、图片二值化、色调变化等一系列基于传统图像算法的操作,批量自动生成了剪纸画面。
完成这些剪纸画面训练之后,GAN就可以自动把自然人像变成剪纸了。
除了人像剪纸部分,画面上周边的装饰和发光特效素材都由设计师绘制,之后由交互工程师来整合到一起,实现用户眨眼就开始播放的效果。
因为抖音用户们使用的手机性能不同,考虑到计算能力和内存大小等多维度的限制,包括GAN、美术素材等在内,整个素材包都需要分级下发。
算法团队采用了模型剪枝和蒸馏技术,在保证效果的前提下把手机算力和内存占用降到最低;同时降低美术素材大小,合并部分素材;在道具运行过程中,降低序列帧的预加载,在运行结束后及时关掉占大量算力的算法,不断优化后保证在不同手机上运行的流畅程度。
新春萌漫:缺少数据集?我们DIY
「新春萌漫」这个道具效果同样是借助GAN生成的。
想要让人像实时变成漫画,首先需要让每一帧图像上的静态人像变成漫画。
此前,「新春萌漫」项目的算法团队曾经做过一个日漫道具的模型,当时参考的是机器学习顶会ICLR 2020上的技术成果U-GAT-IT。
上图(a)列为原始输入照片,(e)列为U-GAT-IT生成效果。
在日漫道具的模型基础上,为了提升生成效果,算法团队找到设计同学,把一些图片素材画成了漫画版,用来作为一一对应的训练数据。
比如人物的照片:
设计同学把它画成这样:
小猫咪的照片:
设计同学把它画成这样:
因为算法只需要把头部变成卡通画,因此上面这些绘制的图像数据可以只画人物或者动物的头部。
参考画好的漫画数据的风格,算法团队不断分析尝试,优化出最适合当前风格的GAN。
最后,需要调整GAN的损失函数(loss function),在这个过程中,为了让生成的漫画效果更具美感,优化漫画人物的眼睛、鼻子、腮红等部位,设计同学也参与到了调参的过程中。
这样,一个能把单独一帧图片变成漫画的GAN模型就实现了。接下来就要应用到实时动态的视频里。
为了让视频也能实时变成漫画,算法团队想到了模型嫁接的方法,把优缺点不同的模型混合在一起后,就实现了如今抖音里部署的模型。
但模型训练出来后,他们发现了一个新问题:人物一旦张嘴,生成漫画的嘴巴就非常不好看。
原来,之前训练数据中的角色基本都是闭着嘴巴的,张嘴的数据非常少,很难让GAN学会画张开的嘴巴。
于是,算法团队想到了「贴嘴」的策略——GAN不会画嘴巴,那就把画好的嘴巴直接贴到生成的卡通人像上。
他们搜集了大量张嘴数据,画成漫画效果;在算法运行时,借助人脸关键点识别技术,在原本GAN生成的漫画上自动找到嘴巴的位置,然后调整画好的嘴巴,使其匹配当前嘴巴的位置,直接贴上去就好了。
比如上面demo中的嘴巴,就是用画好的嘴巴调整贴上去的。
上面是人像的部分,而背景部分则经过了双边滤波、Sobel边缘检测等自动处理,也可以变成类似漫画的风格。
万物来拜年:从抠图到动效
「万物来拜年」这个效果最早来自字节跳动内部研发团队的一场黑客马拉松(Hackathon)活动,研发和设计同学组成的团队在48小时内就完成了它的原型。
想要让各种物品都能动起来,首先要把物体从手机拍摄的画面中精准地「抠」出来。
这样抠图的效果依靠显著物体分割算法来实现,先把图中的物体拆分出来,再进行后处理,提升边缘分割精度。
除了生活中常见的各类物体之外,你会发现一些特殊的个体,比如表情包,一样可以被分割出来。
这是因为训练显著物体分割模型时,工程师们不仅用到了包含15000张日常物品图片的开源数据集,还额外增加了2000张手绘图片数据集,这样不管是实体的物件还是画出来的卡通形象,都能有良好的分割效果。
分割好之后,再借助字节跳动工程师自研的四肢挂载点算法,找到这只南瓜的重心,再分析手臂和腿的朝向,借此在图形边缘找到4个点,就可以把手臂和腿装上去。
之后,把设计师画好的眼睛鼻子嘴巴居中放置,这样图片上的南瓜就自动变成了静态的南瓜小人。
之后自适应匹配设计师做好的模版网格动画,调整四肢和五官,渲染材质、阴影效果,南瓜小人就可以动起来了。
在手机端的实际运行过程中,其实用到了两个模型:预览时用的是运行更快、功耗更低的小模型;当你按下拍摄按钮后,就会切换到分割质量和分辨率更高的大模型。这样就能既保证功耗,又能保证视频的质量。
抖音爆款道具背后的字节跳动智能创作团队
上面这些抖音道具的研发们,都来自字节跳动智能创作团队。除了这些春节道具之外,他们还联动抖音多媒体设计师团队做过许多广受欢迎的互动道具,并且技术能力已经通过火山引擎实现了商业化,可以向第三方厂商提供服务。
他们研发的热门道具有「蓝线挑战」:
来自抖音用户“小栗哥”
还有「潜水艇游戏」:
来自抖音用户“三尺喵食记”
用智能创作特效团队Leader Robert Wang的话来说,这个技术团队最大的特点就是鼓励创新、鼓励自驱,并且重视跨团队交流。
团队的技术同学并不是「没有感情的接需求机器」,而是会凭借自己对前沿技术的深刻理解,主动提出各类互动道具的idea并推动实行。
很多抖音道具的出现,都是一个自下而上的过程。
一方面,设计师们会根据重点节日、热门事件来策划一些道具的效果和互动玩法;另一方面,智能创作特效团队的交互工程师们也会集体头脑风暴,针对一些前沿技术的能力特性,来策划这些技术在抖音上可以生成什么样的道具。
注意,这里的交互工程师们不仅仅是传统意义上的「程序员」,他们同时还有艺术设计的背景,会设计、会建模、会写代码。每当业界有新的算法突破,交互工程师们就会探索算法能力的边界和发挥的空间,琢磨它们可以用来做怎样的互动。
图片来自TensorFlow官方博客
比如上面展示的人体分割算法。当它被部署在手机上之后,交互工程师们会测试人离手机多远可以被识别出来,算法反应有多快,进而判断它应该用在快速舞蹈的动作上,还是应该用在慢动作的特效上。
“这样就可以把一个单点能力变成一个囊括技术和玩法创意的矩阵,成为一个工具箱,交互工程师和设计师们再将这些工具和已有的各种算法结合,碰撞出海量新的道具玩法。”Robert说。
设计师们和交互工程师们提出新道具的idea之后,会在内部的创意评审会上展示,并决定把哪些idea变成现实。
如果实现一个idea的技术在内部SDK、引擎和内部创作工具里已经有了,那么产品经理、交互工程师和设计师们就可以直接用这些技术能力来设计新的风格样式、交互方式和互动玩法。比如设计不同风格的人物变装、设计用眨眼或是摆手等不同的交互来启动特效。
而如果实现一个idea的技术能力当前还不具备,智能创作算法团队就会专门为这个idea投入研发资源,训练新的算法模型。之后,这些新的算法还可以用在更多道具的创作中,这样抖音用户总有新奇的道具特效可以使用。
“在我们团队,一个研发同学如果熟悉前沿技术并有创作抖音道具的想法,就可以主动拉算法、交互工程、设计等多部门的同学一起,跨团队协作完成,展示给抖音的业务同学并上线,”团队Leader Robert说。
他鼓励团队带着产品价值和用户价值来做前沿技术的探索。“一些前沿的计算机视觉、深度学习的相关技术,研发是最了解它们的,因此我们鼓励研发同学以自己的技术视角来观察这项技术的应用前景,积极地和产品经理们配合,最终为产品赋能。”
这也让抖音的特效工具有了更强的竞争力,以Robert的观察来看,在国内,许多先进的技术抖音都是最早上线的,团队的创造力和技术能力可以让数亿用户体验到新鲜有趣的特效玩法,同时降低视频内容的创作门槛, 增加优质内容的供给,丰富海量用户的生活。