(2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干

Vision-LSTM: xLSTM as Generic Vision Backbone

公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

2 方法

3 实验

3.1 分类设计

4 结论


0. 摘要

Transformer 被广泛用作计算机视觉中的通用骨干网络,尽管它最初是为自然语言处理引入的。最近,长短期记忆网络(LSTM)被扩展为一种可扩展且高性能的架构——xLSTM,通过指数门控和可并行的矩阵存储结构克服了长期存在的 LSTM 局限性。在这份报告中,我们介绍了视觉 LSTM(Vision-LSTM,ViL),这是 xLSTM 构建模块在计算机视觉中的一种改编。ViL 由一堆 xLSTM 模块组成,奇数模块从上到下处理补丁标记序列,而偶数模块则从下到上处理。实验表明,ViL 有望进一步作为新的计算机视觉架构通用骨干网络进行部署。

项目页面:https://nx-ai.github.io/vision-lstm/

2 方法

Vision-LSTM(ViL)是一个用于计算机视觉任务的通用骨干网络,它是由 xLSTM 模块构建而成的,如图 1 所示。按照 ViT [13] 的方法,ViL 首先通过共享的线性投影将图像分割成不重叠的补丁(patch),然后为每个补丁标记(token)添加可学习的位置嵌入。ViL 的核心是交替的 mLSTM 模块,这些模块是完全可并行化的,并配备了矩阵存储和协方差更新规则。奇数 mLSTM 模块从左上角到右下角处理补丁标记,而偶数模块则从右下角处理到左上角。

(2024,LSTM,Transformer,指数门控,归一化器状态,多头内存混合)xLSTM:扩展的 LSTM

3 实验

我们在 ImageNet-1K [12] 上进行实验,该数据集包含 130 万张训练图像和 5 万张验证图像,每张图像属于 1000 个类别之一。我们的比较主要集中在使用序列建模骨干网络并且参数数量大致相当的模型上。

我们在 224x224 分辨率下训练 ViL 模型 800 个 epochs(tiny, tiny+)或 400 个 epochs(small, small+, base),学习率为 1e-3,使用余弦衰减调度。详细的超参数可以在附录 5 中找到。

(2024,ViM,双向 SSM 骨干,序列建模)利用双向状态空间模型进行高效视觉表示学习

为了与 Vision Mamba (Vim) [44] 进行公平比较,我们在模型中添加了额外的模块,以匹配 tiny 和 small 变体的参数数量(分别记为 ViL-T+ 和 ViL-S+)。需要注意的是,ViL 所需的计算量显著少于 Vim,因为 ViL 以交替方式遍历序列,而 Vim 每个模块遍历序列两次。这一点即使在 Vim 使用优化的 CUDA 内核的情况下依然成立,目前 mLSTM 尚无优化的 CUDA 内核(可进一步加速 ViL)。我们在附录 A.1 中比较了运行时间,ViL 比 Vim 快达 69%。

由于 ViT 在视觉领域已得到广泛应用,经过多年的多次优化循环 [13, 34, 36, 35, 37, 19]。作为首次将 xLSTM 应用于计算机视觉的工作,我们不期望在所有情况下都能超越多年超参数调优的ViT。然而,表 1 中的结果显示,ViL 在较小规模上显示出比经过大量优化的 ViT 协议(DeiT, DeiT-II, DeiT-III)更好的结果,只有经过双倍训练的 DeiT-III-S 略优于 ViL-S。在 “base” 规模上,ViL 表现优于初始 ViT [13] 模型,并且与 DeiT [34] 取得了可比的结果。需要注意的是,由于在这种规模上训练模型的成本很高,ViL-B 的超参数远未达到最佳。参考,训练 ViL-B 大约需要 600 A100 GPU 小时,或者在 32 个 A100 GPU 上约 19 小时。

通过在 “长序列微调” 设置中微调模型可以进一步提高性能 [44],该设置通过在连续补丁标记之间使用 50% 的重叠,增加序列长度到 729,并微调模型 30 个 epoches。

ViL 在与基于 CNN 的模型(如 ConvNeXt [24])的竞争中也表现出色,尽管没有利用卷积固有的归纳偏差。

块设计。我们在表 2 中研究了不同的 ViL 模块设计方法。简单的单向 xLSTM 模块未能达到竞争性能,因为 xLSTM 的自回归特性不适合图像分类。以双向方式遍历模块,即在每个模块中引入一个反向遍历序列的第二个 mLSTM 层(类似于 Vim [44]),可以提高性能,但也需要更多的参数和 FLOPS。共享前向和后向 mLSTM 的参数使模型更具参数效率,但仍需要更多的计算资源,并且会导致这些参数过载,从而导致性能下降。使用交替模块可以提高性能,同时保持计算和参数效率。我们还探索了四向设计(类似于 [23]),即行方向(双向)和列方向(双向)遍历序列。双向仅在行方向(双向)上遍历序列。图 2 可视化了不同的遍历路径。

由于双向和四向模块的成本增加,这项研究是在大幅减少的设置中进行的。我们在 ImageNet-1K 的一个子集上训练,该子集仅包含 100 个类别的样本,分辨率为 128x128,训练 400 个周期。这尤其必要,因为我们的四向实现不兼容 torch.compile(PyTorch [29] 的一种通用速度优化方法),这导致运行时间更长,如表 2 最后一列所示。由于这一技术限制,我们选择交替双向模块作为我们的核心设计。

3.1 分类设计

为了使用 ViT 进行分类,通常将标记序列池化为单个标记,然后用作分类头的输入。最常见的池化方法是:(i)在序列开始处添加一个可学习的 [CLS] 标记,或(ii)对所有补丁标记取平均值生成一个 [AVG] 标记。是否使用 [CLS] 或 [AVG] 标记通常是一个超参数,两种变体的性能大致相当。而自回归模型通常需要专门的分类设计。例如,Vim [44] 需要将 [CLS] 标记放在序列中间,如果使用其他分类设计(如 [AVG] 标记或在序列开始和结束处分别放置两个 [CLS] 标记),性能会大幅下降。由于其自回归特性,我们在表 3 中探索了不同的 ViL 分类设计。[AVG] 对所有补丁标记取平均值,“Middle Patch” 使用中间补丁标记,“Middle [CLS]” 在序列中间使用一个 [CLS] 标记,“Bilateral [AVG]” 使用第一个和最后一个补丁标记的平均值。我们发现,ViL 对分类设计相对鲁棒,所有性能差异都在 0.6% 以内。我们选择 “Bilateral [AVG]” 而不是 “Middle [CLS]”,因为 ImageNet-1K 已知具有中心偏差,即物体通常位于图片中央。通过使用 “Bilateral [AVG]”,我们避免了利用这种偏差,使我们的模型更具普适性。

为了与使用单一标记作为分类头输入的先前架构保持可比性,我们对第一个和最后一个补丁取平均值。为了实现最佳性能,我们建议将这两个标记连接起来(“Bilateral Concat”)而不是取平均值。这类似于自监督视 ViT 中的常见做法,如 DINOv2 [28],它们通过在 [CLS] 和 [AVG] 标记处分别附加两个目标进行训练,因此通过连接 [CLS] 和 [AVG] 标记的表示受益。这一方向也已在视觉 SSM 模型 [40] 中进行了探索,在序列中散布多个 [CLS] 标记并用作分类器的输入。类似的方法也可以提高 ViL 的性能。

4 结论

受 xLSTM 在语言建模中成功的启发,我们介绍了 ViL,这是一种将 xLSTM 架构改编到视觉任务中的方法。ViL 以交替方式处理补丁标记序列。奇数模块按行从左上角处理到右下角,而偶数模块从右下角处理到左上角。我们的新架构在 ImageNet-1K 分类中优于基于 SSM 的视觉架构和优化后的 ViT 模型。值得注意的是,ViL 在公平比较中能够超越经过多年超参数调优和改进的 ViT 训练管道。

未来,我们看到在需要高分辨率图像以获得最佳性能的场景中应用 ViL 的潜力,例如语义分割或医学成像。在这些设置中,transofrmer 由于自注意力的二次复杂性而面临高计算成本,而 ViL 由于其线性复杂性则不然。此外,改进预训练方案(如通过自监督学习),探索更好的超参数设置或迁移 transformer 中的技术(如 LayerScale [35])都是 ViL 的有前景的方向。

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

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

相关文章

linux常用操作命令汇总

各个软件安装步骤流程 jdk 链接: mysql 链接: redis 要查询 Linux 上各个应用程序占用的内存 要查询 Linux 上各个应用程序占用的内存,可以使用 top 或 ps 命令结合其他工具来实现。下面介绍两种方法 方法一:使用 top 命令 打…

Access数据中的SQL偏移注入

使用场景: 目标数据表的字段较多,无法一一获取的时候,尝试使用偏移注入的方式实现SQL注入。 原理: 例如:一个表有6个字段,而你想获取的目标表admin的字段不知道,此时可以使用联合查询的方式获…

反射型xss靶场练习

反射型xss危害小,这里使用的xss靶场是常用的xss靶场:xss-labs。 当我们完成弹窗后就通过该关卡,说该关卡存在xss的一个漏洞并且可以解析js代码。 第一关: 这里没有过滤我们输入的代码:直接将js代码放在js代码中&a…

12、架构-流量治理之服务容错

概述 容错性设计(Design for Failure)是微服务的另一个核心原 则,也是笔者书中反复强调的开发观念转变。不过,即使已经有一定 的心理准备,大多数首次将微服务架构引入实际生产系统的开发者, 在服务发…

web前端 麦子学院:探索前端技术的无尽奥秘

web前端 麦子学院:探索前端技术的无尽奥秘 在数字化浪潮汹涌的时代,Web前端技术作为连接用户与互联网的桥梁,正以其独特的魅力吸引着无数开发者。麦子学院,作为前端技术学习的殿堂,为我们提供了深入探索前端技术的宝贵…

Linux下线程的互斥与同步详解

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误或者有写的不好的地方的话&…

android:text 总为大写字母的原因

当设置某个 Button 的 text 为英文时&#xff0c;界面上显示的是该英文的大写形式&#xff08;uppercase&#xff09;。例如&#xff1a; <Buttonandroid:id"id/btn"android:layout_width"wrap_content"android:layout_height"wrap_content"…

centos7 安装 mysql5.7 LTS

centos7 安装 mysql5.7 LTS 参考&#xff1a; https://blog.csdn.net/EB_NUM/article/details/105425622 可以在运行安装程序之前导入密钥&#xff1a; sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022第一步、下载MySQL 安装包&#xff1a; sudo wget h…

Python 中的内存管理机制

Python 的内存管理机制主要由两个部分组成&#xff1a;垃圾回收机制和引用计数。 垃圾回收机制主要负责检测和回收不再被使用的内存。Python 使用的是自动垃圾回收机制&#xff0c;也就是说程序员不需要手动释放内存。Python 的垃圾回收机制采用了引用计数的方法来追踪和回收不…

植物大战僵尸杂交版破解C++实现

文章目录 前言准备工作&#xff1a;基地址与偏移UI界面设计和绑定项目模板总览图生成与实现信号处理1、阳光值更新:BTN12、三种钱币值更新:BTN2-BTN43、冷却刷新:BTN54、锁定阳光&#xff1a;check15、无冷却&#xff1a;check26、OnTimer&#xff08;&#xff09;和OnClose&am…

git合并多个项目并保留提交版本记录

目录 一、场景 二、合并步骤 1.本地新建 all 目录&#xff0c;并初始化 2.在 all 中添加 a&#xff0c;b&#xff0c;c 的远程分支 3.验证是否添加成功 4.在 all 目录下&#xff0c;获取 a, b,c 的 master 分支数据 5.合并项目并移动到子目录中 6.推送 all 的 master 分支…

二开版微交易系统

下载地址&#xff1a;二开版微交易系统

集成学习概述

概述 集成学习(Ensemble learning)就是将多个机器学习模型组合起来&#xff0c;共同工作以达到优化算法的目的。具体来讲&#xff0c;集成学习可以通过多个学习器相结合&#xff0c;来获得比单一学习器更优越的泛化性能。集成学习的一般步骤为&#xff1a;1.生产一组“个体学习…

实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)

