Non-local Neural Networks​arxiv.org

之前看的一篇论文继续总结一下,本质是一种注意力机制模块,文章相对来说比较老,CVPR2018。

我将从以下几个方面总结一下论文,也有一点自己的整理,欢迎拍砖。

为什么提出Non-local?

计算机视觉领域,尤其对于动态视频序列中,帧内帧间的依赖关系十分重要。尤其像下图1中视频的行为分类任务,全局内容的理解以及不同帧间的联系对于分类结果导向作用很强。现在比较通用普遍的做法是,通过循环卷积网络联系

,或者通过更深的网络增大感受野提高对全局内容的理解。

尽管如此,这种方式仍旧是比较local的,不论时间方向或者空间位置。甚至,最大的问题是:没法进行远距离信息的来回传递;而且deeper网络计算量大但效率低,梯度优化起来也比较困难。

因此,针对远距离信息传递问题,提高长距离依赖,本论文从传统的非局部均值滤波方法中受到启发,提出了卷积网络中的non-local,即:某一像素点处的响应是其他所有点处的特征权重和,将每一个点与其他所有点相关联,实现non-local 思想。

自评:文章解决的痛点targetable,有意义。而且解决方法也有图像处理基础,禁得起推敲

图1. 引入问题

Non-local 的思想和简单数学原理

Non-local的核心思想就是上面说的,某一像素点处的响应是其他所有点处的特征权重和

因此,假设对于一个

特征图,总共是
(拉平操作)个位置,每个位置都与其他位置(包括本身位置)有关联性度量,就会得到
的关联性矩阵,而这个关联性矩阵其实可以理解为像素彼此之间的关联权重矩阵,因为不同像素点间的关联性都是不同的,因此经过归一化后的这个权重矩阵本质上就实现了注意力。

当将这个

的权重再与原特征图
做矩阵乘时,得到的
矩阵就是该
特征图所有像素点的响应,也就是关于其他像素点的

加权和。因此这里的

特征图的空间位置的注意力操作就是这个

non-local操作。

以上是举了一个例子,根据论文的核心思想去理解这个东西。下面可以看一下具体的数学公式代入,抽象化。以下是我整理的公式图片,所有公式都在这上面。

图2. 公式汇总

non-local的核心思想某一像素点处的响应是其他所有点处的特征权重和进行数学化——

如图2中的左公式(1),很好理解,其中

代表第
像素点处的响应,
表示两个像素点的关联性度量函数,
表示对
点的embedding线性映射,这里用
表示,
表示一个归一化操作。如果左式理解不清,可以看右式(1),非常直观。

其他所有点

,权重

,特征映射

, 和

, 以及归一化

,一目了然。

而在核心思想的数学化公式中,

没有具体的函数定义,下面就对其进行实例化。
  • 公式(2)是其中一种常用的高斯函数进行相似度度量,两向量直接进行矩阵乘然后通过指数放大差异;这里归一化函数选用该点处所有相似度值的和

    。这里值得注意的是,归一化函数的选用使得公式(1)变成了
    形式;
  • 公式(3)是公式(2)的改进形式,先将两向量分别映射到不同的嵌入空间(也就是进行不同的特征线性映射),然后进行公式(2)的应用;
  • 公式(4)又是公式(3)的改进形式,不再用指数变换,归一化函数
    也直接采用
    ;这里主要是为了进行验证
    激活函数的作用;
  • 公式(5)是根据Relation~Networks论文提出来的特征
    形式;然后进行卷积变换;在卷积中实现不同位置的关联,也就是相似度的度量。

自评:几种相似度度量函数都有基础依据,又有自己实验的想法在里面。数学原理很清晰。

Non-local在神经网络中的实现

数学原理讲完了,下面就是具体的卷积网络中的应用了。论文以视频流的行为分类做了一个例子,不仅包含了同一帧的空间位置的相似度度量,还有不同帧之间同一位置、不同位置的相似度度量。为了简化,下面主要以图像领域空间位置的相似度度量做一个通俗的解释。

图3. 实例化为卷积网络形式

以图3右边公式(3)出发为两像素点度量函数

,结合公式(1),在卷积网络中实现该相似度度量函数下的像素点响应,设计的

non-local block具体如图左边网络结构——

从上往下看,输入特征图为

