分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算

深度学习卷积参数量,图像输出尺寸,感受野的计算,

是针对我之前一篇博客的一些单独抽离和总结,方便复习

文章目录

0. 网络中卷积乘法次数和加法次数

1. 分组卷积

2. 深度可分离卷积

3. 卷积后输出的图像尺寸

4. 空洞卷积

5. 感受野的计算

感受野计算例1

感受野计算例2

0. 网络中卷积乘法次数和加法次数

K × K {K}\times{K}K×K的卷积核,在一次卷积的过程中,运用K 2 K^{2}K2次的乘法,K 2 − 1 K^{2}-1K2−1次加法

1. 分组卷积

详细的带图解释引用参考这个链接

https://zhuanlan.zhihu.com/p/65377955

概念

将输入特征图按照通道数分成g组,每组分别进行卷积操作

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第1张图片

计算量的计算

分 组 卷 积 参 数 量 标 准 卷 积 参 数 量 = h 1 × w 1 × c 1 g × c 2 g × g h 1 × w 1 × c 1 × c 2 = 1 g \frac{分组卷积参数量}{标准卷积参数量} = \frac{{h_{1}} \times {w_{1}} \times {\frac {c_{1}} {g}} \times{\frac{c_2}{g}}\times{g}} {{h_{1}} \times {w_{1}} \times {c_{1}} \times{c_2}} = \frac{1}{g}标准卷积参数量分组卷积参数量​=h1​×w1​×c1​×c2​h1​×w1​×gc1​​×gc2​​×g​=g1​

每个变量对应的意思如下:

h1

w1

c1

c2

g

卷积核长

卷积核宽

输入尺寸的channel数

输出尺寸的channel数

分组数

2. 深度可分离卷积

详细的带图解释引用参考这个链接

https://zhuanlan.zhihu.com/p/65377955

概念

将标准卷积分成了深度卷积和逐点卷积,大大减少了参数量

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第2张图片

计算量的计算

深 度 可 分 离 卷 积 参 数 量 标 准 卷 积 参 数 量 = [ ( D k × D k × 1 ) × M ] + [ ( 1 × 1 × M ) × N ) ] D k × D k × M × N = 1 N + 1 D k 2 \frac{深度可分离卷积参数量}{标准卷积参数量} = \frac{[({D_{k}} \times {D_{k}} \times {1}) \times {M}] + [({1}\times{1}\times{M}) \times {N})]}{{D_{k}} \times {D_{k}} \times {M} \times {N}} = \frac{1}{N} + \frac{1}{D_{k}^{2}}标准卷积参数量深度可分离卷积参数量​=Dk​×Dk​×M×N[(Dk​×Dk​×1)×M]+[(1×1×M)×N)]​=N1​+Dk2​1​

每个变量对应的意思如下:

D k D_{k}Dk​

M

N

卷积核长或宽

输入尺寸的channel数

输出尺寸的channel数

3. 卷积后输出的图像尺寸

计算公式为:

n = f − k + 2 p s + 1 n = \frac{f-k+2p}{s}+1n=sf−k+2p​+1

每个变量对应的意思如下:

n

f

k

p

s

输出的图像的某一边尺寸

输入图像的某一边的尺寸

卷积核大小

padding

stride

对于给定了padding方式的卷积,对应的输出为:

same的情况:f/s向上取整

valid的情况:用p=0来计算

4. 空洞卷积

引用自:https://zhuanlan.zhihu.com/p/50369448

概念

深度网络中为了增加感受野且降低计算量,总要进行降采样(pooling或s2/conv)

这样虽然可以增加感受野,但空间分辨率降低了。

为了能不丢失分辨率,且仍然扩大感受野,引入了空洞卷积(deeplab)

空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate-1个0,因此,当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息

输出图像尺寸计算

空洞卷积的输出尺寸的计算,在于卷积核的大小不是原始卷积核的大小,

而应该使用公式:

K = k + ( k − 1 ) ( r − 1 ) K=k+(k-1)(r-1)K=k+(k−1)(r−1)

每个变量对应的意思如下:

K

k

r

空洞卷积的卷积核实际计算尺寸

卷积核的尺寸

空洞卷积的dilation rate

最后再带入3中提到的公式即可,这里把公式再放一遍

n = f − k + 2 p s + 1 n = \frac{f-k+2p}{s}+1n=sf−k+2p​+1

5. 感受野的计算

推荐一个网址,可以自定义卷积/池化层,然后计算感受野:fomoro传送门

计算感受野的方法有两种:

这两种方法实际都是递推的方法,第一种方法比较好理解,第二种方法是逆推,稍难理解

第一种方法:

参考链接:

https://blog.csdn.net/u012862372/article/details/81045593

https://zhuanlan.zhihu.com/p/28492837

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第3张图片

补充一点自己的理解,初始化的时候,R0初始化为1,S0初始化为1(也就是当计算第一层的时候,实际的感受野就是卷积核的大小)

第二种方法:

参考链接:https://zhuanlan.zhihu.com/p/28492837

这是一种逆推的方法,top->down,从最后一层逆推到输入层的计算方法,链接里面说的很明白

给出几个例子,均用第一种方法来说明感受野怎么计算:

感受野计算例1

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第4张图片

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第5张图片

注意是连乘,图中模糊的那一块儿是S2*S1,懒癌犯了,不想改了

感受野计算例2

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第6张图片

分组卷积计算量_深度学习卷积参数量,图像输出尺寸,感受野的计算_第7张图片

运用方法一可以顺推每个中间层的感受野,比第二种直观一些

把公式latex一遍:

R F n = R F n − 1 + ( k n − 1 ) ∏ i = 1 n − 1 S i RF_{n} = RF_{n-1}+(k_{n}-1)\prod_{i=1}^{n-1}{S_{i}}RFn​=RFn−1​+(kn​−1)i=1∏n−1​Si​

注:空洞卷积的感受野计算,参考https://zhuanlan.zhihu.com/p/43784441,通过计算实际的卷积核大小:

K = k + ( k − 1 ) ( r − 1 ) K = k + (k-1)(r-1)K=k+(k−1)(r−1)

再带入上述公式即可计算

你可能感兴趣的:(分组卷积计算量)