ops_deform_conv2d {torchvisionlib}R Documentation

Performs Deformable Convolution v2,

Description

Ddescribed in Deformable ConvNets v2: More Deformable, Better Results if mask is not NULL and performs Deformable Convolution, described in Deformable Convolutional Networks if mask is NULL.

Usage

ops_deform_conv2d(
  input,
  offset,
  weight,
  bias = NULL,
  stride = c(1, 1),
  padding = c(0, 0),
  dilation = c(1, 1),
  mask = NULL
)

Arguments

input

(Tensor[batch_size, in_channels, in_height, in_width]): input tensor

offset

(Tensor[batch_size, 2 * offset_groups * kernel_height * kernel_width, out_height, out_width]): offsets to be applied for each position in the convolution kernel.

weight

(⁠Tensor[out_channels, in_channels // groups, kernel_height, kernel_width]⁠): convolution weights, split into groups of size (in_channels // groups)

bias

(Tensor[out_channels]): optional bias of shape (out_channels,). Default: NULL

stride

(int or Tuple[int, int]): distance between convolution centers. Default: 1

padding

(int or Tuple[int, int]): height/width of padding of zeroes around each image. Default: 0

dilation

(int or Tuple[int, int]): the spacing between kernel elements. Default: 1

mask

(Tensor[batch_size, offset_groups * kernel_height * kernel_width, out_height, out_width]): masks to be applied for each position in the convolution kernel. Default: NULL

Value

Tensor[batch_sz, out_channels, out_h, out_w]: result of convolution

Examples

if (torchvisionlib_is_installed()) {
  library(torch)
  input <- torch_rand(4, 3, 10, 10)
  kh <- kw <- 3
  weight <- torch_rand(5, 3, kh, kw)
  # offset and mask should have the same spatial size as the output
  # of the convolution. In this case, for an input of 10, stride of 1
  # and kernel size of 3, without padding, the output size is 8
  offset <- torch_rand(4, 2 * kh * kw, 8, 8)
  mask <- torch_rand(4, kh * kw, 8, 8)
  out <- ops_deform_conv2d(input, offset, weight, mask = mask)
  print(out$shape)
}

[Package torchvisionlib version 0.5.0 Index]