论文解读:Axial-DeepLab: Stand-Alone Axial-Attention forPanoptic Segmentation

本文主要是介绍论文解读:Axial-DeepLab: Stand-Alone Axial-Attention forPanoptic Segmentation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文是一个分割任务,但这里的方法不局限于分割,运用到检测、分类都可以。

论文下载

https://www.yuque.com/yuqueyonghupjh9oc/ovceh4/onilw42ux6e9n1ne?singleDoc# 《轴注意力机制》

一个问题

为什么transformer一开始都有CNN:降低H、W,降低self-attention计算规模O(特征点的个数^2,即(H*W)^2)

Stand-Alone Self-Attention 就是不通过CNN下采样,直接使用transformer,但是这样计算量会比较大,如何解决这个问题

摘要

Convolution exploits locality for efficiency at a cost of missing long range context.
卷积时感受野(卷积核)不能太大,要不效率太慢

Self-attention has been adopted to augment CNNs with non-local interactions.
自注意力机制一开始就有全局的视野

创新点1:

In this paper, we attempt to remove this constraint by factorizing 2D self-attention into two 1D self attentions.

这篇文章的核心思想就是:将图2D的self-attention转换成1D规模来增加效率

1Dself-attention:只在一维上的点进行自注意力机制,运算规模O(length^2)

2D的self-attention在二维上的点进行自注意力机制,运算规模O((H*W)^2)

创新点2:

In companion, we also propose a position-sensitive self-attention design.
由于transformer对位置编码不敏感,这里提出一个对位置编码设计

(之后咱们的论文都可以加上这一点,大概率不会比原来差)

介绍

However, it makes modeling long range relations challenging
卷积的感受野是由不断的卷积堆叠起来,对于浅层是具备很小的感受野

Recently, stacking attention layers as stand-alone models without any spatial convolution has been proposed and shown promising results
不使用卷积,不断堆叠transformer层级也能有不错的结果

However, naive attention is computationally expensive, especially on large inputs.
然而,单纯的attention非常吃数据(其实并且对数据也敏感,这是transformer最大的两个问题)

轴注意力机制

In this work, we propose to adopt axial-attention, which not only allows efficient computation, but recovers the large receptive field in stand-alone attention models.
推出一个轴注意力机制,不仅效率高,而且感受野比较大(作者认为感受野还是保存一致了)
In this work, we propose to adopt axial-attention, which not only allows efficient computation, but recovers the large receptive field in stand-alone attention models. The core idea is to factorize 2D attention into two 1D attentions along height- and width-axis sequentially.
在本篇文章中,推出一个轴向注意力机制,他不同于之前的一些降低运算规模(如:swin transformer 为了降低self-attention的计算量,他将h*w的矩形分成几个矩阵(如:4个h/2*w/2)来各自进行self attention,但这样就失去了transformer天生就拥有全局感受野的特点)

这里的意思应该是:一个点与他同行的所有的点做self-attention,之后再跟他同列的所有的点做self-attention,

这样也保持了比较大的全局感受野

举个栗子:对一张图256*256,之前论文是一个点的运算规模256*256,而现在是256(行方向上)+256(列方向上)

我自己的一些想法(关于为什么感受野保持不变,不保真):

点3可以通过这种方式来接收到点1的特征:

1:点2通过行方向的轴注意力机制,获取到了点1的特征,因此点2里面包含了点1的特征:

2:点3通过列方向的轴注意力机制,获取到了点2的特征,而点2包含了点1的特征,因此点3可以获取到点1的特征

这类似于图的神经网络,通过不断的传递,一个点能够获得其他所有点的特征。

对于transformer的论文,一般都在这两个方向设计:

self-attention如何设计、位置编码如何设计

方法

原来transformer的不足

However, self-attention is extremely expensive to compute (O(h^2*w^2)) when the spatial dimension of the input is large, restricting its use to only high levels of a CNN (i.e., downsampled feature maps) or small images. Another drawback is that the global pooling does not exploit positional information, which is critical to capture spatial structures or shapes in vision tasks.
一方面,self-attention的计算规模是O(h^2*w^2);另外一方面,加入了池化之后位置信息也变得不敏感了

结构设计

位置编码

想解决的问题

以前的位置编码并没有考虑到某个向量的重要性,比如说在NLP中,说一句:我今天想吃饺子;此时我想强调“吃”这个词,但是位置编码(包括正余弦编码)是无差别的对待该句话的每个词的;

下面引入可学习的位置编码,使得位置能够对每个Q/K差异化对待

原来的self-attention

现在的self-attention

仅Q加上位置编码

Q、K、V都加上位置编码

rq为作用在Q上可学习的位置编码,rk为作用在K上可学习的位置编码

对应流程图

对该部分流程解释一下:这里应该是

分别与rv和Wv

做矩阵乘法之后,得到

乘上

以及

乘上

,之后再把两者作加法

这篇关于论文解读:Axial-DeepLab: Stand-Alone Axial-Attention forPanoptic Segmentation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/454563

相关文章

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学