目录

  • 前言
  • 1. 模型的特点
  • 2. 基于多尺度编码器的Patch Embedding
  • 3. 通道交叉注意力(CCA)
  • 4. 空间交叉注意力(SCA)

前言

本文由迈阿密大学的研究团队于2023年3月30日发表,提出了双交叉注意力模块(Dual Cross-Attention , DCA),其目标是在轻微的参数和复杂性增加的情况下改进U-Net及其变体,能够简单而有效地增强u-net结构中的跳跃连接(skip-connection)。

DCA通过按顺序捕获多尺度编码器特征之间的通道和空间依赖关系来解决编码器特征和解码器特征之间的语义差距。

  1. 首先,通道交叉注意(CCA)通过利用多尺度编码器特征的跨通道token的交叉注意提取全局通道依赖关系。
  2. 然后,空间交叉注意(SCA)模块进行交叉注意操作,来捕获跨空间令牌的空间依赖性。
  3. 最后,将这些细粒度的编码器特征上采样并连接到相应的解码器部分,形成skip-connection方案。

传统的U-Net改进方法,例如残差和循环连接等存在以下缺陷:

  1. 卷积的局部性无法捕获不同特征之间的长距离依赖关系。
  2. skip-connection在简单地连接编码器和解码器特征时引起的语义差距。

受到顺序双重注意力和通道交叉注意力的启发,提出了双交叉注意力模块(DCA),有效提取多尺度编码器特征之间的通道和空间依赖,以解决语义差距问题。

1. 模型的特点

模型大致示意如下。DCA模块的结构不受编码器stage数量的影响,给定n+1个多尺度编码器stage,DCA将前n个stage的特征层作为输入,产生增强表示,并将它们连接到相应的n个解码器stage。

如下图所示,DCA可以分为两个主要阶段,三个步骤:

  1. 第一阶段由多尺度patch embedding模块组成,以获得编码器Token。
  2. 第二阶段,在这些编码器token上使用通道交叉注意(CCA)和空间交叉注意(SCA)模块来实现DCA,以捕获长距离依赖关系。
  3. 最后,使用层归一化和GeLU对这些token进行序列化和上采样,将它们连接到解码器对应部分。

2. 基于多尺度编码器的Patch Embedding

首先从n个多尺度编码器stage中提取Patch。

给定n个不同尺度的编码器stage, E i ∈ R C i × H 2 i − 1 × W 2 i − 1 E_i \in \mathbb R^{C_i \times \frac{H}{2^{i-1}} \times \frac{W}{2^{i-1}}} EiRCi×2i1H×2i1W,并且块大小 P i S = P S 2 i − 1 P_i^S=\frac{P^S}{2^{i-1}} PiS=2i1PS,其中 i = 1 , 2 , … , n i=1,2,\ldots,n i=1,2,,n。使用大小和步长为 P i S P_i^S PiS的平均池化来提取patch,并在展平的2维patch上使用 1 × 1 1 \times 1 1×1深度可分离卷积来进行映射。

T i = D C o n v 1 D E i ( R e s h a p e ( A v g P o o l 2 D E i ( E i ) ) ) T_i=DConv1D_{E_i}(Reshape(AvgPool2D_{E_i}(E_i))) Ti=DConv1DEi(Reshape(AvgPool2DEi(Ei)))

其中, T i ∈ R p × C i , ( i = 1 , 2 , … , n ) T_i \in \mathbb R^{p \times C_i},(i=1,2,\ldots,n) TiRp×Ci,(i=1,2,,n)表示第i个编码器stage展平后的patch。注意, P P P代表patch的数量,对于每个 T i T_i Ti都是相同的,所以可以利用这些token之间的交叉注意。

3. 通道交叉注意力(CCA)

如下图所示,使用CCA对每个token T i T_i Ti进行处理。

首先对每个 T i T_i Ti进行层归一化(LN),然后沿通道维度对 T i , ( i = 1 , 2 , … , n ) T_i,(i=1,2,\ldots,n) Ti,(i=1,2,,n)进行拼接,得到 T c T_c Tc,来产生Key和Value,同时使用 T i T_i Ti作为Query。将深度可分离卷积引用到自注意力中,以便捕获局部信息并降低计算复杂性。

Q i = D C o n v 1 D Q i ( T i ) a n d K = D C o n v 1 D K ( T c ) a n d V = D C o n v 1 D V ( T c ) Q_i=DConv1D_{Q_i}(T_i) \quad and \quad K=DConv1D_K(T_c) \quad and \quad V=DConv1D_V(T_c) Qi=DConv1DQi(Ti)andK=DConv1DK(Tc)andV=DConv1DV(Tc)

其中, Q i ∈ R P × C i Q_i \in \mathbb R^{P \times C_i} QiRP×CiK ∈ R P × C c K \in \mathbb R^{P \times C_c} KRP×CcV ∈ R P × C c V \in \mathbb R^{P \times C_c} VRP×Cc,分别为映射的queries,keys,values。从而CCA表示如下:

C C A ( Q i , K , V ) = S o f t m a x ( Q i T K C c ) V T CCA(Q_i,K,V)=Softmax(\frac{Q_i^TK}{\sqrt{C_c}})V^T CCA(Qi,K,V)=Softmax(Cc

QiTK)VT

其中 1 C c \frac{1}{\sqrt{C_c}} Cc

1是比例因子。交叉注意的输出是values的加权和,权重由queries和key之间的相似性决定。最后使用深度可分离卷积对交叉注意的输出进行处理,并将其输入SCA模块。

4. 空间交叉注意力(SCA)

SCA模块如下图所示。

给定CCA模块处理后的输出 T i ˉ ∈ R P × C i , ( i = 1 , 2 , … , n ) \bar{T_i} \in \mathbb R^{P \times C_i},(i=1,2,\ldots,n) TiˉRP×Ci,(i=1,2,,n),沿通道维度进行层归一化和拼接。与CCA模块不同,利用拼接后的token T c ˉ \bar{T_c} Tcˉ作为queries和key,而将每个 T i ˉ \bar{T_i} Tiˉ作为value。对queries,keys,values上使用 1 × 1 1 \times 1 1×1深度可分离卷积进行投影。

Q i = D C o n v 1 D Q ( T c ˉ ) a n d K = D C o n v 1 D K ( T c ˉ ) a n d V = D C o n v 1 D V i ( T i ˉ ) Q_i=DConv1D_{Q}(\bar{T_c}) \quad and \quad K=DConv1D_K(\bar{T_c}) \quad and \quad V=DConv1D_{V_i}(\bar{T_i}) Qi=DConv1DQ(Tcˉ)andK=DConv1DK(Tcˉ)andV=DConv1DVi(Tiˉ)

然后SCA可表示为:

S C A ( Q , K , V i ) = S o f t m a x ( Q K T d k ) V i SCA(Q,K,V_i)=Softmax(\frac{QK^T}{\sqrt{d_k}})V_i SCA(Q,K,Vi)=Softmax(dk

QKT)Vi

其中, 1 d k \frac{1}{\sqrt{d_k}} dk

1是比例因子。对于多头的情况, d k = C c h c d_k=\frac{C_c}{h_c} dk=hcCc,其中 h c h_c hc是head的数目。然后使用深度可分离卷积对SCA的输出进行处理得到最终DCA的输出。

然后对DCA的输出进行层归一化和GeLU处理。最后,DCA的n个输出通过上采样连接到它们对应的解码器部分。

注意交叉注意和自注意之间的主要区别在于,交叉注意通过将多尺度编码器特征融合在一起,而不是单独利用每个stage来创建注意力图,这也允许交叉注意捕获编码器不同stage之间的长距离依赖关系。

U-Net结构改进:双交叉注意力模块(DCA)相关推荐

  1. 论文推荐:CCNet用于语义分割的交叉注意力

    CCNet, Transformer递归交叉自注意力,比非局部神经网络更有效.华中科技大学.地平线.ReLER 和伊利诺伊大学香槟分校联合研发 论文提出了交叉网络 (CCNet),对于每个像素,CCN ...

  2. 特征图注意力_CCNet:用于语义分割的交叉注意力网络

    此篇文章内容源自 CCNet: Criss-Cross Attention for Semantic Segmentation,若侵犯版权,请告知本人删帖. 此篇文章是论文 CCNet: Criss- ...

  3. 用双注意力模块来做语义分割

    作者|Umer Rasheed  编译|ronghuaiyang 导读 本文对双注意网络进行场景分割进行简要概述. 论文链接:https://arxiv.org/abs/1809.02983 图1,双 ...

  4. 中科大快手提出多模态交叉注意力模型:MMCA,促进图像-文本多模态匹配!

    关注公众号,发现CV技术之美 本文分享论文『Multi-Modality Cross Attention Network for Image and Sentence Matching』,由中科大&a ...

  5. 最强通道注意力来啦!金字塔分割注意力模块,即插即用,效果显著,已开源!...

    导读 本文是通道注意力机制的又一重大改进,主要是在通道注意力的基础上,引入多尺度思想,本文主要提出了金字塔分割注意力模块,即PSA module.进一步,基于PSA ,我们将PSA注意力模块替换Res ...

  6. AI安检:北航提出安检场景下的危险品检测基准和去遮挡注意力模块

    ©作者 | 尉言路.陶仁帅 学校 | 北京航空航天大学 研究方向 | 目标检测.小样本学习 随着公共交通枢纽中人群密度的不断增加,安全检查在保护公共空间免受恐怖主义等安全威胁方面的作用越来越重要.安检 ...

  7. 论文解读丨无参数的注意力模块SimAm

    摘要:本文提出了一个概念简单但对卷积神经网络非常有效的注意力模块. 本文分享自华为云社区<论文解读系列三十:无参数的注意力模块SimAm论文解读>,作者:谷雨润一麦. 摘要 本文提出了一个 ...

  8. 中国双频前端模块市场趋势报告、技术动态创新及市场预测

    双频前端模块市场的企业竞争态势 该报告涉及的主要国际市场参与者有Microsemi.Skyworks.Qorvo.Murata Manufacturing.Broadcom Limited.TDK.N ...

  9. 深度学习卷积神经网络重要结构之通道注意力和空间注意力模块

    #主要原理 提出CBAM的作者主要对分类网络和目标检测网络进行了实验,证明了CBAM模块确实是有效的. 以ResNet为例,论文中提供了改造的示意图,如下图所示: #CMAB模块实现,依据上面原理 # ...

最新文章

  1. 才知道百度也提供了智能DNS服务 - 加速乐
  2. android找不到aar包
  3. php原码初级自定义数据库操作方法
  4. 《庆余年》是爆了,但想打高分的阅文仍然没有公式可套
  5. 用vue.js写的一个瀑布流的组件
  6. boost::function2用法的测试程序
  7. php 数组合并_PHP数组常用函数分类整理
  8. 开放下载!《Rocket MQ 使用排查指南》精解100+常见问题
  9. AutoCAD VBA天圆地方的放样展开图
  10. java的数组和链表从熟系到陌生
  11. 【转】我应该直接学Swift还是Objective-C?
  12. 2021图像检索综述
  13. DVB机顶盒工作原理
  14. python3分解质因数_python3 分解质因数
  15. pycharm远程操作linux进行开发
  16. idea报错 Result Maps collection does not contain value for com.
  17. ml-agents_使用ML-Agents的自玩功能来训练智能对手
  18. NaN是什么?NaN == NaN 的结果是什么?为什么?
  19. 电源电力专业术语整理
  20. Python求最小公倍数和最大公约数(附加辗转相除)

热门文章

  1. (二)2D视觉机器人的手眼标定流程记录
  2. Transforming Cumulative Ceilometer Stats to Gauges
  3. 五分钟了解--指纹浏览器背后的一切
  4. pg数据库的备份和恢复以及sql脚本错误的解决方法
  5. ubuntu安装Beyond Compare 4 并破解
  6. switch选择结构
  7. SDF官网SDFormat 规范的一些截图
  8. 高等数学-多元函数微分学思维导图
  9. 卷积神经网络中的CNN是啥?
  10. Javasocket服务端持久化,持续更新中