快手Y-tech
最新技术干货分享
什么是云渲染
云计算是指通过网络“云”将巨大的数据计算处理程序分解后,经过多部服务器组成的系统处理和分析这些数据,得到结果并返回给用户。而渲染是指在特效设计、建筑设计、动画制作等场景利用3DSMAX、MAYA、AE等软件制作好模型、动画帧之后,将所设计内容利用软件本身或者辅助程序制作成最终效果图或动画的过程。
所以云渲染就是依托于云计算的一种云端渲染服务。用户将本地的渲染任务提交到远程服务器,通过远程的计算机集群资源进行运算操作,将上传的任务进行云端处理后再返回给本地,由用户下载提取。
为什么要做云渲染
快手应用内有大量的特效业务,如拍摄页面内的各种魔法特效和各种玩法模版。都是利用图形图像处理和深度学习等核心技术,尤其以人脸、人体检测、关键点、分割等能力,将设计与现实结合起来,提供各种好看、好玩的画面效果、辅助用户在快手应用上进行拍摄或者进行特效作品制作。
使用特效可以在用户拍摄时为拍摄场景添加不同的滤镜和动态氛围效果,如为用户添加头饰、装饰、发饰、服饰等各种装饰,或借助AI技术实现人像的各种风格化效果。
特效业务有前端展示的需求。
快手的特效渲染引擎虽然也有对应的前端版本,但受限于浏览器渲染能力的上限以及内存上的限制,无法使用引擎完整的能力。
期望更高的性能。
快手的特效技术和AI能力紧密结合,随着AI技术使用各种算法模型越来越庞大,随之对内存和算力要求也越来越高,所以一些复杂的特效在服务端能获得质量远高于移动端渲染的效果。
综上,使用云端渲染可以更好的支持业务需求,如随时支持特效相关的H5活动,以及充分利用服务端的大内存和高性能,结合Y-tech的AI能力,给用户提供更完美逼真的效果。
快手特效的云端渲染
1. 云端渲染初步搭建
特效团队内部有自己的多款特效渲染引擎,使用C++开发,具有高效、实时、跨平台的图像渲染能力,已在Android、iOS、Windows、Mac、前端等多个平台作为底层的特效引擎为业务提供全方位的特效处理支持,同时对外提供丰富的接口,可以基于特效SDK进行扩展开发更丰富的功能。
如上图所示,将特效渲染引擎移植到服务端使用,需要将和底层平台相关的能力或接口在服务端进行补齐。同时还需要实现一套可高效利用GPU进行硬编硬解的视频编解码框架,来实现输入输出的编解码处理。
快手特效和AI紧密结合,所以还需要在服务端接入算法团队提供的各种AI能力,实现特效渲染引擎对各种AI能力的依赖接口,不仅可以在业务层进行各种灵活的AI能力调用,而且可以直接在特效渲染引擎内部进行AI能力使用,来实现更高级的特效。
在服务端进行充分的适配后便可以将在手机上渲染的各种特效移植到服务端进行处理,依托于渲染引擎和AI引擎,整个流程简单直接,如上图所示,在整个渲染时间线中,只有一段视频和一个特效,视频是用户提交的进行特效处理的视频,特效是设计师使用魔表工具制作的魔表特效或者使用AE设计的模版效果,使用特效渲染引擎进行渲染,特效全程叠加到用户的输入视频中,渲染完成后再以视频的形式输出,完成整个特效渲染的云端处理。
2. 云端渲染的功能扩展
云端渲染的需求越来越多,和移动端的业务场景差别也越来越大,如业务方希望在整个特效渲染过程中用户不仅只可以输入一个视频,而是可以输入多个视频或者多个图片,图片或者视频之间可以添加一些转场效果,或者希望某个效果是当前已有两个效果叠加后的输出样式,再就是希望给视频添加一些字幕效果,且始终处于最上层,不能被其他效果覆盖。所以之前依赖特效渲染引擎渲染单一特效的模式也越来越难以满足各种新的业务需求。
如上图所示,针对服务端的渲染场景进行了一定的扩展和优化,将特效组件化,魔法特效、AE模版都单独作为一个特效使用,同时基于特效SDK扩展其他各种特效,如转场特效、文字特效,特效可以指定开始时间和结束时间,同时特效之间效果可以叠加且支持各种叠加方式。
视频流的处理功能更加完善,可以支持多轨道输入,如多轨道输入叠加后可以实现多路视频源的画中画效果。轨道内可以指定多个片段,每个视频片段也可以指定开始时间和结束时间,基于此可以实现多路视频输入的裁切和合并,在服务端拥有视频剪辑的能力。
支持设计师结合Y-tech内部的AI能力进行各种特效定制化输出,如魔法特效和AI能力紧密结合,将魔表特效的输出作为AE模版的输入,魔表特效和模版的搭配使用,可以将服务端的AI能力延伸到AE模版内,该方案使特效技术的使用更加灵活,同时各种AI能力的接入成本也更低。
3.云端渲染的耗时优化
随着输入视频时长的增加以及业务场景复杂度的提升,耗时的增加导致用户的等待时长以及服务器资源的成本都在不断提高,所以云端渲染急需在性能耗时等方面做各种优化处理。
为了充分利用服务器的多核优势,将解码、渲染、编码三个模块解耦拆分、进行多线程异步处理。针对一些长视频处理过程中的瓶颈,进一步将编码、解码模块内部重构,支持多线程解码、多线程编码,在性能上满足更复杂的需求。使用一分钟的输入视频进行测试,特效及输出不变的情况下,针对多线程方面的优化耗时提升明显,优化后CPU和GPU利用率是之前的三倍,耗时较之前可提高2.5倍左右。
4.总结
借助于团队内部已有的特效渲染引擎和各种AI能力在服务端场景下进行了一系列的功能扩展和合理的性能优化,使云端渲染的功能更加完备。相对业界的云端渲染,该方案不仅可以充分利用算法团队提供的各种AI能力, 而且更加方便特效的定制化输出。
性能方面不仅充分利用到服务端CPU的多核优势,而且在编解码和渲染模块也利用到了GPU强大的算力,在CPU和GPU之间进行合理的性能分配,从而利用有限的资源达到一个较高的并发,缓解在业界普遍面临的机器资源不足和算力的性能瓶颈问题。
云端渲染的未来期望
特效业务的云端渲染技术,充分将特效与AI能力相结合,实现较为复杂的效果。同时随着5G时代的到来以及网速的巨大提升,为云端渲染提供了更多的可能,服务端将继续尝试扩展更多的功能,并充分挖掘5G网络的应用价值,在视频内容生产、直播、小游戏等方向寻找更多的落地场景。
你可能还想看
等你来
Y-tech
Y-tech团队是快手公司在人工智能领域的探索者和先行者。我们致力于通过计算机视觉、计算机图形学、机器学习、AR/VR/HCI等多领域的交叉探索,一方面帮助每个人更好地进行自我表达和内容创作,另一方面也为用户提供更好的内容体验和交互方式。Y-tech在北京、深圳、杭州、Palo Alto均有研发团队。如果你对我们做的事情感兴趣,欢迎联系并加入我们!
Y-tech长期招聘(全职和实习生):计算机视觉、计算机图形学、多模态技术、机器学习、AI工程架构、美颜技术、特效技术、性能优化、平台开发、工具开发、技术美术、技术产品经理等方向的优秀人才。联系方式:ytechservice@kuaishou.com
Y-tech///