一种新的激活函数~Funnel Activation

论文题目:Funnel Activation for Visual Recognition

代码地址:https://github.com/megvii-model/FunnelAct

一种新的激活函数~Funnel Activation_第1张图片

本篇论文收录于ECCV2020,是旷视科技和香港理工大学发表一篇关于新的激活函数的文章。主要的创新点是在激活函数阶段实现像素级的空间信息建模能力,即在激活函数中加入了空间上下文信息。能够用于目标检测、语义分割等目标识别任务,简单又高效,如下图!我会按照论文的结构对这篇论文进行阐述,对于某些没阐述明白的,读者可以自行下载原文进行研究。

一种新的激活函数~Funnel Activation_第2张图片

Introduction

在这部分,作者提出了在CNN框架中,最主要要的是两部分,一部分是卷积层,另一部分是非线性激活层。

卷积层的作用:如何适应性地捕获空间的依赖关系;为此研究者们提出了很多复杂并且有效地卷积方法来适应性地捕获图像中局部地上下文,这些方法在效率上显然是低的,由此作者提出了一个问题:能否使用常规卷积方式实现复杂卷积类似地精度呢?

非线性激活层地作用:对卷积层地线性输出进行非线性变换。比如:ReLU,PReLU,sigmoid等激活函数。

基于卷积层和激活层地作用,作者提出了第二个问题:能否为视觉任务设计一种专门地激活函数?

我想这两个问题也是作者提出Funnel Activation地Intention.FReLU是对ReLU,PReLU地拓展,如图2,它增加了一个可以忽略计算的空间条件,其形式如图1,T(x)表示简单而又高效的特征提取层。

                                                                                         图1 FReLU 表达式

一种新的激活函数~Funnel Activation_第3张图片

                                                                                        图2 FReLU ,ReLU和PReLU

Related Work

在这部分,作者对历史研究的方法进行了总结。具体分为:scalar activation, contextual conditional activations ,spatial dependency modeling和receptive field。接下来,我会对每一部分进行详细介绍。

(1). scalar activation

传统深度学习中使用的激活函数,单输入单输出,是一个1D的激活函数,这些激活函数依赖于神经元本身。具体形式为:y=f(x)。具体激活函数有ReLU,Leaky ReLU,PReLU,ELU等。这些激活函数它们保持正部分的一致性,使负部分自适应地依赖于样本。还有其他的激活函数比如sigmoid 函数,tanh(x)函数,这些函数由于它们的饱和性,导致在deep CNNs会出现梯度消失的现象,同时由于存在指数运算,所以会存在大量的计算代价。

(2).contextual conditional activations

这些激活函数是多输入单输出,除了依赖于神经元自身的标量激活外,它根据上下文信息激活神经元。例如激活函数Maxout,它将层扩展到多个分支,并选择最大值,具体为max(wt1x+b1,wt2x+b2),它将ReLU和Leaky ReLU推广到同一个框架中。maxout缺点:本身增加了太多的复杂度,参数和乘法加法的数量成倍增加。

(3).spatial dependency modeling

学习更好的空间相关性是一个挑战,一些方法使用不同形状的卷积核来聚集不同的空间依赖范围。然而,它需要一个多分支来降低效率。卷积核的发展,如atrous convolution和dilated convolution,也通过增加感受野而带来更好的性能。另一种方法自适应地学习空间相关性,如STN、active convolution、deformable convolution。这些方法自适应地利用空间变换来重建短距离相关性,特别是对于密集视觉任务(如目标检测、语义分割等)。我们简单的FReLU甚至在没有复杂卷积的情况下优于它们。此外,the non-local network提供了捕获long-range依赖的方法来解决这个问题。GCNet提供了一种空间注意机制,以更好地利用空间全局上下文。long-range建模方法可以获得更好的性能,但仍需要在源网络结构中添加额外的块,从而降低效率。funnel activation的方法解决了非线性激活中的这一问题。 

(4)receptive field

在视觉识别任务中,感受野的区域和大小至关重要。关于视觉感受野的研究发现,不同像素的贡献不相等,中心像素的贡献更大影响。因此许多自适应感受野的方法被提出。这些方法通过在体系结构中引入额外的分支,如设计更复杂的卷积或利用注意机制,来实现自适应感受野并提高性能。本文为了达到同样的目的,通过在非线性激活中引入感受野。通过使用更具适应性的感受野,可以对常见复杂形状的布局进行近似处理,从而获得比复杂卷积更好的效果。

Funnel Activation

