Shikra:新一代多模态大语言模型,理解指向,说出坐标

news2024/11/26 2:48:07

“ Shikra:解锁多模态语言模型参考对话的魔法”

image.png

Shikra和用户的对话案例

在人类的日常交流中,经常会关注场景中的不同区域或物体,双方都可以通过说话并指向这些区域来进行高效的信息交换。我们将这种对话模式称为参考对话(Referential Dialogue)💬;

如果多模态大语言模型(MLLM) 擅长这项技能,它将带来许多令人兴奋的应用。例如,将其应用到 Apple Vision Pro 等混合现实 (XR) 眼镜中,用户可以使用视线注视指示任何内容与AI对话。同时AI也可以通过高亮等形式来提示某些区域,实现与用户的高效交流;

本工作提出了 Shikra 模型,赋予了MLLM这样的参考对话的魔法,既可以理解位置输入,也可以产生位置输出

image.png

论文链接:http://arxiv.org/abs/2306.15195
代码链接:GitHub - shikras/shikra

01 工作亮点

  1. Shikra 能够理解用户输入的 Point/Box,并支持 Point/Box 的输出,可以和人类无缝地进行参考对话;

  2. Shikra 设计简单统一,采用非拼接式设计,直接使用数字表示坐标,不需要额外的位置编码器、前/后目标检测器或外部插件模块,甚至不需要额外的词汇表。

02 模型效果

image.png

比如上图,用户指着右边的女生问 Shikra:“这个人[bbox]的感受如何?” Shikra 回复说:“这个人[bbox]感觉到惊喜和高兴。我们可以根据:她用手[bbox]捂着脸,看着这个男人[bbox]送她一束花[bbox]推断出来。” Shikra 不仅推理正确,并且在提到关键视觉线索的时候还会提供在图上的坐标,这让沟通更加准确高效;

image.png

我们来看来自GPT4论文中的网红图片。相比GPT4的回复,Shikra 的回复不光 Get 到了图片的诙谐之处,还更确切地指出了每个需要被关注的目标的具体位置。作为对比,下面是GPT4的回答:

image.png

我们在下面再展示几个例子,更多的例子可以查阅 Paper。

image.png

比如 Shikra 会拼拼图,知道用户指出的拼图块应该拼到哪里。

image.png

用户指出两个区域, Shikra 会分辨出哪一个是镜像,哪一个是真身。

image.png

问 Shikra 这是不是兔兔🐰,她也不会上当,会指出这是一个小柴,只是穿着带着兔兔耳朵的衣服,在反驳时,Shikra 会一个一个指给你看

03 Box/Point 都行

对于输入输出模型还支持使用点(Point) 的形式,无论是电脑上的鼠标点击,还是Vision Pro的注视点,都用起来更加方便。下面是在PointQA数据集上的例子:

345ecacd15d55e092853292a050e38c8.png

当然 Shikra 也支持Point的输出,比如Visual-7W中的例子,从诸多框中选择一个作为答案:

3b92701ea363a1e4f8c95693fcf95b4f.png

04 传统任务

参考对话(RD)是很多视觉-语言(VL)跨模态任务的超集,因此 Shikra 天然可以适配到不同的任务上,比如下面的表达式生成任务(REG),要为用户指定的区域生成图片中图一无二的描述:

image.png

这难不倒 Shikra,她正确地说出了这是一个坐着三个人的长凳。

另外我们可以看下VL领域经典的表达式定位任务(REC),要求模型定位出用户给出的表达式:

image.png

image.png

定位出背景中的人,定位出风筝的线,都没有问题。示例看的不过瘾?可以看看的在REC上的定量指标,Shikra 取得了很不错的成绩:

image.png

Shikra 也有一定的OCR能力,尽管没有专门在相关的数据上训练:

image.png

还有本工作定义的新任务,Spotting Captioning 任务,模型需要边描述图片边写出提到的物体的坐标,效果就像这样:

image.png

在最经典的 VQA 和 Image Captioning 的定量评价上,Shikra也取得了 promising 的结果:

image.png

在最新的POPE评价指标上,Shikra 也表现不错,取得和InstrcutBLIP相当的结果,并远超近期其他MLLMs:

image.png

05 Shikra 原理

模型架构采用CLIP ViT-L/14 作为视觉主干,Vicuna-7/13B 作为语言基模型,使用一层线性映射连接CLIP和Vicuna的特征空间。

