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.
code: def __init__(
      self,
      in_channels: int,
      feat_channels: int,
      num_classes: int,
      loss_center_heatmap: ConfigType = dict(
          type="GaussianFocalLoss", loss_weight=1.0
      ),
      loss_wh: ConfigType = dict(type="L1Loss", loss_weight=0.1),
      loss_offset: ConfigType = dict(type="L1Loss", loss_weight=1.0),
      train_cfg: OptConfigType = None,
      test_cfg: OptConfigType = None,
      init_cfg: OptMultiConfig = None,
  ) -> None:
      super().__init__(init_cfg=init_cfg)
      self.num_classes = num_classes
      self.heatmap_head = self._build_head(
          in_channels, feat_channels, num_classes
      )
      self.wh_head = self._build_head(in_channels, feat_channels, 2)
      self.offset_head = self._build_head(in_channels, feat_channels, 2)
  
      self.loss_center_heatmap = MODELS.build(loss_center_heatmap)
      self.loss_wh = MODELS.build(loss_wh)
      self.loss_offset = MODELS.build(loss_offset)
  
      self.train_cfg = train_cfg
      self.test_cfg = test_cfg
      self.fp16_enabled = False
  
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 1 to create a new CenterNetHead object from inherited base classes: BaseDenseHead with example: obj = CenterNetHead(in_channels, feat_channels, num_classes, loss_center_heatmap, loss_wh, loss_offset, train_cfg, test_cfg, init_cfg)