卷积种类和计算FLOPs(计算量)

各参数含义如下:
C_IN:输入特征矩阵的channel数
C_OUT:输出特征矩阵channel数
K:卷积核大小
H_IN*W_IN:输入特征矩阵size(未用到)
H_OUT*W_OUT:输出特征矩阵size

传统卷积

在这里插入图片描述

  • 卷积操作只有两种计算:乘法和加法
  • 卷积操作是对位相乘再相加,因此乘法操作和加法操作的次数应相同
  • 我们只需考虑乘法计算量,再将结果乘2即可


    得到输出特征矩阵某一channel上的某一像素需要乘法计算:C_in*K*K
    输出特征矩阵共有像素C_out*H_out*W_out
    乘法计算量为C_in*K*K*C_out*H_out*W_out
    总计算量为C_in*K*K*C_out*H_out*W_out*2

组卷积

  • 假设分为g组,每个组n个卷积核
  • 则输出矩阵channel数为n*g,每个组的channel数为C_in/g
  • 得到输出矩阵上某个channel上的某个像素值需要乘法计算:每个组channel数*输入矩阵宽*输入矩阵高=(C_in/g)*K*K
  • 输出矩阵共有n*g*H_out*W_out = C_out*H_out*W_out个像素
  • 总计算量为C_in*K*K*n*H_out*W_out*2 = C_in*K*K*C_out*H_out*W_out*2/g
  • 即若输出channel数量一致的情况下,组卷积的FLOPs为普通卷积的1/g

DW卷积

附上DW卷积操作图:
在这里插入图片描述

  • DW卷积C_in == C_out


    得到输出矩阵某一channel上的某一像素值需要乘法计算:K*K
    输出矩阵共有像素C_in*H_out*W_out
    乘法计算量为C_in*K*K*H_out*W_out
    总计算量为C_in*K*K*H_out*W_out*2

PW卷积(卷积核大小为1*1的传统卷积)

附上PW卷积操作图:
在这里插入图片描述


得到输出矩阵某一channel上的某一像素值需要乘法计算:C_in
输出矩阵共有像素C_out*H_out*W_out
乘法计算量为C_in*C_out*H_out*W_out
总计算量为C_in*C_out*H_out*W_out*2

MobileNet的Depthwise Separable Conv

将传统卷积拆分为DW卷积核PW卷积两个部分,DW卷积的输出作为PW卷积的输入
综上,
(DW计算量+PW计算量)/传统卷积计算量=(C_in*C_out*H_out*W_out*2+C_in*K*K*H_out*W_out*2)/C_in*K*K*C_out*H_out*W_out*2=
1/k^2+1/C_out
在MobileNet中K一般为3,Cout很大,因此上式约等于1/9,即Depthwise Separable Conv减少了近9倍的计算量

转置卷积

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值