在此背景下,OpenMMLab 重磅推出具备多模态对话能力的 Multimodal-GPT(MMGPT)!
欢迎大家 Star Star Star!
https://github.com/open-mmlab/Multimodal-GPT
我们还特别提供了 Multimodal-GPT 的网页 demo,欢迎大家体验!
https://mmgpt.openmmlab.org.cn/
Multimodal-GPT 的具体实现细节可以阅读:
https://arxiv.org/abs/2305.04790
Multimodal-GPT 有什么不同
OpenFlamingo 在预训练之后展现了一定的 few shot 能力,但是不具备符合人类偏好的对话能力。因此,我们利用 OpenFlamingo 的优势,通过构建特定的指令,使用特定的数据配方来进行微调,从而提高模型的泛化能力。
现有的视觉-语言模型通常在数据量庞大的多模态任务上进行训练,训练消耗较大,Multimodal-GPT 对现有开源的多模态数据进行整合,通过构建特定的指令来进行微调,训练时间更短、训练消耗更小。
我们观察到训练数据的质量对于有效的对话性能至关重要,训练过程中使用较多的简单的对话会导致模型对任何指令都生成简短的回复。我们在实验过程中发现。而现有的视觉-语言数据质量还不够高,不足以支持模型的对话。因此,Multimodal-GPT 使用了特定的数据配方来让模型增加泛化能力。
Multimodal-GPT 对现有开源的数据进行了整合,包括 Dolly 15k、Alpaca GPT4 语言数据、 LLAVA、Mini-GPT4、A-OKVQA、COCO Caption、OCR VQA 等涵盖视觉问答(Visual Question Answering,VQA)、图像字幕(Visual Caption)、视觉理解(Visual Reasoning)、视觉对话(Visual Dialogue)和 OCR 问答方向的视觉-语言数据。Multimodal-GPT 对多模态任务和语言任务进行混合训练,定义了一个统一的指令模板来联合训练 MultiModal-GPT,让模型能够具有更好的对话能力和理解能力,进一步提高模型的性能。
为什么选择 Multimodal-GPT
Multimodal-GPT 接入了基于指令模板的多模态任务数据,用户可以根据任务使用现有的指令模板或自定义新的指令模板。不仅如此,用户还可以针对任务自定义数据配方。
Multimodal-GPT 支持多模态任务和语言任务的混合训练,用户可以一键启动训练。
Multimodal-GPT 支持基于 LoRA 的轻量化微调(parameter-efficient tuning),用户可以在多模态模型上进行微调。
模型结构
Multimodal-GPT 基于 OpenFlamingo 模型,包括来自 CLIP 的视觉编码器、用于接收来自视觉编码器的空间特征的感知器重采样器(perceiver resampler)和语言解码器 LLaMA。
具体细节可以参考 Flamingo 原文:https://proceedings.neurips.cc/paper_files/paper/2022/file/960a172bc7fbf0177ccccbb411a7d800-Paper-Conference.pdf
训练过程中,Multimodal-GPT 冻结整个 OpenFlamingo 模型,将 LoRA 添加到自注意力部分(self-attention)、交叉注意力部分(cross-attention)和语言解码器中的 FFN 部分来进行微调。Multimodal-GPT 整体结构如下图所示:
MultiModal-GPT 网络结构示意图
统一的指令模板
Multimodal-GPT 提出了一个统一的指令模板来整合单模态语言数据和多模态视觉-语言数据。这种统一的方法能够利用两种数据之间的互补优势,使模型能够学到更深层的表征信息,从而提高在不同任务中的性能。
Multimodal-GPT 使用固定模板来统一对模型的输入,语言数据的指令模板如下:
单模态语言数据指令模板
其中,{instruction}、{input} 和 {response} 是语言数据中的文本标注。训练过程中只计算 {response} 部分和 token 的损失。
对于视觉-语言数据,指令模板如下:
多模态视觉-语言数据指令模板
其中,{question} 和 {response} 是视觉-语言数据中标注的问答文本, 表示图像存在的 token。如果数据集有多轮对话,则会重复 ### Instruction: {question} 和 ### Response: {response} 直到对话结束。同样地,在训练过程中 Multimodal-GPT 只计算 {response} 部分和 token 的损失。
对话数据构造
由于图像字幕(Visual Caption)通常不包含问题指令,所以我们通过 GPT-4 生成了一系列问题,并在训练过程中随机选择其中的一条作为 {question}。下面给了一些生成指令示例:
• Can you describe the image?
• Could you provide a description of the image?
• What do you see in this image?
• Share your thoughts on the content of the image.
• Please narrate what's happening in the picture.
• Can you give a brief explanation of the image?
• Describe the main elements and details present in the image.
• In your own words, what is depicted in the image?
• How would you describe the image's content in a caption?
• Can you suggest an insightful caption that highlights the underlying message of the image?
为了让模型具有更强的图片理解能力,我们基于A-OKVQA 数据集构建了一系列的问答对话,相比其他的 VQA 数据集,A-OKVQA 除了为每个问题提供单个短语的回答之外,还提供了一些因果关系(reasoning)的信息,这为我们构造更高质量的对话创造了条件。
我们通过这些信息构造了更长的回答,问答模板分别采用的“{question} {Reason_question}” 和“The answer is {response}. Because {reasoning}”。其中 {question} 和 {response} 分别表示视觉-语言数据中标注的问答文本,{Reason_question} 和 {reasoning}分别表述因果关系的问答文本。更长且更有因果关系的回答相比使用单个短语的回答能够显著提升模型的对话能力。
■ 数据配方
我们使用全部的单模态语言数据 Dolly 15k、Alpaca GPT4 和多模态视觉-语言数据 LLAVA、Mini-GPT4 以及随机抽取 A-OKVQA 数据集中的 5000 个图像-文本对、COCO Caption 数据集中的 512 个图像-文本对和 OCR VQA 数据集中的 512 个图像-文本对进行训练,因为这些数据集文本内容较短,全部使用会让模型回答趋向简单。
示例
Multimodal-GPT 表现出了多模态的能力,例如 MultiModal-GPT 可以成功识别出千层面,并提供准备这道菜的综合配方。在随后的对话中,当用户询问潜在的餐馆时,MultiModal-GPT 会给出合理的用餐建议,这体现了该模型维持持续对话的能力。
Multimodal-GPT 还展现了 Counting、VQA 和 Caption 能力,例如 MultiModal-GPT 知道下图中有 4 个女人,并知道她们正在拍照。
此外,Multimodal-GPT 还可以识别图片中的文字,并对图片进行理解,例如识别下图中的 Harry Potter 海报中的文字,知道图片中有 3 个人并了解这本书的作者。
MultiModal-GPT 还支持图文交替对话,能够识别 Elon Musk 的图像,并回答关于 Elon Musk 的问题。
给定一张图片,MultiModal-GPT 可以让模型生成对图片的细节描述,并且具有一定的推理能力,能够合理推测出图片中的季节。
此外,MultiModal-GPT 还能够根据给定的图片进行出行规划。
Multimodal-GPT 也能够根据海报介绍电影的角色,内容,以及制作公司。
Multimodal-GPT 更多强大的能力等你解锁!最后,再次欢迎社区小伙伴来 Multimodal-GPT Star、Issue、PR!
https://github.com/open-mmlab/Multimodal-GPT