【多模态读论文系列】LLaMA-Adapter V2论文笔记
【多模态读论文系列】LLaVA论文笔记
分享第三篇多模态论文阅读笔记
MINIGPT-4: ENHANCING VISION-LANGUAGE UNDERSTANDING WITH ADVANCED LARGE LANGUAGE MODELS
论文地址:https://arxiv.org/pdf/2304.10592
代码:https://minigpt-4.github.io/
MiniGPT-4的研究发现有以下几点:
- 视觉-语言能力的对齐:研究发现,通过将视觉特征与大模型(如Vicuna)对齐,MiniGPT-4能够实现先进的视觉-语言理解能力,这种能力接近于GPT-4展示出的视觉处理效果。
- 投影层的有效性:研究表明,只需训练一个投影层(projection layer),就可以有效地将预训练好的视觉编码器和大型语言模型对齐。
- 训练效率:MiniGPT-4的训练只需要使用4张A100训练10个小时左右
- 图像-文本对齐的局限性:研究还发现,单纯通过短的图像-文本对对齐视觉特征和大模型是不够的。这种简单的对齐方法往往会导致生成的语言不够自然。为了解决这个问题,研究建议进一步微调模型,采用更详细的图像描述对进行训练。
方法
语言模型:MiniGPT-4使用Vicuna作为语言解码器。Vicuna是基于LLaMA构建的语言模型。
视觉模型:在视觉感知方面,MiniGPT-4使用BLIP-2中的视觉编码器,这是一个基于ViT(视觉Transformer)的结构,配合预训练的Q-Former模块。这些组件可以有效处理和提取图像中的特征。
采用两阶段训练方法,在第一阶段,模型通过一个大规模的图像-文本对数据集进行预训练,是模型具备基本的基本的视觉和语言对应关系。
在第二阶段,模型在一个更小但高质量的图像-文本数据集上进行微调。这个数据集使用专门设计的对话模板,这种模板使生成的内容更符合实际应用的需求,在对话和描述场景中也表现得更自然和准确。
参考:https://zhuanlan.zhihu.com/p/628375255
稍微解释一下BLIP-2,BLIP-2 是一种多模态 Transformer 模型,主要针对以往的视觉-语言预训练 (Vision-Language Pre-training, VLP) 模型端到端训练导致计算代价过高的问题。
这个工作提出了一种借助现成的冻结参数的预训练视觉模型和大型语言模型的,高效的视觉语言预训练方法。 但是,简单的冻结预训练好的视觉模型的参数或者语言模型的参数会带来一个问题:就是视觉特征的空间和文本特征的空间,它不容易对齐。
那么为了解决这个问题,BLIP-2 提出了一个轻量级的 Querying Transformer,该 Transformer 分两个阶段进行预训练。第一阶段从冻结的视觉编码器中引导多模态学习,第二阶段从冻结的文本编码器中引导多模态学习。
预训练阶段
在预训练阶段,该模型旨在从大量对齐的图像-文本对中获取视觉-语言知识。投影层的输出视为 LLM 的软提示,提示其生成相应的真实文本。在整个预训练过程中,预训练的视觉编码器和LLM都保持冻结状态,只有线性投影层被用来预训练。
数据集包括 Conceptual Caption、SBU和 LAION。
训练了 20,000 步,批量大小为 256,覆盖大约 500 万个图像文本对。整个过程大约需要 10 个小时才能完成,使用 4 张 A100 (80GB) GPU。
微调数据集的构建
图像-文本对生成
初始对齐的图像文本生成,使用从第一个预训练阶段得到的模型来生成输入图像的全面描述。提示模板如下所示:
表示通过线性投影层得到的特征.
为了避免模型生成不完整的句子,作者通过检查生成的句子是否超过80个标记(tokens)。
如果未超过,加入一个附加提示
“###Human: Continue ###Assistant:”
提示MiniGPT-4继续生成内容。
通过该方法能够生成带有详细信息的图像-文本对。文中从Conceptual Caption数据集随机选择了5,000张图像,并使用预训练模型为每张图像生成相应的文字描述。
数据后处理
这里使用 ChatGPT 来重写描述,并使用以下提示:
Fix the error in the given paragraph. Remove any repeating sentences, meaningless characters, not English sentences, and so on. Remove unnecessary repetition. Rewrite any incomplete sentences. Return directly the results without explanation. Return directly the input paragraph if it is already correct without explanation.
完成后处理阶段后,作者手动验证每个图像描述的正确性,发现有几个经常出现的错误(“很抱歉我犯了一个错误……”或“我为此道歉……”),这些可以用硬编码规则来自动过滤掉。
手动消除 ChatGPT 无法检测到的冗余单词或句子。
最后筛选得到3500 个满足要求的图片-文本对,用于后续的微调过程。
微调阶段
微调模板如下所示:
在此提示中,表示从我们的预定义指令集包含不同形式的指令,例如“Describe this image in detail”或“Could you describe the contents of this image for me”。
微调过程仅需要 400 个训练步骤,批量大小为 12,使用单个 A100 GPU 大约需要 7 分钟。