草庐IT

AI 加持实时互动|ZegoAvatar 面部表情随动技术解析

ZEGO即构开发者 2023-03-28 原文

01 AI"卷" 进实时互动

 

2021 年,元宇宙概念席卷全球,国内各大厂加速赛道布局,通过元宇宙为不同的应用场景的相关内容生态进行赋能。针对 “身份”、“沉浸感”、“低延迟”、“随时随地” 这四个元宇宙核心基础,ZEGO 即构科技基于互动智能的业务逻辑,提出并落地了 ZegoAvatar 解决方案,将 AI 视觉技术应用至虚拟形象,完成了业务和技术的无缝衔接。

 

图 1:Avatar 产品 AI 能力矩阵

 

ZegoAvatar 基础能力包括:面部表情随动、语音驱动表情、AI 人脸特征识别(AI 捏脸)、骨骼捏脸等,涉及的 AI 技术点包括人脸检测、人脸跟踪、人脸关键点检测、头部姿态检测、3D 人脸重建、AI 特征识别等。

 

本文重点针对 ZegoAvatar 中面部表情随动这一技术点进行解读。

 

 

02 ZegoAvatar 面部表情随动效果展示

 

在技术分享前首先让我们通过一组具体的数字和视频来看下 ZegoAvatar 的面部表情随动效果,我们分别在配置从低到高四种不同安卓设备上进行实际推理开销测试,取 1000 次推理结果求平均:

 

图 2:测试数据

 

从上述的数据中可以看到,ZegoAvatar 在不同机型上均以极低的延迟实现了实时推理的效果,在保证表情精准稳定的同时,为用户带来了流畅极致的使用体验。可以看下下方的面部表情随动效果:

 

ZegoAvatar 面部表情随动效果展示

 

 

03 面部表情随动技术方案解析

 

面部表情捕捉(Facial Expression Capture)技术被广泛应用于电影、游戏、动漫制作等领域,而目前的面部动作捕捉依托于相机或激光扫描仪将人脸转换为一系列参数数据,然后用于生成计算机图形、电影、游戏或实时化身的计算机动画。

 

与捕捉由关节点构成、较为稳定的人体动作相比,面部表情更为细微复杂,因此对数据精度的要求也更高。现在主流的 3D 面部表情捕捉主要有基于相机阵列和基于结构光两种方法,存在拍摄难度大,设备成本高的问题。

 

图 3:表情捕捉示意图

 

图 4:欧拉角示意图

 

ZegoAvatar 技术方案中的移动端面部表情随动是指通过移动端摄像头进行人脸检测以及跟踪,通过人脸位置、关键点信息定位出人脸在屏幕上的位置,并实时输出包含面部、舌头、眼球在内的 52 种基础面部表情维度的线性组合以及头部姿态的三个欧拉角,最后导入虚拟形象进行实时渲染驱动。

 

目前 ZegoAvatar 面部表情随动在不同性能的硬件设备上均实现了低延迟的落地效果,通过实时的虚实交互,为用户带来沉浸式的体验。本文将向大家详细解读 ZegoAvatar 的面部表情随动的算法整体架构以及如何在落地过程中做到面部表情随动效果的精确与自然。

 

ZegoAvatar 的移动端面部表情随动的技术方案分为模型训练部署推理两部分。

 

在训练过程,我们设计了一个轻量化的全卷积神经网络,包括网络骨干(Backbone)和三个不同的任务分支(如图 5)。其中 Backbone 是由标准卷积 + MobileNetV2 Block + MobileViT Block 组成(如图 6),多个输出分支为:3D 面部特征点定位、面部表情识别、头部欧拉角姿态估计,其中不同的分支负责不同的任务。我们通过多任务学习的思想和迁移学习的技巧,给模型送入人脸特征和表情以及欧拉角标签,输出稳定的相关的映射关系。

 

图 5:网络结构示意图

 

图 6:网络骨干(Backbone)示意图

 

图 7:训练和推理流程示意图

 

 

1、训练模块

 

根据数据采集模块得到表情数据,并通过数据矫正和增强后训练得到 AI 表情模型,具体分为以下几个部分:

 

a、 数据采集:针对业务需求,我们开发了一套可用于捕捉人脸和动作的数据采集软件,用于       获取表情和欧拉角以及 3D 特征点位置数据;

 

b、模型训练:基于多任务学习和迁移学习的思想,我们尝试了多种轻量级的网络结构和训练策略,设计不同的任务分支如特征点定位和头部姿态估计以及面部表情检测,利用任务之间的相关性辅助目标任务学习。

 

c、数据增强:针对落地场景,设计了定制化的数据增强流程,丰富了训练数据的模式;

 

d、数据矫正:对采集的图片依次进行人脸检测,面部特征点对齐,通过仿射变换得到矫正后的图片;

 

