class_docstr: Conv3x3 and norm.
class_docstr_tok: ["Conv3x3","and","norm","."]
code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      stride: int,
      groups: int = 1,
      use_dcn: bool = False,
      norm_type: Optional[Union[Sequence, str]] = None,
  ):
      super().__init__()
  
      if use_dcn:
          self.conv = ModulatedDeformConv2d(
              in_channels,
              out_channels,
              kernel_size=3,
              stride=stride,
              padding=1,
              groups=groups,
          )
      else:
          self.conv = nn.Conv2d(
              in_channels,
              out_channels,
              kernel_size=3,
              stride=stride,
              padding=1,
              groups=groups,
          )
  
      if isinstance(norm_type, Sequence):
          assert len(norm_type) == 2
          assert norm_type[0] == "gn"
          gn_group = norm_type[1]
          norm_type = norm_type[0]
  
      if norm_type == "bn":
          bn_op = nn.BatchNorm2d(out_channels)
      elif norm_type == "gn":
          bn_op = nn.GroupNorm(
              num_groups=gn_group, num_channels=out_channels
          )
      if norm_type is not None:
          self.bn = bn_op
      else:
          self.bn = None
  
imports: import copy
  import math
  from typing import Callable, List, Optional, Sequence, Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from mmcv.cnn import Scale
  from mmcv.ops.modulated_deform_conv import ModulatedDeformConv2d
  from mmengine.config import ConfigDict
  from mmengine.model import BaseModel
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.registry import MODELS
  from mmdet.structures.bbox import cat_boxes
  from mmdet.utils import InstanceList, OptInstanceList, reduce_mean
  from ..utils import BertEncoderLayer, VLFuse, filter_scores_and_topk, permute_and_flatten, select_single_mlvl, unpack_gt_instances
  from ..utils.vlfuse_helper import MAX_CLAMP_VALUE
  from .atss_head import ATSSHead
label_desc: Use image node_id 1 to create a new Conv3x3Norm object from inherited base classes: nn with example: obj = Conv3x3Norm(in_channels, out_channels, stride, groups, use_dcn, norm_type)