chameleon 变色龙


同样,本文补充了前 9 章的内容,重点阐述了 Meta 近期推出的 Chameleon 模型,该模型有望成为 LLaMA 的补充。未来,Chameleon 和 LLaMA 可能会合并成一个统一的模型,命名为 LLaMA 或 Chameleon。我们公司的 Florence 也开源了其第二个版本,其性能远超 Google 的 Paligemma 模型。

Chameleon 的论文已于 5 月 16 日发表,并于昨日正式开源。

论文地址:2405.09818 (arxiv.org)

GitHub 地址:facebookresearch/chameleon: Repository for Meta Chameleon, a mixed-modal early-fusion foundation model from FAIR. (github.com)

目前,多模态模型众多,之所以重点关注 Chameleon 模型,主要原因是它是开源世界中第一个实现与 GPT 相同架构的模型,即所有模态共享同一套端到端网络。Chameleon 似乎尚未完全实现该架构。

我们先来看看 LLaVA 这个反例。

其实 LLaVA 也不能算作反例。市面上绝大多数的多模态模型都采用这样的架构,这种方式被称为后融合。

如何理解后融合,我们进一步分析 LLaVA 的实际架构:

chameleon

根据上图,我们一起来定义后融合

  1. 视觉编码器与语言模型分开:图中左侧的 LLaVA 架构将视觉编码器(Vision encoder)和语言模型的编码器(Language model)分开显示,这表明图像和语言的特征提取是独立进行的。(标粗标红)
  2. 融合在后续步骤进行:在视觉编码器处理完图像生成视觉特征 Zv 后,这些特征通过投影(Projection W)得到视觉特征表示 Hv(升降维和语言模型的 token 一个维度比如 4096)。然后这些视觉特征与语言指令 Xq 被 tokenizer 给 embedding 出来的 Hq 在语言模型的 LLaMA 里面训练,这就叫后融合(Late Fusion)。
  3. 本质上还是 LLM:最后的训练其实还是 LLM 的训练模式,即把把视觉转换的语言维度的 token 和语言的 token 都当成语言 token,本质上还是 LLM 的训练机制,然后你生成的东西其实也只有语言这种任务,说白了只能做 VQA
  4. 那啥叫前融合

chameleon

实际上,Gemini 比较早地采用了前融合架构。通俗易懂来说,前融合就是我不需要先让每个模态的编码器去提取自己的特征向量,然后再拉齐,就一套 tokenizer 干所有的事,啥都被我 embedding 成 token,(也不用比如拿 cv 的特征图再给转)我也不管它是什么输入,然后统一进 transformer(这里面肯定是 VIT + DIT 了)

Chameleon 采用同源架构,但相比 Gemini 做得更进一步,因为 Gemini 的视觉解码器与其他部分基本没有关联。也就是说,在视觉部分,比如视频、图片等,它还得独立路由到单独的模型生成。而 Chameleon 是完全的端到端架构,但当前版本尚未完成,不支持该功能。

chameleon

chameleon

我通过亲自测试和询问才明白了这一点。大家不能光看论文,要上手啊,老铁!

讲到这,估计大家可能对前融合后融合还是有点理不清。下面我给出一些截图应该能帮助你们理解。

比如对于和 LLaVA 架构差不多的 phi3-V,你去查它的 tokenizer

chameleon

它还是文本的,也只针对文本。

视觉的 token 实际还是视觉的组件来管理和处理(开源大多用 clip 其实是用里面的 vit),只不过被一个线性层或者 MLP 给硬拉到语义 token 的维度

chameleon

但是再看看 Chameleon 的 tokenizer,一些奇怪的东西就出现了

chameleon

没错,就是它的 tokenizer 已经不是纯语言的了,视觉(现在只有图片),也是直接被同一个 tokenizer 来处理的,但是干活的时候还得由视觉的 encoder 来干,它用的 vq-gan

