LAVIS
LAVIS 是由 Salesforce 开源的一站式语言 - 视觉智能库,旨在为开发者提供统一、高效的工具集,以构建和部署多模态 AI 应用。它主要解决了当前视觉与语言模型种类繁多、接口不一、复现困难的问题,让用户无需从零开始搭建复杂架构,即可轻松调用业界领先的预训练模型。
无论是从事多模态研究的研究人员,还是希望快速集成图像理解、文生图或视频分析功能的开发者,LAVIS 都能提供极大的便利。其核心亮点在于集成了 BLIP-2、InstructBLIP、BLIP-Diffusion 及最新的 X-InstructBLIP 等前沿模型。这些模型不仅支持高质量的零样本图像描述、视觉问答和指令跟随生成,还能在冻结大型语言模型(LLM)的基础上,高效融合图像、视频、音频甚至 3D 数据,大幅降低了跨模态任务的开发门槛。此外,LAVIS 提供了完善的文档、基准测试对比以及丰富的 Jupyter Notebook 示例,帮助用户快速上手并验证想法。如果你正在探索人工智能在“看”与“说”结合领域的潜力,LAVIS 将是一个值得信赖的起点。
使用场景
某电商平台的运营团队需要快速处理海量商品图片,自动生成包含细节描述和营销卖点的高质量文案,以应对大促期间的上新需求。
没有 LAVIS 时
- 开发门槛极高:团队需分别寻找并整合独立的视觉编码器与大语言模型,编写复杂的对齐代码,耗时数周才能跑通原型。
- 泛化能力不足:传统模型只能输出刻板的“这是一双鞋”,无法理解“适合雨天穿着”或“复古风格”等深层语义指令。
- 多任务维护困难:针对图片描述、视觉问答、内容编辑等不同需求,需训练和维护多套独立模型,服务器资源消耗巨大。
- 冷启动成本高:面对新类目的商品,缺乏零样本(Zero-shot)能力,必须收集大量标注数据重新微调模型才能使用。
使用 LAVIS 后
- 一站式快速集成:直接调用 LAVIS 中预训练的 BLIP-2 或 InstructBLIP 模型,几行代码即可在一天内部署具备图文理解能力的服务。
- 指令跟随能力强:利用指令微调框架,模型能精准响应“写一段突出透气性的小红书风格文案”等复杂自然语言指令。
- 统一架构降本增效:通过一个库支持图像描述、视觉问答及主体驱动生成(BLIP-Diffusion)等多种任务,显著降低算力与维护成本。
- 强大的零样本泛化:无需额外训练,模型即可直接理解从未见过的新奇商品特征,立即投入生产环境使用。
LAVIS 将原本繁琐的多模态算法研发转化为标准化的 API 调用,让业务团队能专注于创意策略而非底层模型构建。
运行环境要求
- 未说明
未说明(但涉及深度学习模型训练与推理,通常建议配备 NVIDIA GPU)
未说明

