適用于多圖的多模態大模型:粗粒度離散表征+細粒度連續表征提升圖像編碼準確性
今天給大家介紹一篇北大、阿里聯合發布的多模態大模型工作。這篇文章重點解決多圖像輸入的多模態大模型建模方法,融合粗粒度、細粒度信息,顯著提升了多模態大模型在多圖輸入復雜場景中的效果。
論文標題:MaVEn: An Effective Multi-granularity Hybrid Visual Encoding Framework for Multimodal Large Language Model
下載地址:??https://arxiv.org/pdf/2408.12321??
1.研究背景
現有的多模態大模型,大多數研究的都是一個圖像輸入的場景。而更加復雜的多圖輸入的場景,卻面臨著2個核心的難點。多圖場景指的是需要同時輸入多張圖像以及相關文本,讓大模型進行推理的場景。多圖場景的第一個難點在于輸入圖像的長度。現在的多模態大模型都利用ViT結構將圖像處理成patch表征序列輸入,多張圖會導致輸入序列太長,導致計算復雜度顯著提升。另一個問題在于現在的多模態大模型圖像側的建模,都采用類似Q-Former中的方法,用一個固定長度的query和ViT生成的patch表征序列進行cross-attention,生成圖像的摘要信息作為LLM的輸入。這種方式的雖然可以有效縮短輸入圖像的尺寸,但是對圖像表征的抽取精度會下降。
針對上述問題,本文提出了一種適用于多圖場景的多模態建模方法。核心是借助了離散化技術,將圖像進行離散化,抽取粗粒度信息;同時借助ViT等連續表征提取細粒度信息。并結合這兩種信息進行有效patch的篩選。最后采用多階段訓練的方式進行圖像文本的表征對齊。
2.建模方法
本文的核心優化主要包括3個方面,分別是離散&連續表征、patch縮減、多階段訓練。
首先在表征生成層面,文中同時采用了離散表征和連續表征。連續表征采用的是最常用的ViT,將圖像分成多個patch,過Transformer生成每個patch的圖像表征。離散表征指的是將圖像數據先進行離散化,然后再用模型提取表征,離散化相當于將圖像數據向文本數據的類型對齊。在離散化的過程中,將圖像轉換成token,使模型更關注粗粒度的整體信息。離散化采用了Planting a seed of vision in large language mode中提出的方法,定義一個codebook,每次將計算和當前表征最近的codebook中的表征,實現圖像patch到codebook中離散化符號的映射。
為了進一步將圖像和文本對齊,對于上述離散化生成的圖像token符號,將其和語言模型中的文本token進行融合,構建一個圖像+文本統一的底層詞表,實現底層數據的跨模態統一。
在patch縮減階段,主要是為了有效的縮減patch序列長度,減小計算性能。相比之前的query+cross attention進行有效patch選擇,本文提出使用離散化的粗粒度表征進行有效patch篩選,更準確的對無效patch進行過濾。具體的,將離散化粗粒度表征和每個patch的ViT連續表征拼接,每個patch映射成1維后過一個sigmoid函數獲取每個patch的打分,保留topK個patch,縮短patch輸入長度。
在訓練階段,主要包括4個階段。第一階段主要訓練patch selector。這里使用 Grounding SAM構建patch selector的偽標簽。在第二階段,訓練embedding層,這里的embedding包括了文本token的embedding以及之前根據圖像離散化構建的圖像token embedding,這個訓練過程只使用圖像的離散化粗粒度表征作為圖像表征參與訓練。在第三階段,主要訓練圖像表征的映射網絡,用來實現圖像和文本的跨模態對齊。最后在第四階段,基于instruction tuning數據進行端到端的多模態任務訓練。
3.實驗效果
本文的多模態模型效果如下圖,在多圖、單圖多模態任務中的zero-shot評估上取得了顯著的效果提升。
下圖可視化了模型中patch選擇器的生效機制,可視化了選中的patch和patch對應的打分。
本文轉載自 ??圓圓的算法筆記??,作者:Fareise
