AI多模态技术介绍:视觉语言模型(VLMs)指南

本文作者:AIGCmagic社区 刘一手

AI多模态全栈学习路线

在本文中,我们将探讨用于开发视觉语言模型(Vision Language Models,以下简称VLMs)的架构、评估策略和主流数据集,以及该领域的关键挑战和未来趋势。通过了解这些基础方面,读者可以深入了解如何在包括医疗、机器人和媒体等行业中应用VLMs,以创建更复杂且具备上下文感知能力的人工智能系统。

曾经人工智能能够像人类一样有效地理解视觉和文本线索的想法,似乎遥不可及且难以想象。

然而随着多模态AI的出现,我们正在经历一场革命。AI现在可以同时理解多种模态,如文本、图像、语音、面部表情和手势等,以理解我们周围的世界。处理多种模态的能力为AI应用打开了各种途径。

多模态AI的一个主流的应用是视觉语言模型(VLMs)。这些模型可以同时处理和理解语言(文本)和视觉(图像)的模态,以执行高级的视觉语言任务,如视觉问答(VQA)、图像描述和文本到图像搜索。在本文中我们将介绍:

  • VLMs的主流架构;
  • VLMs的评估方法;
  • VLMs的数据集;
  • VLM的关键挑战、主要应用和未来趋势;

一、VLMs的一般定义

视觉语言模型(VLM)是视觉模型与自然语言模型的融合。它接收图像及其对应的文本描述作为输入,并学习将两种模态的知识关联起来。模型的视觉部分捕捉图像的空间特征,而语言模型则编码文本信息。

来自两种模态的数据,包括检测到的对象、图像的空间布局和文本嵌入,都会相互映射。例如,如果图像中有一只鸟,模型会学习将其与文本描述中的相关关键词关联。

通过这种方式,模型学会理解图像,并将知识转换为自然语言(文本),反之亦然。

VLM的训练

构建VLM涉及预训练基础模型和零样本学习。可以使用迁移学习技术,如知识蒸馏,对模型进行微调,以适应更具体的下游任务。

这些是相对简单的技术,需要较小的数据集和较少的训练时间,同时保持良好的效果。

现代框架则使用各种技术来获得更好的结果,例如:

  • 对比学习。
  • 掩蔽语言-图像建模。
  • 使用Transformer的编码器-解码器模块等。

这些架构能够学习各种模态之间的复杂关系,并提供最先进的结果。接下来,我们将详细讨论这些内容。


二、VLMs的主流架构

让我们来看看一些VLM架构,以及主流模型如CLIP、Flamingo和VisualBert等所使用的学习技术。

2.1 对比学习

对比学习是一种通过理解数据点之间差异来学习的方法。该方法计算数据实例之间的相似度得分,并旨在最小化对比损失。在半监督学习中尤为有用,因为只有少量标记样本指导优化过程,以标记未见过的数据点。

对比学习

 

理解猫的外形特征有多种方法,其中一种是将其与相似的猫图像和狗图像进行对比。对比学习模型通过识别面部结构、体型大小和毛发等特征来区分猫和狗。这些模型能够判断哪张图像与原始图像(称为"锚点")更相似,从而预测其类别。

CLIP是一个运用对比学习的典型模型。它使用文本和视觉编码器来计算文本与图像嵌入之间的相似度。为实现零样本预测,CLIP遵循以下三个步骤:

  • 在预训练阶段同时训练文本和图像编码器,学习图像-文本对的关系
  • 将训练数据集中的类别转换为文字描述
  • 对输入图像进行零样本预测时,估算最匹配的文字描述
CLIP预训练过程
CLIP推理过程

2.2 PrefixLM

PrefixLM 是一种主要用于模型预训练的自然语言处理学习技术。它输入部分文本(前缀),并学习预测序列中的下一个词。在视觉语言模型中,PrefixLM 使模型能够基于图像及其对应的前缀文本来预测下一个词序列。它利用视觉 transformer(ViT)将图像划分为一维的图像块序列,每个图像块代表一个局部图像区域。

随后,模型对处理后的图像块应用卷积或线性投影,以生成上下文化的视觉嵌入。对于文本模态,模型将与图像块相关的文本前缀转换为词元嵌入。transformer 的编码器-解码器模块接收视觉和词元嵌入。在这个过程中,模型学习嵌入之间的关系。

SimVLM 是一个采用 PrefixLM 学习方法的流行架构。相比其前身,它具有更简单的 transformer 架构,在多个基准测试中取得了更好的结果。