快速开始
LAVIS - 语言-视觉智能库
最新动态: 🎉
这是一个简单而高效的跨模态框架,基于冻结的大语言模型构建,能够在无需大量特定模态定制的情况下,整合多种模态(图像、视频、音频、3D)。
这是一种文本到图像生成模型,其训练效率是 DreamBooth 的 20 倍。同时支持零样本的主体驱动生成与编辑。
这是一个基于 BLIP-2 模型的新型视觉-语言指令微调框架,在广泛的视觉-语言任务中实现了最先进的零样本泛化性能。
这是一种通用且高效的预训练策略,能够轻松利用预训练的视觉模型和大型语言模型(LLMs)进行视觉-语言预训练。BLIP-2 在 VQAv2 零样本任务上超越了 Flamingo(65.0 对 56.3),并在 NoCaps 数据集上的零样本字幕生成任务中创下了新的 SOTA 记录(CIDEr 分数为 121.6,而此前最佳为 113.2)。此外,结合强大的 LLMs(如 OPT、FlanT5),BLIP-2 还解锁了全新的 零样本指令式视觉到语言生成 能力,适用于各种有趣的应用场景!
- 2023年1月,LAVIS 现已在 PyPI 上架,可直接安装!
- [模型发布] 2022年12月,发布了 Img2LLM-VQA 的实现(CVPR 2023,“从图像到文本提示:使用冻结大型语言模型的零样本 VQA”,作者:郭家贤等)
论文, 项目页面,
这是一个即插即用模块,使大型语言模型(LLMs)能够直接用于视觉问答(VQA)。Img2LLM-VQA 在 VQAv2 数据集的零样本 VQA 任务上超越了 Flamingo(61.9 对 56.3),而且完全不需要端到端的训练!
- [模型发布] 2022年10月,发布了 PNP-VQA 的实现(EMNLP Findings 2022,“即插即用 VQA:通过组合大型预训练模型实现零训练的零样本 VQA”,作者:Anthony T.M.H. 等),
论文, 项目页面,)
这是一个模块化的零样本 VQA 框架,无需对 PLMs 进行训练,即可达到 SOTA 的零样本 VQA 性能。
技术报告与引用 LAVIS
您可以在我们的技术报告中找到更多详细信息。
如果您在研究或应用中使用了 LAVIS,请使用以下 BibTeX 格式引用它:
@inproceedings{li-etal-2023-lavis,
title = "{LAVIS}: 一站式语言-视觉智能库",
author = "Li, Dongxu and
Li, Junnan and
Le, Hung and
Wang, Guangsen and
Savarese, Silvio and
Hoi, Steven C.H.",
booktitle = "第61届计算语言学协会年会论文集(第3卷:系统演示)",
month = jul,
year = "2023",
address = "多伦多,加拿大",
publisher = "计算语言学协会",
url = "https://aclanthology.org/2023.acl-demo.3",
pages = "31--41",
abstract = "我们介绍了 LAVIS,一个用于语言-视觉研究和应用的开源深度学习库。LAVIS 致力于成为一个一站式的综合库,使语言-视觉领域的最新进展更容易被研究人员和从业者所使用,并为未来的研究与发展提供助力。该库提供统一的接口,方便用户访问最先进的图像-语言、视频-语言模型以及常用数据集。LAVIS 支持在多种任务上的训练、评估和基准测试,包括多模态分类、检索、图像字幕生成、视觉问答、对话以及预训练等。同时,该库还具有高度可扩展性和可配置性,便于未来的开发与定制。在本技术报告中,我们描述了该库的设计原则、关键组件和功能,并展示了在常见语言-视觉任务上的基准测试结果。",
}
目录
简介
LAVIS 是一个用于语言-视觉智能研究和应用的 Python 深度学习库。该库旨在为工程师和研究人员提供一站式的解决方案,以快速开发适用于其特定多模态场景的模型,并在标准及自定义数据集上进行基准测试。 它采用统一的接口设计,支持访问:
- 10+ 种任务 (检索、字幕生成、视觉问答、多模态分类等);
- 20+ 种数据集(COCO、Flickr、Nocaps、Conceptual Commons、SBU 等);
- 30+ 套最先进的基础语言-视觉模型及其任务特定适配的预训练权重,包括 ALBEF, BLIP, ALPRO, CLIP。
LAVIS 的主要特点包括:
统一且模块化的接口:便于轻松利用和复用现有模块(数据集、模型、预处理工具),同时也支持添加新模块。
开箱即用的推理与特征提取:现成的预训练模型让您能够直接在自己的数据上使用最先进的多模态理解与生成能力。
可复现的模型库与训练配方:您可以轻松复制并扩展现有及新任务上的最先进模型。
数据集库与自动下载工具:准备众多语言-视觉数据集往往非常繁琐。LAVIS 提供自动下载脚本,帮助您快速准备各种数据集及其标注。
下表展示了我们库中支持的任务、数据集和模型。这是一项持续的工作,我们正在不断扩充列表。
| 任务 | 支持的模型 | 支持的数据集 |
|---|---|---|
| 图像-文本预训练 | ALBEF, BLIP | COCO, VisualGenome, SBU ConceptualCaptions |
| 图像-文本检索 | ALBEF, BLIP, CLIP | COCO, Flickr30k |
| 文本-图像检索 | ALBEF, BLIP, CLIP | COCO, Flickr30k |
| 视觉问答 | ALBEF, BLIP | VQAv2, OKVQA, A-OKVQA |
| 图像字幕生成 | BLIP | COCO, NoCaps |
| 图像分类 | CLIP | ImageNet |
| 自然语言视觉推理 (NLVR) | ALBEF, BLIP | NLVR2 |
| 视觉蕴含 (VE) | ALBEF | SNLI-VE |
| 视觉对话 | BLIP | VisDial |
| 视频-文本检索 | BLIP, ALPRO | MSRVTT, DiDeMo |
| 文本-视频检索 | BLIP, ALPRO | MSRVTT, DiDeMo |
| 视频问答 (VideoQA) | BLIP, ALPRO | MSRVTT, MSVD |
| 视频对话 | VGD-GPT | AVSD |
| 多模态特征提取 | ALBEF, CLIP, BLIP, ALPRO | 定制数据集 |
| 文本-图像生成 | [即将推出] |
安装
- (可选)创建 conda 环境
conda create -n lavis python=3.8
conda activate lavis
- 从 PyPI 安装
pip install salesforce-lavis
- 或者,如果您需要进行开发,可以从源代码构建
git clone https://github.com/salesforce/LAVIS.git
cd LAVIS
pip install -e .
快速入门
模型库
模型库汇总了 LAVIS 中支持的所有模型,查看方法如下:
from lavis.models import model_zoo
print(model_zoo)
# ==================================================
# 架构 类型
# ==================================================
# albef_classification ve
# albef_feature_extractor base
# albef_nlvr nlvr
# albef_pretrain base
# albef_retrieval coco, flickr
# albef_vqa vqav2
# alpro_qa msrvtt, msvd
# alpro_retrieval msrvtt, didemo
# blip_caption base_coco, large_coco
# blip_classification base
# blip_feature_extractor base
# blip_nlvr nlvr
# blip_pretrain base
# blip_retrieval coco, flickr
# blip_vqa vqav2, okvqa, aokvqa
# clip_feature_extractor ViT-B-32, ViT-B-16, ViT-L-14, ViT-L-14-336, RN50
# clip ViT-B-32, ViT-B-16, ViT-L-14, ViT-L-14-336, RN50
# gpt_dialogue base
让我们看看如何在 LAVIS 中使用模型对示例数据进行推理。首先,我们从本地加载一张示例图像。
```python
import torch
from PIL import Image
# 设置使用的设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 加载示例图像
raw_image = Image.open("docs/_static/merlion.png").convert("RGB")
这张示例图像展示了鱼尾狮公园(来源),这是新加坡的一个地标性建筑。
图像字幕生成
在这个例子中,我们使用 BLIP 模型为该图像生成字幕。为了使推理更加简便,我们还通过 load_model_and_preprocess() 将每个预训练模型与其预处理工具(变换)关联起来。
import torch
from lavis.models import load_model_and_preprocess
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 加载 BLIP 字幕基础模型,并在其上进行了 MSCOCO 字幕数据集的微调。
# 同时也加载了相关的图像处理器
model, vis_processors, _ = load_model_and_preprocess(name="blip_caption", model_type="base_coco", is_eval=True, device=device)
# 对图像进行预处理
# vis_processors 存储了用于“训练”和“评估”(验证/测试/推理)的图像变换
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
# 生成字幕
model.generate({"image": image})
# ['a large fountain spewing water into the air']
视觉问答(VQA)
BLIP 模型能够用自然语言回答关于图像的自由式问题。要访问 VQA 模型,只需替换传递给 load_model_and_preprocess() 的 name 和 model_type 参数即可。
from lavis.models import load_model_and_preprocess
model, vis_processors, txt_processors = load_model_and_preprocess(name="blip_vqa", model_type="vqav2", is_eval=True, device=device)
# 提出一个随机问题。
question = "Which city is this photo taken?"
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
question = txt_processors["eval"](question)
model.predict_answers(samples={"image": image, "text_input": question}, inference_method="generate")
# ['singapore']
统一特征提取接口
LAVIS 提供了一个统一的接口来提取每种架构的特征。为了提取特征,我们加载每个模型的特征提取变体。多模态特征可用于多模态分类。低维单模态特征则可用于计算跨模态相似度。
from lavis.models import load_model_and_preprocess
model, vis_processors, txt_processors = load_model_and_preprocess(name="blip_feature_extractor", model_type="base", is_eval=True, device=device)
caption = "a large fountain spewing water into the air"
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
text_input = txt_processors["eval"](caption)
sample = {"image": image, "text_input": [text_input]}
features_multimodal = model.extract_features(sample)
print(features_multimodal.multimodal_embeds.shape)
# torch.Size([1, 12, 768]), use features_multimodal[:,0,:] for multimodal classification tasks
features_image = model.extract_features(sample, mode="image")
features_text = model.extract_features(sample, mode="text")
print(features_image.image_embeds.shape)
# torch.Size([1, 197, 768])
print(features_text.text_embeds.shape)
# torch.Size([1, 12, 768])
# low-dimensional projected features
print(features_image.image_embeds_proj.shape)
# torch.Size([1, 197, 256])
print(features_text.text_embeds_proj.shape)
# torch.Size([1, 12, 256])
similarity = features_image.image_embeds_proj[:,0,:] @ features_text.text_embeds_proj[:,0,:].t()
print(similarity)
# tensor([[0.2622]])
加载数据集
LAVIS 内置支持多种常见的语言-视觉数据集,提供了自动下载工具,帮助下载和整理这些数据集。下载完成后,可以使用以下代码加载数据集:
from lavis.datasets.builders import dataset_zoo
dataset_names = dataset_zoo.get_names()
print(dataset_names)
# ['aok_vqa', 'coco_caption', 'coco_retrieval', 'coco_vqa', 'conceptual_caption_12m',
# 'conceptual_caption_3m', 'didemo_retrieval', 'flickr30k', 'imagenet', 'laion2B_multi',
# 'msrvtt_caption', 'msrvtt_qa', 'msrvtt_retrieval', 'msvd_caption', 'msvd_qa', 'nlvr',
# 'nocaps', 'ok_vqa', 'sbu_caption', 'snli_ve', 'vatex_caption', 'vg_caption', 'vg_vqa']
下载完图像后,我们可以使用 load_dataset() 来获取数据集。
from lavis.datasets.builders import load_dataset
coco_dataset = load_dataset("coco_caption")
print(coco_dataset.keys())
# dict_keys(['train', 'val', 'test'])
print(len(coco_dataset["train"]))
# 566747
print(coco_dataset["train"][0])
# {'image': <PIL.Image.Image image mode=RGB size=640x480>,
# 'text_input': 'A woman wearing a net on her head cutting a cake. ',
# 'image_id': 0}
如果你已经托管了数据集的本地副本,可以通过传递 vis_path 参数来更改默认的图像加载路径。
coco_dataset = load_dataset("coco_caption", vis_path=YOUR_LOCAL_PATH)
Jupyter Notebook 示例
更多推理示例,例如字幕生成、特征提取、VQA、GradCam、零样本分类等,请参阅示例。
资源与工具
- 基准测试:请参阅基准测试以获取评估和训练支持模型的说明。
- 数据集下载与浏览:请参阅数据集下载以获取常见语言-视觉数据集的下载说明及自动化工具。
- GUI 演示:要在本地运行演示,请执行
bash run_scripts/run_demo.sh,然后按照提示在浏览器中查看。网页版演示即将推出。
文档
更多详细信息和高级用法,请参阅 文档。
伦理与负责任的使用
我们注意到,LAVIS 中的模型对其多模态能力不提供任何保证;可能会出现错误或有偏见的预测。特别是,LAVIS 中使用的数据集和预训练模型可能包含社会经济偏见,从而导致分类错误以及其他不良行为,例如冒犯性或不恰当的言论。我们强烈建议用户在实际应用之前,仔细审查 LAVIS 中的预训练模型和整个系统。我们计划在未来通过研究和缓解这些潜在的偏见及不当行为来改进该库。
联系我们
如果您有任何问题、意见或建议,请随时通过 lavis@salesforce.com 与我们联系。
许可证
版本历史
v1.0.22023/03/06v1.0.12023/03/03v1.0.02023/01/30v0.1.12022/10/25v0.1.02022/09/19常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。