class_docstr: Detection Head of RTMDet.
  
  Args:
      num_classes (int): Number of categories excluding the background
          category.
      in_channels (int): Number of channels in the input feature map.
      with_objectness (bool): Whether to add an objectness branch.
          Defaults to True.
      act_cfg (:obj:`ConfigDict` or dict): Config dict for activation layer.
          Default: dict(type='ReLU')
class_docstr_tok: ["Detection","Head","of","RTMDet",".","Args",":","num_classes","(","int",")",":","Number","of","categories","excluding","the","background","category",".","in_channels","(","int",")",":","Number","of","channels","in","the","input","feature","map",".","with_objectness","(","bool",")",":","Whether","to","add","an","objectness","branch",".","Defaults","to","True",".","act_cfg","(",":","obj",":","`","ConfigDict","`","or","dict",")",":","Config","dict","for","activation","layer",".","Default",":","dict","(","type='ReLU","'",")"]
docstr: Compute regression, classification targets for anchors in a single
  image.
  
  Args:
      cls_scores (list(Tensor)): Box scores for each image.
      bbox_preds (list(Tensor)): Box energies / deltas for each image.
      flat_anchors (Tensor): Multi-level anchors of the image, which are
          concatenated into a single tensor of shape (num_anchors ,4)
      valid_flags (Tensor): Multi level valid flags of the image,
          which are concatenated into a single tensor of
              shape (num_anchors,).
      gt_instances (:obj:`InstanceData`): Ground truth of instance
          annotations. It usually includes ``bboxes`` and ``labels``
          attributes.
      img_meta (dict): Meta information for current image.
      gt_instances_ignore (:obj:`InstanceData`, optional): Instances
          to be ignored during training. It includes ``bboxes`` attribute
          data that is ignored during training and testing.
          Defaults to None.
      unmap_outputs (bool): Whether to map outputs back to the original
          set of anchors. Defaults to True.
  
  Returns:
      tuple: N is the number of total anchors in the image.
  
      - anchors (Tensor): All anchors in the image with shape (N, 4).
      - labels (Tensor): Labels of all anchors in the image with shape
        (N,).
      - label_weights (Tensor): Label weights of all anchor in the
        image with shape (N,).
      - bbox_targets (Tensor): BBox targets of all anchors in the
        image with shape (N, 4).
      - norm_alignment_metrics (Tensor): Normalized alignment metrics
        of all priors in the image with shape (N,).