它使用 transformer 编码器来学习图像-前缀对,并使用 transformer 解码器来生成输出序列。该模型还展示了良好的泛化能力和零样本学习能力。

SimVLM 架构

同样地,VirTex 使用卷积神经网络来提取图像特征,并使用带有 transformer 的文本处理模块来管理文本前缀。通过向文本处理模块输入图像-文本对,你可以端到端地训练模型来预测正确的图像描述。

VirTex 架构

 2.3 Frozen PrefixLM

虽然 PrefixLM 技术需要从头开始训练视觉和文本编码器,但冻结 PrefixLM 允许你使用预训练网络,只更新图像编码器的参数。

例如,下面的架构展示了如何使用预训练语言模型和视觉编码器来实现冻结机制。文本编码器可以来自任何大型语言模型(LLM),视觉编码器也可以是预训练的视觉基础模型。

你可以微调图像编码器,使其图像表示与文本嵌入对齐,从而使模型能够做出更好的预测。

Frozen PrefixLM 架构

 Flamingo 的架构采用了更先进(SOTA)的方法。它使用类似 CLIP 的视觉编码器和一个名为 Chinchilla 的大型语言模型。通过保持 LLM 固定不变,你可以在文本之间交错插入图像来训练视觉编码器。

视觉编码器通过 Perceiver Sampler 处理图像。这种技术可以实现更快的推理速度,使 Flamingo 特别适合少样本学习。

Flamingo 架构

2.4 使用交叉注意力的多模态融合

这种方法通过添加交叉注意力层,利用预训练 LLM 的编码器进行视觉表示学习。VisualGPT 是一个主要的示例,它允许快速调整 LLM 的预训练编码器权重以适应视觉任务。

VisualGPT 架构

研究人员从输入图像中提取相关对象,并将它们输入到视觉编码器中。生成的视觉表示随后被输入到解码器中,并根据预训练的 LLM 进行权重初始化。解码器模块通过自恢复激活单元(SRAU)来平衡视觉和文本信息。

SRAU 方法避免了梯度消失的问题,这是深度学习中的一个常见问题,即由于梯度过小导致模型权重无法更新。因此,VisualGPT 的性能优于多个基准模型,如普通 transformer、注意力上的注意力(AoA)transformer 和 X-transformer。

2.5 掩码语言建模(MLM)和图像-文本匹配(ITM)

MLM 在 BERT 等语言模型中的工作原理是通过掩盖或隐藏文本序列的一部分,并训练模型来预测缺失的文本。ITM 则涉及预测句子 Y 是否跟随句子 X。

可以将 MLM 和 ITM 技术应用于视觉任务。下图展示了在 COCO 数据集上训练的 VisualBERT 架构。它通过引入图像序列和带掩码的文本描述来增强 MLM 过程。基于视觉嵌入,其目标是预测缺失的文本。同样地,ITM 预测某个描述文本是否与图像匹配。

VisualBERT 架构

2.6 无需训练的方法

你可以直接使用大规模预训练的视觉-语言模型,而无需任何微调。例如,MAGIC 和 ASIF 是免训练框架,旨在预测与输入图像紧密对齐的文本描述。

MAGIC 使用基于 CLIP 生成的图像嵌入的专门评分来指导语言模型的输出。使用这个评分,LLM 生成与图像语义紧密对齐的文本嵌入,使模型能够以零样本方式执行多模态任务。

ASIF 使用相似图像具有相似描述的理念。模型计算训练数据集中查询图像和候选图像之间的相似度。接下来,它比较查询图像嵌入与相应候选图像的文本嵌入。

然后,它预测嵌入与查询图像最相似的描述,从而实现与 CLIP 和 LiT 等模型相当的零样本性能。

ASIF 预测策略

2.7 知识蒸馏

这种技术涉及将知识从一个训练良好的大型教师模型转移到参数较少的轻量级学生模型。这种方法允许研究人员从更大的预训练模型中训练视觉语言模型(VLM)。

例如,ViLD 是一个使用知识蒸馏方法开发的流行 VLM。该模型使用预训练的开放词汇图像分类模型作为教师来训练两阶段检测器(学生)。

该模型将文本编码器的文本嵌入与图像嵌入进行匹配。

ViLD 架构

 知识蒸馏将知识从图像编码器转移到骨干模型,以自动生成区域嵌入。在推理过程中,只有骨干模型生成区域嵌入,并将其与未见过的文本嵌入进行匹配。

其目标是根据文本描述在图像中为对象绘制正确的边界框。


三、VLMs的评估方法

VLM 验证涉及评估图像和文本数据之间关系的质量。对于图像描述模型来说,这意味着将生成的描述与真实描述进行比较。

