class_docstr: Anchor-based head (RPN, RetinaNet, SSD, etc.).
  
  Args:
      num_classes (int): Number of categories excluding the background
          category.
      in_channels (int): Number of channels in the input feature map.
      feat_channels (int): Number of hidden channels. Used in child classes.
      anchor_generator (dict): Config dict for anchor generator
      bbox_coder (dict): Config of bounding box coder.
      reg_decoded_bbox (bool): If true, the regression loss would be
          applied on decoded bounding boxes. Default: False
      loss_cls (dict): Config of classification loss.
      loss_bbox (dict): Config of localization loss.
      train_cfg (dict): Training config of anchor head.
      test_cfg (dict): Testing config of anchor head.
docstr: Compute regression and classification targets for anchors in
  multiple images.
  
  Args:
      anchor_list (list[list[Tensor]]): Multi level anchors of each
          image. The outer list indicates images, and the inner list
          corresponds to feature levels of the image. Each element of
          the inner list is a tensor of shape (num_anchors, 4).
      valid_flag_list (list[list[Tensor]]): Multi level valid flags of
          each image. The outer list indicates images, and the inner list
          corresponds to feature levels of the image. Each element of
          the inner list is a tensor of shape (num_anchors, )
      gt_bboxes_list (list[Tensor]): Ground truth bboxes of each image.
      img_metas (list[dict]): Meta info of each image.
      gt_bboxes_ignore_list (list[Tensor]): Ground truth bboxes to be
          ignored.
      gt_labels_list (list[Tensor]): Ground truth labels of each box.
      label_channels (int): Channel of label.
      unmap_outputs (bool): Whether to map outputs back to the original
          set of anchors.
  
  Returns:
      tuple: Usually returns a tuple containing learning targets.
  
          - labels_list (list[Tensor]): Labels of each level.
          - label_weights_list (list[Tensor]): Label weights of each                     level.
          - bbox_targets_list (list[Tensor]): BBox targets of each level.
          - bbox_weights_list (list[Tensor]): BBox weights of each level.
          - num_total_pos (int): Number of positive samples in all                     images.
          - num_total_neg (int): Number of negative samples in all                     images.
      additional_returns: This function enables user-defined returns from
          `self._get_targets_single`. These returns are currently refined
          to properties at each feature map (i.e. having HxW dimension).
          The results will be concatenated after the end