Shikra 直接使用自然语言中的数字来表示物体位置,使用[xmin, ymin, xmax, ymax] 表示边界框,使用[xcenter, ycenter]表示中心点,xy 坐标根据图像大小进行归一化,每个数字默认保留 3 位小数,这些坐标可以出现在模型的输入和输出序列中的任何位置,记录坐标的方括号也自然地出现在句子中。在论文中,本工作也尝试使用其他方式进行数值表示,并做了定量的对比实验,感兴趣的朋友可以查看论文。

06新思维链形式

思想链(CoT),旨在通过在最终答案前添加推理过程以帮助LLM回答复杂的QA问题。这一技术已被广泛应用到自然语言处理的各种任务中。目前的MLLM还存在严重的幻视问题,CoT也经常会产生幻觉,影响最终答案的正确性。通过在合成数据集CLEVR上的实验,本工作发现,使用带有位置信息的CoT时,可以提升模型回答的准确率。

image.png

如果只用纯文本的CoT,模型性能反而会降低,甚至不如不用CoT的结果。但是在CoT中包含坐标信息,性能得到了提升,我们将这种新的 CoT 方式称为 Grounding-CoT(GCoT)。不过该探究仍然比较初步,仍是值得去论证的方向。

07 总结

本工作介绍了一种名为 Shikra 的简单且统一的多模态大语言模型,以自然语言的方式理解与输出空间坐标,为MLLM增加了类似于人类的参考对话能力,无需引入额外的词汇表、位置编码器或外部插件;Demo、代码、模型、数据均开源在:GitHub - shikras/shikra 。后续会继续加入更有意思的特性,也会开放Demo试玩,感兴趣的朋友可以 Star ⭐️ 关注一下。


关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。期待这里可以成为你学习Al前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区

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

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

相关文章

关系型数据库设计规则

目录 1.1 表、记录、字段 1.2 表的关联关系 1.2.1 一对一关联(one-to-one) 1.2.2 一对多关系(one-to-many) 1.2.3 多对多(many-to-many) 1.2.4 自我引用(Self reference) 关系…

第13讲:剖析 Trace 在 SkyWalking 中的落地实现方案(下)

TraceSegmentRef TraceSegment 中除了 Span 之外,还有另一个需要介绍的重要依赖 —— TraceSegmentRef,TraceSegment 通过 refs 集合记录父 TraceSegment 的信息,它的核心字段大概可以分为 3 类: 父 Span 信息traceSegmentId&am…

嵌入式工程师常用的软件工具推荐

前言:常言道:工欲善其事,必先利其器。作为一名合格的嵌入式工程师,日常可能需要接触和处理各种奇奇怪怪的问题,这时候一款高适配性的工具将会令工作效率大大提升。作者根据个人的实际使用情况与粉丝的客观感受&#xf…

在第二代SpringCloud中配置网关组件

我们接着上次的微服务的项目继续搭建网关组件: 搭建微服务项目 前提准备: 1.打开nacos服务注册中心,在浏览器通过这地址访问 http://10.48.185.7:8848/nacos/index.html 2.启动page和product的微服务 1.新建一个网关的项目 2.导入pom依赖 <!-- Spring Boot父启动器…

mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests

Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests是什么&#xff1f; mysql服务器维护了很多状态变量&#xff08;status variables),这些变量提供了其相关操作的信息。 我们可以通过SHOW [GLOBAL | SESSION] STATUS 查看这些变量以及变量值。这些变量有很多&…

window 命令笔记

1.查看端口 输入“netstat -ano”并回车可以获得所有网络连接活动的列表&#xff0c;在表中&#xff0c;本地地址IP地址后方冒号之后的即是端口号&#xff1a; 如果想要查找特定的端口可以输入命令“netstat -aon|findstr “端口号””&#xff0c;例如“netstat -aon|findstr…

基于IPC-CFX的点对点通信C#

IPC-CFX有两种主要的通信方式&#xff0c;可以通过RabbitMQ发布和订阅&#xff0c;也可以通过request和response进行点对点的通信&#xff0c;本文主要讲的是点对点的通信方式。 在vscode里建立新的dotnet项目&#xff0c;可以通过终端输入dotnet new console来建立&#xff0c…

Spring Cloud 2022 发布,这几个组件要移除了!

