Google 满足背景模糊

Google Meet background Blur

我很好奇 Google Meet 的新“turn on/off”background blur functionality(目前正在测试中)。我调查了一下,它似乎正在使用 Tensorflow Lite 模型:

segm_heavy.tflite
segm_lite.tflite

通过WASM

mediapipe_wasm_simd.wasm

而模型图应该是

background_blur_graph.binarypb

据我所知,该模型似乎在 HTMLCanvasElement 级别上工作。有人知道类似的模型吗?

[更新]

感谢Jason Mayes and Physical Ed I was able to reproduce a very close background blur effect in the Google's BodyPix demo

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

结果和官方的GoogleMeet申请差不多

大多数分割模型都会提供 alpha 通道(有些会提供更多,但 alpha 最有用)- 哪些被屏蔽,哪些没有

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

  1. 将输入调整为模型预期大小
  2. 运行 获得 alpha 通道的模型
  3. 将输出调整回原始大小
  4. 在canvas
  5. 上绘制原始图像
  6. 在其上绘制 alpha 通道,因此只有前景保持可见
    例如使用 ctx.globalCompositeOperation = 'darken'
  7. 可选地模糊它一点,因为模型输出永远不会完美
    例如使用 ctx.filter = blur(8px)`;

因此,如果您想模糊背景,只需应用应用模糊,只需从 4 复制 canvas,在其上应用模糊,然后在返回步骤 5 之前绘制

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

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