Coordinate Attention 论文阅读

2023-10-30

Coordinate Attention 论文阅读


背景:研究表明通道注意力可以显著提升了模型性能,但是在以往的工作中通常忽略了位置信息,而位置信息对于生成空间注意力非常重要。为了利用位置信息,Coordinate Attention 将位置信息嵌入到了通道注意力中。不同于通过二维全局池化将特征张量转换为单个特征向量的通道注意力 (SENet),Coordinate Attention 的做法是将通道注意力分解为两个一维的特征编码过程,沿水平和垂直方向聚合特征,从而可以沿着一个方向捕获长程依赖,再通过另一个方向保留精确的位置信息。这样特征图就被编码为一对有方向且有位置信息的特征图,它们可以补充作用于输入特征图来增强感兴趣目标的表示。

Coordinate Attention Blocks

Coordinate Attention 用位置信息同时编码了通道间的关系和长程依赖,过程分为坐标信息嵌入和坐标注意力生成两个阶段。
CABlock

  • 坐标信息嵌入

由于全局池化难以保留空间信息,所以作者将全局池化分解成一对编码一维特征的操作,从而激励注意力块利用位置信息捕获远距离的空间交互。具体的做法是对每个通道在空间上沿垂直和水平方向用两个大小分别为 ( H , 1 ) (H, 1) (H,1) ( 1 , W ) (1, W) (1,W) 池化核。因此,在通道 c c c,垂直坐标 h h h 处和水平坐标 w w w 处的输出分别可以公式化描述为

z c h ( h ) = 1 W ∑ 0 ≤ i < W x c ( h , i ) . z_{c}^{h} (h) = \frac{1}{W} \sum_{0\le i<W }^{} x_{c} (h, i). zch(h)=W10i<Wxc(h,i).

z c w ( w ) = 1 H ∑ 0 ≤ i < H x c ( w , j ) . z_{c}^{w} (w) = \frac{1}{H} \sum_{0\le i<H }^{} x_{c} (w, j). zcw(w)=H10i<Hxc(w,j).

上面两种变换分别沿着两个空间方向聚合特征,得到了一对方向上的特征图。这使得 Coordinate Attention Blocks 可以沿着一个方向捕获长程依赖,再通过另一个方向保留精确的位置信息,有助于网络更加精准定位感兴趣的目标。

  • 坐标注意力生成

这一步是为了利用上一步的得到的全局感受野和位置信息编码。具体的做法是,将上一步得到的聚合特征图拼接起来,送入一个共享的 1 × 1 1 \times 1 1×1 的卷积转换函数 F 1 F_{1} F1,得到

f = δ ( F 1 ( [ z h , z w ] ) ) , f = \delta (F_1([z^h, z^w])), f=δ(F1([zh,zw])),

其中, δ \delta δ 为非线性激活函数, f ∈ R C / r × ( H + W ) f\in R^{C/r\times (H+W)} fRC/r×(H+W) 为在水平和垂直方向上进行空间编码的中间特征图, r r r 是用于控制块大小的缩减比例。
然后将 f f f 在空间维度上分解为 f h ∈ R C / r × H f^{h} \in R^{C/r\times H} fhRC/r×H f w ∈ R C / r × W f^{w} \in R^{C/r\times W} fwRC/r×W 两个独立的张量。再用另外两个 1 × 1 1 \times 1 1×1 卷积转换函数 F h F_h Fh F w F_w Fw 分别对 f h f^h fh f w f^w fw 进行转换,得到

g h = σ ( F h ( f h ) ) g^h = \sigma (F_h(f^h)) gh=σ(Fh(fh))

g w = σ ( F w ( f w ) ) g^w = \sigma (F_w(f^w)) gw=σ(Fw(fw))

其中, σ \sigma σ s i g m o i d sigmoid sigmoid 激活函数。
最终,Coordinate Attention Blocks 的输出 Y Y Y 可以写为

