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]