你可以使用各种基于 n-gram 的自动评估策略来比较预测标签的准确性、语义和信息精确度。以下是几个关键的 VLM 评估指标:

  • BLEU:双语评估替补(BLEU)指标最初是为评估机器翻译任务而提出的。它通过考虑候选句子中有多少词出现在参考句子中,来计算目标文本相对于参考文本(真实值)的精确度。
  • ROUGE:面向召回率的摘要评估替补(ROUGE)通过考虑参考句子中有多少词出现在候选句子中来计算召回率。
  • METEOR:显式排序翻译评估指标(METEOR)计算精确度和召回率的调和平均值,对召回率给予更大的权重,并将其与惩罚项相乘。该指标是对其他仅使用精确度或召回率的指标的改进,因为它结合了两者的信息来提供更好的评估。
  • CIDEr:基于共识的图像描述评估(CIDEr)通过使用 TF-IDF 分数计算参考句子和目标句子之间的平均相似度,将目标句子与一组人工句子进行比较。

四、VLMs的数据集

既然你已经了解了视觉语言模型(VLM)相关的评估指标,了解如何为这些模型整理数据集也是至关重要的。一个合适的数据集为 VLM 的训练和验证提供了肥沃的土壤,并且在决定模型在各种任务中的表现方面起着关键作用。

收集 VLM 的训练数据比传统 AI 模型更具挑战性,因为它涉及多种数据模态的收集和质量保证。Encord Index 通过提供全面的数据管理和整理解决方案来简化这个过程。以下是几个结合图像和文本数据用于多模态训练的数据集:

LAION-5B:实践者使用 LAION-5B 数据集来构建大型预训练 VLM。该数据集包含超过 50 亿个由 CLIP 生成的图像-文本对,包含英语和其他语言的描述,适用于多语言领域。

PMD:公共模型数据集(PMD)最初出现在 FLAVA 论文中,包含 700 亿个图像-文本对。它是从其他大规模数据集(如 COCO、Conceptual Captions(CC)、RedCaps 等)收集而来的数据集合。这个数据集是多模态数据的宝库,有助于稳健的模型训练。

VQA:专家使用 VQA 数据集来微调预训练的 VLM,以用于下游的视觉问答和视觉推理任务。该数据集包含超过 20 万张图像,每张图像有 5 个问题,每个问题有 10 个正确答案和 3 个错误答案。ImageNet:ImageNet 包含超过 1400 万张图像,这些图像根据 WordNet 层次结构进行注释分类。它有助于构建用于简单下游任务的模型,如图像分类和对象识别。


五、VLMs的关键挑战

尽管 VLM 在理解视觉和文本模态以处理信息方面很强大,但它们面临三个主要挑战:

模型复杂性

语言和视觉模型本身就相当复杂,将两者结合只会使问题更加严重。它们的复杂性在获取强大的训练计算资源、收集大型数据集以及在物联网设备等弱硬件上部署时带来了额外的挑战。

数据集偏差

当 VLM 在没有真正解决问题的情况下记住训练集和测试集中的深层模式时,就会出现数据集偏差。例如,在使用从互联网上收集的图像训练 VLM 时,可能导致模型记住特定模式,而不是学习各种图像之间的概念差异。

评估策略

上面讨论的评估策略仅将候选句子与参考句子进行比较。这种方法假设参考句子是唯一的真实标准。然而,特定图像可能有多个真实描述。

虽然像 CIDEr 这样基于共识的指标考虑了这个问题,但当特定图像的共识度较低时,使用这些指标就变得具有挑战性。

多张图片可以用同一个描述

 如图所示,VLM 可以标注或检索多个与通用描述匹配的相关图像。然而,实际上,模型仅仅是一个词袋。它只是考虑"城市"、"公交车"、"灯光"等词来描述图像,而不是真正理解描述文本的顺序和真实的上下文含义。

此外,用于视觉问答的 VLM 可能会对无意义的问题生成高置信度的答案。例如,对于一张包含白马的图像,如果问 VLM "汽车是什么颜色?",它会回答"白色",而不是指出图片中没有汽车。

最后,VLM 缺乏组合泛化能力。这意味着当它们处理新颖概念时,性能会下降。例如,VLM 可能无法将黄色马识别为一个类别,因为马很少与黄色关联。

尽管在开发和部署方面存在许多挑战,研究人员和实践者在采用 VLM 解决实际问题方面已取得重大进展。下面简要讨论这些进展。


六、VLMs的主要应用

