tensorflow - Google Meet 背景模糊
问题描述
我很好奇 Google Meet 新的“打开/关闭”背景模糊功能(目前正在测试中)。我进行了一些调查,似乎它使用的是Tensorflow Lite模型:
segm_heavy.tflite
segm_lite.tflite
通过WASM
mediapipe_wasm_simd.wasm
而模型图应该是
background_blur_graph.binarypb
HTMLCanvasElement
据我所知,该模型似乎在. 有人知道类似的模型吗?
[更新]
感谢Jason Mayes和Physical Ed,我能够在Google 的 BodyPix 演示中重现非常接近的背景模糊效果
应用程序的设置显示在“控件”框中。有一个backgroundBlurAmount
选项可让您自定义要应用的模糊百分比。
结果几乎接近官方的 Google Meet 应用程序。
解决方案
结果,大多数分割模型都会给出 alpha 通道(有些会给出更多,但 alpha 是最有用的) - 什么是被屏蔽的,什么不是
所以如果你想模糊背景,它是一个多步骤的过程:
- 调整输入以模型预期大小
- 运行模型以获取 alpha 通道
- 将输出大小调整回原始大小
- 在画布上绘制原始图像
- 在其上绘制 alpha 通道,因此只有前景保持可见
,例如使用ctx.globalCompositeOperation = 'darken'
- 可选地对其进行模糊处理,因为模型输出从来都不是完美
的,例如使用ctx.filter =
blur(8px)`;
所以如果你想模糊背景,只需应用应用模糊,只需从 4 复制画布,在其上应用模糊并在转到步骤 5 之前绘制如果返回
关于模型,google meet还不错,但我用google selfie模型得到了更好的结果
bodypix 是旧模型,可配置性很好,但结果不是很好
示例代码:https ://github.com/vladmandic/human/blob/main/src/segmentation/segmentation.ts