Non-local Neural Networks 2017 论文笔记

卡内基梅隆大学 FaceBook AI Research

自己的想法:

将经典计算机视觉中的non-local mean操作与自注意力统一起来, 这两种思想其实是有异曲同工之妙的。各种自注意力机制都是本文方法的特例,而本文的non-local 机制则是一种可泛化的基础网络模块,厉害。

这里有篇讲解non-local mean思想的文章:https://www.jianshu.com/p/a9771abedf50(大佬写的文章读起来就是清晰)

摘要

卷积操作和循环操作都在局部块上进行处理。论文提出的Non-Local operations 作为一个通用的构建基块操作,能够捕获长距离的依赖关系。该模块可以插入到许多计算机视觉架构中。在视频分类任务中,论文的Non-Local模型在 Kinetics and Charades 数据集上获得了SOTA的性能。在静态图像识别中能够提升模型在检测、分类、相机定位任务中的性能。

论文简介

深度神经网络的一个重点是捕获长距离依赖关系。对于序列数据主要方法是循环操作,而对于图像数据,主要通过深度带来的大感受野解决长距离依赖的建模问题。

卷积和循环操作都是在局部区域上进行,前者在空间而后者是在时间上。通过反复执行在数据中传播信号,捕获长距离依赖关系。但是这种重复的局部操作具有局限性:

  1. 计算效率低下
  2. 使得优化更新变得很难解决

针对以上问题,论文提出了基于计算机视觉中经典的non-local平均操作的泛化型方法,可以高效简单快速的捕获长距离依赖。直观地,non-local操作将某个位置的响应计算为输入特征中所有位置的加权和。位置集可以是在空间、时间或时空中,这意味着该操作适用于图像、序列和视频问题

这样做的好处是:

  1. 非局部运算通过计算任意两个位置之间的交集(不管它们的位置距离如何)直接捕获远程依赖关系;
  2. 计算快,使用更少的层就能到达最好的效果
  3. 保持了输入大小,且输出尺寸可变,可以很容易地与其他操作相结合

作者还在检测和分割、相机定位任务上进行了实验,non-local操作只要付出很小的计算代价就可以提高三项任务的准确性。实验表明,非局部操作通常是有用的,并且可以成为设计深层神经网络的基本构造块。

Non-local Neural Networks

首先介绍定义和公式,然后介绍一些实例

公式

在位置(空间或者时间、时空)i 处的non-local 输出为:
y i = 1 C ( x ) ∑ ∀ j f ( x i , x j ) g ( x j ) y_i = \frac{1}{C(x)}\sum_{\forall j}f(x_i,x_j)g(x_j) yi=C(x)1jf(xi,xj)g(xj)
x表示输入信号, j 表示所有与i 有可能有关系的位置。函数 f 计算输入信号中 i、j位置之间的关系,函数g 计算X_j的特征表达,第一项为归一化因子。

从公式可以看出non-local操作计算所有的j的可能位置,但是卷积和循环操作只在局部进行。

non-local操作又与全连接层不同,non-local中使用i、j 位置之间的关系 f ( x i , x j ) f(x_i,x_j) f(xi,xj)作为权重,而全连接层使用的是训练好的权重,也就是说全连接层没有把位置间的关系作为函数的输入。此外。全连接层要求输入的size是固定的,丢失了位置间的对应关系。

non-local 操作可以作为神经网络的基础模块应用在网络层的前面部分,而全连接层一般在网络的最后部分。这使得non-local 操作可以对丰富的局部以及全局结构信息进行建模。

实例化

这里介绍了几个不同版本的f和g函数,但是最后的实验证明模型对于函数的选择不敏感,说明模型性能的提升都是来自于其non-local操作。

首先定义g为线性函数: g ( x i ) = W g x j g(x_i) = W_g x_j g(xi)=Wgxj ,其中 W g W_g Wg是需要学习的权重,具体的使用1X1的卷积来实现