,首先矩阵拉成向量得到
,然后采用1*1卷积操作分别进行
的线性映射,也就是图中的
;都得到嵌入空间下的

对于

进行转置得到
下的
矩阵乘得到
相似度矩阵;然后
与经过
操作的
相似度矩阵再矩阵乘得到
响应,此时再转换为
即是经过了

non-local加强距离依赖后的特征图。

论文同时又借鉴了

的恒等映射思想,再次对
下的
经过
卷积然后与原输入特征图进行像素点的加和。 即公式(6)。

理解了公式(3)为两像素点度量函数

的这个block结构,剩下的也很好理解。
  • 公式(2)的block结构相较于结构图不进行

    卷积操作;
  • 公式(4)相较于结构图不进行
    激活,直接
    归一化即可;
  • 公式(5)变换相较于结构图复杂一点,用特征concatenate,然后
    卷积再进行
    激活。

其实可以看到,

的相似度矩阵也可以是
;那这时候其实就是通道的关联性度量了。 另外,可以想象的是,像素点关联矩阵的计算量是很大的,因此,为了减少计算量,论文有几个小技巧,一个是通道减半

bottleneck操作,另一个是进行尺寸pooling降维。后面还有针对这个弊端提出的几篇论文,CCNet,GCNet等。

自评:看得出来,该思想在卷积网络中应用也不是很复杂

论文中的实验部分结果

图4. 实验结果

实验部分比较足,主要是通过对比实验,如果想要用non-local block的话可以有所帮助,避免踩坑。

  • 第一个,四个相似度度量函数,哪个好?解释是,四个结果都差不多,说明主要是他们这个non-local的思想好,什么度量函数,什么激活函数,不是根本因素。
  • 第二个,放在哪里合适? 结果显示,建议放在前面层,后面的层特征图中的空间信息被弱化,所以效果不如前面的好。
  • 第三个,几个non-local block合适? 多了好一点,但是多了计算量太大了,trade-off下就5个吧。
  • 第四个,针对视频分类中的时间还是空间还是时空的注意力,三种对比实验。不解释
  • 第五个,针对baseline的改进,用了non-local,参数量差不多情况下,性能好。
  • 后面的不解释了,主要是针对baseline的改进。

写在最后:个人理解

图5. 一点思考

Non-local其实可以被认为是channel level和spatial level的泛化。这种方式通过注意力加强距离依赖,更是直接实现了全局的联系性。既有attention的思想也有context联系的思想。基于这个non-local,后面相继又有几个网络结构提出来,本质还是做注意力机制,只不过操作不一样,或者是改进版的。像刚刚说的,CCNet, GCNet。可以看图5。

另外,想说一点注意力的见解。形如resnet,alexnet等通用网络结构中,我们可以理解为空间或者通道间的所有位置,其重要性均等,即权重都为1。而注意力机制的根本目的,就是对原本平均分配的权重通过手动或者自学习的方式进行非等份分配。

所以,从这个角度看,挂在嘴边的先验知识或是上下文关系(local, global, context)都可以理解为对原本等价权重的非等份分配。在诸如SENet,CBAM中,通过网络训练的方式得到权重;而人为先验,是不是就是手动的权重分配,针对我们觉得重要的部分进行高权重赋值然后操作?

附录:几篇文章博客记录

channel level attention, SENet SKNet 博客

  • spatial & channel level attention:BAM和CBAM github代码
  • 双注意网络 博客
  • Lingyun Zeng:CCNet--于"阡陌交通"处超越恺明Non-local 这里可以理解为对non-local的效率上的改善;由dense message passing变成了iterative sparse message passing。
  • 深度眸:Non-local Neural Networks及自注意力机制思考

