图文多模态大模型

最近刚接触图文多模态大模型,想在这儿记录下看过的模型。

自去年底ChatGPT发布后,大模型技术呈井喷式发展态势,学术界和工业界几乎每天都在刷新各个方向的SOTA榜单。随着大模型技术的发展,人们逐渐意识到多模态将是大模型发展的必经之路。其中,图文多模态大模型是一种结合了图像和文本两种模态信息的深度学习模型,本文将重点回顾这一领域的关键进展。

纵观多模态大模型的技术演进,也完全遵循了预训练-微调的整体方案。根据预训练模型中图文模态的交互方式,主要分为以下两种:

双塔结构:代表架构是 CLIP。双塔即一个视觉 Encoder 建模图片信息,一个文本 Encoder 建模文本信息,图像和文本的特征向量可以预先计算和存储,模态交互是通过图像和文本特征向量的余弦相似度来处理。这类模型的优点是处理多模态检索任务,但无法处理复杂的分类任务;

单塔结构:代表架构是ViLT。单塔即一个视觉-文本 Encoder 同时建模图片信息和文本信息,使用 Transformer 模型对图像和文本特征进行交互。这类模型的优点是可以充分地将多模态的信息融合,更擅长做多模态分类任务,检索任务较慢。

CLIP

论文连接:https://arxiv.org/pdf/2103.00020
代码:https://github.com/OpenAI/CLIP

详细论文解读:https://zhuanlan.zhihu.com/p/625165635?utm_id=0
比较好的讲解:https://juejin.cn/post/7264503343996747830

个人理解主要一下工作:
CLIP模型主要由两部分组成:Text Encoder 和 Image Encoder。这两部分可以分别理解成文本和图像的特征编码器。CLIP的预训练过程如下所示
在这里插入图片描述
在这里插入图片描述

模型训练
https://blog.csdn.net/weixin_44791964/article/details/129941386

VIT(Vision Transformer)

论文连接:https://arxiv.org/abs/2010.11929
代码:https://zhuanlan.zhihu.com/p/640013974

比较好的讲解:https://juejin.cn/post/7254341178258489404

https://blog.csdn.net/qq_37541097/article/details/118242600?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165495405516781683939853%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165495405516781683939853&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-118242600-null-null.nonecase&utm_term=vit&spm=1018.2226.3001.4450

VIT模型架构

在这里插入图片描述
我们先来看左侧部分。

Patch:对于输入图片,首先将它分成几个patch(例如图中分为9个patch),每个patch就类似于NLP中的一个token(具体如何将patch转变为token向量,在下文会细说)。

Position Embedding:每个patch的位置向量,用于指示对应patch在原始图片中的位置。和Bert一样,这个位置向量是learnable的,而并非原始Transformer中的函数式位置向量。同样,我们会在下文详细讲解这一块。

Input: 最终传入模型的Input = patching_emebdding + position embedding,同样,在输入最开始,我们也加一个分类符,在bert中,这个分类符是作为“下一句预测”中的输入,来判断两个句子是否真实相连。在VIT中,这个分类符作为分类任务的输入,来判断原始图片中物体的类别。

右侧部分则详细刻画了Transformer Encoder层的架构,它由L块这样的架构组成。图片已刻画得很详细,这里不再赘述。
总结起来,VIT的训练其实就在做一件事:把图片打成patch,送入Transformer Encoder,然后拿对应位置的向量,过一个简单的softmax多分类模型,去预测原始图片中描绘的物体类别即可。

InternVL

论文解读:https://juejin.cn/post/7355798869110554643?searchId=20240507221443957AC3971BE4EEB1C5C2

Qwen-VL

论文解读:https://arxiv.org/pdf/2308.12966.pdf

比较好的讲解:
https://zhuanlan.zhihu.com/p/653388699
https://blog.csdn.net/qq_35812205/article/details/136586866

### 架构设计概述 多模态大型语言模型(Multimodal Large Language Model, MM-LLM)用于处理文本和图像数据,其架构设计融合了自然语言处理技术和计算机视觉技术。这类模型能够理解并关联不同形式的数据输入,从而实现更复杂的应用场景。 #### 数据预处理阶段 在接收原始数据之前,系统会对输入的图像和文本分别进行预处理操作。对于图像部分,通常会采用卷积神经网络(Convolutional Neural Network, CNN)[^2]提取特征;而对于文本,则可能通过词嵌入(word embedding)或其他编码方式转换成数值表示[^3]。 ```python import torch from transformers import CLIPProcessor, CLIPModel model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") text_inputs = processor(text=["a photo of a cat"], return_tensors="pt", padding=True) image_inputs = processor(images=[Image.open("cat.jpg")], return_tensors="pt") ``` #### 跨模态交互层 为了使两种不同类型的信息能够在同一个框架内有效沟通,跨模态交互模块被引入到整体结构之中。此组件负责建立两者之间的联系机制,比如注意力机制(Attention Mechanism),它允许模型根据不同任务需求动态调整关注重点,在保持各自特性的同时促进信息共享与交流[^1]。 #### 统一表示空间构建 经过上述步骤之后,来自两个域的内容会被映射至同一高维向量空间——即所谓的统一表示空间(Unified Representation Space)。在这个过程中,无论是文字还是图形都将获得一致性的表达形式,便于后续分析计算以及最终输出结果生成。 #### 输出预测单元 最后,基于所得到的综合表征,MM-LLM可以执行多种下游任务,如分类(Classification)、检索(Retrieval)或是生成式对话响应(Generative Dialogue Response)等。具体而言,这一步骤涉及到了解码器的设计及其参数优化策略的选择等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值