其次定义f函数,可以有不同的版本:

  • 根据non-local求平均以及双边滤波器的思想,首先想到高斯函数:
    f ( x i , x j ) = e x i T x j 归 一 化 因 子 : C ( x ) = ∑ ∀ j f ( x i , x j ) f(x_i,x_j)=e^{x_i^Tx_j} \\ 归一化因子:\quad C(x)=\sum_{\forall j}f(x_i,x_j) f(xi,xj)=exiTxj:C(x)=jf(xi,xj)

  • 对高斯函数进行扩展:Embedded Gaussian
    f ( x i , x j ) = e θ ( x i ) T ϕ ( x j ) θ ( x i ) = W θ x i , ϕ ( x j ) = W ϕ x j f(x_i,x_j)=e^{\theta(x_i)^T\phi(x_j)} \\ \theta(x_i) = W_{\theta}x_i,\quad \phi(x_j)=W_{\phi}x_j f(xi,xj)=eθ(xi)Tϕ(xj)θ(xi)=Wθxi,ϕ(xj)=Wϕxj
    作者指出self-attention模块本质上就是Embedded Gaussian,其f函数为softmax:

    f ( x i , x j ) = s o f t m a x ( x i T W θ T W ϕ x j ) f(x_i,x_j) = softmax(x_i^TW_{\theta}^TW_{\phi}x_j) f(xi,xj)=softmax(xiTWθTWϕxj).因此本文工作将经典计算机视觉中non-local平均的思想与自注意力模型统一了起来。

  • Embedded 点乘
    f ( x i . x j ) = θ ( x i ) T ϕ ( x j ) 归 一 化 因 子 C ( x ) = N f(x_i.x_j) = \theta(x_i)^T\phi(x_j)\\ 归一化因子\quad C(x)=N f(xi.xj)=θ(xi)Tϕ(xj)C(x)=N
    其中N表示x中的位置个数,而不是f的和,这样可以简化梯度的计算,并且使得输入尺寸可变成为可能。

  • Concatenation:该函数在关系推理网络中用到,引入了激活函数ReLU
    f ( x i , x j ) = R e L U ( w f T [ θ ( x i ) , ϕ ( x j ) ] ) 同 上 , C ( x ) = N f(x_i,x_j) =ReLU(w^T_f[\theta(x_i), \phi(x_j)])\\ 同上,\quad C(x) = N f(xi,xj)=ReLU(wfT[θ(xi),ϕ(xj)])C(x)=N
    中括号中表示“Concatenation”操作.

  • more …

Non-local Block

将实例化的f、g函数带入到公式中得到non-local 的输出y_i,然后得到non-local block:
z i = W z y i + x i z_i = W_zy_i + x_i zi=Wzyi+xi
公式中第二项是残差连接项,上面的做法的好处是可以随意嵌入到任何一个预训练好的网络中,因为只要设置W_z初始化为0,那么就没有任何影响,然后在迁移学习中学习新的权重。这样就不会因为引入了新的模块而导致预训练权重无法使用
在这里插入图片描述

基于non-local的视频分类模型:

Baseline: 2D ConvNet (C2D)

在这里插入图片描述

直接使用预训练的ResNet权重进行初始化。模型唯一涉及时间域的操作是池化层。换句话说,该模型简单聚合了时间维度的信息

Inflated 3D ConvNet (I3D):

将之前的2D模型中的卷积核进行“inflating”(膨胀)得到三维卷积模型。

对于残差块中的卷积核做两种不同的膨胀:

  1. 3×3膨胀为3×3×3,记为 I 3 D 3 × 3 × 3 I3D_{3×3×3} I3D3×3×3
  2. 第一个1×1的膨胀为3×1×1,记为 I 3 D 3 × 1 × 1 I3D_{3×1×1} I3D3×1×1

Non-local network

在之前的两个模型中分别插入非局部块,转换为non-local网络

实验内容

视频分类数据集上的实验:

消失实验:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像检测、分割、定位数据集上的实验

在这里插入图片描述

在这里插入图片描述

可以看出非局部模块对大多数任务都有提升作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值