def npu_bbox_coder_encode_xyxy2xywh(bboxes,gt_bboxes,means=None,stds=None,is_normalized=False,normalized_scale=10000.):
应用基于NPU的bbox格式编码操作,将格式从xyxy编码为xywh。
from torch_npu.contrib.function import npu_bbox_coder_encode_yolo out = npu_bbox_coder_encode_yolo(bboxes, gt_bboxes, stride)
不支持动态shape。由于算子语义限制,仅支持二维(n, 4)场景。Bboxes和gt_bboxesshape和dtype必须相同, dtype只可为float16和float32。第三个输入(步长)仅支持1D,且第一个维度与第一个输入(bboxes)相同。
>>> A = 1024 >>> bboxes = torch.randint(0, 512, size=(A, 4)) >>> gt_bboxes = torch.randint(0, 512, size=(A, 4)) >>> stride = torch.randint(0, 32, size=(A,)) >>> torch.npu.set_device(0) >>> bboxes = bboxes.npu() >>> gt_bboxes = gt_bboxes.npu() >>> stride = stride.npu() >>> out = npu_bbox_coder_encode_yolo(bboxes, gt_bboxes, stride) >>> torch.npu.synchronize() >>> print('_npu_bbox_coder_encode_yolo done. output shape is ', out.shape)