首页 > 解决方案 > Google Meet 背景模糊

问题描述

我很好奇 Google Meet 新的“打开/关闭”背景模糊功能(目前正在测试中)。我进行了一些调查,似乎它使用的是Tensorflow Lite模型:

segm_heavy.tflite
segm_lite.tflite

通过WASM

mediapipe_wasm_simd.wasm

而模型图应该是

background_blur_graph.binarypb

HTMLCanvasElement据我所知,该模型似乎在. 有人知道类似的模型吗?

[更新]

感谢Jason MayesPhysical Ed,我能够在Google 的 BodyPix 演示中重现非常接近的背景模糊效果

应用程序的设置显示在“控件”框中。有一个backgroundBlurAmount选项可让您自定义要应用的模糊百分比。

在此处输入图像描述

结果几乎接近官方的 Google Meet 应用程序。

在此处输入图像描述

标签: tensorflowtensorflow-litetensorflow.jsgoogle-meet

解决方案


结果,大多数分割模型都会给出 alpha 通道(有些会给出更多,但 alpha 是最有用的) - 什么是被屏蔽的,什么不是

所以如果你想模糊背景,它是一个多步骤的过程:

  1. 调整输入以模型预期大小
  2. 运行模型以获取 alpha 通道
  3. 将输出大小调整回原始大小
  4. 在画布上绘制原始图像
  5. 在其上绘制 alpha 通道,因此只有前景保持可见
    ,例如使用ctx.globalCompositeOperation = 'darken'
  6. 可选地对其进行模糊处理,因为模型输出从来都不是完美
    的,例如使用ctx.filter = blur(8px)`;

所以如果你想模糊背景,只需应用应用模糊,只需从 4 复制画布,在其上应用模糊并在转到步骤 5 之前绘制如果返回

关于模型,google meet还不错,但我用google selfie模型得到了更好的结果
bodypix 是旧模型,可配置性很好,但结果不是很好

示例代码:https ://github.com/vladmandic/human/blob/main/src/segmentation/segmentation.ts


推荐阅读