继SpringBoot 3.0和SpringFramework 6.0之后&#xff0c;Spring Cloud 终于也推出了新版本——2022.0.0&#xff0c;官网把这个版本命名为Kilburn。 目前在Maven仓库中已经可以下载使用了&#xff0c;通过POM文件即可依赖到项目中&#xff1a; <dependencyManagement>&l…

阿里云声音复刻

阿里云声音复刻 个性化人声定制 阿里云个性化人声定制是智能语音交互产品自学习平台下的一部分 使用方式&#xff1a;https://help.aliyun.com/document_detail/456006.html 方式一&#xff1a;控制台界面定制使用方式 方式二&#xff1a;通过OpenAPI定制&#xff1a;在该页…

微服务保护——Sentinel【实战篇】

一、限流规则&#x1f349; 1.簇点链路&#x1f95d; 簇点链路&#xff1a;就是项目内的调用链路&#xff0c;链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点&#xff08;Endpoint&#xff09;&#xff0c;因此SpringMVC的每一个端点&a…

CS162 11-12 调度与死锁

调度 overview 1.FCFS 可以利用好cache缓存&#xff0c;减少上下文切换。 2.很直观&#xff0c;贪心&#xff0c;可以减少平均的响应时间 3 4. 5.等待调度的时间是平均的 6.优先级翻转&#xff0c;和优先级捐赠 解决 cfs中的调度 死锁 四个必要不充分条件 银行家算法&…

基于 ChatGPT 的 helm 入门

1. 写在最前面 公司最近在推业务上云&#xff08;底层为 k8s 管理&#xff09;&#xff0c;平台侧为了简化业务侧部署的复杂度&#xff0c;基于 helm 、chart 等提供了一个发布平台。 发布平台的使用使业务侧在不了解 helm 、chart 等工具的时候&#xff0c;「只要点点」就可…

初识protobuf

Protobuf 全称Protocol Buffers&#xff08;协议缓冲区&#xff09;&#xff0c;是一种轻量级、高效的数据序列化格式&#xff0c;由Google开发。它被设计用于结构化数据的序列化、反序列化以及数据交换&#xff0c;常用于网络通信和数据存储等领域。 Protobuf使用简洁的消息描…

【实战技能】基于硬件垂直消隐的多缓冲技术在LVGL, emWin,GUIX和TouchGFX应用,含视频教程

原贴地址&#xff1a;https://www.armbbs.cn/forum.php?modviewthread&tid120114 这两天研究了下LVGL的持单缓冲&#xff0c;双缓冲和配合硬件消隐的双缓冲的实现&#xff08;已经分享V5&#xff0c;V6和V7开发板的程序模板&#xff09;&#xff0c;特别是这个整屏缓冲方…

DB-Engines排名公布 GBASE南大通用入围国产数据库TOP 3

什么是DB-Engines排名&#xff1f; DB-Engines排名是数据库领域的流行度榜单&#xff0c;它对全球范围内的419款数据库&#xff08;截至2023年7月&#xff09;进行排名&#xff0c;每月更新一次&#xff0c;排名越靠前&#xff0c;则表示越流行。在很多技术选型的场合&#xf…

Kubernetes——CKA证书

拿到CKA证书啦&#xff0c;打算近期再准备一下备考的学习笔记以及备考经验&#xff0c;有需要的朋友可以点赞加关注&#xff0c;我会持续更新&#xff0c;您的一个赞就能给我一份整理笔记的动力&#xff01;&#x1f92d;

掘金量化—Python SDK文档—5.API 介绍(1)

​ Python SDK文档 5.API 介绍 5.1基本函数 init - 初始化策略 初始化策略, 策略启动时自动执行。可以在这里初始化策略配置参数。 函数原型&#xff1a; init(context)参数&#xff1a; 参数名类型说明contextcontext上下文&#xff0c;全局变量可存储在这里 示例&…

vue2watch监听遇到的问题

1 vue 父组件里引入子组件 显示与隐藏是v-if控制时 父传入子的参数通过watch 监听请求接口时 watch 时而监听不到 请求接口的参数就不对 如图 父组件这么引入子组件v-show 和v-if 是有区别的 2 子组件通过watch 监听后 清空页面要展示的列表数据 重新从第一页加载数据&#x…

程序员如何准备技术面试

程序员如何准备技术面试 &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&#xff01;&#x1f604; ✨座右…

Redis常见须知

介绍一下redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符…