class_docstr: A transition used for up-sampling.
  
  Up-sample the input by interpolation then refines the feature by
  a convolution layer.
  
  Args:
      in_channels (int): Number of input channels.
      out_channels (int): Number of output channels.
      scale_factor (int): Up-sampling factor. Default: 2.
      mode (int): Interpolation mode. Default: nearest.
      align_corners (bool): Whether align corners when interpolation.
          Default: None.
      kernel_size (int): Kernel size for the conv. Default: 3.
code: def __init__(
      self,
      in_channels,
      out_channels,
      scale_factor=2,
      mode="nearest",
      align_corners=None,
      kernel_size=3,
      init_cfg=None,
      **kwargs,
  ):
      super().__init__(in_channels, out_channels, init_cfg)
      self.mode = mode
      self.scale_factor = scale_factor
      self.align_corners = align_corners
      self.conv = ConvModule(
          in_channels,
          out_channels,
          kernel_size,
          padding=(kernel_size - 1) // 2,
          **kwargs,
      )
  
imports: import torch.nn
  import torch.nn.functional
  from mmcv.cnn import ConvModule
  from mmengine.model import BaseModule
  from mmdet.registry import MODELS
label_desc: Use image node_id 1 to create a new UpInterpolationConv object from inherited base classes: Transition with example: obj = UpInterpolationConv(in_channels, out_channels, scale_factor, mode, align_corners, kernel_size, init_cfg)