diff_iou_rotated_2d
接口原型
mx_driving.diff_iou_rotated_2d(Tensor boxes_a, Tensor boxes_b) -> Tensor
功能描述
计算两个2D旋转目标检测框之间的IoU,并且可自动微分。
参数说明
boxes_a (Tensor):第一组bounding boxes,数据类型为float32。shape为[B, N, 5]。其中B代表 BatchSize,N代表每个 BatchSize 包含的检测框,5分别代表x_center, y_center, dx, dy, angle,x_center, y_center代表box的中心点坐标,dx, dy代表box的长宽,angle代表box的弧度制旋转角。boxes_b (Tensor):第二组bounding boxes,数据类型为float32。shape为[B, N, 5]。其中B代表 BatchSize,N代表每个 BatchSize 包含的检测框,5分别代表x_center, y_center, dx, dy, angle,x_center, y_center代表box的中心点坐标,dx, dy代表box的长宽,angle代表box的弧度制旋转角。
返回值
ious (Tensor):包含两组bounding boxes的IoU的张量,数据类型为float32。shape为[B, N]。
约束说明
angle的值在[-pi, pi]之间- B 在
[1, 1024]之间 - N 在
[1, 1024]之间
支持的型号
- Atlas A2 训练系列产品
调用示例
import torch, torch_npu
from mx_driving import diff_iou_rotated_2d
boxes_a = torch.tensor([[[1.0, 1.0, 1.0, 3.0, 0.5]]], dtype=torch.float32).npu()
boxes_b = torch.tensor([[[0.0, 2.0, 1.0, 2.0, 0.3]]], dtype=torch.float32).npu()
ious = diff_iou_rotated_2d(boxes_a, boxes_b)