CMU & Facebook论文解读 | 非局部神经网络(附代码实现)

简介:

论文动机

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

一个典型的 CNN 网络是由一系列卷积操作累积起来的。对于使用在图像上的 CNN,每个卷积操作只能捕捉到输入数据的局部信息。整个网络通过局部操作的逐步累积来获得范围较广的信息提取。而 RNN 则是通过循环的方式处理序列输入(如视频每一帧图像的时间序列或者图片上一列像素的空间序列),从而融合非局部的信息。 

这篇文章提出三点 CNN 和 RNN 在融合非局部信息上的三个劣势:1. 计算不高效;2. 优化更难;3. 非局部特征的信息传递不够灵活,功能不够强大。当然,这也是因为 CNN 和 RNN 的初衷并不是专门来融合非局部信息的。 

在这篇文章中,作者提出了一种非局部模块(non-local block,简称 NL block)的网络结构,来帮助深度网络更好地融合非局部的信息。这对于一些问题是非常重要的。


方法

从使用在图像去噪问题中的 non-local means [1] 方法出发,作者对 NL block 的抽象描述为:


以图像为背景来说的话,i,j 是像素坐标,x,y 是输入和输出信息。j 的取值范围是任意的坐标。C(x) 是一个归一化常数。f(.) 是用来构建 i,j 点处信息关联的二输入函数。g(.) 是计算 j 点信息对i 点影响的单输入函数。 

这样的非局部操作其实很常见,从广义的角度来讲可以从多个已有的研究方向来理解这个操作。

首先这是从图像去噪中借鉴来的模型。除此之外,如果 f(.) 函数输出的是一个概率值,即 0~1 之间的数值,那么这就是前段时间有所讨论的 self-attention [2]。因为 (i,j) 二元坐标对取遍了所有情况,这个定义又很像 dense CRF [3],或者可以认为这也是一种图模型。 

回到这篇文章中。作者对 f(.) 有很多不同选择的定义方式。通过实验选定了名为 Embedded Gaussain+Dot product 的方案。对 g(.) 的定义是一个简单的线性函数。NL block 的输出并没有替代输入,而是和原输入相加,形成一个残差结构(residual),得到 Zi。


其中 W 均为待学习的参数,可以将其视为 1x1 卷积的参数。若,那么就是二阶的 softmax,即 CRF。 

f(.) 中所做的点积不同于 style transfer 中的协方差或者 bilinear 操作。后两者是把不同通道的特征图两两内积,空间信息完全抛弃,得到的结果是通道数 x 通道数大小的协方差矩阵。f(.) 的操作是每个点的特征向量(通道个数的维度)进行内积,空间信息保留了下来,输出还是 HxW 大小。 

整个 NL block 也可以从结构图来理解:


图中 T,H,W 代表输入特征的维度。其中 是对于视频数据的帧数,对于分割或检测任务,T=1

这里面作者还提到了一些小 trick 可以进一步压缩计算量。比如 1x1 的卷积压缩输出通道数,形成一个瓶颈结构(bottleneck)。或者在 f(.) 对应的 1x1 卷积之后使用 pooling 来减小 H,W,即采样一部分的 j ,而不是所有的 j 进行信息融合。 

可以看到,NL block 可以用作网络设计中的一个补充结构插入到 CNN 中任意的一层之后。因为使用的是 1x1 卷积,因此对输入特征没有尺寸限制。同时整个操作计算量相对较小,额外参数量也很少。

实验

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


其中在 Kinetics 数据集上进行了 ablation study,来仔细研究 NL block 各个细节的有效性。结果表格不再赘述,得到的结论总结如下: 

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

NL block 放入网络主干的位置:放在浅层好,高层提升作用下降。

NL block 变深的作用:对于主干网络较浅的网络,加深 NL block 能够提升性能。对于较大较深的网络,无论是增加 NL block 还是继续加深主干网络的深度都很难再提升性能。

对视频任务,NL block 同时作用于时空比单独作用于时间域或空间域要好。与 C3D 比较:比 C3D 又快又好。

在 COCO 数据库上的实验结果如下所示。鉴于 NL block 结构的易用性,在平时设计网络时可以考虑添加这样的模块。


参考文献

[1] A. Buades, B. Coll, and J.-M. Morel. A non-local algorithm for image denoising. In Computer Vision and Pattern Recognition (CVPR), 2005. 

[2] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser, and I. Polosukhin. Attention is all you need. In Neural Information Processing Systems (NIPS), 2017. 

[3] P. Krahenbuhl and V. Koltun. Efficient inference in fully connected crfs with gaussian edge potentials. In Neural Information Processing Systems (NIPS), 2011.


原文发布时间为:2018-02-7

本文作者:罗雅丹

本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”微信公众号

相关文章
|
3月前
|
机器学习/深度学习 资源调度 算法框架/工具
AI-ANNE: 将神经网络迁移到微控制器的深度探索——论文阅读
AI-ANNE框架探索将深度学习模型迁移至微控制器的可行路径,基于MicroPython在Raspberry Pi Pico上实现神经网络核心组件,支持本地化推理,推动TinyML在边缘设备中的应用。
200 10
|
3月前
|
机器学习/深度学习 边缘计算 算法
SEENN: 迈向时间脉冲早退神经网络——论文阅读
SEENN提出一种时间脉冲早退神经网络,通过自适应调整每个样本的推理时间步数,有效平衡脉冲神经网络的准确率与计算效率。该方法基于置信度判断或强化学习策略,在保证高精度的同时显著降低能耗与延迟,适用于边缘计算与实时处理场景。
176 13
|
3月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
398 1
|
7月前
|
人工智能 算法 异构计算
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
近日,阿里云基础网络技术5篇论文被NSDI 2025主会录用。研究涵盖大模型训练网络故障诊断、仿真、容器网络性能诊断、CDN流控算法智能选择及GPU解耦推理优化等领域。其中,《Evolution of Aegis》提出增强现有体系+训练过程感知的两阶段演进路线,显著降低故障诊断耗时;《SimAI》实现高精度大模型集群训练模拟;《Learning Production-Optimized Congestion Control Selection》通过AliCCS优化CDN拥塞控制;《Prism》设计全新GPU解耦推理方案;《ScalaCN》解决容器化RDMA场景性能问题。
298 7
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
|
7月前
|
canal 负载均衡 智能网卡
阿里云洛神云网络论文入选SIGCOMM'25主会,相关实习生岗位火热招聘中
阿里云飞天洛神云网络的两项核心技术Nezha和Hermes被SIGCOMM 2025主会录用。Nezha通过计算网络解耦实现vSwitch池化架构,大幅提升网络性能;Hermes则提出用户态引导I/O事件通知框架,优化L7负载均衡。这两项技术突破解决了云网络中的关键问题,展现了阿里云在网络领域的领先实力。
1103 2
|
9月前
|
前端开发 Java 关系型数据库
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
268 10
|
9月前
|
负载均衡 数据中心 芯片
NSDI'24 | 阿里云飞天洛神云网络论文解读——《LuoShen》揭秘新型融合网关 洛神云网关
NSDI'24 | 阿里云飞天洛神云网络论文解读——《LuoShen》揭秘新型融合网关 洛神云网关
289 0
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
337 0
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
204 2