论文分享[cvpr2018]Non-local Neural Networks非局部神经网络

论文 https://arxiv.org/abs/1711.07971

代码https://github.com/facebookresearch/video-nonlocal-net

 非局部神经网络

motivation:受计算机视觉中经典的非局部均值方法[4]的启发,非局部操作将位置的响应计算为所有位置的特征的加权和。

非局部均值方法 NLM(Non-local Means)滤波器是一种经典的图像去噪算法,基于图像中重复的局部结构,通过使用相似像素的加权平均来移除高斯噪声和其它噪声

NLM滤波器的基本思想是,在图像中寻找与当前像素周围区域的像素值相似的像素块,计算这些像素块与当前像素块之间的相似度。通过这些相似度计算权重,以这些块内的像素值作为两个像素点的相似性度量,对像素点进行加权平均,从而去除噪声。

核心思想:

 f 函数 计算xi 和和xi 有关的xj 的关系  (可以是相关性 ,自相关度)yi 输出信号

优越性与作用:捕获长距离依赖关系 如在图片中建立像素点与像素点 的关系 在视频中建立 帧与帧之间的联系,可以在计算机视觉领域其他任务的模型中插入非局部网络,而不需要其他复杂操作 达到比较好的效果,输入输出大小一致,即插即用

意义:CV 自注意力机制的核心文章,后面学者提出的注意力机制的模型 可以认为是本文特殊化的例子

摘要:

卷积和循环操作都是一次处理一个局部邻域的构建块。在本文中,我们将非局部操作作为通用构建块家族,用于捕获长距离依赖关系。受计算机视觉中经典的非局部均值方法[4]的启发,我们的非局部操作将位置响应的计算为所有位置的特征的加权和。这个构建块可以插入到许多计算机视觉架构中。在视频分类任务中,即使没有任何花里胡哨(without any bells and whistles),我们的非本地模型也可以在 Kinetics 和 Charades 数据集上竞争或优于当前的竞赛获胜者。在静态图像识别中,我们的非局部模型改进了COCO任务套件的目标检测/分割和姿态估计。

 位置响应是什么?当卷积核在图像上滑动并执行卷积操作时,它会与输入图像的不同区域进行加权求和,生成一个特征映射(Feature Map)。这个特征映射上的每个值都代表了卷积核对输入图像上相应位置的响应。在卷积神经网络中,位置响应是指卷积核对输入图像上不同位置的响应程度,它反映了输入图像中特定特征的存在和分布情况。

 1. 介绍

捕获远程依赖是深度神经网络的核心重要性。对于顺序数据(例如,在语音、语言中),循环操作 [38, 23] 是远程依赖建模的主要解决方案。对于图像数据,长距离依赖由卷积操作的深度堆栈形成的大感受野建模[14,30]。卷积和循环操作都处理局部邻域,无论是在空间还是时间;因此,只有当这些操作重复应用时,才能捕获长期依赖关系,从而通过数据逐步传播信号。重复本地操作有几个限制。首先,它的计算效率很低。其次,它会导致需要仔细解决的优化困难[23,21]。最后,这些挑战使得多跳依赖建模,例如,当需要在遥远的位置之间来回传递消息时困难。在本文中,我们提出了非局部操作作为一种有效的、简单和通用的组件,用于使用深度神经网络捕获远程依赖关系。我们提出的非局部操作是在计算机视觉中经典非局部均值运算[4]的推广。直观地说,非本地操作计算位置的响应为输入特征图中所有位置的特征的加权和(图 1)。位置集可以在空间、时间或时空中,这意味着我们的操作适用于图像、序列和视频问题。

使用非局部操作有几个优点:(a)与循环和卷积操作的渐进行为相比,非局部操作通过计算任意两个位置之间的交互直接捕获长期依赖关系,而不管它们的位置距离如何; (b) 正如我们在实验中所展示的,非本地操作是有效的,即使只有几个层(例如 5); (c) 最后,我们的非本地操作支持可变输入大小,并且可以很容易地与其他操作(例如,我们将使用的卷积)结合使用

