如何使用Google Vision API检测裁剪后的头部?

时间:2018-06-10 09:19:30

标签: google-cloud-vision

如何使用Google Vision API检测头部是完全位于图像内部还是部分地被图像框切断?

3个例子:

  • Image 1显示完整的头像
  • Image 2显示了一个完整的"面部"是可见的
  • Image 3显示了一个切断的头部,脸部也被切掉了

enter image description here

要缩小问题范围,应检测以下情况:

  • 图像中有一个完全可见的头
  • 图像中有一个部分可见的头部,其中部分头部位于图像边界之外

以下内容超出了此问题的范围:

  • 在图像范围内空间或风景但完全或部分被其他物体覆盖的头
  • 图像中没有头部可见,例如如果只有一个可见的颈部,则不能认为是否有一个头部附着在它上面
  • API在检测完全或部分可见的面部方面的有效性或效率,根据警告提出

我已经检查了文档,但它没有说明头部裁剪检测。

我不是要求代码,而是要求/如何将API用于所述目的。因此,问题既不包含任何代码也不是预期包含任何代码的答案。如果您正在寻找API调用的代码示例,请查看API文档中的大量示例调用。

关于这个问题有一个meta discussion

Image credit

1 个答案:

答案 0 :(得分:5)

API确实提供了boundingPolyfdBoundingPoly来确定面部(不是头部)在图像中的位置。

尽管API没有提供“头部”的界限,但下面的示例表明boundingPoly非常等同于可以显然用作替代的较大面部区域。

以下是boundingPoly(红点)和fdBoundingPoly(蓝点)的API结果:

enter image description here

  • 图像1:显示完全可见头部的面部边界。 boundingPoly被描述为较大的面部区域,显然相当于“头部”区域。
  • 图像2:边界框缺少4个顶部点的y坐标(2个红色,2个蓝色;为了演示而用y=0坐标描绘),可用作裁剪的指示 - 离开。
  • 图3:API不会产生任何faceAnnotations,因此可以很容易地将其检测为基本上被裁剪掉的头部或没有任何部分可见头部的图像,在这种情况下将无法区分。< / LI>