导读 本文主要介绍如何使用YOLOv10在自定义数据集训练实现车牌检测 (数据集训练预测 保姆级教程)。 YOLOv10简介 YOLOv10是清华大学研究人员在Ultralytics Python包的基础上&#xff0c;引入了一种新的实时目标检测方法&#xff0c;解决了YOLO以前版本在后处理和模型架构方面…

规范系统运维:系统性能监控与优化的重要性与实践

在当今这个高度信息化的时代&#xff0c;企业的IT系统运维工作显得尤为关键。其中&#xff0c;系统性能监控和优化是运维工作中不可或缺的一环。本文旨在探讨规范系统运维中系统性能监控与优化的重要性&#xff0c;并分享一些实践经验和策略。 一、系统性能监控与优化的重要性…

RAGFlow 学习笔记

RAGFlow 学习笔记 0. 引言1. RAGFlow 支持的文档格式2. 嵌入模型选择后不再允许改变3. 干预文件解析​4. RAGFlow 与其他 RAG 产品有何不同&#xff1f; ​5. RAGFlow 支持哪些语言&#xff1f; ​6. 哪些嵌入模型可以本地部署&#xff1f; ​7. 为什么RAGFlow解析文档的时间比…

自动化装箱封箱解决方案:深度探讨其优势及故障处理技巧