我们展示了非局部操作在视频分类应用中的有效性。在视频中,远程交互发生在空间中的远距离像素和时间之间。单个非局部块作为我们的基本单元,可以直接以前馈方式捕获这些时空依赖关系。在一些非局部块的情况下,我们称为非局部神经网络的架构比 2D 和 3D 卷积网络 [48](包括膨胀的变体 [7])更准确地用于视频分类。此外,非局部神经网络比 3D 卷积神经网络在计算上更经济。在Kinetics[27]和Charades[44]数据集上进行了全面的消融研究。仅使用 RGB 且没有任何花里胡哨(例如光流、多尺度测试),我们的方法在两个数据集上都取得了与最新比赛获胜者相当或更好的结果。

为了证明非局部操作的普遍性,我们进一步在COCO数据集上进行了目标检测/分割和姿态估计实验[33]。在强Mask R-CNN基线的基础上[19],我们的非局部块可以以很小的额外计算成本提高所有三个任务的准确性。结合视频上的证据,这些图像实验表明非局部操作通常是有用的,可以成为设计深度神经网络的基本组成部分。

2. Related Work略 

3. Non-local Neural Networks

3.1. 公式化

遵循非局部均值运算[4],我们在深度神经网络中定义一个通用的非局部运算为:

这里 i 是要计算响应的输出位置(在空间、时间或时空中)的索引,。x 是输入信号(图像、序列、视频;通常它们的特征),yi 是与 x 相同大小的输出信号。成对函数 f 计算 i 和所有 j 之间的标量(表示关系,例如亲和力)一元函数 g 计算位置 j 处输入信号的表示响应由因子 C(x) 归一化。等式(1)中的非局部行为是由于操作中考虑了所有位置(∀j)。作为比较,卷积操作将局部邻域中的加权输入(例如,内核大小为 3 的 1D 情况下 i-1 ≤ j ≤ i + 1)和时间的一次循环操作相加,通常基于当前和最新的时间步长

非本地操作也与全连接 (fc) 层不同。等式(1)基于不同位置的关系计算响应,而 fc 使用学习的权重。换句话说,与非局部层不同,xj 和 xi 之间的关系不是 fc 中输入数据的函数。此外,我们在等式(1)中的公式支持可变大小的输入,并在输出中保持相应的大小。相反,fc 层需要固定大小的输入/输出并丢失位置对应关系(例如,从 xi 到 yi 在位置 i)。非本地操作是一个灵活的构建块,可以很容易地与卷积/循环层一起使用。它可以添加到深度神经网络的早期部分,不像最终经常使用的 fc 层。这使我们能够构建一个更丰富的层次结构,它结合了非本地和本地信息。

3.2.实例化

接下来我们描述 f 和 g 的几个版本。有趣的是,我们将通过实验(表 2a)证明我们的非本地模型对这些选择不敏感(对f和g 函数不敏感),这表明通用非本地行为是观察到的改进的主要原因。为简单起见,我们只考虑线性嵌入形式的 g:g(xj ) = Wg xj ,其中 Wg 是要学习的权重矩阵。这被实现为,例如空间中的 1×1 卷积或时空中的 1×1×1 卷积。接下来我们讨论成对函数 f 的选择。1.高斯。遵循非局部均值[4]和双边滤波器[47],f的自然选择是高斯函数。在本文中,我们考虑:

这里 xT i xj 是点积相似度。[4,47]中使用的欧几里得距离也适用,但点积在现代深度学习平台中更易于实现。归一化因子设置为 C(x) = ∑∀j f (xi, xj )

