依据钻研发现,在均匀 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 开发者社区独特发动的开发者互动翻新实际流动。透过工程师视角的技术分享、交换碰撞、我的项目共建等多种形式,汇聚开发者的力量,开掘和传递最具价值的技术内容和我的项目,全面开释技术的创造力。