class_docstr: FoveaBox: Beyond Anchor-based Object Detector
  https://arxiv.org/abs/1904.03797
code: def get_bboxes(
      self, cls_scores, bbox_preds, img_metas, cfg=None, rescale=None
  ):
      assert len(cls_scores) == len(bbox_preds)
      num_levels = len(cls_scores)
      featmap_sizes = [featmap.size()[-2:] for featmap in cls_scores]
      points = self.get_points(
          featmap_sizes,
          bbox_preds[0].dtype,
          bbox_preds[0].device,
          flatten=True,
      )
      result_list = []
      for img_id in range(len(img_metas)):
          cls_score_list = [
              cls_scores[i][img_id].detach() for i in range(num_levels)
          ]
          bbox_pred_list = [
              bbox_preds[i][img_id].detach() for i in range(num_levels)
          ]
          img_shape = img_metas[img_id]["img_shape"]
          scale_factor = img_metas[img_id]["scale_factor"]
          det_bboxes = self._get_bboxes_single(
              cls_score_list,
              bbox_pred_list,
              featmap_sizes,
              points,
              img_shape,
              scale_factor,
              cfg,
              rescale,
          )
          result_list.append(det_bboxes)
      return result_list
  
imports: import torch
  import torch.nn
  from mmcv.cnn import ConvModule, normal_init
  from mmcv.ops import DeformConv2d
  from mmdet.core import multi_apply, multiclass_nms
  from ..builder import HEADS
  from .anchor_free_head import AnchorFreeHead
label_desc: Use image node_id 9 for calling the FoveaHead obj's underlying member method code with example usage: obj.get_bboxes(cls_scores, bbox_preds, img_metas, cfg, rescale) and returns: result_list