“羊驼“入侵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

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