chameleon

  1. 图像编码
  2. VQGAN 使用卷积神经网络(CNN)将输入图像分解成小块(patches)。
  3. 这些小块被进一步编码为一组离散的 tokens,通过向量量化(Vector Quantization)将连续的特征映射到预定义的代码簇(codebook)。
  4. 图像生成(现在做不了)
  5. 在生成过程中,VQGAN 可以将这些离散 tokens 解码回图像。
  6. 结合多模态任务
  7. 在多模态任务中(如图像-文本联合建模),VQGAN 可以用来将图像数据表示为离散的 tokens,这些 tokens 可以与文本 tokens (原生就全是 token,不用硬去拉齐维度)一起输入到一个联合模型中进行处理,如 Transformer 架构中。

chameleon

为什么要这么做?因为大家知道所有的特征提取以后,是有自己的表征空间的,后融合比如 llava,它就是自己玩自己的,然后强行拉到一个空间,这倒也行,也能训练,但是我们人类在接触信息的时候,是怎样的多模态呢?

多模态模型:从Chameleon到Florence-2

人类大脑能够同时处理多种感官信息,例如一边看电视一边聊天。这表明我们的大脑拥有多个信息编码器(如眼睛、耳朵),但信息最终会在同一个表征空间内融合处理,也就是“前融合”。

对于模型而言,在前融合的表征空间中训练,能够自然地学习到不同模态之间的关联信息。相比之下,将不同模态信息分别处理后再强行融合,效果往往不尽如人意,因为每次张量变换都会造成信息损失。

近期,我体验了一款名为Chameleon的多模态模型,它将商用多模态思路引入开源小模型领域,如同LLaMA一样,具有里程碑式的意义。尽管目前仍处于原型阶段,只能处理简单的VQA任务,但其发展潜力不容小觑。以下是我对Chameleon的一些观察:

优点:

  1. 推理速度极快(期待后续更多信息披露)

缺点:

  1. 不支持中文
  2. VQA任务表现一般,可能是因为新模型语料和微调不足

chameleon

chameleon

与同源模型GPT4o相比,Chameleon在多模态能力方面还有很大差距,其“出道即巅峰”的宣传也过于夸大其词。

chameleon

chameleon

Chameleon在模型设计上引入了一些改进,例如使用QK-norm来解决训练不稳定问题,并借鉴了Swin Transformer的后撤LN策略。

chameleon

总而言之,Chameleon还有很大的进步空间。接下来,我将介绍我司新开源的模型Florence-2。

Florence-2 是一个强大的多任务CV模型,其能力远超Google的Paligemma。与只能进行简单VQA任务的模型不同,Florence-2 能处理多种CV任务,例如图像分割、目标检测、OCR等。

Florence-2 的亮点:

  • 能够完成多种CV任务
  • 模型大小仅为0.77b

chameleon

Florence-2 采用类似NV Nemotron-4 的数据优化和反复训练流程,并在训练过程中使用多任务prompts,最大限度地挖掘图像信息。

chameleon

Florence-2 支持的CV任务:

  1. 标准VQA
  2. chameleon

  3. Visual Grounding
  4. chameleon

  5. Dense Region Caption
  6. chameleon

  7. 开放词OD
  8. chameleon

  9. OCR
  10. chameleon

  11. 图像分割
  12. chameleon

Florence-2 论文地址:2311.06242 (arxiv.org)

Florence-2 的出现,标志着开源多模态模型迈上了一个新台阶。相信随着技术的不断发展,未来会出现更多功能强大、应用广泛的多模态模型。

多模态模型新趋势:前融合与复杂CV任务融合

chameleon

以图文理解为例,相比于GPT4-V,Florence-2展现出更强大的能力。它不仅能识别图像中的文字(OCR),还能准确理解图像内容并回答问题(VQA),甚至能捕捉到图片中蕴含的情感,例如图中“替我给Amelia一个拥抱”。

chameleon

Florence-2并非完美无缺,在某些VQA任务上也会出现识别错误,例如上图中未能识别出路牌上的“1/4英里”。

chameleon

尽管如此,与其他多模态模型相比,Florence-2在VQA任务上的表现依然出色。与开源的Kosmos-2相比,Florence-2在目标检测等任务上也更胜一筹。

chameleon

从发展趋势来看,Chameleon所代表的前融合模式将成为多模态领域的主流方向。Florence-2的成功则表明,将传统CV复杂任务融入多模态模型将成为一大趋势。未来,像Florence-2这类能够胜任复杂CV任务的模型将在自动驾驶等领域发挥更重要的作用。