卷积结果计算公式、卷积参数计算公式、卷积计算量公式

卷积过程图

更多动画演示

https://gitee.com/65242847/images/blob/master/%E5%8D%B7%E7%A7%AF%E5%8A%A8%E7%94%BB%E5%9B%BE.md

特征图大小计算公式

  • s是strides(滑动步长)
  • 输入特征图宽高为 i (一般预处理成正方形)
  • 卷积核大小为 k(一般高宽相同)
  • p是padding大小

卷积结果大小:( i - k + 2 * p ) / s + 1

注意

  1. panding抵消卷积核大小时,卷积结果会受到步长的影响。当步长为2时,卷积结果大小约等于原图片的一半

  2. 当卷积核大小是1,步长是1时,不设置padding(即padding为0),此时图片卷积后不改变大小
    (i-1+2*0)/1 + 1=i

卷积参数计算

输入特征图尺寸:(h,w,c)
卷积核大小k,步长s,数量n

卷积参数公式:c * n * k * k + n

计算过程如下:

  1. 只有卷积核有参数,对于一个3*3的卷积核,其参数是 3*3,公式为:k * k
  2. n个卷积核,公式为:n * k * k
  3. 输入特征图有c个通道,每个通道与每个卷积核运算,所以公式是:c * n * k * k
  4. 每个卷积核有一个bias偏执量,n个卷积核就有n个bias,最终公式为:c * n * k * k + n

使用小卷积核的原因之一:参数少

卷积计算量公式

输入特征图尺寸:(h,w,c)
卷积核大小k,步长s,数量n,padding为p
卷积结果特征图尺寸:H,W,n

卷积计算量公式(只考虑乘法运算):

已知卷积结果特征图尺寸:k * k * H * W * n * c

已知输入特征图尺寸:( k × k ) * ( ( h - k + 2 * p ) / s + 1) * (( w - k + 2 * p ) / s + 1) * c * n

已知卷积结果特征图尺寸,计算过程如下:

  1. 一个k × k的卷积核,执行一次卷积操作,需要k × k次乘法操作(卷积核中每个参数都要和特征图上的元素相乘一次)

  2. 卷积结果的大小是 H * W,也就是说要进行H * W次卷积,计算量公式是:( k × k ) * H * W

  3. 有n个卷积核,计算量公式是:( k × k ) * H * W * n

  4. 有c个输入特征图,计算量公式是:( k × k ) * H * W * n * c

已知输入特征图尺寸,计算过程如下:

上面第2步,H、W可以替换成输入特征图尺寸:H = ( h - k + 2 * p ) / s + 1,W = ( w - k + 2 * p ) / s + 1
所以公式可替换成:( k × k ) * ( ( h - k + 2 * p ) / s + 1) * (( w - k + 2 * p ) / s + 1) * c * n

废弃

  1. 一次卷积的计算量:

    • 一个k × k的卷积核,执行一次卷积操作,需要k × k次乘法操作(卷积核中每个参数都要和特征图上的元素相乘一次)

    • k×k−1次加法操作(将卷积结果,k × k个数加起来)。

    • 一次卷积操作需要的计算量,公式:(k × k) + (k × k − 1) = 2 × k × k − 1

  2. 卷积结果的大小是 H * W,也就是说要进行H * W次卷积,计算量公式是:( 2 × k × k − 1) * H * W

  3. 有c个输入特征图

    • 一个卷积核要与c个特征图做乘法操作,计算量公式是:( 2 × k × k − 1 ) * H * W * c
    • 然后将c个结果做加法操作,共c -1次加法操作,计算量公式:(2 × k × k − 1 ) * H * W * c * (c - 1)
  4. 有n个输入特征图,计算量公式是:

感谢:
https://blog.csdn.net/liuweiyuxiang/article/details/99637649
https://blog.csdn.net/mtj66/article/details/80509713