多模态 MiniGPT-4 开源了!
最近 GPT-4[1] 展示出非凡的多模态能力,比如直接从手写文本生成网站,以及识别图像中的幽默元素。这些特性在以前的视觉语言模型中很少见。
多模态(Multimodal)是指涉及多种感官模式(例如视觉、听觉、触觉等)的信息处理。在计算机科学中,多模态通常指涉及多种输入和输出模式(例如图像、文本、语音等)的机器学习和人工智能应用。多模态技术可以增强信息处理的效率和准确性,例如在图像和文本之间建立联系,或者在语音和文本之间进行自然语言理解。多模态技术在自然语言处理、计算机视觉、音频处理和交互式系统等领域有广泛应用。
来自阿卜杜拉国王科技大学的 MiniGPT-4 研究小组认为,GPT-4 具有先进的多模态生成能力的主要原因在于利用了更先进的大型语言模型(LLM)。为了研究这一现象,提出了 MiniGPT-4,它使用一个投影层将一个冻结的视觉编码器(BLIP-2[2])与一个冻结的 LLM(Vicuna[3])对齐。研究后发现,MiniGPT-4 处理了许多类似于 GPT-4 展示的功能,如详细的图像描述生成和从手写草稿创建网站。此外,还观察到 MiniGPT-4 中出现了其他新兴的能力,包括根据给定的图像创作故事和诗歌,为图像中显示的问题提供解决方案,根据食物照片教用户如何烹饪等。这些先进的能力可以归因于使用了更先进的大型语言模型。此外,此方法计算效率高,因为它仅使用大约 500 万对齐的图像-文本对和额外的 3,500 个经过精心策划的高质量对训练一个投影层。
BLIP-2 模型利用冻结预训练的图像编码器和大型语言模型,通过在它们之间训练一个轻量级的 12 层 Transformer 编码器,实现了各种视觉-语言任务的最先进性能。值得注意的是,在零样本 VQAv2 上,BLIP-2 相较于 80 亿参数的 Flamingo 模型,使用的可训练参数数量少了 54 倍,性能提升了 8.7 %。
投影层(Projection Layer)是神经网络中的一种常见层类型,它将输入数据从一个空间映射到另一个空间。在自然语言处理中,投影层通常用于将高维词向量映射到低维空间,以减少模型参数数量和计算量。在图像处理中,投影层可以将高维图像特征向量映射到低维空间,以便于后续处理和分析。
将一个冻结的视觉编码器和一个冻结的语言模型(如 Vicuna)通过一个投影层对齐意味着:
两种模型保持其独立训练得到的特征表示能力,通过投影层获得了一个共同的更低维的表达空间。
一个冻结的视觉编码器:指的是一个事先训练好的图像特征提取器,它将输入的图像转换成向量形式。
一个冻结的 LLM (Vicuna):指的是另一个事先训练好的大型语言模型,它可以生成文本或者对文本进行理解。
新的投影层会通过一个监督学习过程训练,以将两个模型的特征表示空间映射到一个共同的低维特征空间。这个共同空间使得视觉特征和语言特征更加相关联,建立对应关系。
建立视觉和语言表示之间的相互对应关系,并以此为基础开展新的跨空间任务。例如在视觉中领会语言指代,或在语言中解释图像内容。
通过新的监督学习来提高视觉-语言配置之间的对应关系,而不需要重新训练任何基础视觉或语言模型。
在线体验
MiniGPT-4 Demo[4],首次进入页面,模型初始化需要一段时间,等待初始化完成,就可以上传图片,开始对话(英文对话结果要比中文好很多)。
本地安装
本地安装训练稍微有点复杂,感兴趣的朋友可以参考 MiniGPT-4 Getting Started[5],主要分为以下几步:
准备代码和环境(环境主要有:Python,git 和 conda[6] 包管理器等)
准备预训练的 Vicuna 权重(Vicuna-13B[7])
准备预训练的 MiniGPT-4 检查点
在本地启动演示
训练包含两个对齐阶段,在第二阶段对齐后,MiniGPT-4 就能够连贯地和用户友好地谈论图像:
第一预训练阶段:模型使用来自 Laion 和 CC 数据集的图像文本对进行训练,以对齐视觉和语言模型。第一阶段之后,视觉特征被映射,可以被语言模型理解。
第二微调阶段:使用自己创建的小型高质量图文对数据集并将其转换为对话格式以进一步对齐 MiniGPT-4。
相关论文
MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models[8]
Plug-and-Play VQA: Zero-shot VQA by Conjoining Large Pretrained Models with Zero Training[9]
Flamingo: a Visual Language Model for Few-Shot Learning[10]
References
GPT-4: https://openai.com/product/gpt-4
[2]BLIP-2: https://huggingface.co/docs/transformers/main/model_doc/blip-2
[3]Vicuna: https://github.com/lm-sys/FastChat
[4]MiniGPT-4 Demo: https://minigpt-4.github.io
[5]MiniGPT-4 Getting Started: https://github.com/Vision-CAIR/MiniGPT-4#getting-started
[6]conda: https://docs.conda.io/projects/conda/en/stable
[7]Vicuna-13B: https://huggingface.co/lmsys/vicuna-13b-delta-v0
[8]MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models: https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT_4.pdf
[9]Plug-and-Play VQA: Zero-shot VQA by Conjoining Large Pretrained Models with Zero Training: https://arxiv.org/abs/2210.08773
[10]Flamingo: a Visual Language Model for Few-Shot Learning: https://arxiv.org/abs/2204.14198