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

BRAVE:扩展视觉编码能力,推动视觉-语言模型发展

视觉-语言模型(VLMs)在理解和生成涉及视觉与文本的任务上取得了显著进展,它们在理解和生成结合视觉与文本信息的任务中扮演着重要角色。然而,这些模型的性能往往受限于其视觉编码器的能力。例如,现有的一些模型可能对某些图像特征视而不见,或者在处理图像时产生视觉幻觉,这些局限严重制约了VLMs在复杂场景中的应用。

BRAVE方法正是为了解决这些问题而诞生的。它通过结合多个具有不同视觉偏好的视觉编码器,拓宽了模型对视觉信息的编码能力。与传统的单一编码器方法相比,BRAVE能够捕获更加丰富和多样化的视觉特征,从而显著提升了模型在图像描述和视觉问答等任务上的性能。BRAVE通过使用参数高效的微调技术,减少了模型训练时所需的参数数量,同时保持了紧凑的模型表示,这不仅提高了模型的效率,也增强了模型对不同类型输入的泛化能力。通过这种方式,BRAVE为构建更加健壮和高效的视觉-语言模型提供了新的可能性。

BRAVE如何通过结合多个视觉编码器的特征来扩展VLMs的视觉能力。左侧部分通过示例图片展示了现有方法(如InstructBLIP和LLaVA-1.5)与BRAVE的区别。右侧部分展示了BRAVE在多个任务上达到的最新性能水平

不同视觉编码器对视觉-语言任务性能的影响

先来看看视觉-语言模型(VLM)的基本架构。在VLM中,一个冻结的视觉编码器与一个冻结的语言模型通过一个带有可训练参数的桥接网络连接。这个桥接网络通常采用特定的模块(例如Q-Former),它能够将视觉特征重新采样到固定长度的输出,然后将其输入到语言模型中。

作者评估的8种不同视觉编码器的详细信息,包括它们的参数量、训练数据和目标。

具有不同偏好的视觉编码器,例如CLIP、OpenCLIP、EVA-CLIP等。这些编码器虽然都使用基于Vision Transformer(ViT)的骨干网络,但在训练数据、训练目标和模型大小方面存在差异。这些差异导致每个编码器具有不同的视觉偏好,可能捕获场景的不同方面。

对于预训练数据和目标对VLM性能的影响研究者们使用WebLI数据集对Q-Former进行预训练,并使用WebLI中的alt-text作为目标进行训练。在标准的图像描述和VQA任务上评估了得到的VLMs。他们使用了COCO图像描述基准,并在Karpathy训练集上进行了微调。对于VQA任务,他们遵循标准实践,并在VQAv2和OKVQA的数据集上进行了微调。

不同视觉编码器在COCO图像描述、VQAv2、OKVQA、GQA和MMVP等任务上的性能比较

在不同视觉编码器下的VLMs性能如下:

  • 不同编码器的偏好可以导致相似的性能水平,表明没有单一编码器在所有任务中始终保持最佳性能。
  • 在MMVP基准测试中,大多数编码器的性能都低于随机猜测的准确率,表明这对所有编码器来说仍然是一个挑战。
  • 在需要组合推理和开放世界知识的任务上,VLMs的性能有所下降,性能差距也随之缩小。
  • 通过增加视觉编码器的大小可以提高性能,这在ViT-e的性能提升中得到了体现。
  • 预训练数据的分布对VLM性能有重要影响,例如OpenCLIP-G/14模型虽然比CLIP-L/14模型大,但在大多数评估的VQA和图像描述任务中表现不佳,这表明训练目标和数据集对VLM性能都有重要影响。

如何通过BRAVE方法有效地结合多个视觉编码器,以增强视觉-语言模型(VLMs)的性能和鲁棒性

尽管现有的VLMs在多种视觉-语言任务上取得了进展,但它们仍然受限于单一视觉编码器的能力。为了解决这个问题,BRAVE提出了一种新颖的方法,通过结合多个具有不同视觉偏好的视觉编码器,来拓宽模型的视觉编码能力。这种方法的动机是,不同的编码器可以捕获图像的不同方面,通过整合这些编码器,模型能够获得更全面的图像理解。

