大核注意力 LKA | Visual Attention Network

在这里插入图片描述

论文名称:《Visual Attention Network》

论文地址:2202.09741 (arxiv.org)


尽管最初是为自然语言处理任务而设计的,但自注意力机制最近在各个计算机视觉领域迅速崭露头角。然而,图像的二维特性给计算机视觉中的自注意力应用带来了三大挑战。(1) 将图像视为一维序列忽视了它们的二维结构。(2) 二次复杂性对于高分辨率图像来说成本太高。(3) 它只能捕捉空间适应性而忽略了通道适应性。在本文中,我们提出了一种新的线性注意力机制,称为大核注意力 (LKA),以实现自适应和长距离关联,同时避免自注意力的缺点。此外,我们还基于 LKA 提出了一种神经网络,即视觉注意力网络 (VAN)。虽然极其简单,VAN 在各种任务中超越了类似尺寸的视觉转换器 (ViTs) 和卷积神经网络 (CNNs),包括图像分类、目标检测、语义分割、全景分割、姿势估计等。例如,VAN-B6ImageNet 基准测试中取得了 87.8% 的准确率,并在全景分割方面创造了新的最先进性能(58.2 PQ)。此外,VAN-B2ADE20K 基准上的语义分割上比 Swin-T 高出 4%mIoU50.146.1),在 COCO 数据集上的目标检测中高出 2.6%AP48.846.2)。这为社区提供了一种新方法和简单但强大的基准。


问题背景

自注意力机制虽然在自然语言处理(NLP)领域取得了巨大成功,但在应用于计算机视觉时存在几个主要挑战。首先,它将二维图像视为一维序列,忽略了图像的二维结构。其次,二次复杂度的计算在高分辨率图像处理时非常昂贵。此外,自注意力仅捕捉空间适应性,而忽略了通道适应性。为了克服这些缺点,LKA提出了一种新的线性注意力机制,旨在提供长距离关联,同时避免传统自注意力机制的不足。


核心概念

LKA的核心概念在于融合卷积和自注意力的优势,包括局部结构信息、长距离依赖和适应性。它通过将大核卷积分解为三个部分来实现这一点:一个深度卷积(Depthwise Convolution)、一个深度扩张卷积(Depthwise Dilation Convolution)、以及一个点卷积(Pointwise Convolution)。这种分解使得模型可以在保持较低计算复杂度的同时,捕获长距离关系和通道维度的适应性。


模块的操作步骤

在这里插入图片描述

不同模块的结构:(a) 提出的大核注意力 (LKA);(b) 非注意力模块;© 用加法替代 LKA 中的乘法;(d) 自注意力。值得注意的是,(d) 是为一维序列设计的。

在这里插入图片描述

大核卷积的分解示意图。标准卷积可以分解为三部分:深度卷积 (DW-Conv)、深度扩张卷积 (DW-D-Conv) 和逐点卷积 (1×1 Conv)。彩色网格表示卷积核的位置,黄色网格表示中心点。示意图显示,一个 13×13 卷积被分解为一个 5×5 的深度卷积、一个膨胀率为 3 5×5 深度扩张卷积和一个逐点卷积。注意:上图中省略了零填充。


LKA模块的操作步骤包括以下几个关键部分:

  1. 深度卷积:处理局部结构信息。
  2. 深度扩张卷积:捕获长距离依赖。
  3. 点卷积:进行通道间的交互。

这一过程通过三部分来增强自注意力的长距离关联,同时保持局部信息。通过融合不同类型的卷积,LKA为特征的自适应调整提供了灵活性。


文章贡献

本文的主要贡献在于提出了一种新的线性注意力机制LKA,并基于此构建了视觉骨干网络VANLKA吸收了卷积和自注意力的优点,并避免了它们的缺点。此外,VAN在多种视觉任务中表现出色,包括图像分类、目标检测、语义分割、全景分割、姿态估计等。


