|Google Meet 背景模糊功能


文 /Google研究院软件工程师 , Tingbo Hou & Tyler Mullen
译者 /Alpha
技术审校:斗鱼前端专家 , 王兴伟
原文 /https://ai.googleblog.com/2020/10/background-features-in-google-meet.html
在人们的工作和生活中 , 视频会议变得越来越重要 。 我们可以通过增强隐私保护 , 或者添加有趣的视觉效果来改善视频体验 , 同时帮助人们将注意力集中在会议内容上 。 我们最近宣布的在Google Meet中模糊和替换背景的方法 , 就是为了实现这一目标而迈出的一小步 。
我们利用机器学习(ML)来更好地突出参与者 , 从而忽略他们周围的背景环境 。 尽管其他的解决方案需要安装额外的软件 , 但Meet的功能是由尖端的Web ML技术提供支持的 , 这些技术是用MediaPipe构建的 , 可以直接在你的浏览器中工作——不需要额外的步骤 。
开发这些功能 , 有一个关键目标 , 即它可以给几乎所有现代设备提供实时的浏览器内性能 , 通过XNNPACK和TFLite , 我们将高效的设备上ML模型、基于WebGL的效果渲染 , 还有基于Web的ML推理结合起来 , 进而实现了这一目标 。
【|Google Meet 背景模糊功能】
|Google Meet 背景模糊功能
本文插图
背景模糊和背景替换 , 由网页端的 MediaPipe 提供支持 。
网络Web ML方案概述
Meet中的新功能是与MediaPipe一起开发的 , MediaPipe是谷歌的开源框架 , 用于为直播和流媒体提供跨平台的 , 可定制的ML解决方案 , 它还支持设备上实时性的手、虹膜和身体姿势追踪等ML解决方案 。
任何设备上解决方案的核心需求 , 都是实现高性能 。 为了实现这一点 , MediaPipe的Web工作流利用了WebAssembly , 这是一种专为网络浏览器设计的底层二进制代码格式 , 可以提高计算繁重任务的速度 。 在运行时 , 浏览器将WebAssembly指令转换为本机代码 , 执行速度比传统JavaScript代码快很多 。 此外 , Chrome84最近引入了对WebAssembly SIMD的支持 , 每条指令可以处理多个数据点 , 性能提升了2倍以上 。
首先 , 我们的解决方案通过将用户 , 和他们的背景进行分割(稍后将详细介绍我们的分割模型) , 来处理每个视频帧 , 使用ML推理来计算出一个低分辨率的蒙版 。 或者 , 我们还可以进一步细化蒙版 , 以使其与图像边界对齐 。 然后通过WebGL2使用蒙版来渲染视频 , 实现背景的模糊或替换 。

|Google Meet 背景模糊功能
本文插图
WebML Pipeline:所有计算繁重的操作都是用C++/OpenGL实现的 , 并通过WebAssembly在浏览器中运行 。
在当前版本中 , 模型推理在客户端的CPU上执行 , 以实现低功耗和最大的设备覆盖范围 。 为了达到实时性能 , 我们设计了高效的ML模型 , 通过XNNPACK库加速推理 , XNNPACK库是第一个专门为新的WebAssembly SIMD规范设计的推理引擎 。 在XNNPACK和SIMD的加速下 , 该分割模型可以在Web上以实时速度运行 。
在MediaPipe灵活配置的支持下 , 背景模糊/替换解决方案可根据设备能力 , 调整其处理过程 。 在高端设备上 , 它运行完整的工作流 , 以提供最佳的视觉质量 , 而在低端设备上 , 通过使用轻量级的ML模型进行计算 , 并且绕过蒙版细化 , 它仍然可以保持较高的性能 。
分割模型细分
设备上的机器学习模型必须是超轻量级的 , 以实现快速推理、低功耗和较小的下载大小 。 对于在浏览器中运行的模型 , 输入分辨率会极大地影响处理的每一帧所需的浮点运算(FLOP)的数量 , 由此也必须很小 。 我们将图像下采样 , 得到较小的尺寸 , 然后再将其提供给模型 。 从低分辨率图像中 , 尽可能精确地恢复分割蒙版 , 这增加了模型设计的挑战 。分页标题
整个分割网络具有关于编码和解码的对称结构 , 而解码器块(浅绿色) , 也与编码块(浅蓝色)共享对称层结构 。 具体地说 , 在编码器和解码器模块中 , 都采用了应用有全局池化层技术的通道注意力机制 , 这有利于高效的CPU推理 。

