感谢作者:https://zhuanlan.zhihu.com/p/54425450
从MobileNet中的深度可分卷积(Depthwise Separable Convolution)讲起
看过MobileNet的都知道,MobileNet最主要的加速就是因为深度可分卷积(Depthwise Separable Convolution)的使用。将原本一步到位的卷积操作,分为两个卷积的级联,分成的两个卷积相对于原始的卷积而言,参数大大减少,计算量大大减少。
3、深度可分卷积的pytorch实现:
def conv_dw(inp, oup, stride):
return nn.Sequential(
nn.Conv2d(inp, inp, 3, stride, 1, groups=inp, bias=False),
nn.BatchNorm2d(inp),
nn.ReLU(inplace=True),
nn.Conv2d(inp, oup, 1, 1, 0, bias=False),
nn.BatchNorm2d(oup),
nn.ReLU(inplace=True)
)