2.嵌入式高斯。高斯函数的一个简单扩展是计算嵌入空间中的相似度。在本文中,我们考虑:f (xi, xj) = eθ(xi)T φ(xj)。(3) 这里 θ(xi) = Wθ xi 和 φ(xj ) = Wφxj 是两个嵌入。如上所述,我们设置 C(x) = ∑∀j f (xi, xj)。我们注意到,最近提出的用于机器翻译的自注意力模块 [49] 是嵌入式高斯版本中非局部操作的一个特例。这可以从这样一个事实看出,对于给定的 i,成为沿维度 j 的 softmax 计算(这就是为什么现在很多计算通道注意力或者空间注意力用softmax 操作 原来不是计算得分,而是代表的f 函数)所以我们有

 图一

 

 这是[49] attention is all you need 中的自我注意形式。因此,我们的工作通过将最近的自我注意模型与非局部均值[4]的经典计算机视觉方法相结合来提供洞察力,并将[49]中的顺序自我注意网络扩展到计算机视觉中用于图像/视频识别的通用空间/时空非局部网络。尽管与 [49] 有关,但我们表明注意力行为(由于 softmax)在我们研究的应用程序中并不重要(也就是说f 函数是什么不重要,重要的是非局部这个操作。为了证明这一点,我们接下来描述了非本地操作的两个替代版本。——点积和Concatenation    实验结果相差不大

 

3.3. Non-local Block

我们将式(1)中的非本地操作包装成一个非本地块,可以合并到许多现有的体系结构中。我们将非局部块定义为:zi = Wz yi + xi,(6),其中yi在Eq.(1)中给出,“+xi”表示残差连接[21]。残差连接允许我们在任何预训练模型中插入一个新的非局部块,而不会破坏其初始行为(例如,如果 Wz 初始化为零)。图2显示了一个示例非本地块。式(2)、(3)或(4)中的两两计算可以简单地通过矩阵乘法来完成,如图2所示;(5)中的拼接版本很简单。当非局部块用于高级子采样特征图时,其成对计算是轻量级的。例如,图 2 中的典型值是 T = 4、H = W = 14 或 7。矩阵乘法所做的成对计算与标准网络中的典型卷积层相当。我们进一步采用了以下实现,使其更高效。

非本地块的实现。我们将 Wg 、 Wθ 和 Wφ 表示的通道数设置为 x 中通道数的一半。这遵循 [21] 的瓶颈设计,并将块的计算减少了大约一半。式(6)中的权重矩阵Wz计算yi上的位置嵌入,将通道数与x的通道数匹配。参见图2。子采样技巧可用于进一步减少计算。我们将等式(1)修改为:yi =1C(^x)∑∀j f (xi, ^xj )g(^xj ),其中 ^x 是 x 的子采样版本(例如,通过池化)。我们在空间域中执行此操作,可以将成对计算量减少 1/4。这个技巧不会改变非局部行为,但只会使计算更稀疏。这可以通过在图 2 中的 φ 和 g 之后添加一个最大池化层来完成。我们对本文研究的所有非本地块使用这些有效的修改。

4. 视频分类模型

为了理解非本地网络的行为,我们对视频分类任务进行了全面的消融实验。首先,我们描述了该任务的基线网络架构,然后将它们扩展到 3D ConvNets [48, 7] 和我们提出的非本地网络。

2D ConvNet 基线 (C2D)。为了隔离我们的非本地网络与3D ConvNets的时间效应,我们构建了一个简单的 2D 基线架构,其中时间维度被简单地解决(即,仅通过池化)。表 1 显示了我们在 ResNet-50 主干下的 C2D 基线。输入视频剪辑有 32 帧,每个帧有 224×224 像素。表 1 中的所有卷积本质上都是 2D 内核,它逐帧处理输入帧(实现为 1×k×k 内核)。该模型可以直接从 ImageNet 上预训练的 ResNet 权重初始化。ResNet-101 对应物以相同的方式构建。涉及时间域的唯一操作是池化层。换句话说,该基线简单地聚合时间信息。

膨胀的3D ConvNet (I3D)。如 [13, 7] 中所做的那样,可以通过“膨胀”内核将表 1 中的 C2D 模型转换为 3D 卷积对应物。例如,2Dk×k 内核可以膨胀为跨越帧的三维 t×k×k 内核。这个内核可以从 2D 模型初始化(在 ImageNet 上预训练):t×k×kkernel 中的每个 t 个平面都由预训练的 k×k 权重初始化,重新缩放 1/t。如果视频由随时间重复的单个静态帧组成,则此初始化产生的结果与在静态帧上运行的 2D 预训练模型相同。我们研究了两种情况膨胀:我们可以将残差块中的 3×3 内核膨胀为 3×3×3(类似于 [7]),或者残差块中的第一个 1×1 内核膨胀为 3×1×1(类似于 [13])。我们将这些表示为 I3D3×3×3 和 I3D3×1×1。由于 3D 卷积的计算量很大,我们只为每个 2 个残差块膨胀一个内核;膨胀更多的层显示出递减的回报。我们将conv1膨胀为5×7×7。[7]的作者表明,I3D模型比CNN+LSTM模型更准确。

Non-local network。我们将非本地块插入到 C2D 或 I3D 中,将它们转换为非局部网络。

图 3. res3 中非局部块的行为示例,由在 Kinetics 上训练的 5 块非局部模型计算。这些示例来自保留的验证视频。箭头的起点代表一个xi,终点代表xj。可视化每个xi的20个最高加权箭头。4帧来自 32 帧输入,步长为 8 帧。这些可视化显示了模型如何找到相关线索来支持其预测。

学习视频CVPR2018——Non-local Neural Networks 经典论文分享 Non-local机制 注意力机制_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python实现Chiikawa

写在前面 哈?呀哈!本期小编给大家素描版Chiikawa! 主人公当然是我们可爱的吉伊、小八以及乌萨奇啦~ Chiikawa小小可爱 《Chiikawa》是一部来自日本的超萌治愈系漫画与动画作品,由作者秋田祯信创作。"Chiikawa"这个名字…

【Kolmogorov-Arnold网络 替代多层感知机MLPs】KAN: Kolmogorov-Arnold Networks

KAN: Kolmogorov-Arnold Networks 论文地址 代码地址 知乎上的讨论(看一下评论区更正) Abstract Inspired by the Kolmogorov-Arnold representation theorem, we propose Kolmogorov-Arnold Networks (KANs) as promising alternatives to Multi-Layer…

支持LLM的Markdown笔记;ComfyUI-HiDiffusion图片生成和对图像进行高质量编辑

✨ 1: ComfyUI-HiDiffusion ComfyUI-HiDiffusion是一个为HiDiffusion技术使用而定制的节点。HiDiffusion技术是专门用于在计算机视觉和图像处理中生成和改进图片质量的先进算法。该技术通常应用于图像的超分辨率、去噪、风格转换等方面。 ComfyUI-HiDiffusion的主要特点包含提…

Julia 语言环境安装与使用

1、Julia 语言环境安装 安装教程:https://www.runoob.com/julia/julia-environment.html Julia 安装包下载地址为:https://julialang.org/downloads/。 安装步骤:注意(勾选 Add Julia To PATH 自动将 Julia 添加到环境变量&…

(五)JSP教程——response对象

response对象主要用于动态响应客户端请求(request),然后将JSP处理后的结果返回给客户端浏览器。JSP容器根据客户端的请求建立一个默认的response对象,然后使用response对象动态地创建Web页面、改变HTTP标头、返回服务器端地状态码…

C++string续

一.find_first_of与find 相同:都是从string里面找字符,传参格式一样(都可以从某个位置开始找) 不同:find_first_of只能找字符,find可以找字符串 find_first_of参数里面的string与char*是每个字符的集合,指找出string…

ETL工具中JSON格式的转换方式

JSON的用处 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,其设计初衷是为了提升网络应用中数据的传输效率及简化数据结构的解析过程。自其诞生以来,JSON 已成为Web开发乃至众多软件开发领域中不可或缺的一部分&a…

【大模型认识】警惕AI幻觉,利用插件+微调来增强GPT模型

文章目录 一. 大模型的局限1. 大模型不会计算2. 甚至明目张胆的欺骗 二. 使用插件和微调来增强GPT模型1. 模型的局限性2. 插件来增强大模型的能力3. 微调技术-提高特定任务的准确性 一. 大模型的局限 1. 大模型不会计算 LLM根据给定的输入提示词逐个预测下一个词(…

Leaflet在WGS84 Web墨卡托投影与WGS84经纬度投影下空间信息变形问题及修正-以圆为例

目录 前言 一、投影的相关知识 1、经纬度投影 2、Web墨卡托投影 二、经纬度投影下的空间信息展示 1、空间信息展示 2、效果展示 3、经纬度投影下的圆修正 三、Web墨卡托投影下空间信息展示 1、底图引用 2、自定义生成圆 总结 前言 在GIS的知识海洋中,对…

Redis集群分片

什么是集群 集群是由多个复制集组成的,能提供在多个redis节点间共享数据的程序集 简而言之就是将原来的单master主机拆分为多个master主机,将整个数据集分配到各主机上 集群的作用 集群中可以存在多个master,而每个master可以挂载多个slave自带哨兵的故障转移机制,不需要再去…

【Android】源码解析Activity的结构分析

源码解析Activity的结构分析 目录 1、Activity、View、Window有什么关联?2、Activity的结构构建流程3 源码解析Activity的构成 3.1 Activity的Attach方法3.2 Activity的OnCreate 4、WindowManager与View的关系总结 1、一个Activity对应几个WindowManage&#xff0…

【论文阅读笔记】关于“二进制函数相似性检测”的调研(Security 22)

个人博客链接 注:部分内容参考自GPT生成的内容 [Security 22] 关于”二进制函数相似性检测“的调研(个人阅读笔记) 论文:《How Machine Learning Is Solving the Binary Function Similarity Problem》(Usenix Securi…

C++ 模拟实现 priority_queue(优先队列)

目录 一,优先队列简介 二,priority_queue 的内部实现原理 三,模拟实现 priority_queue 1,模板参数与数据结构 2,构造 3,辅助功能(堆的有序化,建立堆) 4&#xff0…

嵌入式学习69-C++(Opencv)

知识零碎: QT的两种编译模式 1.debug 调试模式 …

springboot整合rabbitmq的不同工作模式详解

前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

泛微E9开发 选择项目类型,自动带出该类项目的预计金额(即下拉框联动浮点型数据)

1、功能背景 在用户进行项目类型选择时,自动带出其余的标准数据(样例中的预计金额),如对员工进行表彰奖励时,不同的表彰有不同的奖励金额,那么我们就可以使用以下的方式来进行操作。 2、展示效果 3、实现…

WiFine通信与Wi-sun通信对比

调制速率 WiFine通信:(G)FSK 50Kbps~500Kbps ;LoRa 5Kbps~37.5Kbps Wi-Sun通信:(G)FSK 50Kbps~300Kbps ;QPSK/OFDM 计划中… 2、协议简介 WiFine通信:为低成本、低功耗、移动设备倾力打造 的轻量级、分布式无线移动…

英语新概念2-回译法-lesson13

The Greenwood Boys 绿林少年是一组流行歌手们。现在他们正在参观城市里的所有公园,他们明天就要到这。他们将坐火车到并且大多数小镇上的年轻人将要欢迎他们,明天晚上他们将要在工人俱乐部唱歌。绿林少年将在这待五天,在这期间,…

我独自升级崛起加速器推荐 我独自升级免费加速器

近期,《我独自升级》这部动画凭借爆棚的人气,在各大平台上掀起了一阵观看热潮,其影响力不容小觑。借此时机,韩国游戏巨头网石集团敏捷响应,顺势推出了同名游戏《我独自升级:ARISE》,为粉丝们搭建…

如何让vim支持python3

首先删除旧的vim。 sudo apt-get remove vim //输入re按下tab直接显示remove sudo apt-get remove vim-runtime sudo apt-get remove vim -tiny sudo apt-get remove vim-common 然后下载vim8源码: git clone https://github.com/vim/vim.git 进行编译安装…
最新文章