抖音是如何用特效连接现实与虚拟的?
“未来的特效将在虚拟场景下有更多人的互动,多人互动方案按照同时同地、同时不同地、同地不同时、不同时不同地分为时空四象限”。
7月28日,抖音联合火山引擎在北京举办智能特效技术开放日。火山引擎特效技术专家杨辉以《聊聊抖音特效背后的技术》为题,分享了抖音特效的生产流程和技术原理。他认为,5G的加速普及将促进端云协同、多人互动共享特效等技术发展,为特效带来更多激动人心的体验。
作为字节跳动的技术服务平台,火山引擎不仅支持了抖音、今日头条等公司内部产品,也在向外部企业开放,为客户提供特效创作工具套件、定制算法、工程化部署和对接联调等产品及服务。
以下为火山引擎特效技术专家的演讲全文:
大家好,我是杨辉,今天非常荣幸能够给大家带来抖音特效的技术分享。
相信很多人都和我一样,第一次看到特效是在电视剧《西游记》。当然那时候受到设备、软件等方面的制约,很多特效都很简陋,比如一些抠像的特效,神仙妖怪飞来飞去,就像纸片人一样。
随着科技的进步,影视特效也越来越令人震撼,特别是AI技术的兴起,在动画建模、渲染、编辑合成等特效制作环节带来了巨大的提升,比如复仇者联盟就用了机器学习的方法,通过捕捉演员的面部表情来制作灭霸的表情,让虚拟角色的表情特效达到非常生动、逼真的效果。
但是影视特效的制作成本非常高,有媒体报道说好莱坞的视觉大片,特效费用至少占总制作费的60%以上。1秒的特效镜头,如果只用一台高性能的机器渲染,可能需要50天之久。
回头去看西游记的特效,虽然从技术角度来看是比较简单的,但是因为有好的创意和内容,这部电视剧成为永恒的经典。
所以我们在做抖音特效时的出发点,一方面要用前沿的技术来实现好的特效效果,另一方面,也要尽量降低特效创作和使用的门槛,让每个人都能用特效更好地表达,做出具有想象力和表现力的内容。今天我就和大家重点分享下,抖音特效究竟是用了什么样的技术和方法来实现的。
特效是现实与虚拟的互动
首先,我们看一段演示。
这个动画具备一定的代表性,可以体现出我们在抖音特效用到技术的方方面面。首先,我们可以看到要完成这个特效,必须要对人的位置进行一定的检测,这是对真实画面内容的理解。
需要说明的是,特效没有人脸识别技术。人脸贴合本质上是对面部关键锚点进行检测来实现的,而这些点位的信息,无法识别人的相貌;此外,这些点位数据,也只是在手机端检测,既不存储、也不会上传到服务器。
其实我们还可以去理解,比如说画面里是不是有一个全身的人,或者有没有一个手,做了一个什么手势;也可以去理解,画面里面有没有天空,有没有地面,有没有建筑物。这种对画面里真实内容的理解,都是通过CV技术实现的。CV就是计算机视觉技术,深度学习的发展对于CV技术有非常大的推动作用。
深度学习是通过人工神经网络去理解训练样本内在更深层次的规律,通过数据以及模型结构,进行结构化的表达。通过深度学习的技术,可以帮助CV在检测、分割、智能生成以及SLAM(即时定位与地图构建)等方面,都可以达到更好的精度、准确率以及适应面。
除了CV之外,要完成演示中的特效,还需要把一些虚拟的素材,显示或者叠加渲染到真实画面上,这就是CG技术。CG技术名为计算机图形学,它能够把虚拟元素渲染到屏幕上。以演示为例,人脸边上一直有一个水果,右边也有很多的水果随机飞出,这些水果的动画,还有最后人的头上戴着一个3D的菠萝头饰,都是通过CG技术叠加上去的。
有了CV与CG技术之后,可以简单的生成很多特效,CV提供了对真实场景的理解,告诉你应该在哪里叠加虚拟素材,而CG技术就是完成虚拟素材的叠加任务。比如说你已经可以做假的帽子戴在头上,或者做一个假的口红涂在嘴唇上。但是这样就能达到抖音特效让用户以更低门槛使用的目标了吗?显然还不够。
特效是希望能帮助用户更好地表达,所以我们进一步发展特效技术,引入了模版或者剧本的概念,也就是说用户可以作为主角带入到故事情节当中,按照一定的规则最终形成比较高质量的视频。刚才演示的例子就是这样,包含了很多规则,比如左边的水果,需要与右边飞出来的水果进行碰撞,会变成一个新的水果,当变化多次之后进入到下一个阶段,就会让用户头上戴了一个菠萝的帽子。所以这是CV与CG之间的互动技术。
除了CV、CG还有互动技术之外,抖音的特效功能都是通过了反复的工程与产品化的迭代,最终才能够在抖音当中集成、上线,面向所有的用户。关于工程能力,后边我会具体介绍。
抖音特效的CV技术:数据驱动、场景丰富、算法全面
接下来我想向大家介绍抖音特效技术的一些特点。
首先来看CV技术能力。抖音有非常大的用户规模,我们做的任何算法上的升级、迭代,都会影响到海量用户,最终反馈到产品的使用数据上。我们要深层次的找到某个指标上升或者下降的原因,会发现和某个算法某一次改动有关。通过用户的反馈,推动CV算法的优化,这是我们一个核心的优势。
第二就是除了抖音之外,字节跳动还有许多其他APP和业务线,也有CV算法提供各种支持,比如视频拍摄、视频剪辑、视频会议,还有一些其他垂类行业,比如说游戏、广告、房产、汽车等等,会产生非常丰富的使用场景,而不同的使用场景都会产生各种差异化的需求,我们要同时满足这些需求,反过来会助推CV算法有更好的适应面。
我这儿可以举个例子,火山引擎有智能电视的客户,用户也需要在电视摄像头上应用到一些特效。但这个场景和抖音的差别非常明显:首先就是用户在电视和手机画面当中的占比差别很大,一开始我们的CV算法效果是非常差的。因为我们要支持这个场景,所以推动着我们把算法进行了优化,能够更好地适应电视的场景。之后我们发现抖音里面也有很多场景,是需要拍全身的。因为我们已经做了针对智能电视的优化,反过来在抖音里面也可以用在类似的场景里面,让用户得到更好的体验。
更丰富的使用场景,让我们的CV算法适用性更强。
最后说一下CV算法覆盖的技术能力。抖音特效里面使用了100多个不同的CV算法,刚才也说到了如果把每一个算法都认为是对真实场景的理解,我们在特效里面可以理解100多种不同的真实场景,基本包含了各种不同的技术方向,从这方面也证明了我们技术团队人才的储备也是非常全面的。
抖音特效的CG技术:为特效量身打造的轻量级渲染引擎
接下来介绍一下抖音特效使用的CG技术。我们特效技术团队通过近两年的打磨,完成了一个从零到一、自主研发的渲染引擎。
提到渲染引擎,大家比较熟悉Unity等非常成熟的商业化的渲染引擎。我们的渲染引擎是针对短视频AI特效的渲染场景,并不需要很多游戏行业的功能,所以是轻量级的渲染引擎,相比Unity的体积小得多。第二,我们具备非常好的跨平台能力。除了移动端的安卓和iOS,还可以用在PC上,包括Windows、MacOS、Linux等不同的操作系统。同时,一个平台也会有不同的图形API的版本,这些主流的图形API版本我们都支持。最后,我们可以做到出色的渲染效果。
这里我用几个演示来说明。
第一个是材质领域的展示,PBR可以简单理解为偏向真实场景的材质,可以明显地感受到金属的质感,第二个是半透明以及一定的反射折射效果的材质,第三个是自发光的效果,第四个是做了GPU粒子系统。与大家熟悉的控雨特效相比,控雨里面第一次用到粒子的概念,但其实里面的雨滴并不多。但是这个GPU粒子系统的演示,光烟花里面用的粒子数量是上万,远远大于之前的控雨特效。因为控雨的粒子是通过CPU计算的,现在我们用GPU完成上万粒子的计算。最后一个演示里面其实有很多技术,综合来说可以理解为近乎真实的渲染效果。
特效不光是一门技术,更是一项工程
特效不仅需要CV和CG的技术,还需要有完善的工程能力,只有把工程做好,我们才能够把相应的技术落地、产生价值。这里我介绍下抖音特效背后的工程。
刚才提到了抖音特效用了100多种CV算法,但是我们的客户不需要全部的算法,只需要一部分能力。所以我们在工程上提供了模块化组件,定义标准化的接口与模块设计,提供给客户可定制的方案。
第二,用户不仅仅需要竖屏的屏幕,还有很多用户需要横屏。通过我们工程化的支持,现在已经适配竖屏、横屏,也适配不同的分辨率以及长宽高比例。
我们也了解客户对体积优化的诉求,所以很多素材、资源、算法模型,都可以下发更新。在减少包体积的同时,也让客户可以快速响应需求。
最后是稳定性方面,我们在工程上可以做到非常低的崩溃率,抖音特效在接口层面的崩溃率现在低于十万分之一,正在向一百万分之一努力,而且已经非常接近了。
还有更底层的工程,比如说我们要做一些AI算法,算法的研发过程也离不开各种工程的支持。从一个算法的训练,到算法的优化,最后到算法能够在一些设备上高效率的运行,我们有成熟的平台框架,来支撑做这些事情。
有了这些AI基础能力,AI算法不仅仅是某个团队的独门秘笈,每一个团队都可以把AI算法看作是一个解决问题的可选方案。我刚才提到的训练的平台、优化的工具,还有高效率的执行框架,都会通过火山引擎向企业用户开放,现在已经开放了一部分能力。
火山引擎是字节跳动的技术服务平台,不光服务于公司内部的业务线,包括抖音、剪映等等,同时也会面向企业用户提供技术服务。除了今天分享的特效技术服务之外,大家也可以关注火山引擎的其他产品信息。
说到火山引擎的特效服务体系,这里也简单说一下,在我们服务客户的过程中,需要思考这个客户的需求是什么,他真正需要的是哪些能力。所以我们会有专业的工程师团队,和客户对接,帮助他去定制解决方案,以及在对接接入,还有上线之后遇到的各种问题,都会协助解决。
另外,我们也把特效的创作工具通过火山引擎向企业用户开放了。还有就是特效的资源,覆盖了拍摄的资源、编辑的资源,还有模版的资源等等。而抖音,也是同样使用了这部分的资源。
这里也正式向大家宣布一件事情,火山引擎已经向企业客户开放了上万款抖音同款特效。
特效的应用场景和未来
在我分享的最后,我想和大家聊一下特效技术的应用和发展趋势。
第一个是我们给某个客户提供的AR看车的解决方案。它可以有一些前后移动、车门打开等等的互动,还可以很方便地更换整车的颜色,帮用户在线上更全面地了解车型。
第二个也是火山引擎为客户支持的AR试妆案例,消费者在手机APP上就可以直观看到自己使用了不同色号的效果。
同样的思路,我们也可以用特效技术体验虚拟的试衣、试鞋,甚至耳环、戒指等首饰。这个视频既可以用在电商的场景,也可以用在广告的场景。很多广告都是视频形式,视频编辑上天然需要很多特效,用户除了看广告之外,还可以有一定的互动,从而获得更丰富的信息。
第三个是和传媒行业合作的虚拟形象案例,这是一个比较火的概念——数字人。数字人就是通过AI+CG的技术展现出一个虚拟的人物形象,一定程度上代替真人去承担部分工作,比如虚拟主持人,还有在游戏、社交领域,能够定制和自己非常接近的虚拟形象。
刚才介绍了一些成熟的案例,再往前一步,未来会怎么样呢?
这里分享一下我从技术层面的思考。首先就是端云协同。随着5G时代的到来,带宽会越来越宽,网络延时变短,流量成本在不断下降,很多特效不需要在客户端本地去完成各种计算,我们完全可以把更多的计算包括CV的运算以及CG的运算放到云端完成,相比客户端有更多的运算资源,这也就意味着CV算法可以做得更精准,识别率更高,CG效果更酷炫,给用户更好的体验。
一旦实现端云协同,特效也不再是孤岛,能把人与人进行连接,把多个人放在一个场景,让他们之间形成互动。根据两个人是不是在一个地点,多人互动的方案可以分成同时还是不同时、同地不同地,形成了四个象限。如果是同时,你会需要一个数据同步的实时传输;如果不是同时,可能是异步传输方案;如果是同地,整个场景的建立可能需要一个绝对的坐标系;如果是异地,需要相对的坐标系建立场景。
最后,大家也知道现在有非常多的新兴的智能移动端,比如说车载设备、智能家电,还有一些智能可穿戴设备,这些都会成为移动端入口。而新的移动端上边有非常多的多媒体内容展示的可能性,我相信刚才说到的CV、CG、互动等等这些特效的技术,能够在这些终端上发挥更大的作用,给到大家更好的体验。