虽然前面讨论的大多数 VLM 主要用于图像描述,但它们的实用性延伸到了各种利用视觉和语言模态桥接能力的领域。以下是一些额外的应用:

图像检索:像 FLAVA 这样的模型通过帮助用户基于语言查询找到相关照片,来协助他们浏览图像库。电商网站就是一个相关的例子。访问者可以在搜索栏中描述他们想要找的东西,VLM 会在屏幕上显示合适的选项。这种应用在智能手机上也很流行,用户可以输入关键词(如风景、建筑等)从相册中检索相关图像。

生成式 AI:通过文本提示生成图像是一个不断发展的领域,像 DALL-E 这样的模型允许用户根据他们的描述创建艺术作品或照片。这种应用在设计师和发明家想要可视化不同产品创意的企业中很实用。它还有助于创建网站和博客内容,并辅助讲故事。

分割:像 SegGPT 这样的 VLM 有助于实例分割、全景分割、语义分割等任务。SegGPT 通过理解用户提示并利用独特的配色方案来分割上下文中的对象。例如,用户可以要求 SegGPT 从多张图像中分割彩虹,SegGPT 将高效地标注所有彩虹。


七、VLMs的未来趋势

以下是 VLM 领域几个关键的未来研究方向:

更好的数据集

研究界正在努力构建更好的训练和测试数据集,以帮助 VLM 提高组合理解能力。CLEVR 就是一个很好的例子。如图所示,它包含新颖的形状、颜色的图像以及相应的问题,使专家能够测试 VLM 的视觉推理能力。

CLEVR 示例

更好的评估方法

评估挑战需要对更好的评估方法进行深入研究,以构建更稳健的 VLM。一种替代方案是通过 ARO 基准测试来评估 VLM 的各项技能。

属性识别、关系推理和词序敏感性(ARO)是 VLM 必须掌握的三项技能。下图解释了 ARO 在不同上下文中的含义。使用这样的数据集,专家可以分析 VLM 学到了什么,以及如何改进结果。

ARO 示例

机器人技术

研究人员也在使用 VLM 构建特定用途的机器人。这些机器人可以帮助导航环境,通过监控物品改进制造业的仓库运营,并通过让机器人理解人类的面部表情、肢体语言、语音语调等手势来增强人机交互。

医疗视觉问答

VLM 标注图像和识别复杂对象的能力可以帮助医疗专业人员进行医疗诊断。例如,他们可以向 VLM 询问关于 X 光片或 MRI 扫描的关键问题,以尽早确定潜在问题。


推荐阅读

AI多模态核心架构五部曲:

AI多模态模型架构之模态编码器:图像编码、音频编码、视频编码

AI多模态模型架构之输入投影器:LP、MLP和Cross-Attention

AI多模态模型架构之LLM主干(1):ChatGLM系列

AI多模态模型架构之LLM主干(2):Qwen系列

AI多模态模型架构之LLM主干(3):Llama系列  

AI多模态模型架构之输出映射器:Output Projector  

AI多模态模型架构之模态生成器:Modality Generator

AI多模态实战教程:

AI多模态教程:从0到1搭建VisualGLM图文大模型案例

AI多模态教程:Mini-InternVL1.5多模态大模型实践指南

AI多模态教程:Qwen-VL升级版多模态大模型实践指南

AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理


技术交流

加入「AIGCmagic社区」群聊,一起交流讨论,涉及AI视频、AI绘画、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【lzz9527288】,备注不同方向邀请入群!

更多精彩内容,尽在AIGCmagic社区」,关注了解全栈式AIGC内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/67941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp区域滚动——上划进行分页加载数据(详细教程)

##标题 用来总结和学习,便于自己查找 文章目录 一、为什么scroll-view?          1.1 区域滚动页面滚动?          1.2 代码? 二、分页功能?          2.1 如何实现&#xff…

【大数据】Apache Superset:可视化开源架构

