code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size,
      stride=1,
      padding=0,
      dilation=1,
      groups=1,
      deform_groups=1,
      bias=True,
  ):
      super(ModulatedDeformConv2d, self).__init__()
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.kernel_size = _pair(kernel_size)
      self.stride = _pair(stride)
      self.padding = _pair(padding)
      self.dilation = _pair(dilation)
      self.groups = groups
      self.deform_groups = deform_groups
      # enable compatibility with nn.Conv2d
      self.transposed = False
      self.output_padding = _single(0)
  
      self.weight = nn.Parameter(
          torch.Tensor(
              out_channels, in_channels // groups, *self.kernel_size
          )
      )
      if bias:
          self.bias = nn.Parameter(torch.Tensor(out_channels))
      else:
          self.register_parameter("bias", None)
      self.init_weights()
  
imports: import math
  import torch
  import torch.nn
  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 1 to create a new ModulatedDeformConv2d object from inherited base classes: nn with example: obj = ModulatedDeformConv2d(in_channels, out_channels, kernel_size, stride, padding, dilation, groups, deform_groups, bias)