从开源模型框架到自研,声网web端虚拟背景算法正式发布

声网 声网     2022-12-04     647

关键词:

根据研究发现,在平均 38 分钟的视频会议里面,大概会有 13 分钟左右的时间用于处理和干扰相关的事情。同时研究也表明在参加在线会议的时候,人们更加倾向于语音会议,其中一个关键原因就是大家不希望个人隐私暴露于公众的视野。

如何在视频会议中突出演讲者,减少背景当中的干扰信息,并提升人们对视频会议的参与热情成为了实时音视频技术所要解决的问题,而实时虚拟背景正是一项这样的技术。不同于绿幕等传统技术手段,虚拟背景通过机器学习推理对实时视频内容当中的人像进行分割,实现对人像外内容的替换。因此用户无需对现实环境中的背景进行布置即可使用,具有便捷高效的优点。

2021 年 8 月,声网落地了基于 Web SDK 的第一个虚拟背景插件版本,实现了背景替换与背景虚化功能。在近期发布的虚拟背景插件更新中,该功能得到进一步提升,目前已可支持图片虚拟背景、基于 CSS 色值的纯色背景、3 档不同程度的虚化背景。机器学习推理引擎也从通用机器学习框架升级为 Agora AI 实现,不仅整体包增量从 3M 降低至 1M,运算性能实现了 30% 以上的提高,新的 API 也更为易用。

回顾声网 Web SDK 虚拟背景功能的研发过程,主要经历了三个阶段:

第一阶段 开源模型 + 开源机器学习框架

在这一阶段,我们基于 MediaPipe selife 人像分割模型和TFlite机器学习框架完成了虚拟背景在 Web 平台的工程化实践。实现了从图像采集、实时处理到编码发送的完整管线。在这一个过程中,我们对影响处理性能的关键因素进行了大量分析,并对这些性能瓶颈进行了针对性的优化。同时我们也对不同机器学习框架在 Web 人像分割的应用场景进行了定制和优化,这其中包括对 MediaPipe 和 TFlite 框架的定制。

MediaPipe 使用 TFlite 作为机器学习推理引擎,MediaPipe 的 TFlite 人像分割模型所使用的算子除了包含 TFlite 支持的通用算子,还包含 MediaPipe 提供的特殊算子。在实践中,我们将 MediaPipe 人像分割模型所依赖的 MediaPipe 特殊算子直接移植到 TFlite,实现了 selife segmentation 模型脱离 MediaPipe 框架直接在 TFlite 上的运行。同时使用自研 WebGL 算法替代 Mediapipe 提供的图形处理功能。这样就消除工程对 MediaPipe 的依赖,不仅降低了 MediaPipe 带来的整体包增量,同时使机器学习运算和图像处理解耦,整体方案更具灵活性。

由于 TFlite 在 Web 平台采用 WebAssembly 移植实现,而 WebAssembly VM 环境和真实系统架构存在较大区别。这就需要对支撑 TFlite 运算的不同矩阵/向量运算后端框架的性能进行评估。TFlite 提供了 XNNPACK、Eigen、ruy 三种矩阵运算后端。经分析对比他们在 WebAssembly 下单帧推理时间表现如下:


■TFlite 不同运算后端下的性能表现

依据分析结果将 TFlite 在 WebAssembly 上的运算后端调整为 XNNPACK 后,整体运算性能得到了大幅提升。

第二阶段 自研模型 + 开源机器学习框架

在第二阶段的研发重点是自研模型及算法的研发和工程化,通过海量训练样本对各类场景的覆盖,声网逐步实现了自研人像分割模型的算法迭代,输出的自研模型和算法在人像分割精度、画面稳定性、计算性能等方面对比开源模型形成了较大的综合优势。出于对机器学习生态和模型兼容性的考虑,工程化所用的机器学习框架也从 TFlite 切换到了 Onnxruntime。在进行 onnxruntime 的 WebAssembly 移植的过程中,Web 团队使用了包含了 SIMD 和多线程在内的多项优化手段对运算性能进行提升。值得一提的是,我们将 Onnxruntime WebAssembly SIMD 优化过程中的部分工作成果提交至 Onnxruntime 开源社区,并被合入项目主线。

