卷积和可分卷积的效率对比
文章概要
概要:这篇博文主要是介绍了在深度学习中使用广泛的卷积方法,其实说其为滤波(在信号处理领域,图像处理领域使用这个说法可能更多)也是不错的。文章介绍了:
- 卷积与互相关
- 深度学习中的卷积(单通道版本,多通道版本)
- 3D 卷积
- 1×1 卷积
- 卷积算术
- 转置卷积(去卷积、棋盘效应)
- 扩张卷积
- 可分卷积(空间可分卷积,深度可分卷积)
- 平展卷积
- 分组卷积
- 混洗分组卷积
- 逐点分组卷积
随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习中关于卷积的的基础内容。
提示:以下是本篇文章正文内容。
一、卷积的本质?
在信号处理、图像处理和其它工程/科学领域,卷积都是一种使用广泛的技术。在深度学习领域,卷积神经网络(CNN)这种模型架构就得名于这种技术。但是,深度学习领域的卷积本质上是信号/图像处理领域内的互相关(cross-correlation)。这两种操作之间存在细微的差别。
无需太过深入细节,我们就能看到这个差别。在信号/图像处理领域,卷积的定义是:
其定义是两个函数中一个函数经过反转和位移后再相乘得到的积的积分。下面的可视化展示了这一思想:
信号处理中的卷积。过滤器 g 经过反转,然后再沿水平轴滑动。在每一个位置,我们都计算 f 和反转后的 g 之间相交区域的面积。这个相交区域的面积就是特定位置出的卷积值。
这里,函数 g 是过滤器。它被反转后再沿水平轴滑动。在每一个位置,我们都计算 f 和反转后的 g 之间相交区域的面积。这个相交区域的面积就是特定位置出的卷积值。
二、卷积和可分卷积
1.空间卷积
卷积又可以分为2D空间卷积(二维平面空间的卷积)和3D空间卷积(三维空间卷积),其本质是一样,通俗来讲,就是都是根据周围数据计算,得出一个维度更小的数据(如果是得到维度更大的数据,则叫转置卷积):
1.1----2D空间卷积
如图所示:
上图是用一个3
×
\times
× 3的卷积核(也可以叫模板),去对一个5
×
\times
× 5的数据做卷积处理,最终得到一个3
×
\times
× 3的结果数据。我们可以通过计算知道,为了得到这个最后的结果,我们需要计算多少次;得到一个栅格数据需要进行3
×
\times
× 3 = 9次运算,而整个数据要移动9次卷积核,即计算9次卷积核,所以一个5
×
\times
× 5的数据块要进行9
×
\times
× 9=81次的运算。
1.2----3D空间卷积
上图是用一个3 × \times × 3 × \times × 3 的三维空间卷积核(也可以叫模板),去对一个7 × \times × 7 × \times × 3的数据块做卷积处理,最终得到一个5 × \times × 5 × \times × 1的结果数据。同样,为了得到这个最后的结果,我们需要计算多少次?得到一个最小栅格数据需要进行3 × \times × 3 × \times × 3 = 27次运算,而整个数据要移动5 × \times × 5 = 25次卷积核,即计算25次卷积核,所以一个7 × \times × 7 × \times × 3的数据块要进行25 × \times × 27=675次的运算。
2.可分卷积
可分卷积其实十分容易理解,说得通俗易懂点就是将对卷积核进行拆分,比如将2D卷积核拆分为两个一维的卷积模板,将3D卷积核拆分为n个二维卷积模板,然后再继续拆分为更低维度的卷积模板。下面用实例说明可分卷积:
2.1----二维空间可分卷积
上图中,将原本为3 × \times × 3的卷积核拆分为一个3 × \times × 1的垂直方向上的模板和一个1 × \times × 3的水平方向上的模板。含义即为将一个模板分为两个模板,有先后次序 的使用。则,这种计算方法下。为了得到3 × \times × 3的计算结果,则总的计算次数分为两个部分:一个部分是垂直方向的计算次数,总共需要3 × \times × 5 × \times × 3 = 45次;另外一部分是水平方向上的计算次数,总共需要3 × \times × 3 × \times × 3 = 27次。则可分卷积总共的计算次数是: 45+27 = 72次。少于普通卷积的81次。
2.卷积系列
后续持续更新卷积系列
参考素材
https://mp.weixin.qq.com/s/Olliwe3ux77H4Vlsn4IrCw