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 bbox_targets (x1, y1, x2, y2) into (l, t, r, b) format.
  
  Args:
      decoded_bboxes (list[Tensor]): Regression targets of each level,
          in the form of (x1, y1, x2, y2).
      mlvl_points (list[Tensor]): Points of each fpn level, each has
          shape (num_points, 2).
      num_imgs (int): the number of images in a batch.
  
  Returns:
      bbox_targets (list[Tensor]): Regression targets of each level in
          the form of (l, t, r, b).
docstr_tok: ["Transform","bbox_targets","(","x1",",","y1",",","x2",",","y2",")","into","(","l",",","t",",","r",",","b",")","format",".","Args",":","decoded_bboxes","(","list","[","Tensor","]",")",":","Regression","targets","of","each","level",",","in","the","form","of","(","x1",",","y1",",","x2",",","y2",")",".","mlvl_points","(","list","[","Tensor","]",")",":","Points","of","each","fpn","level",",","each","has","shape","(","num_points",",","2",")",".","num_imgs","(","int",")",":","the","number","of","images","in","a","batch",".","Returns",":","bbox_targets","(","list","[","Tensor","]",")",":","Regression","targets","of","each","level","in","the","form","of","(","l",",","t",",","r",",","b",")","."]
code: def transform_bbox_targets(
      self, decoded_bboxes, mlvl_points, num_imgs
  ):
      """Transform bbox_targets (x1, y1, x2, y2) into (l, t, r, b) format.
  
      Args:
          decoded_bboxes (list[Tensor]): Regression targets of each level,
              in the form of (x1, y1, x2, y2).
          mlvl_points (list[Tensor]): Points of each fpn level, each has
              shape (num_points, 2).
          num_imgs (int): the number of images in a batch.
  
      Returns:
          bbox_targets (list[Tensor]): Regression targets of each level in
              the form of (l, t, r, b).
      """
      # TODO: Re-implemented in Class PointCoder
      assert len(decoded_bboxes) == len(mlvl_points)
      num_levels = len(decoded_bboxes)
      mlvl_points = [
          points.repeat(num_imgs, 1) for points in mlvl_points
      ]
      bbox_targets = []
      for i in range(num_levels):
          bbox_target = bbox2distance(mlvl_points[i], decoded_bboxes[i])
          bbox_targets.append(bbox_target)
  
      return bbox_targets
  
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 15 for calling the VFNetHead obj's underlying member method code with example usage: obj.transform_bbox_targets(decoded_bboxes, mlvl_points, num_imgs) and returns: bbox_targets