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

简介:

论文动机

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

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

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

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

c28f20e3019551048743f7b4403c5a5f4c591c12

方法

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

d7ed833f2ec390758500b4b47830c2ae4fd8f33e

以图像为背景来说的话,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。

9bb481cee07d73df607ba553cae11fc349ab81b0

其中 W 均为待学习的参数,可以将其视为 1x1 卷积的参数。若640?tp=webp&wxfrom=5&wx_lazy=1,那么640?tp=webp&wxfrom=5&wx_lazy=1就是二阶的 softmax,即 CRF。 

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

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

a96809d6412431722da01d4dffbacb838fe2cef5

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

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

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

实验

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

b0b437c788d9da5622667798562cc9bb48382efb

其中在 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 结构的易用性,在平时设计网络时可以考虑添加这样的模块。

8ad3a7fa20b973d6fc49942f36608e521b385e1a

参考文献

[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”微信公众号

相关文章
|
5月前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】MobileViT 更换主干网络: 轻量级、通用且适合移动设备的视觉变压器 (论文笔记+引入代码)
MobileViT是针对移动设备的轻量级视觉Transformer网络,结合CNN的局部特征、Transformer的全局注意力和ViT的表示学习。在ImageNet-1k上,它以600万参数实现78.4%的top-1准确率,超越MobileNetv3和DeiT。MobileViT不仅适用于图像分类,还在目标检测等任务中表现出色,且优化简单,代码已开源。YOLOv8引入了MobileViT块,整合卷积和Transformer结构,提升模型性能。更多详情可参考相关专栏和链接。
|
2月前
|
机器学习/深度学习 算法 网络架构
神经网络架构殊途同归?ICML 2024论文:模型不同,但学习内容相同
【8月更文挑战第3天】《神经语言模型的缩放定律》由OpenAI研究人员完成并在ICML 2024发表。研究揭示了模型性能与大小、数据集及计算资源间的幂律关系,表明增大任一资源均可预测地提升性能。此外,论文指出模型宽度与深度对性能影响较小,较大模型在更多数据上训练能更好泛化,且能高效利用计算资源。研究提供了训练策略建议,对于神经语言模型优化意义重大,但也存在局限性,需进一步探索。论文链接:[https://arxiv.org/abs/2001.08361]。
35 1
|
2月前
|
人工智能 算法 安全
【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 赛后总结之31页论文及代码
本文总结了2023年第十三届MathorCup高校数学建模挑战赛C题的解题过程,详细阐述了电商物流网络在面临突发事件时的包裹应急调运与结构优化问题,提出了基于时间序列预测、多目标优化、遗传算法和重要性评价模型的综合解决方案,并提供了相应的31页论文和代码实现。
64 0
|
5月前
|
机器学习/深度学习 自然语言处理 搜索推荐
【传知代码】图神经网络长对话理解-论文复现
在ACL2023会议上发表的论文《使用带有辅助跨模态交互的关系时态图神经网络进行对话理解》提出了一种新方法,名为correct,用于多模态情感识别。correct框架通过全局和局部上下文信息捕捉对话情感,同时有效处理跨模态交互和时间依赖。模型利用图神经网络结构,通过构建图来表示对话中的交互和时间关系,提高了情感预测的准确性。在IEMOCAP和CMU-MOSEI数据集上的实验结果证明了correct的有效性。源码和更多细节可在文章链接提供的附件中获取。
【传知代码】图神经网络长对话理解-论文复现
|
5月前
|
计算机视觉
【YOLOv8改进】 AFPN :渐进特征金字塔网络 (论文笔记+引入代码).md
YOLO目标检测专栏介绍了YOLO的有效改进和实战案例,包括AFPN——一种解决特征金字塔网络信息丢失问题的新方法。AFPN通过非相邻层直接融合和自适应空间融合处理多尺度特征,提高检测性能。此外,还展示了YOLOv8中引入的MPDIoU和ASFF模块的代码实现。详情可参考提供的专栏链接。
|
4月前
|
Web App开发 自然语言处理 算法
一文搞懂:【论文笔记】BINE:二分网络嵌入
一文搞懂:【论文笔记】BINE:二分网络嵌入
35 0
|
5月前
|
机器学习/深度学习 存储 测试技术
【YOLOv8改进】 YOLOv8 更换骨干网络之 GhostNet :通过低成本操作获得更多特征 (论文笔记+引入代码).md
YOLO目标检测专栏探讨了卷积神经网络的创新改进,如Ghost模块,它通过低成本运算生成更多特征图,降低资源消耗,适用于嵌入式设备。GhostNet利用Ghost模块实现轻量级架构,性能超越MobileNetV3。此外,文章还介绍了SegNeXt,一个高效卷积注意力网络,提升语义分割性能,参数少但效果优于EfficientNet-L2。专栏提供YOLO相关基础解析、改进方法和实战案例。
|
5月前
|
机器学习/深度学习 监控 自动驾驶
【传知代码】从零开始搭建图像去雾神经网络-论文复现
本文介绍了基于集成学习的双分支非均匀去雾神经网络的复现,该网络由迁移学习子网和数据拟合子网组成,分别处理全局表示和数据拟合。网络使用Res2Net作为编码器,并结合通道和像素注意力模块。代码可在提供的链接下载。网络在交通监控、自动驾驶、航海和目标跟踪等领域有广泛应用,通过提升图像质量来提高系统性能。实验在O-Haze、I-Haze和NH-Haze数据集上进行,展示了网络在去除雾霾方面的效果,尽管存在细节模糊和色彩饱和度低的问题。
129 1
|
5月前
|
机器学习/深度学习 数据可视化 计算机视觉
【YOLOv8改进】MCA:用于图像识别的深度卷积神经网络中的多维协作注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的创新改进和实战案例,包括多维协作注意力(MCA)机制,它通过三分支架构同时处理通道、高度和宽度注意力,提高CNN性能。MCA设计了自适应组合和门控机制,增强特征表示,且保持轻量化。该模块适用于各种CNN,实验证明其在图像识别任务上的优越性。此外,文章还展示了如何在YOLOv8中引入MCA层的代码实现和相关任务配置。
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 YOLOv8 更换骨干网络之GhostNetV2 长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了轻量级CNNs和注意力机制在移动设备上的应用。文章提出了一种名为GhostNetV2的新架构,结合了硬件友好的DFC注意力机制,强化了特征表达能力和全局信息捕获,同时保持低计算成本和高效推理。GhostNetV2在ImageNet上以167M FLOPs达到75.3%的top-1准确率,优于同类模型。创新点包括DFC注意力、模型结构优化和效率提升。源代码可在GitHub和MindSpore平台上找到。此外,还提到了YOLOv8的相关实现和任务配置。