FReLU是专门为视觉任务设计的,概念上很简单:ReLU对激活值为非正的部分用0来处理,PReLU是中引入了参数px,FReLU中在激活函数中引入了上下文的信息,将激活函数由1D变为2D,这个视觉条件有助于提取物体的空间布局。接下来,我们介绍了FReLU的关键元素,包括漏斗条件和像素级建模能力,这是ReLU及其变体的主要缺失部分。

ReLU:形式为max(x,0),使用max(.)作为非线性,并使用手工设计的零作为条件。非线性变换是卷积和全连通层等线性变换的补充。

PReLU:PReLU作为ReLU的高级变体,PReLU的原始格式为max(x; 0)+p\cdot min(x; 0),其中p是可学习的参数,初始化为0.25。然而,在大多数情况下p<1,在这个假设下,我们将其改写为:max(x;px),(p<1)。由于p是通道方面的参数,因此可以将其解释为1x1深度卷积,而不考虑偏差项。

Funnel condition FeLU:采用与简单非线性函数相同的max(\cdot )。对于条件部分,FReLU将其扩展为依赖于每个像素的空间上下文的2D条件(参见图2)。这与最新的方法相反,这些方法的条件取决于像素本身或通道上下文。形式上,funnel条件定义为\top (x)。为了实现空间条件,使用一个参数化池窗口来创建空间依赖关系,具体如图3,其中x_{c,i,j}是第c个通道上非线性激活f(\cdot )的输入像素,函数\top (x)表示Funnel condition,x_{c,i,j}^{w}表示以x_{c,i,j}为中心的k_{h} * k_{w}参数化池窗口,p_{c}^{w}表示在同一通道中共享的该窗口上的系数,(\cdot )表示点乘。

一种新的激活函数~Funnel Activation_第4张图片

                                                                                图3 Funnel Activation的形式

Pixel-wise modeling capacity:对funnel条件的定义允许网络在非线性激活中为每个像素生成空间条件。网络进行非线性变换,同时产生空间依赖关系。这与通常的做法不同,后者在卷积层中创建空间相关性,并分别进行非线性变换。在这种情况下,激活并不明确地依赖于空间条件;在funnel ReLU中对它们确实依赖于空间条件。因此,像素级条件使网络具有像素级建模能力,函数max(\cdot )为每个像素提供了一个选择,可以选择是否查看空间上下文。形式上,考虑一个具有n个FReLU层的网络{F1;F2;:::;Fn},每个FReLU层Fi都有一个k * k参数窗口。为了简洁起见,只分析FReLU层而不考虑卷积层。因为最大选择在1 *1和k *k之间,F1之后的每个像素都有一个激活字段集{1,1+r} (r = k - 1).)。在Fn层之后,集合变为{1+r;1+2r;:::;1+nr},这为每个像素提供了更多的选择,如果n足够大,可以近似任何布局。由于激活区有许多不同的尺寸,不同尺寸的正方形可以近似于斜线和弧线的形状(见图4)。众所周知,图像中物体的布局通常不是水平或垂直的,它们通常是斜线或弧线的形状,因此提取物体的空间结构可以通过空间条件提供的像素级建模能力自然解决。我们通过实验表明,在复杂的任务中,它能更好地捕捉不规则和详细的对象布局(见图5)。

一种新的激活函数~Funnel Activation_第5张图片

                                                                   图4 每像素funnel条件如何实现像素级建模能力的图形描述

一种新的激活函数~Funnel Activation_第6张图片

                                                                                      图5 语义分割可视化结果

实现细节

参数初始化:作者使用高斯初始化来初始化超参数。因此,得到的条件值接近于零,这并不会对原始网络的性质造成太大的改变。作者还研究了没有参数的情况(如最大池、平均池),它们没有显示出改善。这说明了附加参数的重要性。

参数计算量:假设有一个输入特征大小为C * H * W输入,输出特征大小为C * H0 * W0,卷积核为Kh*Kw,然后计算参数个数为C*C*H0 * W0,FLOPs(floating point operations)为C*C*H0 * W0*H*W。在此基础上,添加了窗口为Kh1* Kw1的漏斗条件,附加的参数数为C*Kh1*Kw1,而附加的FLOPs数为C*Kh*Kw* H * W。

Experiments

图像分类:

一种新的激活函数~Funnel Activation_第7张图片

目标检测

一种新的激活函数~Funnel Activation_第8张图片

作者在不同任务上使用Funnel ReLU和其他损失函数的对比。

 

你可能感兴趣的:(激活函数)