“羊驼“入侵CV,美团浙大沈春华团队将LLaMA向CV扩展,构建全新基础模型VisionLLaMA

本文主要是介绍“羊驼“入侵CV,美团浙大沈春华团队将LLaMA向CV扩展,构建全新基础模型VisionLLaMA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文首发:AIWalker

https://arxiv.org/abs/2403.00522
https://github.com/Meituan-AutoML/VisionLLaMA

本文概述

大型语言模型构建在基于Transformer的架构之上来处理文本输入, LLaMA 系列模型在众多开源实现中脱颖而出。类似LLaMa的Transformer可以用来处理2D图像吗?在本文中,我们通过提出一种类似 LLaMA 的朴素和金字塔形式的Transformer来回答这个问题,称为 VisionLLaMA。 VisionLLaMA 是一个统一的通用建模框架,用于解决大多数视觉任务。

我们采用经典的预训练框架在图像感知(尤其是图像生成)任务上对齐有效性进行了充分评估。在大多数情况下,VisionLLaMA表现出了比已有SOTA ViT方案更优的性能。我们相信 VisionLLaMA 可以作为视觉生成和理解的强大新基线模型。

本文贡献

  • 提出一种类似于LLaMA的视觉转换器架构VisionLLaMA,以减少语言和视觉之间的架构差异。
  • 我们研究了两个版式的视觉架构方案(朴素和金字塔),并评估它们在监督和自监督学习场景下的性能。此外,我们还引入了 AS2DRoPE(即自动缩放 2D RoPE),它将旋转位置编码从 1D 扩展到 2D,并利用插值缩放来适应任意分辨率。
  • 在没有花里胡哨的情况下,VisionLLaMA 在图像生成、分类、语义分割和对象检测等许多代表性任务中明显优于广泛使用且经过仔细微调的视觉转换器。大量实验表明,VisionLLaMA 比现有视觉转换器具有更快的收敛速度和更好的性能。

本文方案

朴素版VisionLLaMA延续了ViT的处理流程,核心在于VisionLLaMA模块,见上图。VisionLLaMA与ViT不同之处在于:位置编码自注意力RoPE和SwiGLU激活函数。此外,它仍然使用ViT的LayerNorm,而非RMSNorm。需要注意的是,由于1DRoPE不能很好的扩展到其他分辨率,故作者将其扩展为2维形式,描述如下:

z i j l = M H S A ( A S 2 D R o P E ( L a y e r N o r m ( z i j l − 1 ) ) ) + z i j l − 1 z_{ij}^{l} = MHSA(AS2DRoPE(LayerNorm(z_{ij}^{l-1}))) + z_{ij}^{l-1} zijl=MHSA(AS2DRoPE(LayerNorm(zijl1)))+zijl1
z i j l = S w i G L U ( L a y e r N o r m ( z i j l ) ) + z i j l z_{ij}^{l} = SwiGLU(LayerNorm(z_{ij}^l)) + z_{ij}^{l} zijl=SwiGLU(LayerNorm(zijl))+zijl

金字塔VisionLLaMA

更进一步,类似SwinT,作者还构建了一个金字塔版本的VisionLLaMA。在本文中,我们选择更强的基线 Twins 来探索如何在严格控制的设置下构建强大的金字塔变压器。 Twins 的原始架构利用了条件位置编码和以局部和全局注意力的形式进行交错的局部-全局信息交换。这些组件可以在各种变压器中找到,这意味着按照我们的方法在其他金字塔变压器变体中应用 VisionLLaMA 并不困难。请注意,我们的目标不是发明一种新颖的金字塔视觉转换器,而是展示我们如何在现有设计的基础上调整 VisionLLaMA 的基本设计。因此,我们只是遵循对架构和超参数进行最小的修改。

需要注意:我们删除了金字塔 VisionLLaMA 中的条件位置编码,因为 AS2DRoPE 已经包含位置信息。此外,我们还删除了类标记并在分类头之前使用 GAP(全局平均池)。

Training or Inference Beyond Sequence Length

处理不同的输入分辨率是视觉任务中的常见要求。卷积神经网络使用滑动窗口机制来处理可变长度。相反,大多数视觉转换器应用局部窗口操作或插值。例如,DeiT在不同分辨率上训练时采用双三次插值。 CPVT使用基于卷积的位置编码。

对于RoPE,作者尝试将其从1D扩展至2D形式。给定 x i j ∈ R d x_{ij} \in R^d xijRd,其位置编码为 x i j P E = R i j x i j x_{ij}^{PE} = R_{ij} x_{ij} xijPE=Rijxij,对角矩阵如下:

本文实验

图像生成

图像分类

语义分割

COCO检测

推荐阅读

  1. 入局CV,Mamba再显神威!华科王兴刚团队首次将Mamba引入ViT,更高精度、更快速度、更低显存!
  2. Swin版VMamba来了!精度再度提升,VMamba-S达成83.5%,超越Swin-S,已开源!
  3. CVPR2023 InternImage已开源 | 注入新机制,探索视觉大模型,达成COCO新纪录65.4mAP!
  4. CVPR2022 | RepLKNet: 大核卷积+结构重参数让CNN再次伟大
  5. DCNv4来袭,更快收敛、更高速度、更高性能!

这篇关于“羊驼“入侵CV,美团浙大沈春华团队将LLaMA向CV扩展,构建全新基础模型VisionLLaMA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775467

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas