class_docstr: Args:
      input_shape (int): network input image size
      ori_shape (int): ori image shape of before padding
      scale_factor (float): scale factor of ori image
      enable_mkldnn (bool): whether to open MKLDNN
docstr: Apply transform to boxes
          
code: def warp_boxes(self, boxes, ori_shape):
      """Apply transform to boxes"""
      width, height = ori_shape[1], ori_shape[0]
      n = len(boxes)
      if n:
          # warp points
          xy = np.ones((n * 4, 3))
          xy[:, :2] = boxes[:, [0, 1, 2, 3, 0, 3, 2, 1]].reshape(
              n * 4, 2
          )  # x1y1, x2y2, x1y2, x2y1
          # xy = xy @ M.T  # transform
          xy = (xy[:, :2] / xy[:, 2:3]).reshape(n, 8)  # rescale
          # create new boxes
          x = xy[:, [0, 2, 4, 6]]
          y = xy[:, [1, 3, 5, 7]]
          xy = (
              np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1)))
              .reshape(4, n)
              .T
          )
          # clip boxes
          xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width)
          xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height)
          return xy.astype(np.float32)
      else:
          return boxes
  
file_path: PaddleOCR/ppocr/postprocess/picodet_postprocess.py
imports: import numpy
  from scipy.special import softmax
label_desc: Use image node_id 3 for calling the PicoDetPostProcess obj's underlying member method code with example usage: obj.warp_boxes(boxes, ori_shape) and returns: xy, boxes