BRAVE框架的架构,特别是多编码器查询变换器(MEQ-Former)如何接受文本提示和可学习查询作为输入,并与不同视觉编码器的特征进行交叉注意

在BRAVE架构中,图2展示了一个创新的系统设计,旨在通过结合多个视觉编码器(VEs)和语言模型(LM)来增强视觉-语言模型的能力。在左侧的描述中,我们看到所有的视觉编码器和语言模型在预训练后都被冻结,即它们的参数不再更新。这是为了保持模型的稳定性,并减少进一步训练所需的计算资源。通过使用线性投影层,系统能够将来自K个不同VEs的特征序列化并串联起来,例如K=5,系统同时考虑五个编码器的输出。

紧接着,MEQ-Former(多编码器查询变换器)发挥了关键作用。它接受一组可学习的查询和描述任务的文本提示作为输入,并通过交叉注意力机制对串联的特征进行有效重采样,生成固定长度的输出。这一步骤至关重要,因为它能够整合多样化的视觉信息,并将其转化为对语言模型有用的形式。

在右侧的描述中,MEQ-Former的详细架构被展示出来,它包含N=12个变换器层。这些层与串联的视觉特征进行交云注意力交互,产生一个固定长度的输出,这个输出随后被用作软视觉提示,输入到冻结的语言模型中。这种设计不仅提高了模型处理视觉信息的能力,而且还保持了参数的高效性,因为BRAVE的可训练参数总数仅为116M,大约是模型总参数量的1%。

BRAVE的核心是多编码器查询变换器(MEQ-Former),这是一个轻量级的变换器模块,它能够接受来自不同视觉编码器的特征,并将其整合成一个固定长度的视觉表示。MEQ-Former通过交叉注意力机制与输入的文本提示以及可学习的查询向量相互作用,有效地重采样和整合视觉特征。

在预训练阶段,研究者们只训练MEQ-Former的参数,而保持所有视觉编码器和语言模型冻结。这种策略显著减少了预训练所需的可训练参数数量。在微调阶段,MEQ-Former可以根据下游任务的需要进行微调,以进一步提高模型的性能。BRAVE不仅可以应用于现有的视觉编码器,还可以轻松地整合新的编码器,以适应不断变化的视觉-语言任务需求。BRAVE的设计允许它在未来的研究中进一步扩展,例如结合更多模态的信息或处理多帧输入。

实验

研究者们使用了包括COCO图像描述和多个VQA数据集在内的标准基准测试,以及针对视觉幻觉和长尾视觉概念的鲁棒性测试。

用于评估VLMs的不同任务,包括图像描述和视觉问题回答(VQA)任务

在性能评估部分,研究者们展示了BRAVE在图像描述和VQA任务上的结果。他们将BRAVE与其他最先进的方法进行了比较,包括单一视觉编码器的方法和一些集成方法。结果表明,BRAVE在多个任务上都取得了显著的性能提升,证明了其在视觉-语言任务上的优越性。

BRAVE与不同视觉编码器在MMVP基准测试中的预测结果对比,突出了BRAVE在处理具有语义差异的图像对时的一致性和鲁棒性

为了测试BRAVE的鲁棒性,研究者们在POPE和MMVP等具有挑战性的数据集上进行了评估。这些数据集旨在测试模型对于视觉幻觉和难以区分的图像对的处理能力。BRAVE在这些测试中表现出了良好的鲁棒性,即使在面对困难的样本时也能保持较高的准确率。

在消融研究中,研究者们通过一系列的实验来分析不同组件对BRAVE性能的贡献。他们探讨了不同视觉编码器的组合、MEQ-Former的不同变体、以及预训练数据集大小对模型性能的影响。这些实验结果帮助研究者们理解了BRAVE的关键优势,并为进一步优化提供了方向。

对BRAVE不同设计选择的消融研究结果,包括语言模型微调、合成VQA数据的使用、编码器dropout等对性能的影响

基于BRAVE的实验结果,讨论其在视觉-语言任务中的潜力和应用前景,同时提出未来可能的研究方向,如自适应机制、提高样本效率、扩展视觉编码器的种类等。

通过一系列实验和性能评估,验证了BRAVE在参数效率和模型扩展性方面的优势。BRAVE不仅在COCO图像描述和多个VQA数据集上取得了优于现有最先进方法的结果,还在面对视觉幻觉和长尾视觉概念时展现出了卓越的鲁棒性。