y c ( i , j ) = x c ( i , j ) × g c h ( i ) × g c w ( j ) . y_c(i, j) = x_c(i, j) \times g_c^h(i) \times g_c^w(j). yc(i,j)=xc(i,j)×gch(i)×gcw(j).

代码

class CA_Block(nn.Module):
    def __init__(self, in_channel, reduction=32):
        super(CA_Block, self).__init__()
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
        self.pool_w = nn.AdaptiveAvgPool2d((1, None))

        mip = max(8, in_channel // reduction)

        self.conv1 = nn.Conv2d(in_channel, mip, kernel_size=1, stride=1, padding=0)
        self.bn1 = nn.BatchNorm2d(mip)
        self.act = nn.Hardswish()

        self.conv_h = nn.Conv2d(mip, in_channel, kernel_size=1, stride=1, padding=0)
        self.conv_w = nn.Conv2d(mip, in_channel, kernel_size=1, stride=1, padding=0)

    def forward(self, x):
        identity = x

        n, c, h, w = x.shape
        x_h = self.pool_h(x)
        x_w = self.pool_w(x).permute(0, 1, 3, 2)

        y = torch.concat([x_h, x_w], axis=2)
        y = self.conv1(y)
        y = self.bn1(y)
        y = self.act(y)

        x_h, x_w = torch.split(y, [h, w], dim=2)
        x_w = x_w.permute(0, 1, 3, 2)

        a_h = self.conv_h(x_h).sigmoid()
        a_w = self.conv_w(x_w).sigmoid()

        out = identity * a_w * a_h

        return out

参考文献

Hou Q, Zhou D, Feng J. Coordinate attention for efficient mobile network design[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 13713-13722.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Coordinate Attention 论文阅读 的相关文章

随机推荐

  • nginx配置文件

    1 文件格式 Nginx 的配置文件是 个普通的纯文本文件 使用了 Nginx 自定义的 一套 配置语法 更接近于 脚本语言 混合了 Shell Perl C 的部分特性 要点叙述如 1 配置指令 以分号结束 可以接受多个参数 用空白字符分
  • 算法序列----线性表

    线性表 由零个或多个数据元素组成的有限序列 1 属于一个序列 2 第一个元素没有前驱 最后一个没有后继 3 有限的 两种物理存储结构 1 顺序存储 2 链式存储 顺序存储 1 存储位置就是顺序的位置 2 数组的最大长度 3 当前长度 len
  • Mac Os下安装Myeclipse提示insufficient memory

    如图所示 搞了两天终于解决来 发现网上对此问题的解决办法也是说的不清不楚对 总的来说有三种方法 当然我只用了其中都一种 方法一 Mac OS中用虚拟内存来提高性能 可是我用的macbook 有8g内存 要用上虚拟内存还是比较少的 所以你可以
  • 【hive】分组求排名

    分组求排名 相信好多使用Mysql的用户一定对分组求排名的需求感到发怵 但是在hive或者oracle来说就能简单实现 采用窗口函数 rank over row number over dense rank over 函数就能轻松完成 窗口
  • SSL certificate problem: unable to get local issuer certificate 错误解决

    今天公司换服务器域名 用了一个本地的服务器 然后我切换远程仓库拉代码的时候 终端报了如下错误git SSL certificate problem unable to get local issuer certificate 这个问题是由于
  • 大数据毕设 opencv python 深度学习垃圾图像分类系统

    文章目录 0 前言 课题简介 一 识别效果 二 实现 1 数据集 2 实现原理和方法 3 网络结构 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉
  • python星座分析

    python数据分析 python数据分析是一个非常好用的 虽然python数据分析只是刚刚起步 有些功能还未开发完成 但是用来做数据分析是绰绰有余了 本人也是专门研究和学习python数据分析的 星座数据爬虫 作为一个学习数据分析的人 爬
  • 在Apifox中,使用后置脚本显示响应结果reponse中的base64图片

    背景 在使用Apifox去请求有图片的接口时 我想要请求成功的同时 可以显示出来图片 这个时候就开始百度找官方文档 最终发现可以使用后置脚本显示reponse中的图片 方案 如下图所示 接口请求成功后 返回的json结构为 images p
  • 简单了解Linux图形界面

    之前曾经发生过启动虚拟机进入不了图形界面的情况 关于RedHat开启失败的解决方法 m0 48788975的博客 CSDN博客 在我看书的过程中总算搞清楚这是怎么一回事了 下面就和大家唠两句Linux视图 一 Linux操作界面主要分为传统
  • 机器学习_数据处理及模型评估相关资料

    基于sklearn 的auc 计算方法 训练模型填充空值 fill null 的几种方法 在Pandas中像写SQL一样做数据分析
  • Java通过freemarker实现导出PDF

    制作模板 引入依赖 引入所需字体文件 工具类的编写 业务实现 一 模板制作 1 编写html代码 需要替换的值与内容预留出来 用 name 代替 需循环处 表格前加上 lt list listKey as t gt t name 2 将写好
  • 浅谈React浏览器渲染流程

    当浏览器发送一个请求 会得到对应的响应 浏览器会通过HTML解析器去解析HTML会构建DOM树 会通过CSS解析器去解析CSS生成CSS规则树 如果页面中拥有一些JS逻辑 那么往往会通过JS将CSS HTML进行修改的操作 往往造成重排重绘
  • SPADE: Semantic Image Synthesis with Spatially-Adaptive Normalization

    目录 介绍 相关工作 1 Unconditional normalization layers 2 Conditional normalization layers 这一部分挺重要的 方法 3 1 Spatially adaptive de
  • 编译实验(三)目标代码生成

    通过词法分析 语法分析 语义分析 最后产生了四元式 而代码生成则是通过四元式来完成 我们先从简单开始做起 编译实验项目下载链接 http download csdn net download supersmart dong 10224159
  • 源码安装LAMP环境+yii2框架

    当有些新增的软件版本出现 而你想要进行尝试使用 但是在本地用yum安装却不能满足你的需求时 那么朋友 你需要和我一样用源码安装的形式来达成你的目的 因为开发的同事想要一个Apache 2 4 25 Mysql 5 7 17 php7 1 5
  • 设计模式之工厂方法模式

    定义 定义一个用于创建对象的接口 让子类决定实例化哪个类 使用场景 在任何需要生成复杂对象的地方 都可以使用工厂方法模式 复杂对象适合使用工厂模式 public interface Car public void make public v
  • db2实现两个数相减_DB2中求两个日期之间相差多少个月?

    DB2中怎么来求两个日期之间相差多少个月呢 今天在工作中遇到一个问题 就是怎么在DB2中怎么来求两个日期之间相差多少个月呢 结果找到一个方法如下 在DB2中两个日期之间相减会等到一个整数总共有六种情况分别是 select date 2010
  • HTML登录页面

    第一步 构建HTML框架 简介 本文用最通俗的语言 一步步教会大家CSS构建登录页面 首先构建HTML框架 包含用户名 密码 记住密码 注册这几个功能 如果大家HTML不牢固 请看我的这篇博客 https blog csdn net qq
  • nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    size xx large 前言 size 在http的协议里 为了减少网络传输 允许将报文进行gzip压缩以后再传输 虽然网络传输体积减小了 但是服务器压缩和浏览器的解压缩消耗了CPU的计算 后来出现了预压缩技术 就是提前把静态文件进行g
  • Coordinate Attention 论文阅读

    Coordinate Attention 论文阅读 背景 研究表明通道注意力可以显著提升了模型性能 但是在以往的工作中通常忽略了位置信息 而位置信息对于生成空间注意力非常重要 为了利用位置信息 Coordinate Attention 将位