code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size,
      stride=1,
      padding=0,
      dilation=1,
      groups=1,
      norm_type="gn",
      activation="LeakyReLU",
  ):
      super(ConvNormLayer, self).__init__()
      assert norm_type in ["bn", "sync_bn", "syncbn", "gn", None]
      self.conv = nn.Conv2D(
          in_channels,
          out_channels,
          kernel_size,
          stride=stride,
          padding=padding,
          dilation=dilation,
          groups=groups,
          bias_attr=False,
          weight_attr=ParamAttr(initializer=KaimingNormal()),
      )
  
      if norm_type in ["bn", "sync_bn", "syncbn"]:
          self.norm = nn.BatchNorm2D(out_channels)
      elif norm_type == "gn":
          self.norm = nn.GroupNorm(
              num_groups=32, num_channels=out_channels
          )
      else:
          self.norm = None
  
      self.act = get_activation(activation)
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from ppdet.core.workspace import register
  from paddle import ParamAttr
  from paddle.nn.initializer import KaimingNormal
  from paddle.nn.initializer import Normal, Constant
  from ..bbox_utils import batch_distance2bbox
  from ..losses import GIoULoss
  from ..initializer import bias_init_with_prob, constant_, normal_
  from ..assigners.utils import generate_anchors_for_grid_cell
  from ppdet.modeling.backbones.cspresnet import ConvBNLayer, RepVggBlock
  from ppdet.modeling.ops import get_static_shape, get_act_fn
  from ppdet.modeling.layers import MultiClassNMS
label_desc: Use image node_id 1 to create a new ConvNormLayer object from inherited base classes: nn with example: obj = ConvNormLayer(in_channels, out_channels, kernel_size, stride, padding, dilation, groups, norm_type, activation)