实验结果与应用

实验结果表明,VANImageNet-1KCOCO等多个基准测试中取得了优异的表现。例如,VAN-B6ImageNet基准测试中取得了87.8%的准确率,并在COCO的全景分割任务中创造了新的记录。它在多个视觉任务上超过了许多传统的CNN和自注意力模型。


对未来工作的启示

LKA的成功展示了新的线性注意力机制在计算机视觉中的潜力。未来的研究可以进一步探索这种机制在其他领域的应用,或将其与其他注意力机制相结合。此外,LKA的低计算复杂度特点使其在移动设备和资源受限环境中的应用前景广阔。


代码

import torch
from torch import nnclass LKA(nn.Module):def __init__(self, dim):super().__init__()self.conv0 = nn.Conv2d(dim, dim, 5, padding=2, groups=dim)self.conv_spatial = nn.Conv2d(dim, dim, 7, stride=1, padding=9, groups=dim, dilation=3)self.conv1 = nn.Conv2d(dim, dim, 1)def forward(self, x):u = x.clone()attn = self.conv0(x)attn = self.conv_spatial(attn)attn = self.conv1(attn)return u * attnif __name__ == "__main__":input = torch.rand(3, 64, 64, 64)model = LKA(64)output = model(input)print(output.size())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成式人工智能AIGC技术的发展现状和未来趋势

生成式人工智能AIGC技术的发展现状和未来趋势 引言: 生成式人工智能(Generative Artificial Intelligence,GAN)是人工智能领域的一项重要技术,用于生成逼真的图像、视频和音频等内容。图形计算在游戏、虚拟现实、增强…

【Vue】组件化编程

定义 实现应用中局部功能代码和资源的集合 为什么要用组件化编程? 传统方式编写:依赖关系混乱,不好维护,且代码复用率不高 模块化编写:只关注解决js,复用js,简化js的编写与效率 组件方式编写:好维护、复用率更高、提高运行效率 在组件出现之前,我们开发基本都是用htm…

GD32E103C8T6 封装LQFP-48 GigaDevice(兆易创新) 单片机

GD32E103C8T6 是由GigaDevice(兆易创新)公司生产的一款基于ARM Cortex-M4内核的32位MCU(微控制器)。以下是GD32E103C8T6的一些主要功能和参数介绍: 主要功能: 高性能ARM Cortex-M4内核: 采用120MHz的ARM …

修复所有 bug 并不能解决所有问题

原文:jeffpsherman - 2024.04.08 在软件领域,如同在制造业,有些问题是由于 bug 或“特殊原因”引发的,而有些则是“常见原因”,这是由于系统设计和实现的性质所导致的。修复 bug 就是移除特殊原因,消除 bu…

基于SpringBoot的合家云社区物业管理平台 - 项目介绍

合家云社区物业管理平台 2.合家云需求&设计 2.1 项目概述 2.1.1 项目介绍 合家云社区物业管理平台是一个全新的 ”智慧物业解决方案“,是一款互联网的专业社区物业管理系统。平台通过社区资产管理、小区管理、访客管理、在线报修、意见投诉等多种功能模块&a…

指针笔试题模拟

题目一 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; } 1*(a1)可以等价于a[1],即第一个打印的是数组第二个下标的元素:2 2 而ptr拿到的是整个数组的地…

CentOS上如何自定义开机启动服务

一:简单的例子 在CentOS7之后自定义开机启动服务,可以通过创建一个systemd服务单元文件来实现。以下是创建自定义服务并设置其开机启动的步骤: 1,编辑服务文件,并添加以下内容: [Unit] DescriptionMy cu…

MySQL慢SQL优化技术深度学习指南

引言 在现代数据驱动的应用环境中,MySQL作为广泛应用的关系型数据库管理系统,其性能直接影响着整个系统的响应速度与用户体验。随着数据规模的增长和业务复杂性的提升,一些SQL查询可能会逐渐演变为慢查询,成为系统性能瓶颈。本文旨…

