Google Meet 中的高清分割

1726205546960.jpg

近年来,视频会议在许多用户的工作和个人交流中发挥着越来越重要的作用。在过去的两年中,我们通过引入隐私保护机器学习 (ML) 支持的背景功能(也称为“虚拟绿屏”)增强了 Google Meet 中的这种体验,该功能允许用户模糊背景或将其替换为其他图像。该解决方案的独特之处在于它直接在浏览器中运行,无需安装其他软件。

到目前为止,这些由 ML 驱动的功能依赖于 CPU 推理,这得益于神经网络稀疏性,这是一种适用于从入门级计算机到高端工作站等各种设备的常见解决方案。这使我们的功能能够覆盖最广泛的受众。然而,中端和高端设备通常拥有强大的 GPU,但尚未用于 ML 推理,而现有功能允许 Web 浏览器通过着色器 (WebGL) 访问 GPU。

随着Google Meet 的最新更新,我们现在可以利用 GPU 的强大功能来显著提高这些背景效果的保真度和性能。正如我们在“边缘高效异构视频分割”中详细介绍的那样,这些进步由两个主要组件提供支持:1) 一种新颖的实时视频分割模型和 2) 一种使用 WebGL 进行浏览器内 ML 加速的全新高效方法。我们利用此功能通过片段着色器开发快速 ML 推理。这种组合可显着提高准确性和延迟,从而实现更清晰的前景边界。

Meet 中的 CPU 分割与 HD 分割。

迈向更高质量的视频分割模型

为了预测更精细的细节,我们的新分割模型现在针对高清 (HD) 输入图像,而不是低分辨率图像,有效地将分辨率提高到之前模型的两倍。为了适应这一点,模型必须具有更高的容量来提取具有足够细节的特征。粗略地说,输入分辨率加倍会使推理过程中的计算成本增加四倍。

对于许多设备而言,使用 CPU 进行高分辨率模型推理并不可行。CPU 可能具有一些高性能核心,使其能够高效执行任意复杂代码,但其在高清分割所需的并行计算方面的能力有限。相比之下,GPU 具有许多相对低性能的核心以及宽内存接口,使其特别适合高分辨率卷积模型。因此,对于中端和高端设备,我们采用了速度明显更快的纯 GPU 管道,该管道使用 WebGL 进行集成。

这一变化促使我们重新审视模型架构的 一些先前的设计决策。

主干网:我们比较了几种广泛使用的设备网络主干网,发现EfficientNet-Lite更适合 GPU,因为它删除了挤压和激励块,这是 WebGL 上效率低下的组件(详见下文)。

解码器:我们改用由 1x1 卷积组成的多层感知器(MLP) 解码器,而不是使用简单的双线性上采样或更昂贵的挤压和激励块。MLP 已成功应用于其他分割架构,如DeepLab和PointRend,并且在 CPU 和 GPU 上计算效率都很高。

模型大小:借助我们新的 WebGL 推理和 GPU 友好的模型架构,我们能够提供更大的模型,而无需牺牲流畅视频分割所需的实时帧速率。我们使用神经架构搜索探索了宽度和深度参数。

高清分割模型架构。

总体而言,这些变化将平均交并比(IoU) 指标大幅提升了 3%,从而减少了不确定性,头发和手指周围的边界更加清晰。

我们还发布了此分割模型的随附模型卡,其中详细介绍了我们的公平性评估。我们的分析表明,该模型在不同区域、肤色和性别中的表现一致,IoU 指标仅有微小偏差。

模型     解决     推理     借据     延迟(毫秒)

CPU分段器     256×144     Wasm SIMD     94.0%     8.7

GPU 分割器     512×288     WebGL     96.9%     4.3

之前的分割模型与 Macbook Pro(2018)上的新高清分割模型的比较。

使用 WebGL 加速 Web ML

基于 Web 的推理面临的一个常见挑战是,与在设备上原生运行的应用相比,Web 技术可能会产生性能损失。对于 GPU 而言,这种损失相当严重,只能达到原生OpenGL性能的 25% 左右。这是因为 WebGL(当前基于 Web 的推理的 GPU 标准)主要用于图像渲染,而不是任意的 ML 工作负载。具体来说,WebGL 不包括计算着色器,后者允许进行通用计算并支持移动和原生应用中的 ML 工作负载。

为了克服这一挑战,我们使用片段着色器 加速了低级神经网络内核,这些着色器通常计算像素的输出属性,例如颜色和深度,然后应用了受图形社区启发的新颖优化。由于 GPU 上的机器学习工作负载通常受内存带宽而非计算的约束,因此我们专注于可以改善内存访问的渲染技术,例如多渲染目标(MRT)。

MRT 是现代 GPU 中的一项功能,允许同时将图像渲染到多个输出纹理(表示图像的 OpenGL 对象)。虽然 MRT 最初设计用于支持延迟着色等高级图形渲染,但我们发现可以利用此功能大幅减少片段着色器实现对关键操作(如卷积和全连接层)的内存带宽使用量。我们通过将中间张量视为多个 OpenGL 纹理来实现这一点。

下图中,我们展示了一个中间张量的示例,每个张量都有四个底层 GL 纹理。使用 MRT,GPU 线程数(从而有效地减少了权重的内存请求数)减少了四倍,从而节省了内存带宽使用量。虽然这在代码中引入了相当大的复杂性,但它帮助我们达到了 90% 以上的原生 OpenGL 性能, 缩小了与原生应用程序的差距。

左图:Conv2D 的经典实现,张量与 OpenGL 纹理一一对应。红色、黄色、绿色和蓝色框分别表示中间张量 A 和 B 在单个纹理中的不同位置。右图:我们使用 MRT 实现的 Conv2D,其中中间张量 A 和 B 分别由一组 4 个 GL 纹理实现,分别表示为红色、黄色、绿色和蓝色框。请注意,这将权重的请求数量减少了 4 倍。

结论

我们利用中高端设备上的 GPU 与 Google Meet 配合使用,在提高实时分割模型质量方面取得了快速进展。我们期待即将推出的WebGPU等技术所带来的可能性,这些技术将计算着色器引入网络。除了 GPU 推理之外,我们还致力于通过XNNPACK WebAssembly进行量化推理,提高低功率设备的分割质量。

致谢

特别感谢 Meet 团队的成员以及参与该项目的其他人员,特别是 Sebastian Jansson、Sami Kalliomäki、Rikard Lundmark、Stephan Reiter、Fabian Bergmark、Ben Wagner、Stefan Holmer、Dan Gunnarsson、Stéphane Hulaud,以及让这个项目成为可能的所有团队成员:Siargey Pisarchyk、Raman Sarokin、Artsiom Ablavatski、Jamie Lin、Tyler Mullen、Gregory Karpiak、Andrei Kulik、Karthik Raveendran、Trent Tolley 和 Matthias Grundmann。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论