至此,声网发布了 Web SDK v4.5.0,并在 npmjs 上线了独立的 Web 虚拟背景插件,成为音视频云 toB 行业中首先在 Web SDK 产品中支持该功能的服务商。

第三阶段 自研模型 + Agora AI 机器学习框架

在人像分割模型逐步演进同时,出于对计算性能的无限探索和对用户体验的无止境追求,声网高性能计算团队同时也对基于 Agora AI 框架的人像分割模型工程化开展了研究,在使用了包含计算图优化,内存自动复用,算子 WebAssembly 优化在内的多项技术手段后,将原模型处理算法在 Web 平台上的整体性能提升了 30% 左右。


■Agora 人像分割模型在某测试设备上的单帧推理时间

Web SDK 团队在使用 Agora AI 对 onnxruntime 进行替换后,虚拟背景插件的整体包大小从之前的 3M 降低至 1M,有效提升了用户在 Web 环境下的插件加载速度,实现了用户体验的较大提升。


■Agora Web SDK 媒体处理管线

在近期发布的 WebSDK v4.10.0 中,我们同时对虚拟背景插件进行了更新,新的虚拟背景插件不仅包含上述提升,同时它也基于 WebSDK 新的插件机制实现,提供了更易用 API。目前新的虚拟背景插件使用了新的包名通过 npm 发布,如果对该功能感兴趣可点击**「此处」**访问 Agora 官网文档进行了解。


■npmjs上的声网Web虚拟背景插件

展望

技术无止境、需求恒久远。在未来的研发过程中,声网虚拟背景在效果方面将针对强光照、背景暗光、复杂背景等更丰富应用场景进行研究和突破,并针对高分辨率场景下的人像边缘、发丝等细节的保留进行优化。


■高清图像人像分割的细节保留

在算法方面将实现从单帧图像推理到视频连续帧推理的尝试。从而满足用户在各类更复杂环境下的虚拟背景体验需求。让我们拭目以待!

最后,如果大家想体验目前 Web 端的虚拟背景,可以访问 videocall.agora.io,创建房间后,在设置中开启。

Dev for Dev专栏介绍

Dev for Dev(Developer for Developer)是声网Agora 与 RTC 开发者社区共同发起的开发者互动创新实践活动。透过工程师视角的技术分享、交流碰撞、项目共建等多种形式,汇聚开发者的力量,挖掘和传递最具价值的技术内容和项目,全面释放技术的创造力。

从实体框架映射到自定义域模型类?

】从实体框架映射到自定义域模型类?【英文标题】:MappingfromEntityFrameworktocustomdomainmodelclasses?【发布时间】:2009-12-0821:01:54【问题描述】:我想知道如何获得实体框架(.NETFramework3.5SP1)生成的实体和自定义域模型类之间的自动映... 查看详情

easynlp开源中文nlp算法框架

1、背景        随着BERT、Megatron、GPT-3等预训练模型在NLP领域获得前瞻的成果,许多多团队也进入超大规模训练中,使得训练模型从亿级别发展到了千亿甚至万亿的规模。首先,模型参数量过大使得训练和推理速... 查看详情

一个开源分布式微服务rpc框架~正式发布(代码片段)

介绍一个分布式微服务RPC框架|英文说明文档1.服务提供负载均衡策略序列化策略自动发现和注销服务注册中心2.安全策略心跳机制信息摘要3.设计模式单例模式动态代理静态工厂建造者策略模式Future(观察者)亮点1.信息摘要算法... 查看详情

机器学习框架:开源的好,还是自研的香?

 如今,机器学习在图像识别、多媒体创作、自然语言处理、搜索广告推荐等领域都有着广泛的应用和不俗的表现。面对日益繁杂的应用场景,机器学习框架有助于节省编写大量底层代码的精力,也能省去部署和适配... 查看详情

最强nlp预训练模型库pytorch-transformers正式开源:支持6个预训练框架,27个预训练模型

先上开源地址:https://github.com/huggingface/pytorch-transformers#quick-tour官网:https://huggingface.co/pytorch-transformers/index.htmlPyTorch-Transformers(正式名称为pytorch-pretrained-bert)是一个用于自然语言处理(NLP)的最先进的预训练 查看详情

腾讯自研分布式远程shuffle服务firestorm正式开源

