这篇教程深度可分离卷积计算量与参数量计算写得很实用,希望能帮到您。
从卷积神经网络登上历史舞台开始,经过不断的改进和优化,卷积早已不是当年的卷积,诞生了分组卷积(Group convolution)、空洞卷积(Dilated convolution 或 À trous)等各式各样的卷积。今天主要讲一下深度可分离卷积(depthwise separable convolutions),这是Xception以及MobileNet系列的精华所在。而它最早是由Google Brain 的一名实习生 Laurent Sifre 于2013年提出,Sifre在其博士论文中对此进行了详细的分析和实验,有兴趣的可以去翻阅。
标准卷积过程如下图所示:
深度可分离卷积过程如下图所示:
假设输入特征图大小为 W_in×H_in×M,
输出特征图大小为 W_out×H_out×N,
卷积核大小为 D_K×D_K
参数量:
标准卷积参数量为:
D_K × D_K × M × N
深度可分离卷积参数量为:
D_K × D_K × M + M × N
计算量:
标准卷积计算量为:
D_K × D_K × M × W_out × H_out × N
深度可分离卷积计算量为:
D_K × D_K × M × W_out × H_out + M × W_out × H_out × N
3. 深度可分离卷积(depthwise convolution):
例如:input: w*h*c=3*3*3→用三个卷积核:x*x*1,分别于三个通道进行卷积(depthwise conv)→得到3个feature map→用M个1*1*3卷积正常卷积得到M个feature map(pointwise conv)。
4. 卷积与深度可分离卷积的计算量和参数量:
(1)卷积:
- 计算量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道) * N(输出通道) * K(输出特征大小H) * L(输出特征大小W)
- 参数量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道) * N(输出通道)
(2)深度可分离卷积:
- 计算量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道)* K(输出特征大小H) * L(输出特征大小W)+ 1 * 1 * M(输入通道) * N(输出通道) * K(输出特征大小H) * L(输出特征大小W)
- 参数量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道) + 1 * 1 * M(输入通道) * N(输出通道)
深度可分离卷积详解 深度可分离卷积和正常卷积图文解析浅显易懂 |