docstr_tok: ["Compute","regression",",","classification","targets","for","anchors","in","a","single","image",".","Args",":","cls_scores","(","list","(","Tensor",")",")",":","Box","scores","for","each","image",".","bbox_preds","(","list","(","Tensor",")",")",":","Box","energies","\/","deltas","for","each","image",".","flat_anchors","(","Tensor",")",":","Multi-level","anchors","of","the","image",",","which","are","concatenated","into","a","single","tensor","of","shape","(","num_anchors",",4",")","valid_flags","(","Tensor",")",":","Multi","level","valid","flags","of","the","image",",","which","are","concatenated","into","a","single","tensor","of","shape","(","num_anchors",",",")",".","gt_instances","(",":","obj",":","`","InstanceData","`",")",":","Ground","truth","of","instance","annotations",".","It","usually","includes","``","bboxes","``","and","``","labels","``","attributes",".","img_meta","(","dict",")",":","Meta","information","for","current","image",".","gt_instances_ignore","(",":","obj",":","`","InstanceData","`",",","optional",")",":","Instances","to","be","ignored","during","training",".","It","includes","``","bboxes","``","attribute","data","that","is","ignored","during","training","and","testing",".","Defaults","to","None",".","unmap_outputs","(","bool",")",":","Whether","to","map","outputs","back","to","the","original","set","of","anchors",".","Defaults","to","True",".","Returns",":","tuple",":","N","is","the","number","of","total","anchors","in","the","image",".","-","anchors","(","Tensor",")",":","All","anchors","in","the","image","with","shape","(","N",",","4",")",".","-","labels","(","Tensor",")",":","Labels","of","all","anchors","in","the","image","with","shape","(","N",",",")",".","-","label_weights","(","Tensor",")",":","Label","weights","of","all","anchor","in","the","image","with","shape","(","N",",",")",".","-","bbox_targets","(","Tensor",")",":","BBox","targets","of","all","anchors","in","the","image","with","shape","(","N",",","4",")",".","-","norm_alignment_metrics","(","Tensor",")",":","Normalized","alignment","metrics","of","all","priors","in","the","image","with","shape","(","N",",",")","."]
code: def _get_targets_single(
      self,
      cls_scores: Tensor,
      bbox_preds: Tensor,
      flat_anchors: Tensor,
      valid_flags: Tensor,
      gt_instances: InstanceData,
      img_meta: dict,
      gt_instances_ignore: Optional[InstanceData] = None,
      unmap_outputs=True,
  ):
      """Compute regression, classification targets for anchors in a single
      image.
  
      Args:
          cls_scores (list(Tensor)): Box scores for each image.
          bbox_preds (list(Tensor)): Box energies / deltas for each image.
          flat_anchors (Tensor): Multi-level anchors of the image, which are
              concatenated into a single tensor of shape (num_anchors ,4)
          valid_flags (Tensor): Multi level valid flags of the image,
              which are concatenated into a single tensor of
                  shape (num_anchors,).
          gt_instances (:obj:`InstanceData`): Ground truth of instance
              annotations. It usually includes ``bboxes`` and ``labels``
              attributes.
          img_meta (dict): Meta information for current image.
          gt_instances_ignore (:obj:`InstanceData`, optional): Instances
              to be ignored during training. It includes ``bboxes`` attribute
              data that is ignored during training and testing.
              Defaults to None.
          unmap_outputs (bool): Whether to map outputs back to the original
              set of anchors. Defaults to True.
  
      Returns:
          tuple: N is the number of total anchors in the image.
  
          - anchors (Tensor): All anchors in the image with shape (N, 4).
          - labels (Tensor): Labels of all anchors in the image with shape
            (N,).
          - label_weights (Tensor): Label weights of all anchor in the
            image with shape (N,).
          - bbox_targets (Tensor): BBox targets of all anchors in the
            image with shape (N, 4).
          - norm_alignment_metrics (Tensor): Normalized alignment metrics
            of all priors in the image with shape (N,).
      """
      inside_flags = anchor_inside_flags(
          flat_anchors,
          valid_flags,
          img_meta["img_shape"][:2],
          self.train_cfg["allowed_border"],
      )
      if not inside_flags.any():
          return (None,) * 7
      # assign gt and sample anchors
      anchors = flat_anchors[inside_flags, :]
  
      pred_instances = InstanceData(
          scores=cls_scores[inside_flags, :],
          bboxes=bbox_preds[inside_flags, :],
          priors=anchors,
      )
  
      assign_result = self.assigner.assign(
          pred_instances, gt_instances, gt_instances_ignore
      )
  
      sampling_result = self.sampler.sample(
          assign_result, pred_instances, gt_instances
      )
  
      num_valid_anchors = anchors.shape[0]
      bbox_targets = torch.zeros_like(anchors)
      labels = anchors.new_full(
          (num_valid_anchors,), self.num_classes, dtype=torch.long
      )
      label_weights = anchors.new_zeros(
          num_valid_anchors, dtype=torch.float
      )
      assign_metrics = anchors.new_zeros(
          num_valid_anchors, dtype=torch.float
      )
  
      pos_inds = sampling_result.pos_inds
      neg_inds = sampling_result.neg_inds
      if len(pos_inds) > 0:
          # point-based
          pos_bbox_targets = sampling_result.pos_gt_bboxes
          bbox_targets[pos_inds, :] = pos_bbox_targets
  
          labels[pos_inds] = sampling_result.pos_gt_labels
          if self.train_cfg["pos_weight"] <= 0:
              label_weights[pos_inds] = 1.0
          else:
              label_weights[pos_inds] = self.train_cfg["pos_weight"]
      if len(neg_inds) > 0:
          label_weights[neg_inds] = 1.0
  
      class_assigned_gt_inds = torch.unique(
          sampling_result.pos_assigned_gt_inds
      )
      for gt_inds in class_assigned_gt_inds:
          gt_class_inds = pos_inds[
              sampling_result.pos_assigned_gt_inds == gt_inds
          ]
          assign_metrics[gt_class_inds] = assign_result.max_overlaps[
              gt_class_inds
          ]
  
      # map up to original set of anchors
      if unmap_outputs:
          num_total_anchors = flat_anchors.size(0)
          anchors = unmap(anchors, num_total_anchors, inside_flags)
          labels = unmap(
              labels,
              num_total_anchors,
              inside_flags,
              fill=self.num_classes,
          )
          label_weights = unmap(
              label_weights, num_total_anchors, inside_flags
          )
          bbox_targets = unmap(
              bbox_targets, num_total_anchors, inside_flags
          )
          assign_metrics = unmap(
              assign_metrics, num_total_anchors, inside_flags
          )
      return (
          anchors,
          labels,
          label_weights,
          bbox_targets,
          assign_metrics,
          sampling_result,
      )
  
imports: from typing import List, Optional, Tuple, Union
  import torch
  import torch.nn
  from mmcv.cnn import ConvModule, DepthwiseSeparableConvModule, Scale, is_norm
  from mmengine.model import bias_init_with_prob, constant_init, normal_init
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.registry import MODELS, TASK_UTILS
  from mmdet.structures.bbox import distance2bbox
  from mmdet.utils import ConfigType, InstanceList, OptInstanceList, reduce_mean
  from ..layers.transformer import inverse_sigmoid
  from ..task_modules import anchor_inside_flags
  from ..utils import images_to_levels, multi_apply, sigmoid_geometric_mean, unmap
  from .atss_head import ATSSHead
label_desc: Use image node_id 8 for calling the RTMDetHead obj's underlying member method code with example usage: obj._get_targets_single(cls_scores, bbox_preds, flat_anchors, valid_flags, gt_instances, img_meta, gt_instances_ignore, unmap_outputs) and returns: anchors,  labels,  label_weights,  bbox_targets,  assign_metrics,  sampling_result, unknown