class_docstr: Head of `VarifocalNet (VFNet): An IoU-aware Dense Object
  Detector.<https://arxiv.org/abs/2008.13367>`_.
  
  The VFNet predicts IoU-aware classification scores which mix the
  object presence confidence and object localization accuracy as the
  detection score. It is built on the FCOS architecture and uses ATSS
  for defining positive/negative training examples. The VFNet is trained
  with Varifocal Loss and empolys star-shaped deformable convolution to
  extract features for a bbox.
  
  Args:
      num_classes (int): Number of categories excluding the background
          category.
      in_channels (int): Number of channels in the input feature map.
      regress_ranges (tuple[tuple[int, int]]): Regress range of multiple
          level points.
      center_sampling (bool): If true, use center sampling. Default: False.
      center_sample_radius (float): Radius of center sampling. Default: 1.5.
      sync_num_pos (bool): If true, synchronize the number of positive
          examples across GPUs. Default: True
      gradient_mul (float): The multiplier to gradients from bbox refinement
          and recognition. Default: 0.1.
      bbox_norm_type (str): The bbox normalization type, 'reg_denom' or
          'stride'. Default: reg_denom
      loss_cls_fl (dict): Config of focal loss.
      use_vfl (bool): If true, use varifocal loss for training.
          Default: True.
      loss_cls (dict): Config of varifocal loss.
      loss_bbox (dict): Config of localization loss, GIoU Loss.
      loss_bbox (dict): Config of localization refinement loss, GIoU Loss.
      norm_cfg (dict): dictionary to construct and config norm layer.
          Default: norm_cfg=dict(type='GN', num_groups=32,
          requires_grad=True).
      use_atss (bool): If true, use ATSS to define positive/negative
          examples. Default: True.
      anchor_generator (dict): Config of anchor generator for ATSS.
  
  Example:
      >>> self = VFNetHead(11, 7)
      >>> feats = [torch.rand(1, 7, s, s) for s in [4, 8, 16, 32, 64]]
      >>> cls_score, bbox_pred, bbox_pred_refine= self.forward(feats)
      >>> assert len(cls_score) == len(self.scales)
docstr: Transform network outputs for a batch into bbox predictions.
  
  Args:
      cls_scores (list[Tensor]): Box iou-aware scores for each scale
          level with shape (N, num_points * num_classes, H, W).
      bbox_preds (list[Tensor]): Box offsets for each scale
          level with shape (N, num_points * 4, H, W).
      bbox_preds_refine (list[Tensor]): Refined Box offsets for
          each scale level with shape (N, num_points * 4, H, W).
      img_metas (list[dict]): Meta information of each image, e.g.,
          image size, scaling factor, etc.
      cfg (mmcv.Config): Test / postprocessing configuration,
          if None, test_cfg would be used. Default: None.
      rescale (bool): If True, return boxes in original image space.
          Default: False.
      with_nms (bool): If True, do nms before returning boxes.
          Default: True.
  
  Returns:
      list[tuple[Tensor, Tensor]]: Each item in result_list is 2-tuple.
          The first item is an (n, 5) tensor, where the first 4 columns
          are bounding box positions (tl_x, tl_y, br_x, br_y) and the
          5-th column is a score between 0 and 1. The second item is a
          (n,) tensor where each item is the predicted class label of
          the corresponding box.
