普通卷积、分组卷积和深度分离卷积概念以及参数量计算
【摘要】 Google提出了移动端模型MobileNet,其核心是采用了深度可分离卷积,其不仅可以降低模型计算复杂度,而且可以大大降低模型大小,适合应用在真实的移动端应用场景。这篇文章带你了解一下什么是普通卷积、分组卷积和深度分离卷积,以及如何计算参数量。上面的图片展示了普通卷积和分组卷积的不同,下面我们通过具体的例子来看。 普通卷积标准卷积运算量的计算公式:FLOPs=(2×C0×K2−1)×H×W...
Google提出了移动端模型MobileNet,其核心是采用了深度可分离卷积,其不仅可以降低模型计算复杂度,而且可以大大降低模型大小,适合应用在真实的移动端应用场景。这篇文章带你了解一下什么是普通卷积、分组卷积和深度分离卷积,以及如何计算参数量。
上面的图片展示了普通卷积和分组卷积的不同,下面我们通过具体的例子来看。
普通卷积
标准卷积运算量的计算公式:
计算公式参考:深度学习之(经典)卷积层计算量以及参数量总结 (考虑有无bias,乘加情况) - 琴影 - 博客园 (cnblogs.com)
参数量计算公式:
:输入的通道。
K:卷积核大小。
H,W:输出 feature map的大小
:输出通道的大小。
bias=False,即不考虑偏置的情况有-1,有True时没有-1。
举例:
输入的尺寸是227×227×3,卷积核大小是11×11,输出是6,输出维度是55×55,
我们带入公式可以计算出
参数量:
=2178
运算量:
=13176900
分组卷积
分组卷积则是对输入feature map进行分组,然后每组分别卷积。
假设输入feature map的尺寸仍为 ,输出feature map的数量为 个,如果设定要分成G个groups,则每组的输入feature map数量为 ,每组的输出feature map数量为 ,每个卷积核的尺寸为 ,卷积核的总数仍为 个,每组的卷积核数量为 ,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为 ,总参数量减少为原来的 。
计算量公式:
分组卷积的参数量为:
举例:
输入的尺寸是227×227×3,卷积核大小是11×11,输出是6,输出维度是55×55,group为3
我们带入公式可以计算出
参数量:
=726
运算量:
=2205225
深度可分离卷积(Depthwise separable conv)
设输入特征维度为 ,M为通道数, 为卷积核大小,M为输入的通道数, N为输出的通道数,G为分组数。
当分组数量等于输入map数量,输出map数量也等于输入map数量,即M=N=G,N个卷积核每个尺寸为$D_{k}\times D_{k}\times 1 $时,Group Convolution就成了Depthwise Convolution。
逐点卷积就是把G组卷积用conv1x1拼接起来。如下图:
深度可分离卷积有深度卷积+逐点卷积。计算如下:
-
深度卷积:设输入特征维度为 ,M为通道数。卷积核的参数为 。输出深度卷积后的特征维度为: 。卷积时每个通道只对应一个卷积核(扫描深度为1),所以 FLOPs为:
-
逐点卷积:输入为深度卷积后的特征,维度为 。卷积核参数为 。输出维度为 。卷积过程中对每个特征做 的标准卷积, FLOPs为:
将上面两个参数量相加就是
所以深度可分离卷积参数量是标准卷积的
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)