Ubuntu安装中文输入法

Ubuntu默认没有中文输入法, 本文将安装搜狗拼音输入法。 1 安装搜狗拼音输入法 下载安装搜狗拼音输入法: 先去官网下载安装包, 然后执行安装: sudo dpkg -i sogoupinyin_4.0.1.2800_x86_64.deb 2 安装fcitx sudo apt install fci…

SVM中常用的核函数及适用场景

常用的核函数 核函数(Kernel functions)在机器学习中尤其是在支持向量机(SVM)中扮演着重要的角色,它们能够将数据映射到高维空间,从而解决非线性问题。以下是一些常用的核函数及其适用场景: 线…

大模型的幻觉---探讨及解决之道

大模型「幻觉」背景 幻觉可以说早就已经是LLM老生常谈的问题了,那为什么会产生这个现象该如何解决这个问题呢?大模型幻觉产生的背景主要涉及人类视觉系统的特性和大规模机器学习模型的复杂性。以下是对大模型幻觉产生背景的详细说明和介绍: …

C语言之详细讲解文件操作

什么是文件 与普通文件载体不同,文件是以硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。文件通常具有点三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以KPEG格式保存并且文件…

第5篇:创建Nios II工程之Hello_World<四>

Q:最后我们在DE2-115开发板上演示运行Hello_World程序。 A:先烧录编译Quartus硬件工程时生成的.sof文件,在FPGA上成功配置Nios II系统;然后在Nios II Eclipse窗口右键点击工程名hello_world,选择Run As-->Nios II …

Go语言中,如何做到数据按类别分发给特定的协程处理

在 Go 语言中,如果你想按类别将数据分配给特定的协程(goroutine)进行处理,可以使用几种策略。下面我将提供一些方法和示例,说明如何根据数据类别将任务分配给不同的协程来处理。 使用通道(Channel&#xf…

C#利用IDbCommand实现通用数据库脚本执行程序

目录 关于 ExecuteNonQuery 数据库脚本程序的执行流程 范例运行环境 通用类的设计 引用 DAL类 实现代码 小结 关于 ExecuteNonQuery 在.net 应用中,在数据库中执行脚本程序是经常用到的功能,如数据操作(新增、修改、删除等&#xff0…

C语言趣味代码(四)

这一篇主要编写几个打字练习的小程序,然后通过这些小程序的实现来回顾复习我们之前学过的知识,然后通过这写打字练习的小程序来提升我们的打字技术和编程技术。 1. 打字练习 1.1 基本打字练习 1.1.1 基本实现 首先我们来制作一个用于计算并显示输入一…

github two-factor authentication是个啥?

最近在逛github时,总是时不时会弹出一下界面,很烦 看到红框里的文字,这明显是强制要求做这个认证,如果不认证4天后账号将不可访问,所以今天花点时间看看怎么做这个认证,点“Enable 2FA now”进入这个界面&a…

普通用户执行source报错,sudo: source:找不到命令的解决方案

一、问题描述 当修改/etc/profile文件(环境变量)后,想让该环境变量立刻生效。需要执行source命令。命令如下: sudo source /etc/profile 执行这个后,不像别人的执行成功,反而报错了。错误信息如下&#…

通配符模式

一、通配符介绍 通配符模式(Wildcard Pattern)是一种用于字符串匹配的通用模式规则,常见于文件系统、命令行工具以及编程语言中的文件路径匹配、配置筛选等场景。通配符模式是一种使用特殊字符来表示匹配规则的字符串语法,它允许…

linux下安装anaconda

顺手点个关注吧,谢谢! 一、下载安装包 https://repo.anaconda.com/archive/ 或者使用命令 wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh2.赋予权限并安装 # 给文件执行权限 chmod 777 Anaconda3-5.3.1-Linux-x86_64.sh# 执…