博客专栏

EEPW首页 > 博客 > 人人皆可变身黄金圣斗士:微视用AI一键燃烧小宇宙,还有不同星座可选

人人皆可变身黄金圣斗士:微视用AI一键燃烧小宇宙,还有不同星座可选

发布人:机器之心 时间:2021-07-21 来源:工程师 发布文章

那些年关于变身圣斗士的梦想,如今能在腾讯微视 App 就能实现。

「年轻的青铜圣斗士少年们啊,为了大地上的爱与和平,我们将逝去,献上全部的生命和灵魂,融为一体。就在此刻,燃烧吧,黄金的小宇宙!雅典娜啊,请赐予这黑暗的世界一线光明!」

1.png

就是这段话,没错,是我们小时候倒背如流的十二黄金圣斗士语录了。很多人也曾暗中想象,自己能成为这群黄金圣斗士的成员之一。现在,「变身」的机会来了!

在腾讯微视 App,黄金圣斗士铠甲的特效挂件已经正式上线。这是静态照片变身后的样子:

2.gif

变身的操作方法也非常简单:用户只需要在腾讯微视 App 的拍摄页面选择「全身换装圣斗士」特效,再提供一张无遮挡正面照,即可进行黄金圣斗士铠甲换装。也可以点击本文末的「阅读原文」,一键体验黄金圣斗士变身!

3.png

或者在拍摄页面选择圣斗士相关特效,按照指示做出相应动作,也能召唤出多个星座的圣斗士:

4.png

除了黄金射手座,还有双子座撒加、处女座沙加、白羊座穆、天秤座童虎…… 哪个是你心目中最厉害的圣斗士?

5.gif

双子座圣斗士。

6.gif

处女座圣斗士。

也许会有人思考:「在动态视频背景下,如何给画面主体披上全身的黄金铠甲呢?」其实,在这一酷炫特效的背后,隐藏着一套复杂的技术方案。微视团队又是如何解决种种挑战并将这一技术落地的呢?

第一步:运动捕捉

听到「运动捕捉」这四个字,很多人也许不太熟悉,但这项技术已经广泛应用于人们熟悉的领域,比如好莱坞大片制作中的那些惊艳特效,比如体育赛事中的运动员动作分析,再比如身体损伤患者的康复评估等,都有这项技术的帮助。

目前,依赖于惯性、光学传感器的动作捕捉技术已经比较成熟,可以重建出非常精确的人体三维模型信息。但这种动作捕捉解决方案的成本较高,除了需要在捕捉对象的身体上安装造价不菲的传感器,还需要高性能的计算设备对采集到的数据在定制的软件中进行处理,才能得到最终的结果。

在智能手机早已普及的今天,使用手机端特效增强拍摄效果是短视频应用中的常见玩法。按照应用类型划分,这些靠手机 RGB 单目摄像头进行动作捕捉相关技术可分为:人脸 2D 关键点检测(人脸美颜 / 平面贴纸)、人体 2D 关键点检测(大长腿 / 瘦腰)、人脸 / 头 3D Mesh 重建(人脸立体贴纸 / 头套)、人体 3D 关键点检测等。但在「人体 3D Mesh 重建」这方面,业界此前少有成熟的手机端应用,原因主要归于几个难点:

缺少大规模高质量的 3D 数据。人体 3D Mesh 数据的采集成本非常高,同时由于设备的限制,很难采集到大规模贴合用户手机拍摄场景的数据。

人脸近似于「刚体」,有固定的尺寸,不需要考虑形变等因素。而人体属于「非刚体」,不同的姿态会引起很大的形变,这对视觉技术来说是很大的挑战。

人脸有相对固定的「特征点」,如眉梢、嘴角等部位,但人体缺乏这样稳定的特征点,并且拍摄时衣着的变化很大。

人体的深度信息会因为姿态不同发生很大的变化,从二维图像恢复出三维空间信息本身有很多组解,很大程度上依赖于「先验信息」才能推测出合理的解,而更多的变化就意味着更难去得到有效的「先验信息」。

不同人的体型变化很大,加上穿着不同厚度和材质的衣服,又让体型估计增加了难度。

重建出人体 Mesh 需要同时实现人体检测、人体 2D/3D 关节点检测、人体体型检测、人体姿态和关节旋转检测以及相机投影矩阵回归等多个任务。在手机端计算资源极其有限的情况下,同时完成上述多个任务比较困难。

但得益于近年来手机处理能力的提升,再加上短视频领域的火爆,这些都大大推动了相关技术的进步,特别是手机端的特效推理引擎技术,轻量化模型技术、移动端的渲染技术等。作为国内顶尖的短视频平台,人体检测技术也是微视团队一直以来深耕的方向。

