zoukankan      html  css  js  c++  java
  • Non-local Neural Networks

    Non-local Neural Networks

    2020-03-05 20:24:39

    PaperCVPR_2018 

    Codehttps://github.com/facebookresearch/video-nonlocal-net (Caffe2 version) 

    https://github.com/AlexHex7/Non-local_pytorch (PyTorch version) 

    博文推荐:CV中的Attention机制 | Non-Local Network的理解与实现 

     

     

    1. Background and Motivation

    为了捕获长期的依赖关系,常规操作是进行卷积操作的堆叠。卷积或者循环操作只能是对空间或者时间上进行 local 的操作,但是这种 local 操作有如下的局限性:1). 计算并不算高效;2). 需要仔细处理优化问题;3). 这使得 multi-hop dependency modeling difficult。所以,本文提出了一种 non-local 的操作作为一种有效的,简单的,并且 generic 的成分来捕获神经网络中长期依赖的问题。直观的来说,non-local operation 通过如下的方式计算一个位置的响应:as a weighted sum of the features at all positions in the input feature maps,如图 1 所示。位置的集合可以是 space,time 或者 spacetime,表明 non-local operation 适应于 image,sequence,以及 video problems。利用 non-local operations 可以有如下的几点优势:

    1). 相比较于常规 CNN/RNN 的渐进式的行为,non-local operation 直接通过计算任意两个位置之间的交互就可以捕获长期的依赖,而不用管他们的位置距离。

    2). 如实验中所证明的,non-local operation 执行效率是较高的,即使只用几层,也可以得到最好的效果;

    3). non-local operation 保持了可变大小的输入,并且可以很简单的和其他操作进行结合,例如本文用到的卷积操作。

    本文在视频分类任务上验证了 non-local operation 的有效性。此外,还在 object detection/segmentation 和  pose estimation  任务上验证了本文方法的 generality。

     

    2. Non-local Neural Networks

    我们首先给出了 non-local operation 的定义,然后提供了几种特定的实现版本。

    2.1. Formulation

    服从前人的工作,本文定义了如下的神经网络中的 generic non-local operation 如下:

    此处,i 是要计算响应的位置索引,j 是枚举所有可能的位置索引。x 是输入信号,可以是 image,sequence,video,或者 是他们的 feature;y 是 和 x 同样大小的输出信号。 f 是用于计算 i 和 j 之间的关系。一元函数 g 计算了输入信号在位置 j 的表示。该影响通过一个常数进行归一化 C(x)。

     

    在公式 1 中的 non-local behavior 是因为所有位置都在这个操作中考虑到了。作为对比,常规的卷积操作仅仅对 local neighborhood 进行加权求和,循环操作在时刻 t 仅仅考虑到当前时刻和前一个时刻。

     

    non-local operation 跟常规的 fc layer 还是不一样的。公式 1 在不同的位置计算响应,而 fc 利用了学习到的权重。换句话说,xj 和 xi 之间的关系,并非是输入数据输入到 fc 中。此外,公式 1 也支持 variable sizes,并且保持了对应的大小的输出。而 fc 要求是固定大小的输入和输出,并且丢失了位置之间的对应关系。

     

    2.2. Instantiations

    接下来,文章介绍了几种 f 和 g 的版本,作者的实验表明,non-local 模型对这些东西并不敏感,表明 generic non-local behavior 是得到提升的主要原因。为了简单起见,本文仅考虑 g 是线性变换:$g(x_j) = W_g X_j$,其中,$W_g$ 是可学习的权重矩阵。然后主要讨论了 pairwise function f 的几种选择:

    2.3. Non-Local Block

    作者定义 non-local block 如下:

    其中,yi 是公式 1 中所示,“+xi” 表示残差连接。该残差连接允许我们加入一个新的 non-local block 到任何预训练的模型,而不改变其原始的行为。如图 2 所示,作者给出了一种示例。

     

    3. Experiment

     

      

  • 相关阅读:
    Uva11235
    Uva11300/BZOJ1045/BZOJ1465/BZOJ3292
    树形背包模板
    Miller-Rabin素性测试
    BZOJ1500 : [NOI2005]维修数列-fhq_Treap
    COGS2421 [HZOI 2016]简单的Treap
    用 fhq_Treap 实现可持久化平衡树
    hdu 1010(DFS) 骨头的诱惑
    hdu 1026(BFS+输出路径) 我要和怪兽决斗
    hdu 1072(BFS) 有炸弹
  • 原文地址:https://www.cnblogs.com/wangxiaocvpr/p/12422490.html
Copyright © 2011-2022 走看看