class_docstr: assigner of rbox
  Args:
      pos_iou_thr (float): threshold of pos samples
      neg_iou_thr (float): threshold of neg samples
      min_iou_thr (float): the min threshold of samples
      ignore_iof_thr (int): the ignored threshold
class_docstr_tok: ["assigner","of","rbox","Args",":","pos_iou_thr","(","float",")",":","threshold","of","pos","samples","neg_iou_thr","(","float",")",":","threshold","of","neg","samples","min_iou_thr","(","float",")",":","the","min","threshold","of","samples","ignore_iof_thr","(","int",")",":","the","ignored","threshold"]
docstr: Args:
      proposals: tensor [N, 5]
      gt: gt [N, 5]
      means: means [5]
      stds: stds [5]
  Returns:
docstr_tok: ["Args",":","proposals",":","tensor","[","N",",","5","]","gt",":","gt","[","N",",","5","]","means",":","means","[","5","]","stds",":","stds","[","5","]","Returns",":"]
code: def rbox2delta(
      self, proposals, gt, means=[0, 0, 0, 0, 0], stds=[1, 1, 1, 1, 1]
  ):
      """
      Args:
          proposals: tensor [N, 5]
          gt: gt [N, 5]
          means: means [5]
          stds: stds [5]
      Returns:
  
      """
      proposals = proposals.astype(np.float64)
  
      PI = np.pi
  
      gt_widths = gt[..., 2]
      gt_heights = gt[..., 3]
      gt_angle = gt[..., 4]
  
      proposals_widths = proposals[..., 2]
      proposals_heights = proposals[..., 3]
      proposals_angle = proposals[..., 4]
  
      coord = gt[..., 0:2] - proposals[..., 0:2]
      dx = (
          np.cos(proposals[..., 4]) * coord[..., 0]
          + np.sin(proposals[..., 4]) * coord[..., 1]
      ) / proposals_widths
      dy = (
          -np.sin(proposals[..., 4]) * coord[..., 0]
          + np.cos(proposals[..., 4]) * coord[..., 1]
      ) / proposals_heights
      dw = np.log(gt_widths / proposals_widths)
      dh = np.log(gt_heights / proposals_heights)
      da = gt_angle - proposals_angle
  
      da = (da + PI / 4) % PI - PI / 4
      da /= PI
  
      deltas = np.stack([dx, dy, dw, dh, da], axis=-1)
      means = np.array(means, dtype=deltas.dtype)
      stds = np.array(stds, dtype=deltas.dtype)
      deltas = (deltas - means) / stds
      deltas = deltas.astype(np.float32)
      return deltas
  
imports: import sys
  import paddle
  from ppdet.core.workspace import register, serializable
  from .target import rpn_anchor_target, generate_proposal_target, generate_mask_target, libra_generate_proposal_target
  import numpy
label_desc: Use image node_id 3 for calling the RBoxAssigner obj's underlying member method code with example usage: obj.rbox2delta(proposals, gt, means, stds) and returns: deltas