conv2d#

deepinv.physics.functional.conv2d(x, filter, padding='valid', correlation=False)[source]#

A helper function performing the 2d convolution of images x and filter.

The adjoint of this operation is deepinv.physics.functional.conv_transpose2d()

Parameters:
  • x (torch.Tensor) – Image of size (B, C, W, H).

  • filter (torch.Tensor) – Filter of size (b, c, w, h) where b can be either 1 or B and c can be either 1 or C. Filter center is at (hh, ww) where hh = h//2 if h is odd and hh = h//2 - 1 if h is even. Same for ww.

  • correlation (bool) – choose True if you want a cross-correlation (default False)

If b = 1 or c = 1, then this function supports broadcasting as the same as numpy. Otherwise, each channel of each image is convolved with the corresponding kernel.

Parameters:

padding (str) – (options = 'valid', 'circular', 'replicate', 'reflect', 'constant' or 'zeros'). If padding = 'valid' the output is smaller than the image (no padding), otherwise the output has the same size as the image. Note that 'constant' and 'zeros' are equivalent. Default is 'valid'.

Returns:

torch.Tensor: the blurry output.

Return type:

Tensor

Note

Contrary to PyTorch’s torch.nn.functional.conv2d(), which performs a cross-correlation, this function performs a convolution by default unless correlation=True.

This function gives the same result as deepinv.physics.functional.conv2d_fft(). However, for small kernels, this function is faster. For large kernels, deepinv.physics.functional.conv2d_fft() is usually faster but requires more memory.