对模型进行训练,模型分为三个分支,损失函数组成如下:

 

 

 

2、推理模块

 

推理模块根据输入数据进行推理,具体分为以下几个部分:

 

a、数据输入和矫正:用户使用时解析输入视频流,对图片中的人脸进行检测、跟踪以及面部特征点定位,然后计算出人脸位置与标准人脸之间的仿射矩阵,从而通过仿射变换得到矫正后的图像;

 

b、模型推理:对训练好的 AI 模型,进行剪枝和量化,在 FP16 半精度下,在移动端进行推理加速部署,最后将矫正后的图像送入模型,推理得到表情向量和欧拉角向量;

 

c、表情驱动和渲染:将表情向量和欧拉角向量送入驱动渲染模块解析,实时驱动虚拟人物形象。

 

 

04 “精确而自然” 的效果难点攻克

 

本技术旨在解决互动智能领域移动端虚拟人物表情实时驱动问题,在研发过程中需要解决以下问题:

 

  • 移动端推理的实时性

  • 面部表情和头部姿态的稳定性

  • 不同用户在不同使用场景的鲁棒性

  • 各个表情的协调性

 

这四个维度层层递进,而如何做到同时兼顾,是贯穿整个项目周期的重难点。

 

首先,受限于移动端的计算资源,不同设备的用户要正常体验,必须要做到各种机型上的低延迟,因此落地需要做到极致的轻量化,这对模型设计和部署有较高要求。

 

其次,实际体验过程中,用户的使用方式、用户场景光照、用户镜头脏污或遮挡都会影响模型的表现,如何在这些因素的综合作用下,让模型又快又稳的输出面部表情和头部姿态,是 ZegoAvatar 走向商业化不可回避的难题。

 

最后,考虑到不同的表情之间既有独立性又互相影响,如何让虚拟形象的表情更加拟人化,让用户的使用更有沉浸感,既是一个有挑战性的技术挑战,也是一个有价值的业务问题。

 

基于以上想法,我们设计了以下技术方案:

 

1、推理的实时性

 

一方面设计模型时遵循轻量化的原则,比如使用深度可分离卷积(Depthwise separable convolution)以及更少的卷积层数和通道数,可以减少模型的参数量,从而降低推理的计算开销。

 

这里补充一下一般的卷积和深度可分离卷积的示意图,并对计算量优化进行简单分析:

 

 图 8

 

深度可分离卷积将一般的卷积过程分为了 depthwise convolution(逐深度卷积)和 pointwise convolution(逐点卷积),略牺牲精度的情况下,计算量大幅下降,速度更快,模型更小。

 

 

由此可见,深度可分离卷积可以显著减少一般卷积的计算量。

 

另一方面落地时,我们基于移动端推理引擎进行模型转换和部署,主要分为算子转换和推理优化两个部分。

 

 

a、算子转换:主要通过算子融合、算子替代、模型压缩、布局调整等方式对模型中的图进行基本的优化操作;

 

b、优化推理:主要进行算子级的优化包括:卷积和反卷积中应用 Winograd 算法、在矩阵乘法中应用 Strassen 算法、低精度计算、手写汇编、多线程优化、内存复用等。

 

此外我们通过分析模型在不同网络层的的计算量分布,对模型存在计算瓶颈的卷积层进一步剪枝,在 FP16 半浮点数精度下,进行模型转换,在保证模型表现的同时,显著的降低了推理开销,并减少了模型的尺寸。

 

2、模型精确性和鲁棒性

 

首先是数据采集阶段,基于 ZEGO 自身业务,自主开发了一套数据采集软件,并通过脚本对每一批数据进行可视化检查,确保原始数据的正确性

 

在模型训练阶段,尝试了多种模型结构和训练策略,包括不同的输入形式和分支组成。最后采用 3D 面部特征点分支和面部表情分支与头部欧拉角分支结合的方式,利用多任务学习思想和迁移学习的训练技巧,通过特征点信息辅助表情和欧拉角输出,得到精确的模型表现。

 

在最后落地时,由于用户和场景的不同,我们遇到了模型泛化性(Generalization)问题,这也是几乎所有计算机视觉任务落地时都会遇到的问题。

 

 

图 9:泛化性、欠拟合(underfitting)、过拟合(overfitting)示意图

 

泛化性指模型经过训练后,应用到新数据并做出准确预测的能力。一个模型在训练数据上如果被训练得太好往往会导致过拟合,以致泛化性降低。

 