在当今这个快节奏、高效率的时代&#xff0c;自动化装箱封箱解决方案以其独特的优势&#xff0c;正逐渐成为物流、仓储等行业的新宠。它不仅能大幅提升作业效率&#xff0c;还能显著降低人工成本&#xff0c;减少人为错误。星派将深度探讨自动化装箱封箱技术的显著优势&#xf…

【Vue】练习-mutations的减法功能

文章目录 一、需求二、完整代码 一、需求 步骤 二、完整代码 Son1.vue <template><div class"box"><h2>Son1 子组件</h2>从vuex中获取的值: <label>{{ $store.state.count }}</label><br><button click"handleA…

C# 界面控件中英切换

编程软件:VS 2015 需求:界面有两个按钮&#xff0c;点击可以将界面上所有控件进行不同语言的切换。 一共两种方案&#xff0c;个人认为第二种方案使用范围更广&#xff08;这里以中英文切换为例&#xff09;。 方案一:如图所示&#xff0c;建立两个资源文件 将所需控件的中英…

海思SS928(SD3403)部署YOLOv5-YOLOv7步骤详解

1. YOLO模型资料 本文档内容以yolov5-7.0工程、yolov5s模型为例。 a. 模型结构 详细的模型结构可以利用netron工具打开.pt或.onnx模型查看。 b. 模型参数即验证结果 其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x为五种类型的预训练模型,其包含的检测类别相…