BRAVE的提出,为视觉-语言模型的研究和应用开辟了新的可能性。它不仅提高了模型的性能,还通过减少训练参数和提高泛化能力,为解决实际问题提供了更为实用的工具。随着人工智能技术的不断进步,期待BRAVE能够在更广泛的领域中发挥作用,推动视觉-语言研究的进一步发展。

论文链接:https://arxiv.org/abs/2404.07204

项目地址:https://brave-vlms.epfl.ch/

相关文章:

BRAVE:扩展视觉编码能力,推动视觉-语言模型发展

视觉-语言模型(VLMs)在理解和生成涉及视觉与文本的任务上取得了显著进展,它们在理解和生成结合视觉与文本信息的任务中扮演着重要角色。然而,这些模型的性能往往受限于其视觉编码器的能力。例如,现有的一些模型可能对某…...

使用 Verdaccio 建立私有npm库

网上有很多方法,但很多没标注nginx的版本所以踩了一些坑,下方这个文档是完善后的,对linux不是很熟练,所以不懂linux不会搭建的跟着做就可以了 搭建方法 首先需要一台云服务器 以139.196.226.123为例登录云服务器 下载node cd /usr/local/lib下载node 解压 下载 wget https://…...

个人职业规划(含前端职业+技术线路)

1. 了解自己的兴趣与长处 喜欢擅长的事 职业方向 2. 设定长期目标(5年) 目标内容 建立自己的品牌建立自己的社交网络 适量参加社交活动,认识更多志同道合的小伙伴寻求导师指导 建立自己的作品集 注意事项 每年元旦进行审视和调整永葆积极…...

LeetCode | 344.反转字符串

