class_docstr: Side-Aware Boundary Localization (SABL) for RetinaNet.
  
  The anchor generation, assigning and sampling in SABLRetinaHead
  are the same as GuidedAnchorHead for guided anchoring.
  
  Please refer to https://arxiv.org/abs/1912.04260 for more details.
  
  Args:
      num_classes (int): Number of classes.
      in_channels (int): Number of channels in the input feature map.
      stacked_convs (int): Number of Convs for classification and
          regression branches. Defaults to 4.
      feat_channels (int): Number of hidden channels. Defaults to 256.
      approx_anchor_generator (:obj:`ConfigType` or dict): Config dict for
          approx generator.
      square_anchor_generator (:obj:`ConfigDict` or dict): Config dict for
          square generator.
      conv_cfg (:obj:`ConfigDict` or dict, optional): Config dict for
          ConvModule. Defaults to None.
      norm_cfg (:obj:`ConfigDict` or dict, optional): Config dict for
          Norm Layer. Defaults to None.
      bbox_coder (:obj:`ConfigDict` or dict): Config dict for bbox coder.
      reg_decoded_bbox (bool): If true, the regression loss would be
          applied directly on decoded bounding boxes, converting both
          the predicted boxes and regression targets to absolute
          coordinates format. Default False. It should be ``True`` when
          using ``IoULoss``, ``GIoULoss``, or ``DIoULoss`` in the bbox head.
      train_cfg (:obj:`ConfigDict` or dict, optional): Training config of
          SABLRetinaHead.
      test_cfg (:obj:`ConfigDict` or dict, optional): Testing config of
          SABLRetinaHead.
      loss_cls (:obj:`ConfigDict` or dict): Config of classification loss.
      loss_bbox_cls (:obj:`ConfigDict` or dict): Config of classification
          loss for bbox branch.
      loss_bbox_reg (:obj:`ConfigDict` or dict): Config of regression loss
          for bbox branch.
      init_cfg (:obj:`ConfigDict` or dict or list[:obj:`ConfigDict` or             dict], optional): Initialization config dict.
class_docstr_tok: ["Side-Aware","Boundary","Localization","(","SABL",")","for","RetinaNet",".","The","anchor","generation",",","assigning","and","sampling","in","SABLRetinaHead","are","the","same","as","GuidedAnchorHead","for","guided","anchoring",".","Please","refer","to","https",":","\/\/arxiv.org\/abs\/1912.04260","for","more","details",".","Args",":","num_classes","(","int",")",":","Number","of","classes",".","in_channels","(","int",")",":","Number","of","channels","in","the","input","feature","map",".","stacked_convs","(","int",")",":","Number","of","Convs","for","classification","and","regression","branches",".","Defaults","to","4.","feat_channels","(","int",")",":","Number","of","hidden","channels",".","Defaults","to","256.","approx_anchor_generator","(",":","obj",":","`","ConfigType","`","or","dict",")",":","Config","dict","for","approx","generator",".","square_anchor_generator","(",":","obj",":","`","ConfigDict","`","or","dict",")",":","Config","dict","for","square","generator",".","conv_cfg","(",":","obj",":","`","ConfigDict","`","or","dict",",","optional",")",":","Config","dict","for","ConvModule",".","Defaults","to","None",".","norm_cfg","(",":","obj",":","`","ConfigDict","`","or","dict",",","optional",")",":","Config","dict","for","Norm","Layer",".","Defaults","to","None",".","bbox_coder","(",":","obj",":","`","ConfigDict","`","or","dict",")",":","Config","dict","for","bbox","coder",".","reg_decoded_bbox","(","bool",")",":","If","true",",","the","regression","loss","would","be","applied","directly","on","decoded","bounding","boxes",",","converting","both","the","predicted","boxes","and","regression","targets","to","absolute","coordinates","format",".","Default","False",".","It","should","be","``","True","``","when","using","``","IoULoss","``",",","``","GIoULoss","``",",","or","``","DIoULoss","``","in","the","bbox","head",".","train_cfg","(",":","obj",":","`","ConfigDict","`","or","dict",",","optional",")",":","Training","config","of","SABLRetinaHead",".","test_cfg","(",":","obj",":","`","ConfigDict","`","or","dict",",","optional",")",":","Testing","config","of","SABLRetinaHead",".","loss_cls","(",":","obj",":","`","ConfigDict","`","or","dict",")",":","Config","of","classification","loss",".","loss_bbox_cls","(",":","obj",":","`","ConfigDict","`","or","dict",")",":","Config","of","classification","loss","for","bbox","branch",".","loss_bbox_reg","(",":","obj",":","`","ConfigDict","`","or","dict",")",":","Config","of","regression","loss","for","bbox","branch",".","init_cfg","(",":","obj",":","`","ConfigDict","`","or","dict","or","list","[",":","obj",":","`","ConfigDict","`","or","dict","]",",","optional",")",":","Initialization","config","dict","."]
code: def forward(self, feats: List[Tensor]) -> Tuple[List[Tensor]]:
      return multi_apply(self.forward_single, feats)
  
imports: from typing import List, Optional, Tuple, Union
  import numpy
  import torch
  import torch.nn
  from mmcv.cnn import ConvModule
  from mmengine.config import ConfigDict
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.registry import MODELS, TASK_UTILS
  from mmdet.utils import ConfigType, InstanceList, MultiConfig, OptConfigType, OptInstanceList
  from ..task_modules.samplers import PseudoSampler
  from ..utils import filter_scores_and_topk, images_to_levels, multi_apply, unmap
  from .base_dense_head import BaseDenseHead
  from .guided_anchor_head import GuidedAnchorHead
label_desc: Use image node_id 4 for calling the SABLRetinaHead obj's underlying member method code with example usage: obj.forward(feats) and returns: multi_apply