Apache Superset是什么 Apache Superset 是一个开源的现代化数据可视化和数据探索平台,主要用于帮助用户以交互式的方式分析和展示数据。有不少丰富的可视化组件,可以将数据从多种数据源(如 SQL 数据库、数据仓库、NoSQL 数据库等&#xff0…

反射的底层实现原理?

Java 反射机制详解 目录 什么是反射?反射的应用反射的实现反射的底层实现原理反射的优缺点分析 一、什么是反射? 反射是 Java 编程语言中的一个强大特性,它允许程序在运行期间动态获取类和操纵类。通过反射机制,可以在运行时动…

【技术支持】安卓无线adb调试连接方式

Android 10 及更低版本,需要借助 USB 手机和电脑需连接在同一 WiFi 下;手机开启开发者选项和 USB 调试模式,并通过 USB 连接电脑(即adb devices可以查看到手机);设置手机的监听adb tcpip 5555;拔掉 USB 线…

《框架程序设计》期末复习

目录 Maven 简介 工作机制(★) 依赖配置(★) Maven命令 MyBatis 入门 单参数查询(★) 多参数查询(★★★) 自定义映射关系(★★★) 基本增删改查操…

于交错的路径间:分支结构与逻辑判断的思维协奏

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。* 这一节内容很多,文章字数达到了史无前例的一万一,我们要来学习分支与循环结构中…

计算机图形学【绘制立方体和正六边形】

工具介绍 OpenGL:一个跨语言的图形API,用于渲染2D和3D图形。它提供了绘制图形所需的底层功能。 GLUT:OpenGL的一个工具库,简化了窗口创建、输入处理和其他与图形环境相关的任务。 使用的函数 1. glClear(GL_COLOR_BUFFER_BIT |…

探秘block原理

01 概述 在iOS开发中,block大家用的都很熟悉了,是iOS开发中闭包的一种实现方式,可以对一段代码逻辑进行封装,使其可以像数据一样被传递、存储、调用,并且可以保存相关的上下文状态。 很多block原理性的文章都比较老&am…

vue3+ts+element-plus 对话框el-dialog设置圆角

对话框el-dialog设置圆角,实现的需求效果: 目前只能通过行内样式(style"border-radius: 20px")来实现圆角效果:

机器学习算法(三):K近邻(k-nearest neighbors)

1 KNN的介绍和应用 1.1 KNN的介绍 kNN(k-nearest neighbors),中文翻译K近邻。我们常常听到一个故事:如果要了解一个人的经济水平,只需要知道他最好的5个朋友的经济能力, 对他的这五个人的经济水平求平均就是这个人的经济水平。这…

大语言模型兵马未动,数据准备粮草先行

​从OpenAI正式发布ChatGPT开始,大型语言模型(LLM)就变得风靡一时。对业界和吃瓜群众来说,这种技术最大的吸引力来自于理解、解释和生成人类语言的能力,毕竟这曾被认为是人类独有的技能。类似CoPilot这样的工具正在迅速…

Network Compression(李宏毅)机器学习 2023 Spring HW13 (Boss Baseline)

1. Introduction to Network Compression 深度学习中的网络压缩是指在保持神经网络性能的同时,减少其规模的过程。这非常重要,因为深度学习模型,尤其是用于自然语言处理或计算机视觉的大型模型,训练和部署的计算成本可能非常高。网络压缩通过降低内存占用并加快推理速度,…

UnityDots学习(二)

在一里已经概述了什么是Dots,已经如果使用它,我们要做的思维转变。 简单总结下: Dots使用了计算器多核,已经3级缓存的优势,在此基础上使用Brust编译器对各个平台实现了代码优化。从而达到了加速提升的效果。 我们要…

Linux (CentOS) 安装 Docker 和 Docker Compose

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …

c++ 预备

目录 前言 一,知识点的补充 二,c语言与c 三,面向对象的三大特点 前言 将进入c的学习,接下来是对于c的预备和c的一些预习 一,知识点的补充 1 标识符 标识符不能为关键字 标识符只能由下划线,数字&#xf…

SpringBoot项目实战(41)--Beetl网页使用自定义函数获取新闻列表

在Beetl页面中可以使用自定义的函数从后台新闻列表中获取新闻数据展示到页面上。例如我们可以从后台新闻表中获取新闻按照下面的格式展示&#xff1a; <li><a href"#">东亚非遗展即将盛妆亮相 揭起盖头先睹为快</a></li><li><a hre…

从零开始开发纯血鸿蒙应用之多签名证书管理

从零开始开发纯血鸿蒙应用 一、前言二、鸿蒙应用配置签名证书的方式1、自动获取签名证书2、手动配置签名证书 三、多签名证书配置和使用四、多证书使用 一、前言 由于手机操作系统&#xff0c;比电脑操作系统脆弱很多&#xff0c;同时&#xff0c;由于手机的便携性&#xff0c…

数据结构初阶---排序

一、排序相关概念与运用 1.排序相关概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…

opencv的NLM去噪算法

NLM&#xff08;Non-Local Means&#xff09;去噪算法是一种基于图像块&#xff08;patch&#xff09;相似性的去噪方法。其基本原理是&#xff1a; 图像块相似性&#xff1a;算法首先定义了一个搜索窗口&#xff08;search window&#xff09;&#xff0c;然后在该窗口内寻找…