设置头尾两个指针,依靠中间变量temp交换头尾指针所指元素,头指针后移,尾指针前移,直到头尾指针重合或者头指针在尾指针后面一个元素 class Solution(object):def reverseString(self, s):""":type s: List[str]:r…...

一步一步用numpy实现神经网络各种层

1. 首先准备一下数据 if __name__ "__main__":data np.array([[2, 1, 0],[2, 2, 0],[5, 4, 1],[4, 5, 1],[2, 3, 0],[3, 2, 0],[6, 5, 1],[4, 1, 0],[6, 3, 1],[7, 4, 1]])x data[:, :-1]y data[:, -1]for epoch in range(1000):...2. 实现SoftmaxCrossEntropy层…...

vue学习(二)

9.vue中的数据代理 通过vm对象来代理data对象中的属性操作(读写),目的是为了更加方便操作data中的数据 基本原理:通过Object.defineProperty()把data对象所有属性添加到vm上,为每一个添加到vm上的属性,都增…...

Maven 介绍

Maven open in new window 官方文档是这样介绍的 Maven 的: Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a projects build, reporting and documentation fr…...

QT截图程序三-截取自定义多边形

上一篇文章QT截图程序,可多屏幕截图二,增加调整截图区域功能-CSDN博客描述了如何截取,具备调整边缘功能后已经方便使用了,但是与系统自带的程序相比,似乎没有什么特别,只能截取矩形区域。 如果可以按照自己…...

Unity的三种Update方法

1、FixedUpdate 物理作用——处理物理引擎相关的计算和刚体的移动 (1) 调用时机:在固定的时间间隔内,而不是每一帧被调用 (2) 作用:用于处理物理引擎的计算,例如刚体的移动和碰撞检测 (3) 特点:能更准确地处理物理…...

[Python学习篇] Python字典

字典是一种可变的、无序的键值对(key-value)集合。字典在许多编程(Java中的HashMap)任务中非常有用,因为它们允许快速查找、添加和删除元素。字典使用花括号 {} 表示。字典是可变类型。 语法: 变量 {key1…...

react项目中如何书写css

一:问题: 在 vue 项目中,我们书写css的方式很简单,就是在 .vue文件中写style标签,然后加上scope属性,就可以隔离当前组件的样式,但是在react中,是没有这个东西的,如果直…...

PostgreSQL源码分析——绑定变量

这里分析一下函数中应用绑定变量的问题,但实际应用场景中,不推荐这么使用。 prepare divplan2(int,int) as select div($1,$2); execute divplan2(4,2);语法解析 分别分析prepare语句以及execute语句。 gram.y中定义 /******************************…...

Zynq学习笔记--了解中断配置方式

目录 1. 简介 2. 工程与代码解析 2.1 Vivado 工程 2.2 Vitis 裸机代码 2.3 关键代码解析 3. 总结 1. 简介 Zynq 中的中断可以分为以下几种类型: 软件中断(Software Generated Interrupt, SGI):由软件触发,通常…...

吴恩达机器学习 第二课 week2 多分类问题

目录 01 学习目标 02 实现工具 03 概念与原理 04 应用示例 05 总结 01 学习目标 (1)理解二分类与多分类的原理区别 (2)掌握简单多分类问题的神经网络实现方法 (3)理解多分类问题算法中的激活函数与损失…...

112、路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…...

Vue 封装组件之Input框

封装Input组件:MyInput.vue <template><div class"base-input-wraper"><el-inputv-bind"$attrs"v-on"$listeners"class"e-input":style"inputStyle":value"value":size"size"input&quo…...

一段代码让你了解Java中的抽象

我们先来看一道题&#xff01; 计算几何对象的面积之和&#xff09;编写一个方法&#xff0c;该方法用于计算数组中所有几何对象的面积之和。该方法的签名是&#xff1a; public static double sumArea(GeometricObject[] a) 编写一个测试程序&#xff0c;该程序创建一个包含四…...

Sping源码(九)—— Bean的初始化(非懒加载)— Bean的创建方式(factoryMethod)

序言 前面文章介绍了在Spring中多种创建Bean实例的方式&#xff0c;包括采用FactoryBean的方式创建对象、使用反射创建对象、自定义BeanFactoryPostProcessor。 这篇文章继续介绍Spring中创建Bean的形式之一——factoryMethod。方法用的不多&#xff0c;感兴趣可以当扩展了解。…...

绝对全网首发,利用Disruptor EventHandler实现在多线程下顺序执行任务

disruptor有两种任务处理器&#xff0c;一个是EventHandler ,另一个是WorkHandler. EventHandler可以彼此独立消费同一个队列中的任务&#xff0c;WorkHandler可以共同竞争消费同一个队列中的任务。也就是说&#xff0c;假设任务队列中有a、b、c、d三个事件&#xff0c;eventHa…...

单例设计模式双重检查的作用

先看双重校验锁的写法 public class Singleton {/*volatile 修饰&#xff0c;singleton new Singleton() 可以拆解为3步&#xff1a;1、分配对象内存(给singleton分配内存)2、调用构造器方法&#xff0c;执行初始化&#xff08;调用 Singleton 的构造函数来初始化成员变量&am…...

NGINX_十二 nginx 地址重写 rewrite

十二 nginx 地址重写 rewrite 1 什么是Rewrite Rewrite对称URL Rewrite&#xff0c;即URL重写&#xff0c;就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化&#xff0c;是将动态页面显示为静态页面方式的一种技术。比如 http://www.123.com…...

react用ECharts实现组织架构图

找到ECharts中路径图。 然后开始爆改。 <div id{org- name} style{{ width: 100%, height: 650, display: flex, justifyContent: center }}></div> // data的数据格式 interface ChartData {name: string;value: number;children: ChartData[]; } const treeDep…...

坚持刷题|合并有序链表

文章目录 题目思考代码实现迭代递归 扩展实现k个有序链表合并方法一方法二 PriorityQueue基本操作Java示例注意事项 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;消失了一段时间&#xff0c;我又回来刷题啦&#xff0c;今天…...

SPI协议——对外部SPI Flash操作

目录 1. W25Q32JVSSIQ背景知识 1.1 64个可擦除块 1.2 1024个扇区&#xff08;每个块有16个扇区&#xff09; 1.3 页 1. W25Q32JVSSIQ背景知识 W25Q32JV阵列被组织成16,384个可编程页&#xff0c;每页有256字节。一次最多可以编程256个字节。页面可分为16组(4KB扇区清除&…...

kotlin类型检测与类型转换

一、is与!is操作符 1、使用 is 操作符或其否定形式 !is 在运行时检测对象是否符合给定类型。 fun main() {var a "1"if(a is String) {println("a是字符串类型:${a.length}")}// 或val b a is Stringprintln(b) } 二、"不安全的"转换操作符…...

【JDBC】Oracle数据库连接问题记录

Failed to load driver class oracle.jdbc.driver.OracleDriver in either of HikariConfig class oracle驱动包未正确加载&#xff0c;可以先尝试使用下面方式加载检查类是否存在&#xff0c;如果不存在需要手动下载odbc包 try {Class.forName("oracle.jdbc.driver.Ora…...

leetcode45 跳跃游戏II

题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1]…...

【数学】什么是方法矩估计?和最大似然估计是什么关系?

背景 方法矩估计&#xff08;Method of Moments Estimation&#xff09;和最大似然估计&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是两种常用的参数估计方法。方法矩估计基于样本矩与总体矩的关系&#xff0c;通过样本数据计算样本矩来估计总体参数。最大似…...

C++初学者指南第一步---10.内存(基础)

C初学者指南第一步—10.内存&#xff08;基础&#xff09; 文章目录 C初学者指南第一步---10.内存&#xff08;基础&#xff09;1.内存模型1.1 纸上谈兵&#xff1a;C的抽象内存模型1.2 实践&#xff1a;内存的实际处理 2. 自动存储3.动态存储&#xff1a;std::vector3.1 动态内…...

扩散模型详细推导过程——编码与解码

符号表 符号含义 x ( i ) z 0 ( i ) \boldsymbol{x}^{(i)}\boldsymbol{z}_0^{(i)} x(i)z0(i)​第 i i i个训练数据&#xff0c;其为长度为 d d d的向量 z t ( i ) \boldsymbol{z}_t^{(i)} zt(i)​第 i i i个训练数据在第 t t t时刻的加噪版本 ϵ t ( i ) \boldsymbol{\epsilo…...

wordpress 左右翻页/深圳谷歌网络推广公司

Lua支持goto语法, 但是有一定的局限性.例如1. 不能在block外面跳入block(因为block中的lable不可见), 2. 不能跳出或者跳入一个函数. 3. 不能跳入本地变量的作用域.Lua poses some restrictions to where you can jump with a goto. First, labels follow the usual visibility…...

深圳做网站电话/seo单词优化

1&#xff1a;tabby tabby是国外有人开发的ssh客户端工具&#xff0c;对标的是xshell&#xff0c;finalshell等&#xff0c;git地址, 具体参考这篇文章 。 git下载慢的话可以从以下地址下载&#xff1a; win版本 。 mac版本 。 该工具目前比较新&#xff0c;bug较多&#xff…...

建立网站数据库实验报告/长沙网络推广服务

题目&#xff1a;原题链接&#xff08;中等&#xff09; 标签&#xff1a;回溯算法、位运算、递归 解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(2N)O(2^N)O(2N)O(2N)O(2^N)O(2N)76ms (93.94%)Ans 2 (Python)Ans 3 (Python) 解法一&#xff1a; class Solution:def max…...

河北网站开发网站/p2p万能搜索种子

抓包——爬取HTTP/HTTPS/WS/WSS等网络请求数据包&#xff01;抓包主要用于开发者API调试&#xff0c;但是作为一个玩机党是不仅局限于此的&#xff0c;它不仅能调试自己的API同时也能修改其他的API(API即是网络接口&#xff0c;与App沟通的通道&#xff0c;客户端和服务端的联系…...

网站banner图做多大/seo黑帽教程视频

从来没有机会触摸新西兰的脉搏&#xff0c;这次有机会趁着亚太区管理层会议前往&#xff0c;有些神往&#xff0c;虽然可能会觉得比较疲劳&#xff0c;因为从美国出差回到上海是2月3日了&#xff0c;2月4日就要从上海飞新西兰。但是&#xff0c;对这片土地的陌生使得仍然充满了…...

asp动态网站开发 试题/广州 竞价托管

Java开发工程师一般负责后端开发&#xff0c;当然也有专门做Java Web的工程师&#xff0c;但是随着前后端的分离&#xff0c;越来越多的Java工程师需要往大后端方向发展。 今天我们就来介绍一下Java后端开发者的书单。 首先要感谢一下江南白衣大大的后端书架&#xff0c;让我…...