1.Normal Convolution
一般kernel_size=3,padding取1,这样feature map取决于stride
参数量:CinCoutK*K
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)
2.Pointwise Convolution
kernel_size=1,无法提取空间信息,但可以实现全连接的功能
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)
3.Group Convolution
因显卡不够用所以被创建,当然也有后续研究,维度从Cin变为原来几分之一,分组卷积后拼到一起
参数量:Ci/2Cout/2KK2+bias
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=2,bias=True)
4.Depthwise/Channel-wise Convolution
将输入的feature map分组成Cin个然后再合到一起,这样Cout=Cin,但是由于 通道之间的信息没有打开,因此通常接1*1卷积打通通道
参数量:CinKK+bias
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=Ci,bias=True)
5.Dilated Convolution
仅学习9个点,但是可以可以获得更大的感受野,dilation表示每个点中间隔的点数
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=2,groups=2,bias=True)
6.Transpose Convolution
正常卷积把原图变小,一般加padding保持图不变,这种逆向操作会把图变大,一般用作上采样
torch.nn.ConvTranspose2d(in_channels,out_channels,kernel_size,stride=1,padding=0,output_padding,groups=1,bias=True,dilation=1)
参数量:CiCoutK*K+bias