程序员至死是少年 程序员编程培训( 二 )

对于真实度要求很高的动作捕捉技术而言,这意味着精度和实时性都要受到挑战 。目前已有的移动端AI技术,只能实现实时动作捕捉的一部分功能,包括人体/人脸检测、和基于2D/3D骨骼关键点的姿态估计技术,也就是我们常见的“火柴人”算法 。

程序员至死是少年 程序员编程培训

文章插图
但“火柴人”算法显然没有3D Mesh贴合度高,因此团队决定,将3D Mesh搬到移动端上,自研一基于3D Mesh的移动端姿态估计算法 。
程序员至死是少年 程序员编程培训

文章插图
这算法相当于重建人体表面的7000多个特征点,以及15000多个三角面片,不仅能够还原人体的基本动作,还能预测出人体的高矮胖瘦 。
程序员至死是少年 程序员编程培训

文章插图
除此之外,团队还从3个方面,对模型进行了整体优化 。其一,从动作捕捉精度和模型大小两方面,对自研模型进行调试 。据微视团队表示,移动端已有的基于3D骨骼关键点的驱动阀,虽然可以驱动虚拟人体,在同一场景下做各种动作,但这算法存在一些不足,需要自行调整 。例如,算法偶尔会出现不正常的抖动,包括虚拟人物突然“形变”的情况,如下图脚掌翻转 。为此,团队还给算法加上了平滑滤波,使得人物动作看起来更真实,进一步升模型精度,避免像下面这种抖动 。
程序员至死是少年 程序员编程培训

文章插图
△脚掌不正常的翻转抖动同时,在精度以外,团队还要保证在移动端实现3D Mesh 。为了做到这一点,除了在其他模型方面尽可能整合压缩以外,团队也对模型本身进行了一个简化 。其二,从数据采集来看,团队也下了不少功夫 。由于移动端3D Mesh数据需针对性采集,微视团队搭建了自动化的数据采集系统,帮助快速采集到高质量动捕数据 。
程序员至死是少年 程序员编程培训

文章插图
虽然Kinect的实时动作捕捉效果一般,但用于数据采集还是非常不错的,三台结合起来就能获得完整的深度信息 。
程序员至死是少年 程序员编程培训

文章插图
为了确保模型的泛化性,除了尽可能多找18~60岁的不同人物数据进行采集以外,程序员们还采用了数据增强和半监督学习来增强模型的泛化能力 。在数据增强这块,为了加强模型辨认人体与周围环境的能力,程序员们将获取到人体的mask信息进行取,随机贴到其他背景的图片上,创造出更多不同背景信息的图片;同时,团队也采用了神经渲染、GAN等技术,来生成更多的训练数据 。在半监督学习上,程序员们结合辅助任务,对2D关键点模型进行训练、升模型的泛化能力 。其三,就是团队对实时性和特效渲染做的兼顾 。模型结构的整体设计和优化都只是“基本操作”,例如将串联运行的模型改成并联运行等;在推理上,团队还基于优图的TNN移动端深度推理框架,实现了模型的高效推理,最终将模型的推理时间从15ms降低到了11ms 。这里面的一个难点,就是要确保渲染效果和移动端性能(实时性)的兼顾,既要让画面看起来比较精致,又不能让软件运行速度太慢 。因此,团队先采用了自研3D渲染引擎增强光影效果,并利用SSAO、IBL等技术增强阴暗角落处的阴影质量,使得整体渲染效果与目前主流手游非常接近;
程序员至死是少年 程序员编程培训

文章插图
同时又进一步适配不同机型,采取分级策略,确保在各种手机上都能取得不错的运行性能 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: