当前位置: 首页 > news >正文

2024/4/14周报

文章目录

  • 摘要
  • Abstract
  • 文献阅读
    • 题目
    • 创新点
    • CROSSFORMER架构
      • 跨尺度嵌入层(CEL)
      • CROSSFORMER BLOCK
      • 长短距离注意(LSDA)
      • 动态位置偏置(DPB)
    • 实验
  • 深度学习
    • CrossFormer
      • 背景
      • 维度分段嵌入(DSW)
      • 两阶段注意力层(TSA)
      • 分层encoder-decoder
      • 表现
      • 超参数调整
  • 总结

摘要

本周阅读了一篇以跨尺度注意力为基础的通用视觉Transformer器的文章,文中提出了跨尺度嵌入层(CEL)和长短距离注意(LSDA)。不仅减少了计算负担,而且在嵌入中同时保留了小尺度和大尺度特征。通过以上两种设计,实现了跨尺度注意。大量的实验表明,CrossFormer在图像分类、对象检测、实例分割和语义分割任务上优于其他视觉转换器。此外,对CrossFormer进行更近一步的学习。

Abstract

This week, an article about a universal visual Transformer based on cross-scale attention is readed, in which cross-scale embedding layer (CEL) and long-short distance attention (LSDA) are proposed. It not only reduces the computational burden, but also preserves both small-scale and large-scale features in embedding. Through the above two designs, cross-scale attention is realized. A large number of experiments show that CrossFormer is superior to other visual converters in image classification, object detection, instance segmentation and semantic segmentation. In addition, learn more about CrossFormer.

文献阅读

题目

CROSSFORMER: AVERSATILE VISION TRANSFORMER HINGING ON CROSS-SCALE ATTENTION

创新点

1) 提出了跨尺度嵌入层(CEL)和长短距离注意(LSDA),它们共同弥补了现有变压器无法建立跨尺度注意的缺陷。
2) 进一步提出了动态位置偏置模块(DPB),以使相对位置偏置更加灵活,即,适应可变的图像大小或组大小。
3) 构建了多个不同大小的CrossFormers,并通过四个代表性视觉任务的充分实验证实了它们的有效性。

CROSSFORMER架构

CrossFormer的整体架构如图所示:
在这里插入图片描述

左图(a):用于分类的CrossFormer的架构。输入大小为H0 ×W0,每个阶段的特征图大小显示在顶部。阶段i由CEL和ni CrossFormer块组成。CEL中的数字表示用于对补丁进行采样的内核大小。
右图(b):两个连续CrossFormer块的内部结构。SDA和LDA交替出现在不同的区块中。

CrossFormer采用了金字塔结构,将Transformer模型分为四个阶段。每个阶段由一个跨尺度嵌入层(CEL)和几个CrossFormer块组成。CEL接收最后一级的输出(或输入图像)作为输入,并生成跨尺度嵌入。在这个过程中,CEL(除了第1阶段)将嵌入的数量减少到四分之一,同时将金字塔结构的维度增加一倍。然后,在CEL之后,建立多个CrossFormer模块,每个模块都涉及长短距离注意(LSDA)和动态位置偏差(DPB)。

跨尺度嵌入层(CEL)

跨尺度嵌入层(CEL)被用来为每个阶段生成输入嵌入。图2以第一个CEL为例:
在这里插入图片描述

输入图像由四个不同的核采样(即,4 × 4,8 × 8,16 × 16,32 × 32),步幅相同4 × 4。每个嵌入都是通过投影和连接四个补丁来构建的。Dt表示嵌入的总维数。

CROSSFORMER BLOCK

每个CrossFormer模块由长短距离注意模块(即,LSDA,其涉及短距离注意(SDA)模块或长距离注意(LDA)模块)和多层感知器(MLP)。如图1b所示,SDA和LDA交替出现在不同的块中,动态位置偏置(DPB)模块在SDA和LDA中工作,以获得嵌入的位置表示。在先前的视觉变换器之后,在每个块中使用剩余连接。

长短距离注意(LSDA)

将自我注意模块分为两部分:短距离注意(SDA)和长距离注意(LDA)。对于SDA,每个G×G相邻嵌入被分组在一起。图3a给出了G = 3的示例。对于输入大小为S × S的LDA,嵌入以固定间隔I采样。例如,在图3b(I = 3)中,所有带有红色边框的嵌入都属于一个组,而那些带有黄色边框的嵌入则组成另一个组。LDA的组的高度或宽度被计算为G = S/I(即,在这个例子中G = 3)。在分组嵌入之后,SDA和LDA都在每个组内使用香草自我注意。因此,自注意模块的存储/计算成本从O(S4)降低到O(S2 G2),并且在大多数情况下G <S。
在这里插入图片描述

动态位置偏置(DPB)

相对位置偏差(RPB)通过在嵌入者的注意力上增加一个偏差来表示嵌入者的相对位置:
在这里插入图片描述

提出了一个基于MLP的模块DPB来动态生成相对位置偏差:
在这里插入图片描述

实验

实验进行了四个具有挑战性的任务:图像分类,对象检测,实例分割,语义分割。
图像分类:
结果示于表2中:
在这里插入图片描述

CrossFormer实现了与其他最先进的视觉Transformer结构相媲美的参数和FLOP的最高精度。具体而言,与强大的基线DeiT,PVT和Swin相比,我们的CrossFormer在小模型上的准确性至少绝对优于它们1.2%。此外,虽然RegionViT在小模型上达到了与我们相同的准确度(82.5%),但在大模型上绝对低于我们的0.7%(84.0% vs. 83.3%)。
目标检测和实例分割:
关于对象检测和实例分割的实验都是在COCO 2017数据集上完成的(Lin et al.,2014),其中包含118K训练和5K瓦尔图像。结果RetinaNet和Mask R-CNN的结果分别见表3和表4:
在这里插入图片描述
在这里插入图片描述

语义分割:
结果示于表5中。与对象检测类似,CrossFormer在扩大模型时表现出更大的性能增益:
在这里插入图片描述

深度学习

CrossFormer

背景

现有的Transformer类模型变体主要都是侧重于捕捉时间序列的跨时间依赖性,而忽略了变量之间的跨维度依赖性。Crossformer,这是一个基于Transformer的模型,考虑了跨维度依赖性。

主要设计了三大结构:
1)维度分段嵌入(DSW):负责保留时间和维度信息。每个维度的序列被分割成段,嵌入到特征向量中。
2)两阶段注意力(TSA):有效捕捉跨时间和跨维度依赖性。
3)分层encoder-decoder(HED):每一层对应一个尺度,encoder上层捕捉较粗尺度的依赖性,decoder生成不同尺度的预测并加总作为最终预测。

以往Transformer变体在做多变量时间序列预测的时候,位于同一个时间步不同维度的数据是直接嵌入到同一个向量中的,如此一来计算向量之间的注意力就只能捕捉到时间步上的区别(如图b)。图a所示的是在ETTh1数据集上训练的注意力图,可以看到注意力值有明显的分段,且相近的数据点的注意力权重相似。
故CrossFormer作者认为每个维度的序列在不同时间步上应该被分割成好几段来嵌入,而不是单个时间步表示所有维度的嵌入(如图c)。
在这里插入图片描述

维度分段嵌入(DSW)

在这里插入图片描述

两阶段注意力层(TSA)

对于获得的二维数组H,直接应用自注意力会产生二次方的复杂度,因此通过两阶段注意力层捕获二维数组跨时间和跨维度的依赖性。
1、 跨时间阶段:直接将多头自注意力应用于每个维度

2、 跨维度阶段:该阶段直接对每个维度间应用多头自注意力会导致O(D2)的复杂性,对每个时间步i设置固定数量的可学习向量作为路由器,让信息先与中间少量路由器聚合再进行信息传递,减少注意力计算的复杂度。
在这里插入图片描述

首先将路由器R作为多头自注意力的query、所有维度的向量Z作为key和value聚合来自所有维度的信息B;然后将维度向量Z作为query、聚合的信息B作为key和value进行聚合,作为路由器在维度之间分发收到的信息。
最终路由器机制将复杂度从O(D2L)降到O(DL)。
在这里插入图片描述

两阶段注意力层的最终输出为Y,总计算复杂度为O(DL2+DL)=O(DL2)
在这里插入图片描述

分层encoder-decoder

通过DSW嵌入、TSA层以上两个结构,作者加入序列段的合并来构建分层的encoder- decoder。
在这里插入图片描述

将Z与可学习的权重矩阵W相乘得到L层第i个分段的预测值,对所有层预测值相加得到最终预测。
在这里插入图片描述
在这里插入图片描述

表现

Crossformer在大多数数据集以及预测长度上都表现出较好的性能,在58个案例中有36个排名第一,51个排名第二。其次 FEDfrmer 和 MTGNN 的表现也优于许多baseline。
在这里插入图片描述

