34组--Non-local neural networks

                         Non-local  neural  networks

1. 背景:

    “Non-local”直译为“非局部”,意思是具有序列化的数据(比如视频、语音),进行特征提取时,当前输入数据的特征计算要考虑其它输入数据的信息。举例来说,非局部操作的关注点就是在于如何建立起图像上两个有一定距离的像素之间的联系,如何建立视频里两帧的联系,如何建立一段话中不同词的联系。

    一个典型的CNN网络是由一系列卷积操作累积起来的。对于使用在图像上的CNN,每个卷积操作只能捕捉到输入数据的局部信息。整个网络通过局部操作的逐步累积来获得范围较广的信息提取。而RNN则是通过循环的方式处理序列输入(如视频每一帧图像的时间序列或者图片上一列像素的空间序列),从而融合非局部的信息。CNN和RNN在融合非局部信息上的三个劣势:1.计算不高效;2.优化更难;3.非局部特征的信息传递不够灵活,建模困难。当然,这也是因为CNN和RNN的初衷并不是专门来融合非局部信息的。

    在这篇文章中,作者提出了一种非局部模块(non-local block, 简称NL block)的网络结构,来帮助深度网络更好地融合非局部的信息。文章主要受到NL-Means在图像去噪应用中的启发,在处理序列化的任务是考虑所有的特征点来进行加权计算,克服了CNN网络过于关注局部特征的缺点。图像去噪是非常基础也是非常必要的研究,去噪常常在更高级的图像处理之前进行,是图像处理的基础。图像中的噪声常常用高斯噪声N(μ,σ^2)来近似表示。 一个有效的去除高斯噪声的方式是图像求平均,对N幅相同的图像求平均的结果将使得高斯噪声的方差降低到原来的N分之一,现在效果比较好的去噪算法都是基于这一思想来进行算法设计。NL-Means的全称是:Non-Local Means,直译过来是非局部平均,在2005年由Baudes提出,该算法使用自然图像中普遍存在的冗余信息来去噪声。与常用的双线性滤波、中值滤波等利用图像局部信息来滤波不同的是,它利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。

2. 方法:

(1)非局部操作(Non-local operation)

    为了处理这些全局动作信息,文章借鉴NL-Means中利用整幅图去噪的思想。前面讲到 NL-Means利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,它的滤波过程可以用下面公式来表示:

在这个公式中,w(x,y)是一个权重,表示在原始图像中,像素 x和像素 y 的相似度。这个权重要大于0,同时,权重的和为1。

      类似的,该文章定义了一个用于处理当前动作点与全局所有信息关系的函数


这里x是输入信号,也是和x尺寸一样的输出信号,i代表时间空间上的输出位置索引,j代表全图中所有可能位置的枚举索引。函数f(x_i, x_j)计算位置i和j的权重。函数g用来计算j位置输入信号的一个表示。文章中的Non-Local操作就是考虑了图像中的所有可能位置j。


  回到这篇文章中。作者对f(.)有很多不同选择的定义方式。通过实验选定了名为Embedded Gaussain+Dot product的方案。对g(.)的定义是一个简单的线性函数。

                                            g(xj)=Wgxj

                                            f(xi,xj)=e(WΘxi)T(WΦxj)

                                            zi=Wzyi+xi

其中W均为待学习的参数,可以将其视为1x1卷积的参数。

(2)非局部模块(Non-local Block)

    文章中还定义了Non-local Block,也就是把前面的这种Non-local操作封装起来作为一个模块可以很方便的用在现有的框架中。


这里y_i就是公式(1)中的输出结果。“+x_i”表示残差连接。

       残差连接是何恺明在他的2016年CVPR较佳论文中提出的。这个残差连接使得我们可以将这个Non-local Block很方便的插入已有的预训练模型中,而不会破坏模型原有的操作 

上图是一个Non-local Block的例子。特征图尺寸为T×H×W×1024 也就是有 1024 个通道。 f函数采用的是公式3中的Embedded Gaussian。蓝色框表示1×1×1 的卷积操作,这种结构为512通道的“瓶颈”(bottleneck)结构。

3 实验:

        作者在视频分类、物体检测、物体实例分割这些很需要非局部信息关联的任务上进行了实验。得到的结论总结如下:

1:NL block中f(.)不同的定义方式各有千秋,但是为了更好化可视化使用embedded Gaussian+dot product,即上文提到的公式所示的方法。

2:位置

将Non-local block放在较浅的层效果好,放在较深的层效果不明显

3:加深Non-local block

对于浅层的网络结构,加深Non-local block能够提升性能;对于深层的网络结构,很难提升性能。

4:时空

Non-local block同时作用于时空域比单独作用于时域或空域效果要好。

5:与3D卷积网络对比

使用Non-local block的性能比3D卷积网络好。

4 :总结

    传统的卷积神经网络模型对于处理序列化的数据,获取远距离的依赖关系具有局限性。Non-local Neural Networks基于NLM的思想并结合了大量的NLP的技术方法,用来获取远距离的依赖关系进行视频的分类。对比一些传统的卷积网络方法,效果更好。

你可能感兴趣的:(34组--Non-local neural networks)