DeformConv2d¶
- 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)[source]¶
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
Note
The argument
im2col_step
was added in version 1.3.17, which means number of samples processed by theim2col_cuda_kernel
per call. It enables users to definebatch_size
andim2col_step
more flexibly and solved issue mmcv#1440.- Parameters
in_channels (int) – Number of channels in the input image.
out_channels (int) – Number of channels produced by the convolution.
stride (int, tuple) – Stride of the convolution. Default: 1.
padding (int or tuple) – Zero-padding added to both sides of the input. Default: 0.
dilation (int or tuple) – Spacing between kernel elements. Default: 1.
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_size
>im2col_step
, butbatch_size
must be divisible byim2col_step
. Default: 32. New in version 1.3.17.
- forward(x: torch.Tensor, offset: torch.Tensor) → torch.Tensor[source]¶
Deformable Convolutional forward function.
- Parameters
x (Tensor) – Input feature, shape (B, C_in, H_in, W_in)
offset (Tensor) –
Offset for deformable convolution, shape (B, deform_groups*kernel_size[0]*kernel_size[1]*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)
- Returns
Output of the layer.
- Return type
Tensor