class_docstr: YOLOV3Head Paper link: https://arxiv.org/abs/1804.02767.
  
  Args:
      num_classes (int): The number of object classes (w/o background)
      in_channels (Sequence[int]): Number of input channels per scale.
      out_channels (Sequence[int]): The number of output channels per scale
          before the final 1x1 layer. Default: (1024, 512, 256).
      anchor_generator (:obj:`ConfigDict` or dict): Config dict for anchor
          generator.
      bbox_coder (:obj:`ConfigDict` or dict): Config of bounding box coder.
      featmap_strides (Sequence[int]): The stride of each scale.
          Should be in descending order. Defaults to (32, 16, 8).
      one_hot_smoother (float): Set a non-zero value to enable label-smooth
          Defaults to 0.
      conv_cfg (:obj:`ConfigDict` or dict, optional): Config dict for
          convolution layer. Defaults to None.
      norm_cfg (:obj:`ConfigDict` or dict): Dictionary to construct and
          config norm layer. Defaults to dict(type='BN', requires_grad=True).
      act_cfg (:obj:`ConfigDict` or dict): Config dict for activation layer.
          Defaults to dict(type='LeakyReLU', negative_slope=0.1).
      loss_cls (:obj:`ConfigDict` or dict): Config of classification loss.
      loss_conf (:obj:`ConfigDict` or dict): Config of confidence loss.
      loss_xy (:obj:`ConfigDict` or dict): Config of xy coordinate loss.
      loss_wh (:obj:`ConfigDict` or dict): Config of wh coordinate loss.
      train_cfg (:obj:`ConfigDict` or dict, optional): Training config of
          YOLOV3 head. Defaults to None.
      test_cfg (:obj:`ConfigDict` or dict, optional): Testing config of
          YOLOV3 head. Defaults to None.
docstr: Generate responsible anchor flags of grid cells in multiple scales.
  
  Args:
      featmap_sizes (List[tuple]): List of feature map sizes in multiple
          feature levels.
      gt_bboxes (Tensor): Ground truth boxes, shape (n, 4).
      device (str): Device where the anchors will be put on.
  
  Return:
      List[Tensor]: responsible flags of anchors in multiple level
docstr_tok: ["Generate","responsible","anchor","flags","of","grid","cells","in","multiple","scales",".","Args",":","featmap_sizes","(","List","[","tuple","]",")",":","List","of","feature","map","sizes","in","multiple","feature","levels",".","gt_bboxes","(","Tensor",")",":","Ground","truth","boxes",",","shape","(","n",",","4",")",".","device","(","str",")",":","Device","where","the","anchors","will","be","put","on",".","Return",":","List","[","Tensor","]",":","responsible","flags","of","anchors","in","multiple","level"]
code: def responsible_flags(
      self, featmap_sizes: List[tuple], gt_bboxes: Tensor, device: str
  ) -> List[Tensor]:
      """Generate responsible anchor flags of grid cells in multiple scales.
  
      Args:
          featmap_sizes (List[tuple]): List of feature map sizes in multiple
              feature levels.
          gt_bboxes (Tensor): Ground truth boxes, shape (n, 4).
          device (str): Device where the anchors will be put on.
  
      Return:
          List[Tensor]: responsible flags of anchors in multiple level
      """
      assert self.num_levels == len(featmap_sizes)
      multi_level_responsible_flags = []
      for i in range(self.num_levels):
          anchor_stride = self.prior_generator.strides[i]
          feat_h, feat_w = featmap_sizes[i]
          gt_cx = ((gt_bboxes[:, 0] + gt_bboxes[:, 2]) * 0.5).to(device)
          gt_cy = ((gt_bboxes[:, 1] + gt_bboxes[:, 3]) * 0.5).to(device)
          gt_grid_x = torch.floor(gt_cx / anchor_stride[0]).long()
          gt_grid_y = torch.floor(gt_cy / anchor_stride[1]).long()
          # row major indexing
          gt_bboxes_grid_idx = gt_grid_y * feat_w + gt_grid_x
  
          responsible_grid = torch.zeros(
              feat_h * feat_w, dtype=torch.uint8, device=device
          )
          responsible_grid[gt_bboxes_grid_idx] = 1
  
          responsible_grid = (
              responsible_grid[:, None]
              .expand(
                  responsible_grid.size(0),
                  self.prior_generator.num_base_priors[i],
              )
              .contiguous()
              .view(-1)
          )
  
          multi_level_responsible_flags.append(responsible_grid)
      return multi_level_responsible_flags
  
imports: import copy
  import warnings
  from typing import List, Optional, Sequence, Tuple
  import torch
  import torch.nn
  import torch.nn.functional
  from mmcv.cnn import ConvModule, 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.utils import ConfigType, InstanceList, OptConfigType, OptInstanceList
  from ..task_modules.samplers import PseudoSampler
  from ..utils import filter_scores_and_topk, images_to_levels, multi_apply
  from .base_dense_head import BaseDenseHead
label_desc: Use image node_id 12 for calling the YOLOV3Head obj's underlying member method code with example usage: obj.responsible_flags(featmap_sizes, gt_bboxes, device) and returns: multi_level_responsible_flags