针对此问题,一方面从网络结构和训练策略出发,增加必要的组件,比如一定强度的 DropOut,损失函数正则项,设计 EarlyStopping 机制,另一方面我们针对出现的场景问题,比如 “眼镜反光”,“阴阳脸”,“镜头模糊脏污” 等,进行多轮测试后去追溯和定位问题,然后设计了针对性的数据增强方案,通过完备性的消融实验(ablation experiment),确定了最优的流程和相应超参数,在训练过程中引入相应的数据模式,极大的提升了模型的精确性和鲁棒性,从而解决了这一难题。

 

3、表情的协调性

 

如何让虚拟形象不同的表情之间自然的联动,这是整个团队协作解决的问题。

 

一方面算法在网络 Backbone 的设计考量上,我们引入了 MobileViT 模块,因为尽管 CNN 网络在视觉任务上具有参数少效果好以及空间感知的优势,然而这种空间感知是局部的,全局感知可以通过注意力机制和 transformer 实现,然而普通的 transformer 无法部署在移动端,MobileViT 可以将 ViT 与 MobileNetV2 的结合起来,兼顾全局信息和轻量化的需求,让模型的推理效果又快又准。

 

另一方面,开发和设计同学持续的解决虚拟形象的各种材质渲染难题,最后才有了现在 ZegoAvatar 精确而自然的随动效果。

 

 

 ZEGO 

 

ZegoAvatar 面部表情随动是 ZEGO 基于已有业务,通过 AI 结合元宇宙赛道的一次成功的尝试和突破,我们从数据采集方案到模型架构设计再到训练策略整个算法闭环,以及虚拟形象和相关组件的开发实现了完全的自研,在实际的落地效果上,我们做到了行业领先水平。

 

对于落地遇到的各种问题,我们从本质出发,设计针对性的方案进行解决,整个项目用较少的数据,取得了很好的效果。基于 ZegoAvatar,不同业务切入点的新的算法开发也在进行中,后续会有更多新的项目孵化,ZEGO 即构科技将进一步在互动智能领域不断实现技术革新与突破,在元宇宙浪潮中扬帆起航

 

获取更多帮助
获取 SDK 开发文档、demo,可访问 即构文档中心
获取更多商务活动热门产品,可提交 信息联系商务
注册即构 ZEGO 开发者帐号,快速开始;

有关AI 加持实时互动|ZegoAvatar 面部表情随动技术解析的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  3. ruby - 从 Ruby 中的国家代码获取表情符号标志 - 2

    我想将“US”之类的国家代码转换为表情符号标志,即将“US”字符串转换为Ruby中适当的Unicode。Here'sanequivalentexampleforJava 最佳答案 使用tr将字母字符转换为其区域指示符号:'US'.tr('A-Z',"\u{1F1E6}-\u{1F1FF}")#=>"??"当然你也可以直接使用Unicode字符:'US'.tr('A-Z','?-?')#=>"??" 关于ruby-从Ruby中的国家代码获取表情符号标志,我们在StackOverflow上找

  4. ruby-on-rails - 用于门户的 Ruby 技术 - 2

    我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它

  5. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里 - 2

    当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在

  6. (附源码)vue3.0+.NET6实现聊天室(实时聊天SignalR) - 2

    参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍  介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。  内容有:    ①:Hub模型的方法介绍    ②:服务器端代码介绍    ③:前端vue3安装并调用后端方法    ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke()  去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on

  7. ruby-on-rails - 在 Rails 应用程序的前端获取实时日志 - 2

    在Rails3.x应用程序中,我正在使用net::ssh并向远程pc运行一些命令。我想向用户的浏览器显示实时日志。比如,如果两个命令在net中运行::ssh执行即echo"Hello",echo"Bye"被传递然后"Hello"应该在执行后立即显示在浏览器中。这是代码我在ruby​​onrails应用程序中使用ssh连接和运行命令Net::SSH.start(@servers['local'],@machine_name,:password=>@machine_pwd,:timeout=>30)do|ssh|ssh.open_channeldo|channel|channel.requ

  8. ruby - 使用哪种群发消息技术? - 2

    我感到有点困惑——大约24小时以来,我一直在考虑在我的项目中使用哪种组播技术。基本上,我需要的是:创建组(通过一些后端进程)任意客户端广播消息(1:N,N:N)(可能)直接消息(1:1)(重要)使用我自己的后端(例如,通过某种HTTPAPI)对客户端进行身份验证/授权能够通过后端进程(或服务器插件)踢出特定的客户端这是我要的:Ruby或Haxe中的后端相关流程JS+Haxe(Flash9)中的前端—在浏览器中,因此理想情况下通过80/443进行通信,但不一定。因此,这项技术必须能够在HaxeforFlash中轻松访问,最好是Ruby。我一直在考虑:RabbitMQ(或OpenAMQ)、

  9. 企业大数据发展面临问题之存算分离技术思考 - 2

    文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据

  10. 未来的趋势————以ChatGPT为标杆的AI对生活的影响是巨大的 - 2

    文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们

随机推荐