|Google Meet 背景模糊功能
本文插图
采用MobileNetV3编码器(浅蓝色)和对称解码器(浅绿色)的模型架构 。
我们修改MobileNetV3-Small为编码器 , 经过网络结构搜索的优化 , 以最低的资源需求 , 获得最佳的性能 。 为了减少50%的模型尺寸 , 我们使用Float16量化技术将模型导出到TFLite , 仅权重精度略有下降 , 但对质量没有明显的影响 。 得到的模型有193K参数 , 大小只有400KB 。
效果渲染
分割完成后 , 我们使用OpenGL着色器进行视频处理和效果渲染 , 其中的挑战就是在不引入伪影的情况下进行高效渲染 。 在细化阶段 , 我们采用联合双边滤波器对低分辨率蒙版进行平滑处理

|Google Meet 背景模糊功能
本文插图
渲染效果时会减少瑕疵减少的渲染效果 。 左:联合双边过滤器平滑分段分割蒙版 。 中:可分离滤镜移除背景模糊中的光晕瑕疵 。 右:替换背景中的灯光包裹包装(light wrapping) 。
模糊着色器通过与分割蒙版值成比例的方式 , 调整每个像素的模糊强度 , 来模拟波克(bokeh)效果 , 类似于光学中的混淆圆(CoC) 。 像素按其CoC半径加权 , 因此前景像素不会渗入背景 。 我们为加权模糊实现了可分离的过滤器 , 而不是流行的高斯金字塔 , 因为它去除了人周围的光晕伪影 。 为了提高效率 , 模糊以低分辨率执行 , 并以原始分辨率与输入帧混合

|Google Meet 背景模糊功能
本文插图
背景模糊示例
对于背景替换 , 我们采用了一种称为灯光包裹(Light wrapping)的合成技术 , 用于混合分割的人物和定制的背景图像 。 光线包裹允许背景光溢出到前景元素上 , 从而使合成更具沉浸感 , 这有助于柔化分割边缘 。 当前景和替换的背景之间 , 存在较大的对比度时 , 它还有助于最大限度地减少光晕伪影

|Google Meet 背景模糊功能
本文插图
背景替换示例
性能
为了优化不同设备的体验 , 我们提供多种输入尺寸(即当前版本中的256x144和160x96)的模型变体 , 根据可用的硬件资源自动选择最佳模型 。
我们在两款常见设备上评估了模型推理和端到端传递的速度:搭载2.2 GHz 6核英特尔酷睿i7的MacBook Pro 2018和搭载英特尔赛扬N3060的宏碁Chromebook 11 。 对于720p的输入 , MacBook Pro可以以120 FPS的速度 , 运行较高质量的模型 , 以70 FPS的速度运行端到端的传递途径;而Chromebook则以62 FPS的速度运行推理 , 使用较低质量的模型 , 端到端运行在33 FPS 。

|Google Meet 背景模糊功能
本文插图
高端(MacBook Pro)和低端(Chromebook)笔记本电脑上的模型型号推断速度和端到端管线传递 。
为了定量评估模型的精度 , 我们采用了目前流行的交集-并集(IOU)和边界F-度量 。 这两种型号都有不俗的表现 , 而且还是在这样一个轻量级网络的情况下

|Google Meet 背景模糊功能
本文插图
模型准确性的评估 , 通过 IOU 借条和边界 F-分数来衡量 。
我们还为我们的分割模型发布了随附的模型卡 , 其中详细介绍了我们的公平性评估 。 我们的评估数据包含来自全球17个地理分区的图像 , 并附有肤色和性别的注释 。 我们的分析表明 , 该模型在不同地区、肤色和性别上的表现是一致的 , 只有很小的IOU指标偏差 。分页标题
结论
我们推出了一个全新的浏览器端的机器学习解决方案 , 用于模糊和替换你在Google Meet中的背景 。 使用这个方案 , 机器学习模型和OpenGL着色器就可以在Web上高效运行 。 所开发的功能即使在低功耗设备上也能以低功耗实现实时性能
致谢:特别感谢Meet团队的成员和参与此项目的其他人员 , 特别是Sebastian Jansson , Rikard Lundmark , Stephan Reiter , Fabian Bergmark , Ben Wagner , Stefan Holmer , Dan Gunnarson , Stéphane Hulaud以及所有与我们一起从事技术工作的团队成员:Siargey Pisarchyk , Karthik Raveendran , Chris McClanahan ,Marat Dukhan , Frank Barchard , Ming Guang Yong , Chuo-Ling Chang , Michael Hays , Camillo Lugaresi , Gregory Karpiak , Siarhei Kazakou , Matsvei Zhdanovich , Matthias Grundmann 。