深度学习基础知识点卷积之Separable Convolutions
可分离卷积可以分为空间可分离卷积 $(Spatially \ Separable \ Convolutions)$和深度可分离卷积 $(depthwise \ separable \ convolution)$。
Spatially Separable Convolutions
普通的 $3 \times 3$ 卷积在一个 $5 \times 5$的 $feature \ map$上是如下图这样进行计算:
Spatially Separable Convolutions 1
每个位置需要 $9$ 次乘法,一共有 $9$ 个位置,所以整个操作下来就是 $9 \times 9 = 81$ 次乘法操作。
空间可分离卷积是将一个卷积分解为两个单独的运算,做一次 $3 \times 3$ 卷积,等价于先做一次 $3 \times 1$ 卷积再做一次 $1 \times 3$ 卷积。空间可分离卷积的计算如下图所示:
Spatially Separable Convolutions 2
- 第一步先使用 $3 \times 1$ 的 $filter$,所需计算量为:$15 \times 3=45$
- 第二步使用 $1 \times 3$ 的 $filter$,所需计算量为:$9 \times 3 = 27$
总共需要 $72$ 次乘法就可以得到最终结果,要小于普通卷积的 $81$ 次乘法。
Depthwise Separable Convolutions
深度可分离卷积的步骤 $(10275 \ multiplications)$:
- 先变小 $(depthwise \ convolution)$:将 $Layer$ 和 $Kernel$ 在深度方向上分离,做一次 $2D$ 卷积,然后在通道方向上 $concat$,得到深度不变、宽长变小的 $Layer$
- 再加深$(1\times1 \ convolution)$:做 $128$ 次 $1 \times 1$ 的卷积得到宽长不变、深度为 $128$ 的 $Layer$
Depthwise Separable Convolutions 1
对比普通的卷积$(86400 multiplications)$:
Depthwise Separable Convolutions 2