mindspore.ops.iou
- mindspore.ops.iou(anchor_boxes, gt_boxes, mode='iou')[source]
Calculates intersection over union for boxes.
Computes the intersection over union (IOU) or the intersection over foreground (IOF) based on the ground-truth and predicted regions.
\[ \begin{align}\begin{aligned}\text{IOU} = \frac{\text{Area of Overlap}}{\text{Area of Union}}\\\text{IOF} = \frac{\text{Area of Overlap}}{\text{Area of Ground Truth}}\end{aligned}\end{align} \]Warning
In Ascend, only computation of float16 data is supported. To avoid overflow, the input length and width are scaled by 0.2 internally.
- Parameters
anchor_boxes (Tensor) – Anchor boxes, tensor of shape (N, 4). “N” indicates the number of anchor boxes, and the value “4” refers to “x0”, “y0”, “x1”, and “y1”. Data type must be float16 or float32.
gt_boxes (Tensor) – Ground truth boxes, tensor of shape (M, 4). “M” indicates the number of ground truth boxes, and the value “4” refers to “x0”, “y0”, “x1”, and “y1”. Data type must be float16 or float32.
mode (string) – The mode is used to specify the calculation method, now supporting ‘iou’ (intersection over union) or ‘iof’ (intersection over foreground) mode. Default: ‘iou’.
- Returns
Tensor, the ‘iou’ values, tensor of shape (M, N), with the same data type as anchor_boxes.
- Raises
KeyError – When mode is not ‘iou’ or ‘iof’.
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> anchor_boxes = Tensor(np.random.randint(1.0, 5.0, [3, 4]), mindspore.float16) >>> gt_boxes = Tensor(np.random.randint(1.0, 5.0, [3, 4]), mindspore.float16) >>> mode = 'iou' >>> output = ops.iou(anchor_boxes, gt_boxes, mode) >>> print(output.shape) (3, 3)