Saleforce发布跨模态框架LAVIS,涵盖数据、任务、模型

04479f7c6a79eaddaa030f8a08bd91eb.jpeg

作者 | HJZ
来源 | 机器之心

Salesforce 亚洲研究院推出了一站式视觉语言开源框架 LAVIS。

视觉语言模型在内容推荐、电子商务里有广泛应用,例如图像描述生成、文本图像检索以及多模态内容分类。依托于海量互联网数据,多模型模型近期得到长足发展,其性能在下游任务上得到了广泛的验证。

尽管如此,现阶段的视觉语言方向的发展也存在其局限性。例如,由于语言视觉任务的多样性和复杂性,特别是对于初学者或者其他领域的工程研究人员,训练和评估现有视觉语言模型并不容易, 其较陡的学习曲线让很多新接触视觉语言方向的人望而却步。究其原因,这些障碍主要是模型、数据集和任务评估的接口不一致所致。另外,视觉语言预训练微调实验所需的实验环境搭建相对比较繁复,例如下载组织各个任务数据集、实验环境搭建等环节,不利于快速方法迭代,也容易产生疏漏。

现存的视觉语言框架往往只支持较少一部分任务和数据集,模型往往也不够新。例如,MMF 主要支持性能较弱的下游任务微调模型;X-modaler 支持非常有限的任务和数据集,对预训练模型的支持也不足。另外一些工作例如 torchmultimodal 和 unilm 尚在开发初期,不支持开源训练或推理。此外,这些库的接口设计并不统一,不利于访问数据集或是模型,这为想要利用视觉语言模型能力的用户提供了诸多不便。最后,这些库中的大多数不提供微调的模型检查点或基准测试结果。这对复现模型性能制造了额外的困难。

为了使得更广泛的工程研究人员更好地利用视觉语言多模态模型能力,推动其在生产场景里的应用,以及减少重复开发的负担,Salesforce 亚洲研究院推出了开源框架 LAVIS (LAnguage-VISion 的简称)。

d57bbb0e40abb82140530bc7c36299d8.png

Github 仓库:
https://github.com/salesforce/LAVIS

技术报告:
https://arxiv.org/abs/2209.09019

支持文档:
https://opensource.salesforce.com/LAVIS//latest/index.html

官方博客:
https://blog.salesforceairesearch.com/lavis-language-vision-library/

LAVIS 框架全方位支持 10+ 视觉语言任务,20+ 数据集,并提供 SOTA 模型性能和可复现预训练及微调实验配置。LAVIS 一大特点是统一和模块化的接口设计,极大降低训练、推理和开发的难度,致力于让研究和工程人员快速利用到近期多模态发展成果。

4faea792bc45b9f352bcab6685fcd31b.png
▲图 1: 随 LAVIS 一起开源的 GUI demo,展示丰富的视觉语言应用场景。

LAVIS: 一站式视觉语言框架,任务数据集模型全方位支持

LAVIS 最大的特点是提供统一模块化接口,极大简化模型训练评测,实现模型和数据集开箱即用,并且最小化重复开发成本。LAVIS 力求为工程研究人员提供一站式视觉语言方案,助力视觉语言社区发展,从而扩大多模态模型研究的实际影响力。

d6bcf89a2a7d35afd11b687e117b5d6d.png

LAVIS 是当前对视觉语言方向支持最全面的开源框架,其包含超过 10 种视觉语言任务,包括图片描述生成(image captioning)、 图像文本检索 (image-text retrieval)、视频文本检索 (video-text retrieval)、图像问答 (visual question answering)、视频问答 (video question answering)、多模态分类、多模态图像、视频对话、视觉语言推理、多模态预训练等实用任务,和多模态特征提取等功能;20 余标准数据集及评测结果,包括 COCO, Visual Genome, Flickr30k, NoCaps, NLVR, OK-VQA, A-OKVQA, MSRVTT, MSVD, DiDeMo, SBU, Conceptual Captions 等;以及 SOTA 的预训练和微调模型,开箱即用。上图展示了 LAVIS 和现有的多模态库的对比,突出 LAVIS 对视觉语言任务、数据集、模型的全方位支持。

