共计 1766 个字符,预计需要花费 5 分钟才能阅读完成。
Non-local 操作是晚期 self-attention 在视觉工作上的尝试,外围在于按照类似度加权其它特色对以后特色进行加强,实现形式非常简洁,为后续的很多相干钻研提供了参考
起源:晓飞的算法工程笔记 公众号
论文: Non-local Neural Networks
- 论文地址:https://arxiv.org/abs/1711.07971
- 论文代码:https://github.com/facebookresearch/video-nonlocal-net
Introduction
卷积操作通常在部分区域进行特征提取,想要获取范畴更广的特色信息须要反复进行卷积操作来取得,这样不仅耗时还减少了训练难度。为此,论文提出高效的 non-local 操作,将特色图上的特色点示意为所有特色点的加权和,用于捕获覆盖范围更广的特色信息。non-local 操作也能够用于含时序的工作中,如图 1 的视频分类工作,可综合几帧的特色来加强以后帧的特色。
non-local 操作次要有以下长处:
- 绝对于叠加卷积的操作,non-local 可通过特色点间的交互间接捕获更广的特色信息。
- 从试验后果来看,简略地嵌入几层 non-local 操作就能高效地晋升网络性能。
- non-local 操作反对可变输出,可很好地与其它网络算子配合。
Non-local Neural Networks
Formulation
首先定义通用的 non-local 操作:
$i$ 为特色图上将要计算特征值的地位坐标,$j$ 为特色图上的所有地位坐标,$x$ 为对应地位上的输出特色,$y$ 为加强后的输入,$f$ 计算 $i$ 和 $j$ 之间的相似性,$g$ 则用于对 $j$ 的特色进行转化,$\mathcal{C}$ 用于对输入进行归一化。
简而言之,non-local 的外围就是计算以后地位的特色与特色图所有特色间的相似性,而后依据相似性对所有特色加权输入。绝对于卷积和全连贯等参数固定的操作,non-local 更加灵便。
Instantiations
在实现时,函数 $f$ 和函数 $g$ 的抉择很多。为了简便,函数 $g$ 抉择为线性变换 $g(x_j)=W_gx_j$,$W_g$ 为可学习的权重矩阵,个别为 $1\times 1$ 的卷积。而函数 $f$ 则能够有以下抉择 (论文通过试验发现函数 $f$ 的具体实现影响不大):
Gaussian
$x^T_i x_j$ 为点积类似度,也可采纳欧氏间隔,$\mathcal{C}(x)={\sum}_{\forall j}f(x_i, x_j)$,归一化相似于 softmax 操作。
Embedded Gaussian
$\theta(x_i)=W_{\theta}x_i$ 和 $\phi(x_j)=W_{\phi}x_j$ 为两个线性变换,$\mathcal{C}(x)={\sum}_{\forall j}f(x_i, x_j)$,这个实现与 self-attention 非常靠近。
Dot product
先线性变换,而后通过点积计算类似度,$\mathcal{C}(x)=N$,有助于简化梯度计算。
Concatenation
间接将特色 conate 起来,通过权重向量 $w^T_f$ 转化为标量输入,$\mathcal{C}(x)=N$。
Non-local Block
将公式 1 的 non-local 操作批改成 non-local block,可插入到以后的网络架构中,non-local block 的定义为:
公式 6 将 non-local 操作的输入线性变换后与原特色进行相加,相似于 residual block 的嵌入形式。
non-local block 的一种实现形式如图 2 所示,首先对 $x$ 进行 3 种不同的线性变换,而后依照公式 1 失去输入特色,再与原特色进行相加,基本上跟 self-attention 是一样的。
Experiment
各种比照试验,表 2a 为函数 $f$ 的实现比照,能够看到影响不是很大。
视频分类比照。
COCO 上的宰割、检测、关键点比照。
Conclusion
Non-local 操作是晚期 self-attention 在视觉工作上的尝试,外围在于按照类似度加权其它特色对以后特色进行加强,实现形式非常简洁,为后续的很多相干钻研提供了参考。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】