URL:https://arxiv.org/abs/1711.07971

CVPR2018的论文,比较经典的论文,也是目前经常被使用的方法。方法的核心是不局限于目前的local操作而是提供了一种long range的解决方案。

先看下论文中对non-local公式性的定义:

其中,x是输入feature map, 比如大小为c x h x w的输入,xi为h x w平面上的一个点,yi为其对应的输出,xj是xi的邻居,c则是用来归一化的,f为计算平面上两点xi和xj的相似度函数,g为一个encoding函数,可以理解为对xj对应的feature进行encoding的函数。为了简单起见论文里用1x1的conv来实现g函数,而对于f函数论文里提供了比较多的proposal:
Gaussian:

Embeded Gaussian,θ(xi) = Wθxi and φ(xj) = Wφxj, 论文里最后也用1x1实现了这两个embedding函数:

Dot Product:

Concat:

其中Embeded Gaussian需要特别注意,如果取c为f的和,那么non-local的前半部分:1 / c sum(f(xi, xj)) 就是标准的softmax操作!!*

那么最后我们来看下如何在标准的CNN网络中实现non-local模块, 这里为了保证non-local的即插即用性作者将其设计为一个residual的方式:

下图是具体的结构, 应该很好看懂,实现的很巧妙,最上面的那个乘号实际上就是non-local的表现形式: