class_docstr: RPN Head that supports FPN input
  
  Args:
      anchor_generator (object): `AnchorGenerator` instance
      rpn_target_assign (object): `RPNTargetAssign` instance
      train_proposal (object): `GenerateProposals` instance for training
      test_proposal (object): `GenerateProposals` instance for testing
      anchor_start_size (int): size of anchor at the first scale
      num_chan (int): number of FPN output channels
      min_level (int): lowest level of FPN output
      max_level (int): highest level of FPN output
      num_classes (int): number of classes in rpn output
docstr: Get proposals in multiple levels according to the output of fpn
  rpn head
  
  Args:
      fpn_feats(dict): A dictionary represents the output feature map
          of FPN with their name.
      im_info(Variable): The information of image with shape [N, 3] with
          format (height, width, scale).
  
  Return:
      rois_list(Variable): Output proposals in shape of [rois_num, 4]
docstr_tok: ["Get","proposals","in","multiple","levels","according","to","the","output","of","fpn","rpn","head","Args",":","fpn_feats","(","dict",")",":","A","dictionary","represents","the","output","feature","map","of","FPN","with","their","name",".","im_info","(","Variable",")",":","The","information","of","image","with","shape","[","N",",","3","]","with","format","(","height",",","width",",","scale",")",".","Return",":","rois_list","(","Variable",")",":","Output","proposals","in","shape","of","[","rois_num",",","4","]"]
code: def get_proposals(self, fpn_feats, im_info, mode="train"):
      """
      Get proposals in multiple levels according to the output of fpn
      rpn head
  
      Args:
          fpn_feats(dict): A dictionary represents the output feature map
              of FPN with their name.
          im_info(Variable): The information of image with shape [N, 3] with
              format (height, width, scale).
  
      Return:
          rois_list(Variable): Output proposals in shape of [rois_num, 4]
      """
      rois_list = []
      roi_probs_list = []
      fpn_feat_names = list(fpn_feats.keys())
      for lvl in range(self.min_level, self.max_level + 1):
          fpn_feat_name = fpn_feat_names[self.max_level - lvl]
          fpn_feat = fpn_feats[fpn_feat_name]
          rois_fpn, roi_probs_fpn = self._get_single_proposals(
              fpn_feat, im_info, lvl, mode
          )
          self.fpn_rpn_list.append(
              (self.rpn_cls_score, self.rpn_bbox_pred)
          )
          rois_list.append(rois_fpn)
          roi_probs_list.append(roi_probs_fpn)
          self.anchors_list.append(self.anchors)
          self.anchor_var_list.append(self.anchor_var)
      prop_op = (
          self.train_proposal if mode == "train" else self.test_proposal
      )
      post_nms_top_n = prop_op.post_nms_top_n
      rois_collect = fluid.layers.collect_fpn_proposals(
          rois_list,
          roi_probs_list,
          self.min_level,
          self.max_level,
          post_nms_top_n,
          name="collect",
      )
      return rois_collect
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from paddle import fluid
  from paddle.fluid.param_attr import ParamAttr
  from paddle.fluid.initializer import Normal
  from paddle.fluid.regularizer import L2Decay
label_desc: Use image node_id 4 for calling the FPNRPNHead obj's underlying member method code with example usage: obj.get_proposals(fpn_feats, im_info, mode) and returns: rois_collect