作者单位:约翰斯·霍普金斯大学, 谷歌
论文:https://www.ecva.net/papers/eccv_2020/papers_ECCV/html/1564_ECCV_2020_paper.php
代码:https://github.com/csrhddlam/axial-deeplab
卷积利用局部性来提高效率,但会丢失远程上下文。 自我注意力机制已经被用来通过非本地交互来增强CNN。 最近的工作证明可以通过限制对局部区域的关注来堆叠自我关注层以获得完全关注的网络。 **在本文中,我们试图通过将2D自我注意力分解为两个1D自我注意力来消除此约束。 这降低了计算复杂度,并允许在更大甚至全球范围内进行关注。 在同伴中,我们还提出了位置敏感的自我注意设计。 两者结合产生了我们的位置敏感轴向注意层,这是一个新颖的构建基块,**可以将其堆叠起来以形成用于图像分类和密集预测的轴向注意模型。 我们在四个大型数据集上证明了我们模型的有效性。 特别是,我们的模型优于ImageNet上所有现有的独立自我注意模型。 与自下而上的最新COCO测试开发工具相比,我们的Axial-DeepLab提高了2.8%的PQ。 通过我们的小变体可以达到此先前的最新技术水平,即3.8倍的参数效率和27倍的计算效率。 Axial-DeepLab还可以在Mapillary Vistas和Cityscapes上获得最先进的结果。
卷积的成功主要来自两个属性:平移不变性和局部性(卷积核映射到一个局部区域)。 平移不变性虽然不精确[97],但与成像的性质非常吻合,因此可以将模型推广到不同的位置或不同大小的图像。 另一方面,局部性可减少参数计数和M-Adds。 但是,这使对全局关系进行建模具有挑战性。
大量文献讨论了在卷积神经网络(CNN)中对传播过程中特征交互进行建模的方法。 有些使用手工设计或通过算法搜索的空洞卷积[34,77,67,13],较大的核[70]或图像金字塔[98,85]。 另一类作品采用注意力机制。 注意力机制显示了其在语言建模[83,88],语音识别[22,11]和神经字幕[92]中对远程交互进行建模的能力。 自那时以来,注意力已扩展到视觉,从而显着增强了图像分类[6],对象检测[37],语义分类[42],视频分类[87]和对抗性防御[89]。 这些作品丰富了CNN的非局部或远程注意力模块。
最近,已经提出了将注意力层堆叠为没有任何空间卷积的独立模型[68,38],并显示出令人鼓舞的结果。 然而,幼稚的注意力在计算上是昂贵的,尤其是在大的输入上。 由[68,38]提出的将局部约束应用于注意力,可以降低成本并建立完整的注意力模型。 但是,局部约束限制了模型的感受野,这对于诸如分割之类的任务至关重要,尤其是在高分辨率输入上。 在这项工作中,我们建议采用Axial-attention[33,42],它不仅可以进行有效的计算,而且可以恢复独立注意力模型中的大接受力场。 核心思想是沿高度轴和宽度轴将2D注意力分解为两个1D注意力。 它的效率使我们能够参与较大的区域并建立模型以学习长期甚至全球的互动。 此外,以前的大多数注意力模块都不使用位置信息,这会降低注意力在建模与位置相关的互动(例如多尺度的形状或对象)时的能力。 最近的著作[68,38,6]引入了位置术语来引起注意,但是以一种与上下文无关的方式。 在本文中,我们将位置项增加为上下文相关的,从而使我们的关注位置敏感,并具有边际成本。
我们在ImageNet [73]和三个数据集(COCO [59],Mapillary Vistas [65]和Cityscapes [23])上针对全景分割[48],实例分割, 和语义分割。 特别是在ImageNet上,我们用位置敏感的轴向注意层替换了所有残差块[32]中的3×3卷积,从而构建了一个Axial-ResNet,并通过采用 注意在“词干”中的层次。 结果,我们的Axial-ResNet在ImageNet上的独立注意力模型中获得了最先进的结果。 对于分割任务,我们通过替换Panoptic-DeepLab中的主干将Axial-ResNet转换为Axial-DeepLab [19]。 在COCO [59]上,我们的Axial-DeepLab在测试开发集上的性能优于传统的自底向上的Panoptic-DeepLab [20],性能提高了2.8%。 我们还在Mapillary Vistas [65]和Cityscapes上显示了最新的分割结果
总而言之,我们的贡献有四个方面:
我们首先正式介绍我们对位置敏感的自我注意机制。 然后,我们讨论如何将其应用于轴向注意以及如何构建具有轴向注意层的独立Axial-ResNet和Axial-DeepLab。
自注意力机制通常作为附加组件应用于视觉模型,以提升CNN的输出[87,95,42]。给定具有高度h,宽度w和通道din的输入特征图 x ∈ R h × w × d i n x∈R^{h×w×d_{in}} x∈Rh×w×din,位置o =(i,j), y o ∈ R d o u t y_o∈R^{d_{out}} yo∈Rdout的输出是通过对投影输入进行汇总来计算的:
该机制基于亲和度 x o T W Q T W K x p x^T_o W^T_QW_Kx_p xoTWQTWKxp全局地汇总值 v p v_p vp,从而使我们能够在整个特征图中捕获相关但非本地的上下文,而与仅捕获本地关系的卷积相反。
但是,当输入的空间尺寸较大时,自注意力的计算 ( O ( h 2 w 2 ) ) (O(h^2w^2)) (O(h2w2))非常昂贵,从而将其仅用于CNN的高级别(即降采样特征图)或小图像。 另一个缺点是全局池无法利用位置信息,这对于捕获视觉任务中的空间结构或形状至关重要。
在[68]中,这两个问题通过在自注意力中添加局部约束(减小计算)和位置编码(利用位置信息)而得到缓解。 对于每个位置o,提取一个局部的m×m正方形区域,以用作计算输出 y o y_o yo的存储库。 这将其计算量大大减少到 O ( h w m 2 ) O(h^wm^2) O(hwm2),从而允许将自注意力模块部署为独立的层,以形成一个完全自注意力的神经网络。 另外,将学习到的相对位置编码项合并到亲和度中,从而在接收场(即局部m×m正方形区域)中产生动态的观察位置。
实际上, d q d_q dq和 d o u t d_{out} dout比 d i n d_{in} din小得多,so我们可以扩展单头注意力为多头注意力捕捉亲和力的混合结果。 特别是,多头注意力是通过在 x o x_o xo上并行应用N个单头注意力来计算的(对于n-,Wn Q,Wn K,Wn V 、, n∈{1、2,…,N}不同) th头),然后通过合并每个头的结果来获得最终输出 z o z_o zo,即 z o = c o n c a t n ( y o n ) z_o = concat_n(y^n _o) zo=concatn(yon)。 请注意,位置编码通常在磁头之间共享,因此它们会引入边际额外参数。
Position-Sensitivity:
我们注意到,先前的位置偏差仅取决于query pixel x o x_o xo,而不取决于key pixel x p x_p xp。 但是, x p x_p xp也可能具有有关位置的信息。因此,除了与查询相关的偏差 k p T r p − o k k^T_p r^k _{p−o} kpTrp−ok外,我们还添加了与关键字相关的位置偏差项 q o T r p − o q q^T_o r^q_{p−o} qoTrp−oq.
类似地,值 v p v_p vp在上面的等式中不包含任何位置信息。在大的感受野或memory banks的情况下, y o y_o yo不太可能包含 v p v_p vp的确切位置。因此,先前的模型必须在使用较小的接收场(即小m×m区域)与舍弃精确的空间结构之间进行权衡。在这项工作中,我们使输出 y o y_o yo能够基于查询键亲和力 q o T k p q^T_o k^p qoTkp检索除内容 v p v_p vp之外的相对位置 r p − o v r^v_{p-o} rp−ov。
去看论文吧,太多了。
还是不太理解注意力机制在图像上是怎么用的…