天天看点

卷积神经网络-空洞卷积

一、空洞卷积的提出

空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions),向卷积层引入了一个称为 “扩张率(dilation rate)”的新参数,该参数定义了卷积核处理数据时各值的间距。

该结构的目的是在不用pooling(pooling层会导致信息损失)且计算量相当的情况下,提供更大的感受野。 顺便一提,卷积结构的主要问题如下:

池化层不可学

内部数据结构丢失;空间层级化信息丢失。

小物体信息无法重建 (假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建。)

而空洞卷积就有内部数据结构的保留和避免使用 down-sampling 这样的特性,优点明显。

二、空洞卷积原理

如下如,卷积核没有红点标记位置为0,红点标记位置同正常卷积核。

卷积神经网络-空洞卷积

假设原始特征为feat0,首先使用扩张率为1的空洞卷积生成feat1,feat1上一点相对feat0感受野为33(如图a);

然后使用扩张率为2的空洞卷积处理feat1生成feat2(如图b),使第一次空洞卷积的卷积核大小等于第二次空洞卷积的一个像素点的感受野,图b即feat1上一个点综合了图a即feat0上33区域的信息,则生成的feat2感受野为77,即整个图b深色区域;

第三次处理同上,第二次空洞卷积的整个卷积核大小等于第三次空洞卷积的一个像素点的感受野,图c即feat2上每个点综合了feat0上77的信息(感受野),则采用扩张率为3的空洞卷积,生成的feat3每一个点感受野为1515。

相比较之下,使用stride为1的普通33卷积,三层之后感受野仅仅为(kernel-1)*layer+1=7。

三、空洞卷积问题

感受野跳跃

我们对同一张图连续三次使用扩张率为1的空洞卷积,观察整张图的中心点的感受野(如下图):

卷积神经网络-空洞卷积

很明显,感受野不连续(我们上一小结的例子就没这个问题,所以空洞卷积依赖网络设计)。

小尺度物体检测

类似第一个问题,仍然需要调整扩张率的组合来解决这个问题。

四、网络设计研究

第一个特性是,叠加卷积的 dilation rate 不能有大于1的公约数。比如 [2, 4, 6] 则不是一个好的三层卷积,依然会出现 gridding effect。

第二个特性是,我们将 dilation rate 设计成 锯齿状结构,例如 [1, 2, 5, 1, 2, 5] 循环结构。

第三个特性是,我们需要满足一下这个式子:

卷积神经网络-空洞卷积

一个简单的例子: dilation rate [1, 2, 5] with 3 x 3 kernel (可行的方案):

卷积神经网络-空洞卷积

而这样的锯齿状本身的性质就比较好的来同时满足小物体大物体的分割要求(小 dilation rate 来关心近距离信息,大 dilation rate 来关心远距离信息)。

单分支设计的研究

通向标准化设计:Hybrid Dilated Convolution (HDC),可以很好的满足分割需要,如下图所示:

卷积神经网络-空洞卷积

多分支研究解决多尺度分割

仅仅(在一个卷积分支网络下)使用 dilated convolution 去抓取多尺度物体是一个不正统的方法。比方说,我们用一个 HDC 的方法来获取一个大(近)车辆的信息,然而对于一个小(远)车辆的信息都不再受用。假设我们再去用小 dilated convolution 的方法重新获取小车辆的信息,则这么做非常的冗余。

基于港中文和商汤组的 PSPNet 里的 Pooling module (其网络同样获得当年的SOTA结果),ASPP 则在网络 decoder 上对于不同尺度上用不同大小的 dilation rate 来抓去多尺度信息,每个尺度则为一个独立的分支,在网络最后把他合并起来再接一个卷积层输出预测 label。这样的设计则有效避免了在 encoder 上冗余的信息的获取,直接关注与物体之间之内的相关性。

卷积神经网络-空洞卷积
sdk

继续阅读