class_docstr: Objects as Points Head. CenterHead use center_point to indicate object's
  position. Paper link <https://arxiv.org/abs/1904.07850>
  
  Args:
      in_channels (int): Number of channel in the input feature map.
      feat_channels (int): Number of channel in the intermediate feature map.
      num_classes (int): Number of categories excluding the background
          category.
      loss_center_heatmap (:obj:`ConfigDict` or dict): Config of center
          heatmap loss. Defaults to
          dict(type='GaussianFocalLoss', loss_weight=1.0)
      loss_wh (:obj:`ConfigDict` or dict): Config of wh loss. Defaults to
           dict(type='L1Loss', loss_weight=0.1).
      loss_offset (:obj:`ConfigDict` or dict): Config of offset loss.
          Defaults to dict(type='L1Loss', loss_weight=1.0).
      train_cfg (:obj:`ConfigDict` or dict, optional): Training config.
          Useless in CenterNet, but we keep this variable for
          SingleStageDetector.
      test_cfg (:obj:`ConfigDict` or dict, optional): Testing config
          of CenterNet.
      init_cfg (:obj:`ConfigDict` or dict or list[dict] or
          list[:obj:`ConfigDict`], optional): Initialization
          config dict.
docstr: Forward features. Notice CenterNet head does not use FPN.
  
  Args:
      x (tuple[Tensor]): Features from the upstream network, each is
          a 4D-tensor.
  
  Returns:
      center_heatmap_preds (list[Tensor]): center predict heatmaps for
          all levels, the channels number is num_classes.
      wh_preds (list[Tensor]): wh predicts for all levels, the channels
          number is 2.
      offset_preds (list[Tensor]): offset predicts for all levels, the
         channels number is 2.
docstr_tok: ["Forward","features",".","Notice","CenterNet","head","does","not","use","FPN",".","Args",":","x","(","tuple","[","Tensor","]",")",":","Features","from","the","upstream","network",",","each","is","a","4D-tensor",".","Returns",":","center_heatmap_preds","(","list","[","Tensor","]",")",":","center","predict","heatmaps","for","all","levels",",","the","channels","number","is","num_classes",".","wh_preds","(","list","[","Tensor","]",")",":","wh","predicts","for","all","levels",",","the","channels","number","is","2.","offset_preds","(","list","[","Tensor","]",")",":","offset","predicts","for","all","levels",",","the","channels","number","is","2","."]
code: def forward(self, x: Tuple[Tensor, ...]) -> Tuple[List[Tensor]]:
      """Forward features. Notice CenterNet head does not use FPN.
  
      Args:
          x (tuple[Tensor]): Features from the upstream network, each is
              a 4D-tensor.
  
      Returns:
          center_heatmap_preds (list[Tensor]): center predict heatmaps for
              all levels, the channels number is num_classes.
          wh_preds (list[Tensor]): wh predicts for all levels, the channels
              number is 2.
          offset_preds (list[Tensor]): offset predicts for all levels, the
             channels number is 2.
      """
      return multi_apply(self.forward_single, x)
  
imports: from typing import List, Optional, Tuple
  import torch
  import torch.nn
  from mmcv.ops import batched_nms
  from mmengine.config import ConfigDict
  from mmengine.model import bias_init_with_prob, normal_init
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.registry import MODELS
  from mmdet.utils import ConfigType, InstanceList, OptConfigType, OptInstanceList, OptMultiConfig
  from ..utils import gaussian_radius, gen_gaussian_target, get_local_maximum, get_topk_from_heatmap, multi_apply, transpose_and_gather_feat
  from .base_dense_head import BaseDenseHead
label_desc: Use image node_id 4 for calling the CenterNetHead obj's underlying member method code with example usage: obj.forward(x) and returns: multi_apply