搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
盐析白兔
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
【Git】(基础篇四)—— GitHub使用
2
AIGC时代算法工程师的面试秘籍(2024.6.24-7.7第十七式) |【三年面试五年模拟】
3
Java中如何使用SQLite数据库_java sqlite
4
MySQL创建用户与授权_mysql 创建用户并授权
5
A星算法实现带电机器人取送货路径规划附matlab代码_酒店送货机器人算法
6
WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档_web项目在线编辑office文件
7
CmakeLists关于指定路径加载Opencv版本_cmakelists制定openvino路经
8
Git小乌龟合并代码_git小乌龟怎么合并代码
9
docker改容器IP的两种方法_docker 修改容器ip
10
MySQl事务隔离级别(命令及简单理解)
当前位置:
article
> 正文
non-local神经网络:通过非局部操作解决深度神经网络核心问题
作者:盐析白兔 | 2024-07-20 05:36:42
赞
踩
non-local的技术点
译者 | 李杰
出品 | AI科技大本营(ID:rgznai100)
回想一下我们熟悉的CNN、RNN。如下图所示,这些神经网络模型都是基于局部区域进行操作,属于local operations。为了获得长距离依赖,也就是图像中非相邻像素点之间的关系,本文另辟蹊径,提出利用non-local operations构建non-local神经网络。
经典RNN,CNN网络结构
受计算机视觉中经典的非局部均值方法启发,作者的非局部操作是将所有位置对一个位置的特征加权和作为该位置的响应值。这种非局部操作可以应用于多种计算机视觉框架中,在视频分类、目标分类、识别、分割等等任务上,都有很好的表现。
简介
捕捉长距离依赖关系是深度神经网络的核心问题。以图像数据为例,要想捕捉长距离依赖,通常的做法是堆积卷积层,随着层数的加深,感受野越来越大,就能把原先非相邻的像素点纳入到一个整体考虑,获取的信息分布广度也越来越高。这种靠堆叠卷积层得到的感受野提升,需要不断重复卷积过程,而这种重复会带来几个弊端:首先,计算效率很低,层的加深意味着更多的参数,更复杂的关系;其次,优化困难,需要谨慎设计优化过程;最后,建模困难,尤其是对于那些多级依赖项,需要在不同距离位置传递信息。
在这篇论文中,作者将非局部操作作为一种简洁高效且通用的组件,用于捕获深度神经网络的中的长距离依赖关系。具体的 non-local operation是受到计算机视觉中经典的非局部平均操作(non-localmean operation)启发,如下图所示,non-local operations在计算某个位置Xi Xi 的响应时,是考虑所有位置features的加权——所有位置可以是空间的,时间的,时空的,这意味着non-localoperations适用于图像、序列和视频问题。
那么利用non-local operations有什么优点呢?
(a)与递归操作和卷积操作的渐进行为不同,non-localoperations通过计算任意两个位置之间的交互直接捕捉远程依赖,而不用局限于相邻点,摒弃了距离的概念。
(b)作者通过实验表明,在层数很少的情况下,non-localoperations都能取得非常好的性能表现。
(c)non-local可以作为一个组件,和其它网络结构结合。
在视频分类中,non-local operations可以发挥很好的效果。在视频中,长距离的相互作用发生在空间和时间中有距离的像素之间,一个单独的non-local块,可以用前向传播的方式直接捕获这些时空依赖关系。
背景知识
Non-local image processing
前文说过,
non-local operations受到了计算机视觉中经典的非局部均值方法的启发,所以有必要说一下非局部均值方法。
非局部均值(
non-local means)
是经典滤波算法,通过计算图像中所有像素的加权平均值实现过滤。 它的目的是使用与当前点纹理类似的区域,对当前点加权。也即加权因子,是基于被加权点与当前点的邻域的相似性产生,该算法首先选取两个window,分别为相似窗和搜索窗,相似窗被选取用于比较两个像素的相似性,搜索窗被选择用于确定计算相似像素的范围即:
如下图所示,I是一个较大范围的搜索/加权框,w(x,y)是依赖邻域(黑灰色部分)算出的权重
*
如果想了解更多关于non-local means的知识,可参考下列文章:
https://blog.csdn.net/qianhen123/article/details/81043217blog.csdn.net
Non-local Neural Networks
1.通用表示
受到
non-local means的启发,本文提出了关于non-localoperations的通用表示,公式如下所示:
其中, x 是输入信号(图片,队列,视频,通常是特征),i 是输出位置(在空间、时间或时空中)的索引,它的响应值是通过j枚举所有可能位置来计算的。函数 f 计算 i 和所有 j 之间的相似关系,一元函数 g 计算输入信号在位置 j 的表示。最终的响应值通过响应因子 C(x) 进行标准化处理得到。
在上式中,图像中的每一个位置 j 都被考虑到。与之相对应的,我们可以考虑一下卷积的过程,一个3x3的卷积核,能覆盖到的位置只是位置 j 的相邻点,只能在相邻局部进行操作;我们再对比一下全连接过程,有以下几点不同:
(1)在non-localoperation的公式中,响应值是通过计算不同区域之间的关系得到的,而在全连接层中,是通过赋给每个神经元一个学到的权重。换而言之,在全连接层中,Xi 和 Xj 的关系不能通过一个函数 f 得到。
(2)non-local公式支持可变大小的输入,并在输出中保持相应的大小,在全连接层中,要求固定大小的输入和输出,并且由于被拉伸成一列,丢失了原有的位置信息。
(3)在与CNN结合位置来看,non-local operation非常灵活,可以添加到深度神经网络中的前半部分,而全连接层通常被用在最后,这既是一个不同,也给了我们一个启发:能够构建一个更丰富的层次结构,将非本地信息和本地信息结合起来。
神经网络中的全连接层
2. f
f
和 g 的实例化
本小节将会介绍一个non-local operation公式中的函数f 和 g 的具体形式表示。
为了简洁表示,可以把 g 看做是一个线性转化,其中:
其中, Wg 是需要学习的权重矩阵,可以通过空间上的1x1卷积实现(本文只考虑CNN,不过多探讨RNN)
接下来讨论成对函数 f 的形式:
Gaussian
f函数的功能主要是相似度计算和度量,一个通常的想法是利用点积衡量相似度(dot-product similarity),为什么点积可以衡量相似度呢,这可以通过余弦相似度公式简化而来,余弦相似度计算下式所示,
如果我们只用点积,相当于减少了计算量和计算复杂度,而且还能达到类似的效果。
那么, f 函数可以用高斯函数表示如下:
那么此时归一化因子 C(x)可以设置为:
Embedded Gaussian
基于高斯函数的一个简单扩展,是计算嵌入空间中的相似度,即:
其中,θ和φ是两个嵌入,embedding会构建一个映射,将一个空间里的实体抛射到一个线性向量空间里去,这样一来可以在向量空间里计算度量它们的距离,可以表示为:
相应的,归一化因子 C(x)可以表示为:
*Embedded Gaussian操作与self-attention很类似,实际上,self-attention是其一个特例。
但是作者认为,这种注意力不是不可或缺的,
f
函数的表现形式还可以有下列两种:
Dot product
通过点乘进行相似度计算:
归一化因子可以直接设置为N,也就是X的所有位置数。
Concatenation
其中,[
·, ·
] 表示维度拼接操作, Wf 实现从向量到标量的转化。
3. Non-localBlock
non-local operation的公式表示已经得到,为了将其与现有的框架结合起来,我们需要将其封装到非本地块(non-localblock)中,一个non-local block可以用下式表示:
其中, yi 就是non-localoperation的输出,当看到“+XiXi ”的时候是不是有点熟悉?没错,这里也用了一个残差连接。之所以要用残差,是因为这种结构能够在不破坏原始网络结构的基础上,很方便的将non-local block嵌入模型中去。如下图所示,以一个f为Embedded Gaussian为例,featuremap的输入为
TxHxWx1024
,两个映射θφ都是1x1x1卷积形式,⊗表示矩阵乘操作,⊕表示元素加操作。
一个时空non-localblock
基于该结构, f 函数的形式无论是上文中的Gaussian,Embedded Gaussian,Dot product等,都能通过矩阵乘轻松实现。
非局部块的成对计算在高层次的特征映射中是轻量级的。在上图的block中,一般T=4,H=W=14或者7,矩阵乘法的两两运算复杂度与传统卷积计算不相上下。为了进一步提升模型效率,还进行了如下调整:
(1)将 θ,φ,g的通道数设置为输入feature maps的一半,这样会大大减少计算量
(2)采用抽样的方式,进一步减轻计算量,将non-local改进为如下公式:
其中,x^是x经过池化后得到,在空间域中执行这个操作,可以将成对计算的数量减少1/4。这个技巧不会改变非局部的行为,只会使计算变得更稀疏,实现起来也很简单,只需要在上图中θ,g中将一个最大池化层即可。
实验
原文作者做了大量详实的实验,本文只截取几个结果,说明non-local 的有效性。
在视频任务中的表现
(1)不同 f函数的效果
如下表,以ResNet-50为backbone,本文提出的四张成对函数相比baseline都有很好的提升
(2)添加non-localblock的stage
如下表,还是以ResNet-50为backbone,将non-local块插入到哪一个阶段,一个non-local块在res2、res3或res4的提升效果是相似的,而对res5的提升稍微小一些。
(3)与SOTA视频分类网络对比
如下表,本文的方法远远超过了所有现有的基于RGB或RGB +流的方法,且与2017年分类比赛冠军模型结果不相上下。
在图像任务中的表现
(1)目标检测和实例分割
如下表,一个单独的non-local block超越了了所有的R50/101和X152baseline,包括检测和分割的所有指标。APbox在所有情况下增加约一个点。
(2)关键点检测
在Mask R-CNN中,测试non-local对于关键点检测的提升,如下表,在R101的baseline上,在头部添加4个non-local block会导致让 AP增加一个约一个点。
结论
本文提出了一种新的神经网络Non-Local Neural Networks,它通过非局部操作来捕捉远程依赖关系。non-local block可以与任何现有的网络结构相结合。证明了非局部建模在视频分类、目标检测和分割、姿态估计等任务中的重要性。在所有的任务上,一个简单的non-local块可以很好的提升baseline,non-local block的提出,为传统卷积的提升提供了更多的启发和可能性。
论文链接:
Non-localNeural Networksarxiv.org
GitHub链接:
https://github.com/facebookresearch/video-nonlocal-netgithub.com
(*本文为 AI科技大本营投稿文章,
转载
请微
信联系 1092722531
)
◆
精彩推荐
◆
2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。
5 折票倒计时 7 天!
推荐阅读
:
你点的每个“在看”,我都认真当成了AI
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/盐析白兔/article/detail/855375
推荐阅读
article
‘‘/usr/local/
lib
/
lib
s.
so
‘‘ from /
etc
/ld.
so
.
preloa
d
...
今天操作服务器,不管执行什么命令,都会有这个提示:ERROR: ld.
so
: object ''/usr/local/l...
赞
踩
article
神经网络
推理加速——
GPU
为什么
这么
牛
_
gpu
适合
神经网络
...
游戏,挖矿,深度学习,这三个领域足以让英伟达的
GPU
傲视群雄!安迪比尔定律,软件会吃掉硬件的性能,反过来会迫使硬件更新迭...
赞
踩
article
Transformer
教程之循环
神经
网络
(
RNN
)和长短期记忆
网络
(
LSTM
)_trainforme...
尽管
Transformer
模型在当前的深度学习领域占据了主导地位,但
RNN
和
LSTM
作为处理序列数据的经典模型,依然在许...
赞
踩
article
深度
学习
入门——
神经网络
...
神经网络
中的激活函数使用平滑变化的sigmoid函数或ReLU函数。通过巧妙地使用NumPy多维数组,可以高效地实现神经...
赞
踩
article
【每日
一
题
,
冲刺秋招(4)】—— 前端js考点之
cookie
、
session
和
storage
_js ...
请你描述
一
下
cookie
s
,
session
Storage 和
local
Storage 的区别?解答:
题
目二:场景需求...
赞
踩
article
删除C:\
Users
\RDK\
AppData
\
Local
\
Microsoft
\
WindowsApps
...
在cmd里查询
python
位置:where
python
出现多个
python
,删除C:\
Users
\RDK\AppDa...
赞
踩
article
linux
挂载
nas
_rc.
local
自动
挂载
nas
...
nas
挂载
问题NAS
挂载
给两个服务器A,B;A的目录下创建的文件,在B目录下看不到;正常挂在命令:NAS: 192…16...
赞
踩
article
Python
:
最简单的
神经网络
分类
模型
(附带详细注释说明)+ 训练结果
可视化
+
模型
可视化
_pyto...
【代码】
Python
:
最简单的
神经网络
分类
模型
(附带详细注释说明)+ 训练结果
可视化
+
模型
可视化
。_
pytorch
神...
赞
踩
article
Local
Binary
Convolutional
Neural
Networks ---
卷积
深度...
前言:今天他给大家带来一篇发表在CVPR 2017上的文章。原文:LBCNN原文代码:https://github.co...
赞
踩
article
[
HDFS
]FileSystem.copyToLocalFile下载文件报错Unable to lo...
应用在服务器上启动后,从
HDFS
下载文件失败,报错如下:Unable to
load
native
-
hadoop
lib...
赞
踩
article
人工智能
导论-
神经网络
...
本章主要介绍人工
神经网络
的基本概念,以及几种重要模型,包括“单层感知机、两层感知机、多层感知机”等。在此基础上,介绍两种...
赞
踩
article
【视频讲解】
神经网络
、
Lasso
回归
、
线性
回归
、
随机森林
、
ARIM
A股票价格时间序列
预测
|附代码数据...
因为股票市场容易受到经济
、
政策
、
心理等多种相关因素的影响,是一个极其复杂的非
线性
系统,再加上每天大量投资者进行交易产生了...
赞
踩
article
Springboot
——集成
jodconverter
做文档
转换
_
jodconverter
-
local
...
公司项目开发中,早期使用docx4j进行word转pdf,出现了很多格式紊乱、空格缩进、字体间距变大等问题。虽然针对空格...
赞
踩
article
注意力
机制——
Non
-
local
Networks
(
NLNet
)_非
局部
注意力
模块
...
自
注意力
模块
采用
注意力
机制来计算每个像素与其他像素之间的相互依赖关系,并使用这些依赖关系来加权聚合所有像素的特征表示。这...
赞
踩
article
注意力
之
Non
-
local
Neural Networks_
non
-
local
注意力
...
Local &
non
-
local
Local这个词主要是针对感受野(receptive field)来说的。以卷积操作为...
赞
踩
article
注意力机制论文:Non-
Local
neural
networks
及其Pytorch实现_non-l...
Non-
Local
neural
networks
PDF: https://arxiv.org/pdf/1711.079...
赞
踩
article
基于
mmaction2
的
Non
-
local
详解...
文章目录0. 前言1. 论文笔记1.1. 要解决什么问题?1.2. 用了什么方法解决?1.3. 效果如何?1.4. 还存...
赞
踩
article
【计算机视觉】详解
Non
-
local
与
SENet
、
CBAM
模块融合:
GCNet
、
DANet
...
绪论视觉
注意力
机制 (一)阐述了视觉应用中的 Self-attention 机制及其应用 ——
Non
-
local
网络...
赞
踩
article
【
YOLO
v5 v7 v8 v9小目标改进】
Non
-
local
注意力实现非
局部
神经网络
,解决长空...
增加更多非
局部
块的实验结果表明,在网络中添加更多的非
局部
块可以进一步提高性能,特别是当这些块被添加到不同的网络层级时,它...
赞
踩
article
NON-
LOCAL
-
注意力
机制
_
nonlocal
注意力
机制
...
什么是视觉中的
注意力
机制
?计算机视觉(computer vision)中的
注意力
机制
(attention)的基本思想就是...
赞
踩
相关标签
服务器
人工智能
深度学习
rnn
transformer
lstm
ai
chatgpt
神经网络
前端
python
开发语言
分类
嵌入式
hadoop
hdfs
大数据