0

当我使用 body-pix@1.0.0 尝试散景分割效果时,它会检测/分割镜头前的人(A)。如果另一个人 (B) 站在后面,远离 A,则 B 被模糊了。如果人 B 非常接近 A 的轮廓,那么人 B 也会被检测到。这是首选行为。

现在,当我尝试使用 body-pix@2.0.0 时,即使我使用的是 segmentPerson API,也会检测到人 A 和 B。请注意,B 人站在离 A 人很远的地方,但两者都被检测到。我在 2.0 中看到的优势是,检测到的人的轮廓比 1.0 中的轮廓更加准确和平滑,1.0 中的轮廓中有一个间隙,并且在这个间隙周围没有散景效果。在 2.0 中,轮廓更加准确。但多人被检测到。是否有任何参数可以调整以将其限制为单人检测并使用更平滑的轮廓?

谢谢

4

1 回答 1

0

对于那些想知道答案的人。来源:https ://github.com/tensorflow/tfjs/issues/2547

如果你想使用 BodyPix 2.0 来只模糊一部分人(例如大人物),一个快速的方法是使用 BodyPix 2.0 的多人分割 API:https ://github.com/tensorflow/tfjs -models/tree/master/body-pix#multi-person-segmentation

此方法返回一个 PersonSegmentation 对象数组。在您的情况下,它将是两个 PersonSegmentation 对象的数组:一个用于人 A,一个用于人 B。

然后,您可以从该数组中删除某些人(在您的情况下为人 B)并将结果数组(只有 1 个元素:人 A)传递给 drawBokehEffect https://github.com/tensorflow/tfjs-models/tree/master /body-pix#bodypixdrawbokeheffect

为其他情况(3 人或更多人)自动执行此过程:每个 PersonSegmentation 对象都有一个 .pose 字段,其中包含人的 17 个关键点的 2D 坐标(在图像像素空间中)。它们可用于计算每个人的最小边界框区域。然后可以将人物边界框区域用作删除图像中小人物的标准。

于 2020-01-02T06:34:41.953 回答