消融实验(DSW、TSA、HED)
(1)DSW嵌入因考虑了跨维度依赖性,在大多数情况下比Transformer原始嵌入方法表现得更好。
(2)TSA两阶段注意力分开考虑了时间和维度,提高了预测精度。
(3)HED在短期预测中降低了精度,而在长期预测中HED包含不同尺度的信息提高了精度。
三者结合效果最佳
在这里插入图片描述

超参数调整

(1)分段长度Lseg:对于短期预测(24、48),较小的分段效果越好,预测精度总体较稳定。对于长期预测(168以上),随着分段长度从4到24 MSE下降,即分段长度越长适合长期预测。
(2)路由器个数c:在预测长度336之前,随着c变化MSE较稳定,当预测长度720时,随着c增加MSE趋于下降。选择c=10来平衡预测精度和计算效率。
在这里插入图片描述

计算效率分析
Crossformer encoder的复杂度是二次方,但可以使用较大的分段长度Lseg进行长期预测来降低复杂度(化掉分母)。
在这里插入图片描述

消融版本随着维度D增大的内存占用:TSA可以明显降低复杂度,没有路由器机制的TSA(w/o Router)也有助于降低复杂度,而路由器机制可以进一步使复杂度线性化,能够处理300维的数据。
在这里插入图片描述

总结

(1)在TSA的跨维度阶段,路由器机制建立的连接除了捕获跨维度依赖性外,还给高维数据引入了噪声,因此,利用高维数据的稀疏性来降低噪声,提高TSA层的计算效率是一个很有前途的方向。
(2)Dlinear的作者认为基于transformer的模型难以保持有序信息,因为注意机制是排列不变的,并且注入到模型中的绝对位置嵌入不足以用于时间序列预测,可考虑文本和视觉中的相对位置编码。
(3)用于时间序列预测的数据集比用于文本和视觉的数据集要小得多,并且时间序列数据集中的模式也更简单,可考虑在大型数据集上充分发挥潜力。

相关文章:

2024/4/14周报

文章目录 摘要Abstract文献阅读题目创新点CROSSFORMER架构跨尺度嵌入层&#xff08;CEL&#xff09;CROSSFORMER BLOCK长短距离注意&#xff08;LSDA&#xff09;动态位置偏置&#xff08;DPB&#xff09; 实验 深度学习CrossFormer背景维度分段嵌入&#xff08;DSW&#xff09…...

MySQL 社区版 安装总结

很早就安装过MySQL&#xff0c;没有遇到过什么问题&#xff0c;直接next就行了&#xff0c;这次在新电脑上安装却遇到了一些问题&#xff0c;记录一下。 安装的是MySQL社区版&#xff0c;下载地址是www.mysql.com&#xff0c;进入后选择DOWNLOAD页面&#xff0c;选择MySQL Com…...

二叉排序树的增删改查(java版)

文章目录 1. 基本节点2. 二叉排序树2.1 增加节点2.2 查找&#xff08;就是遍历&#xff09;就一起写了吧2.3 广度优先遍历2.4 删除&#xff08;这个有点意思&#xff09;2.5 测试样例 最后的删除&#xff0c;目前我测试的是正确的 1. 基本节点 TreeNode: class TreeNode{pri…...

linux下coredump问题的定位分析方法

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考&#xff1a;https://blog.csdn.net/m0_73698480/article/details/130077852 最近定位了一段时间linux下的崩溃问题&#xff0c;又收集了一些思路&#xff0c;特整理记录一下。 常见coredump定位方法是&#xff1a…...

第十届蓝桥杯省赛真题(C/C++大学B组)

目录 试题 A: 组队 试题 B: 年号字串 试题 C: 数列求值 试题 D: 数的分解 试题 E: 迷宫 试题 F: 特别数的和 试题 G&#xff1a;完全二叉树的权值 试题 H&#xff1a;等差数列 试题 I&#xff1a;后缀表达式&#xff08;不一定对&#xff09; 试题 J&#xff1a;灵能…...

Scrapy 爬取m3u8视频

Scrapy 爬取m3u8视频 【一】效果展示 爬取ts文件样式 合成的MP4文件 【二】分析m3u8文件路径 视频地址&#xff1a;[在线播放我独自升级 第03集 - 高清资源](https://www.physkan.com/ph/175552-8-3.html) 【1】找到m3u8文件 这里任务目标很明确 就是找m3u8文件 打开浏览器…...

LVGL简单记录

1、 vs中代码旁边有个小锁删除git 2、Visual Studio 试图编译已删除的文件&#xff0c; 如果这个文件也是你不再需要编译的文件&#xff0c;且已经从文件系统中删除&#xff0c;你需要从 .vcxproj 文件中移除或者注释掉这一行&#xff0c;以停止Visual Studio尝试去编译一个不…...

计算机网络——ARP协议

前言 本博客是博主用于复习计算机网络的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结&#xff0c;讲的非常好。 可以先去看一篇视频&#xff0c;再来参考这篇笔记&#xff08;或者说直接偷走&#xff09;。 …...

【C++]C/C++的内存管理

这篇博客将会带着大家解决以下几个问题 1. C/C内存分布 2. C语言中动态内存管理方式 3. C中动态内存管理 4. operator new与operator delete函数 5. new和delete的实现原理 6. 定位new表达式(placement-new) 1. C/C内存分布 我们先来看下面的一段代码和相关问题 int global…...

深入理解计算机网络分层结构

一、 为什么要分层&#xff1f; 计算机网络分层的主要目的是将复杂的网络通信过程分解为多个相互独立的层次&#xff0c;每个层次负责特定的功能。这样做有以下几个好处&#xff1a; 模块化设计&#xff1a;每个层次都有清晰定义的功能和接口&#xff0c;使得网络系统更易于设…...

亚马逊云科技CTO带你学习云计算降本增效秘诀

2023亚马逊云科技一年一度的重磅春晚--Re:invent上有诸多不同话题的主题Keynote&#xff0c;这次小李哥带大家复盘来自亚马逊CTO: Wener博士的主题演讲: 云架构节俭之道1️⃣节俭对于云计算为什么重要&#xff1f; ▶️企业基础设施投入大&#xff0c;利用好降本策略可以减少巨…...

快速上手Vue

目录 概念 创建实例 插值表达式 Vue响应式特性 概念 Vue是一个用于 构建用户界面 的 渐进式 框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;Vue相关生态&#xff1a;声明式渲染<组件系统<客户端路由<大规模状态管理<构建工具 V…...

java 目录整理

Java知识相关目录主要参考黑马程序员 风清扬老师的视屏,参考链接为 Java_黑马刘意(风清扬)2019最新版_Java入门视频_Java入门_Java编程_Java入门教程_黑马教程_黑马程序员_idea版_哔哩哔哩_bilibili 1、java 基础 java基本认识?java跨平台原理?jdk、jre、jvm的联系? 链接:…...

使用Python的Pillow库进行图像处理书法参赛作品

介绍&#xff1a; 在计算机视觉和图像处理领域&#xff0c;Python是一种强大而流行的编程语言。它提供了许多优秀的库和工具&#xff0c;使得图像处理任务变得轻松和高效。本文将介绍如何使用Python的wxPython和Pillow库来选择JPEG图像文件&#xff0c;并对选中的图像进行调整和…...

docker 容器指定utf-8编码

在运行 Docker 容器的时候&#xff0c;如果容器内应用需要使用 UTF-8 编码来正常处理中文&#xff0c;你可以通过设置环境变量来指定编码。 可以使用 -e 或者 --env 标志来设置环境变量。比如&#xff0c;设置 LANG 和 LC_ALL 环境变量为 C.UTF-8 或者 en_US.UTF-8&#xff1a…...

单例模式以及常见的两种实现模式

单例模式是校招中最常考的设计模式之一. 设计模式其实就是类似于“规章制度”&#xff0c;按照这个套路来进行操作。 单例模式能保证某个类在程序中只存在唯一 一份实例。而不会创建出多个实例&#xff0c;如果创建出了多个实例&#xff0c;就会编译报错。而不会创建出多个实…...

Java hashCode() 和 equals()的若干问题解答

Java hashCode() 和 equals()的若干问题解答 本章的内容主要解决下面几个问题&#xff1a; 1 equals() 的作用是什么&#xff1f; 2 equals() 与 的区别是什么&#xff1f; 3 hashCode() 的作用是什么&#xff1f; 4 hashCode() 和 equals() 之间有什么联系&#xff1f; …...

高级IO——React服务器简单实现

3.4Reactor服务器实现 1.connect封装 ​ 每一个连接都要有一个文件描述符和输入输出缓冲区&#xff0c;还有读、写、异常处理的回调方法&#xff1b; ​ 还包括指向服务器的回指指针&#xff1b; class connection; class tcpserver;using func_t std::function<void(s…...

Qt使用插件QPluginLoader 机制开发

简介&#xff1a; 插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。 Qt 提供了2种APIs来创建插件&#xff1a; 一种高级API&#xff0c;用于为Qt本身编写插件&#xff1a;自定义数据库驱动程序&#xff0c;图像格…...

双子座 Gemini1.5和谷歌的本质

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...