11月4日,在2021腾讯数字生态大会上,腾讯宣布将开源自主研发的分布式远程Shuffle服务Firestorm。该服务的开源不但可以助推分布式计算的云原生部署,还能解决大数据分布式计算过程中的痛点,提升计算资源的利... 查看详情

如何将背景图像添加到自适应卡片机器人框架

】如何将背景图像添加到自适应卡片机器人框架【英文标题】:HowtoaddBackgroundimagetoadaptivecardbotframework【发布时间】:2019-12-0211:49:20【问题描述】:我正在尝试将背景图片添加到自适应卡片中。目前我正在使用自适应卡版本1.2,... 查看详情

声网自研传输层协议aut的落地实践丨devfordev专栏

...开始逐步大规模落地在各项业务中,用一套传输协议/框架解决各项业务不同的传输需求。相关内容分为上下两篇,本文将详细介绍AUT传输协议的设计和演进过程。01纷繁复杂的传输场景作为一家提供实时互动平台的公司&#... 查看详情

2021年终总结:我只给自己打60分,终于从外包跳到自研了(代码片段)

2021年我只给自己打60分,虽然完成了跳槽但是花了很大的代价。全年也依旧没有自律…记得2021年过年时是一直带着年终奖比其他人少的多的愤恨而不开心。凭什么都是做CRUD,我想的是反正没有加班费我也不想调休就没怎... 查看详情

开源web框架django知识总结(代码片段)

开源web框架django知识总结(十二)户中心界面(一)定义模型类基类为了给项目中模型类补充数据创建时间和更新时间两个字段,我们需要定义模型类基类。新建aerf_mall.utils/BaseModel.py文件,创建模型类基... 查看详情

开源~自研的一套自动化测试平台实现web接口自动化性能测试支持上传jmeter脚本

...测试效率,大家多提宝贵意见~~~有问题随时沟通github开源项目:后端自动化测试平台:http 查看详情

用声网androiduikit为实时视频通话应用添加自定义背景丨声网sdk教程(代码片段)

使用声网SDK和UIKit创建视频推流应用非常简单,而且声网还有许多功能,可以提高视频通话的质量和便利性。例如,我们可以在视频通话过程中使用虚拟背景,为视频通话增添趣味性。我们可以通过以下三种方式... 查看详情

从 django 用户模型迁移到自定义用户模型

】从django用户模型迁移到自定义用户模型【英文标题】:Migratingfromdjangousermodeltoacustomusermodel【发布时间】:2017-08-0506:34:49【问题描述】:我正在关注这两个参考(one和two)来拥有一个自定义用户模型,以便通过电子邮件进行身... 查看详情

c#服务端,android客户端开发im,服务端怎么弄,有没有开源的框架

参考技术A  C#开源项目(国外的还是很多)一、Ajax框架Ajax.NETProfessional(AjaxPro)是最先把AJAX技术在微软.NET环境下的实现的AJAX框架之一。它在客户端脚本之上创建代理类来调用服务器端的方法。MagicAjax.NET是一款在ASP.NET下创建Web... 查看详情

流量治理选开源还是自研,有点小纠结

...事时,必定会遇到一个比较纠结的问题,就是用开源还是自研呢?今天我们从下面几个方面来分析下,什么时候该自研,什么时候该直接用开源的成果。公司规模规 查看详情

开源web框架django知识总结(十四)(代码片段)

开源web框架django知识总结(十四)容器化方案Docker涉及到相同的工作是否需要重复做。避免相同的工作重复做是容器化技术应用之一。1.Docker介绍Docker通常用于如下场景:web应用的自动化打包和发布;自动化测试... 查看详情

阿里重磅开源首款自研科学计算引擎mars,揭秘超大规模科学计算

...前,阿里巴巴正式对外发布了分布式科学计算引擎Mars的开源代码地址,开发者们可以在pypi上自主下载安装,或在Github上获取源代码并参与开发。此前,早在2018年9月的杭州云栖大会上,阿里巴巴就公布了这项开源计划。Mars突破... 查看详情

跨界!omi发布多端统一框架omip打通小程序与web腾讯开源2月28日

 https://mp.weixin.qq.com/s/z5qm-2bHk_BCJAwaodrMIg跨界!Omi发布多端统一框架Omip打通小程序与Web腾讯开源 2月28日   查看详情