普通卷积和可分离卷积的参数量和计算量以及FLOPS的计算

普通卷积和可分离卷积的参数量和计算量以及FLOPS的计算

首先看一下普通卷积的计算过程。
我们直接给出普通卷积的参数量,计算量的计算公式。
假设输入的feature-map大小是N x H x W的,卷积核的大小是m x h x w,经过卷积后输出的feature-map是S x A x B。
所以普通卷积的参数量h x w x N x S
普通卷积的计算量
h x w x A x B x N x S
我们可以看出参数量和计算量的计算跟原来feature-map的长宽没有任何关系,跟卷积核的纬度也没有任何关系(实际上在二维卷积的范畴下,一般卷积核的纬度与原图的纬度是一致的,也就是在channel上没有stride这一步骤了)

普通卷积和可分离卷积的参数量和计算量以及FLOPS的计算
可分离卷积的参数量==( h x w + S) x N
可分离卷积的计算量==2x(h x w + S) x H x W x N
可见,可分离卷积把上面普通卷积的相乘变成了相加,大大减少了计算量。
普通卷积和可分离卷积的参数量和计算量以及FLOPS的计算

FLOPS计算
FLOPS的计算有些许的不同。
包括乘法和加法两个部分。
普通卷积2 x N x h x w x H x W x S(考虑bais)
可分离卷积
2 x (h x w + S) x H x W x N

可见也是相当于把上面的相乘部分改成了相加。