357d5613a927fd1377c93fdf0999c4ae.png

LAVIS 主要支持四种领先的基础视觉语言模型架构,包括 ALBEF (NeurIPS 21’ Spotlight)、BLIP(ICML 22’)、CLIP 和 ALPRO(CVPR 22’)。其中 ALBEF,CLIP 主要支持图像文本任务,ALPRO 支持视频文本任务,BLIP 对图像文本、视频文本任务均提供支持。各个模型对任务和数据集支持的详细信息见下表。

9f87bea7e7ddf6c31845de3c8cf336a4.png

统一模块化接口设计,一键模型数据加载,轻松拓展定制

LAVIS 的最大特点是提供了简单且统一的接口以训练评测模型、加载模型数据,以及便于未来拓展新的任务、数据集、模型。例如,用户可以利用 LAVIS 提供的 load_model(), load_dataset() 一键加载所需模型和数据集。下图描述了 LAVIS 模块之间的依赖关系。更多模型数据集加载实例可见于官方文档。此外,LAVIS 可以实现数据到训练高定制化,给予开发者充分空间研究新模型、新多模态能力、新引用场景。

丰富的配套资源工具

除了框架本身,LAVIS 还附带了丰富的开源资源和工具。包括模型预训练和在下游任务上微调的 checkpoint、用于可视化的图形界面 GUI Demo (图 1)、以及一键式下载公开数据集的脚本工具,全方位促进视觉语言方案复现、研发周期和成本。

LAVIS 将持续更新维护,在未来会支持更多更强大的视觉语言预训练模型,和更多的视觉语言任务,比如文本图像生成。同时作者也期待和欢迎开源社区对于 LAVIS 的反馈和贡献。

669884ccffebea29b6c0515728c48776.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

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

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

相关文章

python 跳过_python-pytest学习(九)-跳过用例skip

一、前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者你希望是吧的测试功能。 skip意味着只有满足某些条件时才希望测试通过,否则pytest应该跳过运行测试。常见示例是在非windows平台上跳过仅限windows的测试,或跳过测试依…

Alexa世界排名原理+作弊源码,为网站赢得好排名

虽然说 Alexa世界排名存在水分,高低都无所谓,只要能在搜索引擎中排名靠前就好了,但是一些风险投资还是把它当作网站的一个参考依据,就迫使一些网站不得不提升自己的Alexa世界排名,那如何让你的网站在Alexa世界排名靠前…

matlab和python哪个运行快_MATLAB比Python快吗?

你可以在这个链接的底部找到一些有用的结果 从介绍开始A comparison of weave with NumPy, Pyrex, Psyco, Fortran (77 and 90) and C for solving Laplaces equation. 它还比较了MATLAB,并显示了与使用Python和NumPy时类似的速度。 当然,这只是一个特定…

LeetCode 1162. 地图分析(BFS)

1. 题目 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗…

邹建老大写的经典SQL

邹建老大写的经典SQL/Files/602544/SQLServer2000.rar 转载于:https://www.cnblogs.com/602544/archive/2006/12/10/588210.html

sentinel 端口_双剑合璧Nacos结合Sentinel实现流量安全控制(一):Sentinel核心库和控制台...

Alibaba Sentinel 是一款高性能且轻量级的流量控制、熔断降级解决方案。是面向分布式服务架构的高可用流量控制组件。Sentinel 官网:https://sentinelguard.io/zh-cn/Github:https://github.com/alibaba/Sentinel一、Sentinel 是什么随着微服务的流行&am…

程序员面试金典 - 面试题 16.10. 生存人数(自定义优先队列)

