Depthwise Multiception Convolution for Reducing Network Parameters without Sacrificing Accuracy
A new convolution type to boost the performance of depthwise seperable convolution (DSConv)
class Multiception(nn.Module):
def __init__(self, in_channel, out_channel, stride, kernels):
super(Multiception, self).__init__()
padding_dict = {1:0, 3:1, 5:2, 7:3}
self.seps = nn.ModuleList()
for kernel in kernels:
sep = nn.Conv2d(in_channel,in_channel, kernel_size = kernel,stride =1,padding = padding_dict[kernel],dilation=1,groups=in_channel, bias=False)
self.seps.append(sep)
self.bn1 = nn.BatchNorm2d(in_channel*len(kernels))
self.pointwise = nn.Conv2d(in_channel*len(kernels), out_channel, 1, stride, 0, 1, 1)
self.bn2 = nn.BatchNorm2d(out_channel)
def forward(self, x):
seps = []
for sep in self.seps:
seps.append(sep(x))
out_seq = torch.cat(seps, dim=1)
out = self.pointwise(self.bn1(out_seq))
out = self.bn2(out)
return out
Guoqing Bao, Manuel B. Graeber, Xiuying Wang, "Depthwise Multiception Convolution for Reducing Network Parameters without Sacrificing Accuracy," 2020 16th International Conference on Control, Automation, Robotics and Vision (ICARCV), 2020, pp. 747-752, doi: 10.1109/ICARCV50220.2020.9305369.
School of Computer Science, The University of Sydney
python3 main.py --label 10 --dataset stl --model resnet50 --batch_size 64
python3 main.py --label 1000 --dataset imagenet32 --model resnet50 --epochs 50
python3 main.py --label 10 --dataset cifar --model shake
python3 main.py --label 100 --dataset cifar --model shake