Life is about waiting for the right moment to act.

0%

Compact Generalized Non-local Network 笔记

non-local module 旨在捕获图像和视频中的long-range spatio-temporal dependencies。尽管表现出出色的性能,但它缺乏对 interactions between positions across channels 进行建模的机制,这对于识别细粒度的对象和动作至关重要。为了解决此限制,作者对 non-local module 进行了扩展,并考虑了任意两个 channels 的 positions 之间的相关性。此扩展利用泰勒扩展的 multiple kernel functions 的紧凑表示形式,从而使generalized non-local module 成为快速而低复杂度的计算流程。此外,作者在 channel groups 内实施 generalized non-local 方法以 ease the optimization。实验结果说明了 generalized non-local module 在细粒度目标识别和视频分类上的明显改进和实际适用性。

NIPS2018的文章:

文章地址

代码PyTorch

1. Introduction

尽管 non-local module 具有非常好的性能,但是其只考虑 global spatio-temporal correlation,融合了所有的 channels,可能丢失微弱的,但是很重要的 cross-channel clues.

本文对 non-local module 进行了扩展,可以学习 explicit correlations among all of the elements across the channels.

  • First, this extension scale-ups the representation power of the non-local operation to attend the
    interaction between subtle object parts.
  • Second, we propose its compact representation for various kernel functions to address the high computation burden issue. We show that as a self-contained module, the compact generalized non-local (CGNL) module provides steady improvements in classification tasks.
  • Third, we also investigate the grouped CGNL blocks, which model the correlations across channels within each group.

Channel Correlations: SENet 首先明确地建模channels 间的 interdependencies,旨在选择有用的 feature maps,并抑制其它,只考虑了每个 channel 上的 global information. 作者提出了 generalized non-local (GNL) 模块,该模块对 non-local (NL) 模块进行了扩展,以学习跨 channels 的任意两个位置之间的相关性。

Compact Representation: 没看懂……

3. Approach

3.1 Review of Non-local Operation

3.2 Review of Bilinear Pooling

3.3 Generalized Non-local Operation

本质上是直接在(key, query, value)三元组进行reshape的时候把channel的信息加进去,但是这带来一个很重要的问题就是计算复杂度大大增加。我们知道分组卷积是一种有效的降低参数量的方案,这里也采用分组的方式。但是即使采用分组任然不能从根本上解决计算复杂度和参数量大的问题,作者很巧妙的利用泰勒级数展开后调整计算key, query, value的顺序,有效的降低了相应的计算复杂度。

来自:https://www.zhuanzhi.ai/document/a5b6041ba0744b14cddd1f7e45899176

思路很棒,但时间有限,以后有机会再研究。