文章目录1. 题目2. 解题2.1 优先队列2.2 双指针1. 题目 给定N个人的出生年份和死亡年份,第i个人的出生年份为 birth[i],死亡年份为 death[i],实现一个方法以计算生存人数最多的年份。 你可以假设所有人都出生于1900年至2000年(含…

这篇CVPR文章真是妙蛙种子到了妙妙屋

文 | kid丶源 | 知乎Paper:CReST: A Class-Rebalancing Self-Training Framework for Imbalanced Semi-Supervised Learning这篇文章是在组会上听到的,觉得真的是太太妙了。本文考虑的是半监督场景下的长尾分布问题,即此时我们不仅没有足够的…

rss

rss页面的生成:请求rss.aspx,重定向到rss.ashx.由ForumRssHandler负责处理1。BuildFeed(),其中ForumRssWriter。在其中起了重要作用2. WriteFeed()。 订阅1先增加一个feedid 和对应的urlFeedReaderDataProvider.Instance().AddFeed();2.根据对应的url读出…

LeetCode 1394. 找出数组中的幸运数(map计数)

文章目录1. 题目2. 解题2.1 map计数2.2 Python3解1. 题目 在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。 给你一个整数数组 arr,请你从中找出并返回一个幸运数。 如果数组中存在多个幸运数&…

阳光留在心底

很少在Blog上写自己的生活,很少在Blog上写自己的琐事,觉得没什么好写的。来这座城市8年了,从毕业到工作,所有的这3000多个日子过得很充实但是也很艰辛,我经常笑,因为没有什么能比笑容更能释放压力。  不知…

预训练模型的记忆机制解密!

文 | python近年来,大规模预训练语言模型给自然语言处理领域带来了翻天覆地的变化。一提到预训练模型为什么好,标准回答往往是:利用了无标注自监督学习数据,习得了语言学与语义知识,并有效迁移到下游任务中。然而&…

python中的列表和元组_百度资讯搜索_python中的列表和元组

腾讯网 11小时前# 元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。元组是一个有序列表,序列中的每个元素都分配一个数字(...百度快照数据分析师攻略 2020年11月11日 17:50分别使用max(tuple)、min(tuple)方法可以返回元组…

LeetCode 1395. 统计作战单位数(蛮力法)

1. 题目 n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。 每 3 个士兵可以组成一个作战单位,分组规则如下: 从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足…

站在2006的边缘

站在2006的边缘——代腾飞 2006年12月31日 于成都时光飞逝,中华元年2006年转眼来到了尽头明日清晨,冉冉升起的阳光将迎接新的一年的到来又将重新开始新的日月轮回站在这瞬间即逝的2006的边缘心潮难以宁静,我思索着、寻求着总想写下几句,也该…

谷歌Flan-T5诞生!1800种语言任务超大规模微调

编辑 | 泽南、小舟来源 | 机器之心不增加算力需求,谷歌总结的指令微调方法能让 8000 万到 5400 亿参数的模型都显著提升性能。人工智能一个重要的目标是开发泛化能力强的模型。在自然语言处理(NLP)领域中,预训练语言模型在这方面取…

fft的c语言和matlab对比_傅里叶级数(FS)、傅里叶变换(FT)快速傅里叶变换(FFT)及量子傅里叶变换(QFT)之间推导关系...

1 引言傅里叶级数 (Fourier Series, FS) 是《高等数学》中遇到的一个重要的级数,它可以将任意一个满足狄利克雷条件的函数为一系列三角级数的和。最早由法国数学家傅里叶在研究偏微分方程的边值问题时提出,极大地推动了偏微分方程理论的发展。根据欧拉公…

OraOLEDbpus.dll找不到指定的模块的解决办法

OraOLEDbpus.dll找不到指定的模块的解决办法 使用Oracle Provider for OLE DB 进行数据库连接的时候,报错::OraOLEDbpus.dll 找不到指定的模块在oracle的安装目录下却能找到OraOLEDbpus.dll,应该是其未能找到该路径,打开系统的环境…

LeetCode 1396. 设计地铁系统(map/unordered_map)

1. 题目 请你实现一个类 UndergroundSystem ,它支持以下 3 种方法: checkIn(int id, string stationName, int t) 编号为 id 的乘客在 t 时刻进入地铁站 stationName 。 一个乘客在同一时间只能在一个地铁站进入或者离开。 checkOut(int id, string st…

python中object是什么数据类型_自学Python2.1-基本数据类型-字符串str(object) 上

自学Python2.1-基本数据类型-字符串str(object) 上 字符串是 Python 中最常用的数据类型。我们可以使用引号(或")来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 Hello World! var2 "Python Runoob" 1. Python…