docstr_tok: ["Transform","network","outputs","for","a","batch","into","bbox","predictions",".","Args",":","cls_scores","(","list","[","Tensor","]",")",":","Box","iou-aware","scores","for","each","scale","level","with","shape","(","N",",","num_points","*","num_classes",",","H",",","W",")",".","bbox_preds","(","list","[","Tensor","]",")",":","Box","offsets","for","each","scale","level","with","shape","(","N",",","num_points","*","4",",","H",",","W",")",".","bbox_preds_refine","(","list","[","Tensor","]",")",":","Refined","Box","offsets","for","each","scale","level","with","shape","(","N",",","num_points","*","4",",","H",",","W",")",".","img_metas","(","list","[","dict","]",")",":","Meta","information","of","each","image",",","e.g.",",","image","size",",","scaling","factor",",","etc",".","cfg","(","mmcv.Config",")",":","Test","\/","postprocessing","configuration",",","if","None",",","test_cfg","would","be","used",".","Default",":","None",".","rescale","(","bool",")",":","If","True",",","return","boxes","in","original","image","space",".","Default",":","False",".","with_nms","(","bool",")",":","If","True",",","do","nms","before","returning","boxes",".","Default",":","True",".","Returns",":","list","[","tuple","[","Tensor",",","Tensor","]","]",":","Each","item","in","result_list","is","2-tuple",".","The","first","item","is","an","(","n",",","5",")","tensor",",","where","the","first","4","columns","are","bounding","box","positions","(","tl_x",",","tl_y",",","br_x",",","br_y",")","and","the","5-th","column","is","a","score","between","0","and","1",".","The","second","item","is","a","(","n",",",")","tensor","where","each","item","is","the","predicted","class","label","of","the","corresponding","box","."]
code: def get_bboxes(
      self,
      cls_scores,
      bbox_preds,
      bbox_preds_refine,
      img_metas,
      cfg=None,
      rescale=None,
      with_nms=True,
  ):
      """Transform network outputs for a batch into bbox predictions.
  
      Args:
          cls_scores (list[Tensor]): Box iou-aware scores for each scale
              level with shape (N, num_points * num_classes, H, W).
          bbox_preds (list[Tensor]): Box offsets for each scale
              level with shape (N, num_points * 4, H, W).
          bbox_preds_refine (list[Tensor]): Refined Box offsets for
              each scale level with shape (N, num_points * 4, H, W).
          img_metas (list[dict]): Meta information of each image, e.g.,
              image size, scaling factor, etc.
          cfg (mmcv.Config): Test / postprocessing configuration,
              if None, test_cfg would be used. Default: None.
          rescale (bool): If True, return boxes in original image space.
              Default: False.
          with_nms (bool): If True, do nms before returning boxes.
              Default: True.
  
      Returns:
          list[tuple[Tensor, Tensor]]: Each item in result_list is 2-tuple.
              The first item is an (n, 5) tensor, where the first 4 columns
              are bounding box positions (tl_x, tl_y, br_x, br_y) and the
              5-th column is a score between 0 and 1. The second item is a
              (n,) tensor where each item is the predicted class label of
              the corresponding box.
      """
      assert (
          len(cls_scores) == len(bbox_preds) == len(bbox_preds_refine)
      )
      num_levels = len(cls_scores)
  
      featmap_sizes = [featmap.size()[-2:] for featmap in cls_scores]
      mlvl_points = self.get_points(
          featmap_sizes, bbox_preds[0].dtype, bbox_preds[0].device
      )
      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_refine[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,
              mlvl_points,
              img_shape,
              scale_factor,
              cfg,
              rescale,
              with_nms,
          )
          result_list.append(det_bboxes)
      return result_list
  
imports: import numpy
  import torch
  import torch.nn
  from mmcv.cnn import ConvModule, Scale, bias_init_with_prob, normal_init
  from mmcv.ops import DeformConv2d
  from mmcv.runner import force_fp32
  from mmdet.core import bbox2distance, bbox_overlaps, build_anchor_generator, build_assigner, build_sampler, distance2bbox, multi_apply, multiclass_nms, reduce_mean
  from ..builder import HEADS, build_loss
  from .atss_head import ATSSHead
  from .fcos_head import FCOSHead
label_desc: Use image node_id 8 for calling the VFNetHead obj's underlying member method code with example usage: obj.get_bboxes(cls_scores, bbox_preds, bbox_preds_refine, img_metas, cfg, rescale, with_nms) and returns: result_list