相比于其他更简单玩法的挂件,黄金圣斗士在特效复杂程度、效果质量方面都有着更高的要求,微视团队所投入的研发精力也更多。尽管短视频应用中也出现过全身特效的挂件,但一般是贴合度要求较低的蓬松服装或盔甲,而黄金圣斗士铠甲需要更修身、更贴合。

为了打造黄金圣斗士铠甲特效,腾讯微视发布器技术团队探索出了一套成熟的解决方案。不仅可以打造完美贴合人体的「换装」,还能在手机上实时运行。在中高端手机上,人体 3D 重建部分可以达到~90 FPS 的处理速度。

制作高质量的 3D 人体 Mesh 数据集

变身黄金圣斗士,首先需要获取到高质量的 3D 人体 Mesh 重建数据,微视团队搭建了一套动作捕捉系统,并基于这套系统开发了相应的 Mesh 重建算法。

在硬件层面,微视团队采用了一种相对较低成本的搭建方案:3 台 AzureKinect 传感器,3 个三脚架,再加上数据同步线、USB 延长线和一台 Windows 电脑即可。

7.jpg

随后进行简单的标定,只需要抱着一个棋盘格箱子,在场景中转一圈,就可以计算出 3 台相机之间的相对位置和姿态,仅耗时 1 分钟。这一步的目的是便于后续的数据融合。

接下来开始原始数据的采集与处理。首先借助 AzureKinect 提供的协同(Collaboration)功能将三台相机的视频流做同步处理,然后采集 RGBD、深度人体 Mask、人体 3D 关键点信息并保存下来。

8.png

第三步是对每一台深度摄像机生成对应的点云数据,根据相机标定的结果,将三台相机的点云数据进行合成,最终得到统一坐标系下的 3D 点云数据。

最后,将获取到的原始数据合成为训练模型所需要的 Mesh 参数。这一步主要基于 Fitting 优化的方法,通过对人体的 Pose、Shape 等参数进行调整迭代,尽量降低重建后人体与 3D 点云数据之间的误差。微视团队采用 3D 点位之间的欧式距离(MPJPE)衡量重建效果,整体控制在 20mm 内。

9.gif

最后,微视团队共采集了上万个贴近手机端用户拍摄内容的视频数据,从中抽取了几十万张视频帧图片。其中既有生活中的常见姿态,也包括高抬腿、弯腰、快速蹦跳等高难度动作,以保证数据的丰富性。

3D 人体 Mesh 如何重建?

数据准备阶段结束后,微视团队着手重建人体 3D Mesh。在将视频拆分成一帧帧的图片之后,从每张图片中找到人体所在的区域,然后计算出人体的 2D 关键点信息,接着结合前后帧的时序信息估计出关键点的深度,即得到人体的 3D 关键点坐标,然后结合 2D/3D 以及图像信息估计出人的体型和 3D 姿态,从而获得人体在模型坐标系下的 3D Mesh 和相机的投影矩阵。

如下图所示是 2D/3D 姿态检测部分的效果:

10.gif

获得了 2D/3D 关键点信息后,如果要恢复出人体的 Mesh,还要估计两个重要的信息:人的体型以及关节的 3D 旋转。人的体型可以理解为人的高矮胖瘦,虽然关键点能提供一部分的身材信息,但仅依靠关键点很难准确恢复出身材,特别是胖瘦;3D 关键点虽然包含了部分的关节夹角信息,但关节还需要包含更多的自由度,特别是旋转。

当前,人体 3DMesh 重建的方案主要分成 Fitting 和 Deep Learning 两种。

基于 Fitting 的方法一般基于已有的人体模型,如 SMPL/MANO 等,通过最小化人体模型投影到图像上的点与已知人体关键点的误差,得到每张图片的最优模型参数。这种方法的优势在于能够得到高精度的人体 Mesh,一些公开数据集(比如 3DPW)都采用这种方法构建数据。

但这种方法的弱点也很明显:首先是速度太慢,每张图片都需要迭代至少几十到上百次,一张图片的处理往往需要一分钟到几分钟的时间。此外,考虑到体型问题,一些方案直接采用 3D 扫描仪事先扫描出人体,大大提升了数据采集的成本。

基于 Deep Learning 的多数方法同样需要依赖于人体模型,通过神经网络估计出人体模型的参数,代表性工作是 VIBE,这类算法通常称为 model-based 的方法。

这类方法有两方面的问题,首先可获取到的数据很少而且拍摄环境局现于实验室中,虽然一些工作如 Surreal,Human3.6 使用 CG 制作虚拟的 in wild 场景,但这样的数据跟真实的数据仍然有比较大的差距。第二,前面提到关节的 3D 旋转很难通过图像去估计。

