class_docstr: FoveaBox: Beyond Anchor-based Object Detector
  https://arxiv.org/abs/1904.03797
code: def get_targets(
      self, gt_bbox_list, gt_label_list, featmap_sizes, points
  ):
      label_list, bbox_target_list = multi_apply(
          self._get_target_single,
          gt_bbox_list,
          gt_label_list,
          featmap_size_list=featmap_sizes,
          point_list=points,
      )
      flatten_labels = [
          torch.cat(
              [
                  labels_level_img.flatten()
                  for labels_level_img in labels_level
              ]
          )
          for labels_level in zip(*label_list)
      ]
      flatten_bbox_targets = [
          torch.cat(
              [
                  bbox_targets_level_img.reshape(-1, 4)
                  for bbox_targets_level_img in bbox_targets_level
              ]
          )
          for bbox_targets_level in zip(*bbox_target_list)
      ]
      flatten_labels = torch.cat(flatten_labels)
      flatten_bbox_targets = torch.cat(flatten_bbox_targets)
      return flatten_labels, flatten_bbox_targets
  
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 7 for calling the FoveaHead obj's underlying member method code with example usage: obj.get_targets(gt_bbox_list, gt_label_list, featmap_sizes, points) and returns: flatten_labels,  flatten_bbox_targets