class_docstr: A Deformable Conv Encapsulation that acts as normal Conv layers.
  
  The offset tensor is like `[y0, x0, y1, x1, y2, x2, ..., y8, x8]`.
  The spatial arrangement is like:
  
  .. code:: text
  
      (x0, y0) (x1, y1) (x2, y2)
      (x3, y3) (x4, y4) (x5, y5)
      (x6, y6) (x7, y7) (x8, y8)
  
  Args:
      in_channels (int): Same as nn.Conv2d.
      out_channels (int): Same as nn.Conv2d.
      kernel_size (int or tuple[int]): Same as nn.Conv2d.
      stride (int or tuple[int]): Same as nn.Conv2d.
      padding (int or tuple[int]): Same as nn.Conv2d.
      dilation (int or tuple[int]): Same as nn.Conv2d.
      groups (int): Same as nn.Conv2d.
      bias (bool or str): If specified as `auto`, it will be decided by the
          norm_cfg. Bias will be set as True if norm_cfg is None, otherwise
          False.
code: def forward(self, x):
      offset = self.conv_offset(x)
      return deform_conv2d(
          x,
          offset,
          self.weight,
          self.stride,
          self.padding,
          self.dilation,
          self.groups,
          self.deform_groups,
          False,
          self.im2col_step,
      )
  
imports: from typing import Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from torch.autograd import Function
  from torch.autograd.function import once_differentiable
  from torch.nn.modules.utils import _pair, _single
  from annotator.uniformer.mmcv.utils import deprecated_api_warning
  from ..cnn import CONV_LAYERS
  from ..utils import ext_loader, print_log
label_desc: Use image node_id 3 for calling the DeformConv2dPack obj's underlying member method code with example usage: obj.forward(x) and returns: deform_conv2d