特征图注意力_计算机视觉中的Non-local-Block以及其他注意力机制相关推荐

  1. cvpr 注意力机制_计算机视觉中的注意力机制总结

    一.背景 最早图像领域,后面应用到NLP领域 人类视觉注意力机制,扫描全局图像,获得重点关注区域,投入更多经历,抑制其它无用信息,提高视觉信息处理的效率与准确性. 在深度神经网络的结构设计中,atte ...

  2. 特征图大小_新手向快速了解图神经网络

    这两天稍微看了点图神经网络的东西,稍微做个记录,第一次接触这个名词的推荐可以看一下知乎上一个视频 简单粗暴带你快速理解图神经网络GNN 图神经网络处理的数据一般就是个图,图网络具有节点特征和结构特征, ...

  3. sql移动加权计算利润_计算机视觉中的半监督学习

    作者:Amit Chaudhary 编译:ronghuaiyang 导读 图解半监督的各种方法的关键思想. 计算机视觉的半监督学习方法在过去几年得到了快速发展.目前最先进的方法是在结构和损失函数方面对 ...

  4. 点云特征图离散化_点云采样

    原文链接 点云采样分类 点云采样的方法有很多种,常见的有均匀采样,几何采样,随机采样,格点采样等.下面介绍一些常见的采样方法. 格点采样 格点采样,就是把三维空间用格点离散化,然后在每个格点里采样一个 ...

  5. ui线框图模板_设计库中的17种必备线框模板和UI套件

    ui线框图模板 线框图. 用户旅程. 内容图. 以用户为中心的设计. 信息架构. 动画原型. 转换路径. 迭代功能. 站点地图. 嗯,什么? 坦白讲,UX(用户体验)和UI(用户界面)的世界充满了术语 ...

  6. 计算机视觉 java 如何选择_计算机视觉中光源的选择

    一个好的操作平台应该能够在最短的时间内处理图像,好的机器视觉软件应该能够很容易的在一系列的案例中应用,好的相机和镜头应该是拥有最小的畸变和足够的分辨率.但是,好的机器视觉照明应该有什么特点呢?在图像的 ...

  7. 币图网_教你必须了解的智能合约,共识机制,分布式存储以及密码学

    智能合约:A向B借钱不还,欠条等于合约.而将这张欠条公布于天下让所有人都知道的合约这就是智能合约.(法律在第一时间应该保护的是谁,应该为难的又是谁)智能合约就是先前设定好的代码数字协议,在不可更改且公 ...

  8. 深度学习基础学习-注意力机制(计算机视觉中)

    在网上看到很多关于注意力机制的说明,下面自己总结一下.大佬绕道 下面放几个文章的链接 添深度学习中的注意力模型 计算机视觉中的注意力机制 图像处理注意力机制Attention汇总 注意力机制详述 注意 ...

  9. 万字长文解读计算机视觉中的注意力机制(附论文和代码链接)

    文中论文和代码已经整理,如果需要,点击下方公号关注,领取,持续传达瓜货 所向披靡的张大刀 注意力机制是机器学习中嵌入的一个网络结构,主要用来学习输入数据对输出数据贡献:注意力机制在NLP和CV中均有使 ...

最新文章

  1. C# TeeChart的一些用法
  2. matlab中数值的取整、四舍五入、文本输出
  3. SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)
  4. 前出塞数据挖掘的一些必须了解的概念
  5. libuv udp server和client
  6. linux_从windows到ubuntu再到manjaro
  7. 谷歌为开源的漏扫工具“海啸“发布新的补丁奖励计划
  8. WPF调用OCX控件
  9. 怎么隐藏li标签_抖音账号如何打标签-7天让抖音账号打上标签
  10. [游戏制作]-C语言实现井字棋(三子棋)游戏简单版
  11. logistics regression 线性不可分转换成线性可分
  12. 服务器ghost备份后无法进入系统还原,ghost系统备份后的恢复方法
  13. 前端工程化--yeoman使用
  14. 搞不动了,持安零信任真的安全
  15. 收银员使用的条码扫描枪如何判断好坏?
  16. 埃特巴什码(Atbash Cipher)
  17. 老徐WEB:js入门学习 - javascript语句
  18. pandas获得指定行_pandas取dataframe特定行/列
  19. Electron桌面应用
  20. 生日蜡烛 (蓝桥杯入门)

热门文章

  1. 如何向面试官正确地提问?
  2. 芝诺数据高校产学研用成果展示|携程酒店(北京)数据分析报告
  3. SQL Server查询排序 升序 降序
  4. 《数据结构与算法基础 严蔚敏版》第一章 绪论
  5. 清华邓俊辉教授 数据结构算法 课程内容
  6. 解决错误代码:0xc000007b系统蓝屏问题
  7. python import注意事项
  8. 沉痛悼念游戏开发技术专家毛星云(网名“浅墨”)
  9. 7-5 单词首字母大写 (15分)
  10. 塑胶模具设计中的几个小问题,学会不吃亏