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

“ 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精英的学习成长社区

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 替换gets函数

目录 替换gets函数gets()用处gets()的危险之处gets()的几种替代方法一、用%c循环输入直到遇到换行结束二、用getchar()循环输入直到遇到换行结束三、scanf的另一种用法四、c中的getline()方法五、解决方案使用fgets代替 替换gets函数 gets()用处 gets从标准输入设备读字符串函…

C# Linq 详解四

目录 概述 二十、SelectMany 二十一、Aggregate 二十二、DistinctBy 二十三、Reverse 二十四、SequenceEqual 二十五、Zip 二十六、SkipWhile 二十七、TakeWhile C# Linq 详解一 1.Where 2.Select 3.GroupBy 4.First / FirstOrDefault 5.Last / LastOrDefault C# Li…

truffle 进行智能合约测试

本方法使用了可视化软件Ganache 前两步与不使用可视化工具的步骤是一样的(有道云笔记),到第三步的时候需要注意: 在truffle插件下找到networks目录,提前打开Ganache软件 在Ganache中选择连接或者新建,我在…

软件测试测试用例

等价类:把输入的数据可以分为有效的数据和无效的数据 被测试的对象输入的数据: 1、有效的数据 2、无效的数据 测试一个产品,需要考虑它的正确场景,也需要考虑它的异常场景 边界值:边界值测试用例是针对等价类测试用例方法的补…

每天一道C语言编程:排队买票

题目描述 有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位置互…

Thymeleaf + Layui+快速分页模板(含前后端代码)

发现很多模块写法逻辑太多重复的&#xff0c;因此把分页方法抽取出来记录以下&#xff0c;以后想写分页直接拿来用即可&#xff1a; 1. 首先是queryQrEx.html&#xff1a; <!DOCTYPE html> <html xmlns:th"http://www.w3.org/1999/xhtml"> <head>…

zabbix监控自己

目录 一、实验环境准备 二、server端 1、配置阿里云yum源 2、部署lamp环境 3、启动lamp对应服务 4、准备java环境 5、源码安装zabbix 6、mariadb数据库授权 7、创建zabbix程序用户并授权防止权限报错 8、修改zabbix配置文件 9、配置php与apache 10、web安装zabbix …

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe&#xff0c;出现以下界面&#xff0c;点击下一页。 选中install from i…

uniapp中超好用(且免费)的安全类插件推荐!(持续更新中)

前几天写了一篇【干货分享】uniapp做的安卓App如何加固&#xff0c;发现收藏的人蛮多的。所以说&#xff0c;更加证明了我说的第一个问题&#xff1a;现在用uniapp的人是越来越多了。 而通过使用uniapp上自带的插件&#xff0c;也是能够实现事半功倍的效果&#xff0c;让不懂前…

OpenCv之图像形态学(二)

目录 一、形态学梯度 二、顶帽操作 三、黑帽操作 一、形态学梯度 梯度原图 - 腐蚀腐蚀之后原图边缘变小&#xff0c;原图 - 腐蚀 就可以得到腐蚀掉的部分&#xff0c;即边缘 案例代码如下: import cv2 import numpy as np# 导入图片 img cv2.imread(6.jpg)# 注意调节kern…

ubuntu打开usb摄像头

文章目录 前言一、识别 usb 摄像头二、安装应用程序显示摄像头捕捉到的视频1、使用应用程序茄子&#xff08;cheese&#xff09;2、运行 cheese 捕捉视频 前言 记录一下解决在 Linux 下打开 usb 摄像头界面黑屏的问题。 一、识别 usb 摄像头 1、保持在 ubuntu 界面&#xff0…

leetcode 965.单值二叉树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;单值二叉树 思路&#xff1a; 让当前的根节点与左孩子节点与右孩子节点判断&#xff0c;若相等则继续向下分治&#xff0c;让左孩子与右孩子当作新的根节点继续判断&#xff0c;直到某个节点不相等。 1️⃣ 代码&#x…

相机标定学习笔记

Kalibr 是标定工具中&#xff0c;唯一一个可以标定camToImu的&#xff0c;是vio必不可少的工具&#xff0c;其他的都有替代品。所以学习多种开源算法进行相机标定&#xff0c;并记录学习相机标定的过程。 一、相机标定 1、在场景中放置一个已知的物体 &#xff08;1&#xff…

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识

内容 一、MongoDB 数据库架构 A. MongoDB数据库体系架构 1. 存储引擎&#xff08;MongoDB Storage Engines&#xff09;&#xff1a; 2. MongoDB 数据逻辑架构 二、MongoDB 存储引擎 A. 查看mongodb服务器的状态 B. 查看引擎信息&#xff08;4.2.1 没有这个命令&#xf…

实例019 以图形按钮显示的界面

实例说明 菜单和工具栏虽然能方便用户操作程序的相应功能&#xff0c;但各有缺点。如果采用按钮式功能菜单&#xff0c;不但美观大方&#xff0c;而且操作灵活。当单击按钮时&#xff0c;用户区将显示相应的操作按钮组。下面介绍图形界面式菜单的设计方法。运行本例&#xff0…

ceph集群(二)

ceph 一、资源池 Pool 管理二、创建 CephFS 文件系统 MDS 接口三、创建 Ceph 块存储系统 RBD 接口四、创建 Ceph 对象存储系统 RGW 接口五、OSD 故障模拟与恢复 一、资源池 Pool 管理 上次我们已经完成了 Ceph 集群的部署&#xff0c;但是我们如何向 Ceph 中存储数据呢&#x…

餐饮行业油烟监控管理系统设计与应用

安科瑞 华楠 摘 要&#xff1a;餐饮油烟污染问题已经成为城市环境污染的重要污染源&#xff0c;本研究的油烟在线监测数据管理信息系统是油烟在线监测数据采集仪的配套软件&#xff0c;用于展现现场端数据采集仪采集的数据&#xff0c;对数据采集仪进行远程控制&#xff0c;以…

vue-cli多页面配置(vue2.0)

目录 概述 多页面的配置 步骤1&#xff1a;编写配置文件 vue.config.js 步骤2&#xff1a;在src目录下创建目录pages 步骤3&#xff1a;创建HTML文件&#xff08;主组件挂载点&#xff09; 测试 完毕&#xff0c;总结 概述 我们知道使用vue脚手架vue-cli创建的项目默认是…

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

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

如何实现CAN-SOME/IP通信路由测试

区别于基于UDP的车内通信路由&#xff0c;基于SOME/IP协议的路由增加了服务发现&#xff08;Service Discovery&#xff09;和服务发布&#xff08;Service Publish&#xff09;&#xff0c;那对于测试工程师来说&#xff0c;怎么实现CAN-SOME/IP路由的测试呢&#xff1f; 01 …