- class mmcv.ops.DeformConv2d(in_channels: int, out_channels: int, kernel_size: Union[int, Tuple[int, ...]], stride: Union[int, Tuple[int, ...]] = 1, padding: Union[int, Tuple[int, ...]] = 0, dilation: Union[int, Tuple[int, ...]] = 1, groups: int = 1, deform_groups: int = 1, bias: bool = False, im2col_step: int = 32)¶
Deformable 2D convolution.
Applies a deformable 2D convolution over an input signal composed of several input planes. DeformConv2d was described in the paper Deformable Convolutional Networks
im2col_stepwas added in version 1.3.17, which means number of samples processed by the
im2col_cuda_kernelper call. It enables users to define
im2col_stepmore flexibly and solved issue mmcv#1440.
in_channels (int) – Number of channels in the input image.
out_channels (int) – Number of channels produced by the convolution.
groups (int) – Number of blocked connections from input. channels to output channels. Default: 1.
deform_groups (int) – Number of deformable group partitions.
bias (bool) – If True, adds a learnable bias to the output. Default: False.
im2col_step (int) – Number of samples processed by im2col_cuda_kernel per call. It will work when
batch_sizemust be divisible by
im2col_step. Default: 32. New in version 1.3.17.
- forward(x: torch.Tensor, offset: torch.Tensor) → torch.Tensor¶
Deformable Convolutional forward function.
x (Tensor) – Input feature, shape (B, C_in, H_in, W_in)
offset (Tensor) –
Offset for deformable convolution, shape (B, deform_groups*kernel_size*kernel_size*2, H_out, W_out), H_out, W_out are equal to the output’s.
An offset is like [y0, x0, y1, x1, y2, x2, …, y8, x8]. The spatial arrangement is like:
(x0, y0) (x1, y1) (x2, y2) (x3, y3) (x4, y4) (x5, y5) (x6, y6) (x7, y7) (x8, y8)
Output of the layer.
- Return type