相比于 model-based 方案,model-free 方案提供了另外一种思路,这种方法是直接回归人体 mesh 上的密集 3D 点坐标,并通过在 loss 中增加人体 shape、pose 等先验信息进行约束。相关的工作主要依赖于图神经网络来建模人体不同关节点之间的拓扑结构,这方面的代表工作包括「Pose2Mesh」(https://arxiv.org/abs/2008.09047)。

最终,微视团队使用 7000 多个顶点和 1.5 万的面片重建出图像坐标系下的人体 3D Mesh,从图像中重建出的 Mesh 需要经过滤波处理去掉抖动,这样就得到了视频中的人体 Mesh。效果展示如下图所示:

11.gif

后续,渲染引擎将在此人体 Mesh 信息的基础上给视频中的人物「穿上」盔甲。

让黄金铠甲成为手机端特效

接下来,微视团队在移动端运行了人体检测 / 跟踪、2D 关键点检测、3D 姿态估计、相机投影矩阵估计、3D Mesh 重建整套技术的流程,但他们发现,实现单帧图像 15ms 以内的处理速度非常困难。这意味着,在移动端的实现和优化上,还需要思考更好的解决方案。

微视团队从三个方面进行了改进:

1. 网络 Backbone 结构的设计与优化。结合 HRNet、MobileNet 系列网络等不同结构的优势,在大规模的数据上进行了不同结构设计的探索和调参,针对不同计算能力的手机做针对性的设计,保证对不同的机型在速度和效果上达到最佳的平衡。

2. 算法流程改进。对整个的算法串行的流程进行优化,整个人体检测、2D 关键点、3D 关键点、人体 Mesh、相机姿态估计全部调整为并行实现,极大提升了算法整体的效率。

3. 移动端工程优化。基于腾讯优图团队提供的 TNN 移动端深度推理框架,实现了移动端模型的高效推理。对于特定的算子和矩阵运算,微视团队与优图 TNN 团队合作进行了针对性的底层优化,保证算法的高效运行。同时,对于模型的后处理也进行了算法层面的优化,在保证不使用影响体验的精度损失上获得了更极致的运行效率。

针对不同的拍摄光照、人体的姿态、不同的体型、衣着、拍摄距离、拍摄角度以及不同拍摄背景中发现的 Bad Case,微视团队从训练方式、参数调整、Loss 函数设计、数据更新与优化等方面进行了更多深度的研究,解决了贴合度、检测稳定性等多方面拍摄中的常见问题。同时,进一步压缩了模型计算开销,将单帧的总体处理时长从 15ms 优化到了当前的 11ms。

经过上述一系列的优化工作后,微视团队基于重建的人体 3D Mesh ,为其量身定制了一套 AttachToBody 的渲染方案,目标有两个:

能够保证服装模型在三维世界和二维图像上位置和旋转正确,贴合人体表面;

能够提供 PBR(基于物理的渲染) 每个环节需要的正确信息,确保高质量的渲染效果。

同时为了项目需要,技术团队在原有引擎基础上开发了自定义材质系统,为玩法提供了更自由灵活的材质与光照解决方案。借助于强大的流程控制和脚本系统,技术团队很好地将人体重建、服饰真实感渲染、骨骼动画、转场特效等要素串联在一起,提供了完整流畅的视效表达。

此外,部分机型上启用了 IBL、SSAO 等技术,以提升整体的光影效果。为了提升在低端机型上的整体效果覆盖率,微视团队采取了 Material Capture 材质捕捉技术方案,用较小的计算成本拟合出近似 PBR 的真实感效果。同时在一些高频且量大的矩阵计算中启用了 NEON 加速方案,整体降低了数学计算耗时。

基于上述所有工作,微视的设计团队与技术团队深入协作。首先明确直观的预期效果,明确优化方向,给出优化建议;此外辅助优化引擎渲染能力,使最终效果更接近设计师预期。

在细节打磨和工具支持方面,依托 Light Studio 对 3D 场景强大的编辑和可视化能力,以编辑器组件的方式提供给设计同学完整的工具链支持,包括对衣服 SRT 数据的精准调整,对环境光 / 衣服材质主要参数的可视调整等。

黄金圣斗士铠甲特效的研发历时 10 个月,最初沟通的预期效果如下图:

12.png

通过设计团队、算法团队和特效团队多轮的效果打磨,衣服贴合度与跟随性,身体比例协调性,衣服视效等方面均达到了理想水平。引擎实现效果如下图:

13.png

未来,微视发布器技术团队将持续围绕三维人体重建来进行创意特效设计与研发。在算法方面会继续在 3D 重建的精度上持续性的提升,解决更多拍摄场景的需求。业务方面,会结合相关图形图像技术,在人体形变,人体驱动虚拟角色等方面有进一步的突破,为用户提供更酷炫好玩的特效新体验。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

LCD显示屏相关文章:lcd显示屏原理


lcd相关文章:lcd原理


关键词: AI

相关推荐

技术专区

关闭