mindspore.ops.check_valid

mindspore.ops.check_valid(bboxes, img_metas)[源代码]

检查边界框是否在图片内。

bboxes 里包含了多组边界框,每一组边界框用两个横坐标点 \((x0, x1)\) 和两个纵坐标点 \((y0, y1)\) 表示。 img_metas 提供了原始图片的信息,包含 \((height, width, ratio)\) 三个参数,用于指定图片的有效边界。 当满足:

\(x0 >= 0\)

\(y0 >= 0\)

\(x1 <= width * ratio - 1\)

\(y1 <= height * ratio - 1\)

时,认为检查边界框在图片内。

警告

bboxes 指定的边界框和由 img_metas 指定的图片信息需要是有效的,即: \(x0 <= x1\)\(y0 <= y1\)img_metas 中的信息 \((height, width, ratio)\) 均为正数。

参数:
  • bboxes (Tensor) - shape大小为 \((N, 4)\)\(N\) 表示边界框的数量, 4 表示 \((x0, y0, x1, y1)\) 四个坐标点。数据类型必须是float16或float32。

  • img_metas (Tensor) - 原始图片的信息 \((height, width, ratio)\) ,指定有效边界为 \((height * ratio - 1, width * ratio - 1)\) 。数据类型必须是float16或float32。

返回:

Tensor,shape为 \((N,)\) ,类型为bool,需要指出边界框是否在图片内。True 表示在,False 表示不在。

异常:
  • TypeError - 如果 bboxes 或者 img_metas 不是Tensor。

  • TypeError - 如果 bboxes 或者 img_metas 的数据类型既不是float16,也不是float32。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> bboxes = Tensor(np.linspace(0, 6, 12).reshape(3, 4), mindspore.float32)
>>> img_metas = Tensor(np.array([2, 1, 3]), mindspore.float32)
>>> output = ops.check_valid(bboxes, img_metas)
>>> print(output)
[ True False False]