Google Meet 背景模糊

lor*_*isi 7 tensorflow tensorflow-lite tensorflow.js google-meet

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

segm_heavy.tflite
segm_lite.tflite
Run Code Online (Sandbox Code Playgroud)

通过WASM

mediapipe_wasm_simd.wasm
Run Code Online (Sandbox Code Playgroud)

而模型图应该是

background_blur_graph.binarypb
Run Code Online (Sandbox Code Playgroud)

该模型似乎在HTMLCanvasElement我所见的水平上工作。有人知道类似的型号吗?

[更新]

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

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

在此处输入图片说明

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

在此处输入图片说明

小智 3

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

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

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

因此,如果您想模糊背景,只需应用应用模糊即可从 4 复制画布,在其上应用模糊并在进入步骤 5 之前绘制回来

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

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