Unofficial PyTorch reimplemention of the paper Involution: Inverting the Inherence of Convolution for Visual Recognition by Duo Li, Jie Hu, Changhu Wang et al. published at CVPR 2021.
This repository includes a PyTorch implementation of 2D Involution using C++/OpenMP/CUDA.
- 
Default (Use CUDA and OpenMP) pip install git+https://github.com/shikishima-TasakiLab/Involution-PyTorch 
- 
No CUDA USE_CUDA=0 pip install git+https://github.com/shikishima-TasakiLab/Involution-PyTorch 
- 
No OpenMP USE_OPENMP=0 pip install git+https://github.com/shikishima-TasakiLab/Involution-PyTorch 
The 2D involution can be used as a nn.Module as follows:
import torch
import torch.nn as nn
from involution import Involution2d
if torch.cuda.is_available():
    device = torch.device("cuda:0")
else:
    device = torch.device("cpu")
inv2d: nn.Module = Involution2d(in_channels=4, out_channels=8).to(device)
x: torch.Tensor = torch.rand(2, 4, 8, 8).to(device)
y: torch.Tensor = inv2d(x)The 2D involution takes the following parameters:
| Parameter | Description | Type | Default | 
|---|---|---|---|
| in_channels | Number of input channels. | int | - | 
| out_channels | Number of output channels. | int | - | 
| kernel_size | Kernel size to be used. | int,(int, int) | 7 | 
| stride | Stride factor to be utilized. | int,(int, int) | 1 | 
| padding | Padding to be used in unfold operation. | int,(int, int) | 3 | 
| dilation | Dilation in unfold to be employed. | int,(int, int) | 1 | 
| groups | Number of groups to be employed. | int | 1 | 
| bias | If true bias is utilized in each convolution layer. | bool | False | 
| sigma_mapping | Non-linear mapping as introduced in the paper. If none BN + ReLU is utilized. | torch.nn.Module | None | 
| reduce_ratio | Reduce ration of involution channels. | int | 1 | 
@inproceedings{Li2021,
    author = {Li, Duo and Hu, Jie and Wang, Changhu and Li, Xiangtai and She, Qi and Zhu, Lei and Zhang, Tong and Chen, Qifeng},
    title = {Involution: Inverting the Inherence of Convolution for Visual Recognition},
    booktitle = {IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month = {June},
    year = {2021}
}