ImageBind-LLM: Multi-modality Instruction Tuning

发表时间:11 Sep 2023

论文链接:https://arxiv.org/pdf/2309.03905

作者单位: Shanghai Artificial Intelligence Laboratory

Motivation 现有的工作主要集中在语言和图像 指令 调优上。

解决方法 :与之不同的是,我们的 ImageBind-LLM 可以通过仅图像-文本对齐训练响应多模态条件,包括音频、3D 点云 、视频及其嵌入空间算术

ImageBind-LLM展示了四个关键特点:

  1. 支持多种模式的指令,包括图片、文本、音频、3D点云和视频。

  2. 实现了高效的调优方法,包括图像编码器冻结和参数高效方法的使用。

  3. 使用可学习的门控方法进行渐进性知识注入,更为高效。

  4. 提供了来自图像特征的视觉缓存模型,用于增强嵌入以解决训练和推理之间的模态差异。

实现方式

视觉Encoder换成了ImageBind里面的Encoder,而不是CLIP里面的Encoder,因此可以支持更多模态的信息理解。

在训练期间,我们采用可学习的bind network来对齐 LLAMA 和 ImageBind 图像 编码器 之间的嵌入空间 。然后,将bind network转换的图像特征添加到 LLAMA 中所有层的单词标记中,该标记通过无注意和零初始化的门控机制(与LLAMA-Adapter类似,但是这里不是concat,而是求和)逐步注入视觉 指令。在ImageBind的联合嵌入的帮助下,简单的图像-文本训练使我们的模型能够表现出优越的多模态指令跟随能力。

模型的训练包含两个阶段,预训练阶段和多模态指令微调阶段(多模态大模型基本都是这么做,除了MoE-LLaVA是三阶段)。

预训练阶段包括两个步骤,第一个步骤用image-caption对形式的数据,第二个步骤用 指令 更随形式的数据。

在多模态 指令 微调阶段,用 LoRA 和bias-norm tuning 方法对 LLM 进行微调,首先是每一层transformer layer的线性层用rank 为16的LoRA做微调,同时线性层的归一化参数也会进行更新,也会和LLaMA-Adapter V2一样,加上可学习的偏置项。模型的其他部分的参数固定不变。

在推理过程中,多模态输入被馈送到相应的 ImageBind 编码器,并由所提出的视觉缓存模型处理以进行进一步的跨模态嵌入增强。无训练缓存模型从 ImageBind 提取的 300 万个图像特征中检索,这有效地减轻了训练推理模态差异。

由于训练的时候只有图像-文本的指令微调数据,没有在包含其他模态的指令微调数据上进行微调,对应的推理和训练是存在gap的,为了更好地对其他模态的信息进行推理理解,本文提到了一种缓存增强的推理方式,即Cache-enhanced Inference。

左边是得到cache Model的方式,右边是如何使用cache Model。

实验 **:**我们在开源图像-文本对数据、仅语言和视觉指令数据的集合上训练 ImageBind-LLM。 对于缓存增强推理,我们使用 FAISS 库 来构建我们的检索系统,Autofaiss 库 2 为索引找到最佳超参数。

结论 我们通过可学习的绑定网络简单地将 ImageBind 的视觉编码器与 LLM 对齐来实现这一点。由于 ImageBind 的结合特性,我们可以直接将多模态输入输入到 ImageBind-LLM 中进行推理,无需任何训练。 我们还提出了一种无训练的图像缓存模型(cache Model)来缓解训练和推理之间的模态差异。 未来,我们计划通过增加多模态标记的数量来增强 ImageBind-LLM。此外,将更多模式集成到 ImageBind-LLM 中也是增强其多模态容量的一种有前途的方法。

相关推荐
我不会起名字3226 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
ThornArmor7 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
毕业设计7037 小时前
(免费领源码)基于Python的博物馆研学活动管理系统的设计与实现22724- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
python·mysql·随机森林·pycharm·django·flask·推荐算法
kyrie_sakura7 小时前
python学习笔记15 -- Anaconda,Jupyter,numpy
python·学习·jupyter·numpy
测试老哥8 小时前
接口测试的测试用例应该怎么写?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
Zenova EdgeOS8 小时前
Python 工业边缘 redis-py 异步实战
开发语言·redis·python
caoerzhong8 小时前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue
一木 之林8 小时前
Miniconda 安装与 Jupyter 使用入门
ide·python·jupyter
抓不住时间的沙9 小时前
Butterfly主题 5.7 导航栏添加相册同时设置相册入口密码
css·python·node.js
风合星语9 小时前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真