docstr_tok: ["Compute","regression","and","classification","targets","for","anchors","in","multiple","images",".","Args",":","anchor_list","(","list","[","list","[","Tensor","]","]",")",":","Multi","level","anchors","of","each","image",".","The","outer","list","indicates","images",",","and","the","inner","list","corresponds","to","feature","levels","of","the","image",".","Each","element","of","the","inner","list","is","a","tensor","of","shape","(","num_anchors",",","4",")",".","valid_flag_list","(","list","[","list","[","Tensor","]","]",")",":","Multi","level","valid","flags","of","each","image",".","The","outer","list","indicates","images",",","and","the","inner","list","corresponds","to","feature","levels","of","the","image",".","Each","element","of","the","inner","list","is","a","tensor","of","shape","(","num_anchors",",",")","gt_bboxes_list","(","list","[","Tensor","]",")",":","Ground","truth","bboxes","of","each","image",".","img_metas","(","list","[","dict","]",")",":","Meta","info","of","each","image",".","gt_bboxes_ignore_list","(","list","[","Tensor","]",")",":","Ground","truth","bboxes","to","be","ignored",".","gt_labels_list","(","list","[","Tensor","]",")",":","Ground","truth","labels","of","each","box",".","label_channels","(","int",")",":","Channel","of","label",".","unmap_outputs","(","bool",")",":","Whether","to","map","outputs","back","to","the","original","set","of","anchors",".","Returns",":","tuple",":","Usually","returns","a","tuple","containing","learning","targets",".","-","labels_list","(","list","[","Tensor","]",")",":","Labels","of","each","level",".","-","label_weights_list","(","list","[","Tensor","]",")",":","Label","weights","of","each","level",".","-","bbox_targets_list","(","list","[","Tensor","]",")",":","BBox","targets","of","each","level",".","-","bbox_weights_list","(","list","[","Tensor","]",")",":","BBox","weights","of","each","level",".","-","num_total_pos","(","int",")",":","Number","of","positive","samples","in","all","images",".","-","num_total_neg","(","int",")",":","Number","of","negative","samples","in","all","images",".","additional_returns",":","This","function","enables","user-defined","returns","from","`","self._get_targets_single","`",".","These","returns","are","currently","refined","to","properties","at","each","feature","map","(","i.e",".","having","HxW","dimension",")",".","The","results","will","be","concatenated","after","the","end"]
code: def get_targets(
      self,
      anchor_list,
      valid_flag_list,
      gt_bboxes_list,
      img_metas,
      gt_bboxes_ignore_list=None,
      gt_labels_list=None,
      label_channels=1,
      unmap_outputs=True,
      return_sampling_results=False,
  ):
      """Compute regression and classification targets for anchors in
          multiple images.
  
          Args:
              anchor_list (list[list[Tensor]]): Multi level anchors of each
                  image. The outer list indicates images, and the inner list
                  corresponds to feature levels of the image. Each element of
                  the inner list is a tensor of shape (num_anchors, 4).
              valid_flag_list (list[list[Tensor]]): Multi level valid flags of
                  each image. The outer list indicates images, and the inner list
                  corresponds to feature levels of the image. Each element of
                  the inner list is a tensor of shape (num_anchors, )
              gt_bboxes_list (list[Tensor]): Ground truth bboxes of each image.
              img_metas (list[dict]): Meta info of each image.
              gt_bboxes_ignore_list (list[Tensor]): Ground truth bboxes to be
                  ignored.
              gt_labels_list (list[Tensor]): Ground truth labels of each box.
              label_channels (int): Channel of label.
              unmap_outputs (bool): Whether to map outputs back to the original
                  set of anchors.
  
          Returns:
              tuple: Usually returns a tuple containing learning targets.
  
                  - labels_list (list[Tensor]): Labels of each level.
                  - label_weights_list (list[Tensor]): Label weights of each \
                      level.
                  - bbox_targets_list (list[Tensor]): BBox targets of each level.
                  - bbox_weights_list (list[Tensor]): BBox weights of each level.
                  - num_total_pos (int): Number of positive samples in all \
                      images.
                  - num_total_neg (int): Number of negative samples in all \
                      images.
              additional_returns: This function enables user-defined returns from
                  `self._get_targets_single`. These returns are currently refined
                  to properties at each feature map (i.e. having HxW dimension).
                  The results will be concatenated after the end
          """
      num_imgs = len(img_metas)
      assert len(anchor_list) == len(valid_flag_list) == num_imgs
  
      # anchor number of multi levels
      num_level_anchors = [
          anchors.size(0) for anchors in anchor_list[0]
      ]
      # concat all level anchors to a single tensor
      concat_anchor_list = []
      concat_valid_flag_list = []
      for i in range(num_imgs):
          assert len(anchor_list[i]) == len(valid_flag_list[i])
          concat_anchor_list.append(torch.cat(anchor_list[i]))
          concat_valid_flag_list.append(torch.cat(valid_flag_list[i]))
  
      # compute targets for each image
      if gt_bboxes_ignore_list is None:
          gt_bboxes_ignore_list = [None for _ in range(num_imgs)]
      if gt_labels_list is None:
          gt_labels_list = [None for _ in range(num_imgs)]
      results = multi_apply(
          self._get_targets_single,
          concat_anchor_list,
          concat_valid_flag_list,
          gt_bboxes_list,
          gt_bboxes_ignore_list,
          gt_labels_list,
          img_metas,
          label_channels=label_channels,
          unmap_outputs=unmap_outputs,
      )
      (
          all_labels,
          all_label_weights,
          all_bbox_targets,
          all_bbox_weights,
          pos_inds_list,
          neg_inds_list,
          sampling_results_list,
      ) = results[:7]
      rest_results = list(results[7:])  # user-added return values
      # no valid anchors
      if any([labels is None for labels in all_labels]):
          return None
      # sampled anchors of all images
      num_total_pos = sum(
          [max(inds.numel(), 1) for inds in pos_inds_list]
      )
      num_total_neg = sum(
          [max(inds.numel(), 1) for inds in neg_inds_list]
      )
      # split targets to a list w.r.t. multiple levels
      labels_list = images_to_levels(all_labels, num_level_anchors)
      label_weights_list = images_to_levels(
          all_label_weights, num_level_anchors
      )
      bbox_targets_list = images_to_levels(
          all_bbox_targets, num_level_anchors
      )
      bbox_weights_list = images_to_levels(
          all_bbox_weights, num_level_anchors
      )
      res = (
          labels_list,
          label_weights_list,
          bbox_targets_list,
          bbox_weights_list,
          num_total_pos,
          num_total_neg,
      )
      if return_sampling_results:
          res = res + (sampling_results_list,)
      for i, r in enumerate(rest_results):  # user-added return values
          rest_results[i] = images_to_levels(r, num_level_anchors)
  
      return res + tuple(rest_results)
  
imports: import torch
  import torch.nn
  from mmcv.cnn import normal_init
  from mmcv.runner import force_fp32
  from mmdet.core import anchor_inside_flags, build_anchor_generator, build_assigner, build_bbox_coder, build_sampler, images_to_levels, multi_apply, multiclass_nms, unmap
  from ..builder import HEADS, build_loss
  from .base_dense_head import BaseDenseHead
  from .dense_test_mixins import BBoxTestMixin
label_desc: Use image node_id 8 for calling the AnchorHead obj's underlying member method code with example usage: obj.get_targets(anchor_list, valid_flag_list, gt_bboxes_list, img_metas, gt_bboxes_ignore_list, gt_labels_list, label_channels, unmap_outputs, return_sampling_results) and returns: unknown, None