code: def __call__(
      self, rpn_rois, rpn_rois_num, inputs, stage=0, is_cascade=False
  ):
      gt_classes = inputs["gt_class"]
      gt_boxes = inputs["gt_bbox"]
      # rois, tgt_labels, tgt_bboxes, tgt_gt_inds
      outs = libra_generate_proposal_target(
          rpn_rois,
          gt_classes,
          gt_boxes,
          self.batch_size_per_im,
          self.fg_fraction,
          self.fg_thresh,
          self.bg_thresh,
          self.num_classes,
          self.use_random,
          is_cascade,
          self.cascade_iou[stage],
          self.num_bins,
      )
      rois = outs[0]
      rois_num = outs[-1]
      # tgt_labels, tgt_bboxes, tgt_gt_inds
      targets = outs[1:4]
      return rois, rois_num, targets
  
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 2 for calling the BBoxLibraAssigner obj's underlying member method code with example usage: obj.__call__(rpn_rois, rpn_rois_num, inputs, stage, is_cascade) and returns: rois,  rois_num,  targets