文章目錄
- 一. VLMs 的重要性與挑戰:連接視覺與語言的橋梁 🌉
- 二. VLMs 的核心訓練范式:四種主流策略 🗺?
- 1. 對比訓練 (Contrastive Training):拉近正例,推遠負例 ??
- 2. 掩碼方法 (Masking):重構缺失信息,學習上下文關聯 🎭
- 3. 生成式 VLMs (Generative VLMs):直接生成文本或圖像 🎨
- 4. 利用預訓練模型的 VLMs (VLMs Leveraging Pre-trained Models):站在巨人肩膀上 🚀
- 三. 部分模型詳解
- 3.1 BLIP2
- 3.1.1 模型結構
- 3.1.2 模型訓練
- 3.2 LLaVA
- 3.2.1 訓練數據
- 3.2.2 模型訓練
- 3.2.3 LLaVA的貢獻
- 3.3 MiniGPT-4
- 3.3.1 Adapter結構
- 3.3.2 模型訓練
- 3.4 QwenVL
- 3.4.1 輸入輸出格式
- 3.4.2 Adapter結構
- 3.4.3 模型訓練
- 3.5 InternVL-v1.5
- 3.5.1 動態長寬比
- 3.5.2 超大VIT, Pixel Shuffle及模型結構
- 3.5.3 訓練數據集
- 3.5.4 InternVL-v1.5的貢獻
- 3.6 Qwen2VL
- 3.6.1 動態分辨率
- 3.6.2 統一的多模態Rope位置embedding
- 3.6.3 訓練過程
- 四. VLM 訓練實踐指南 👑
- 1. 訓練數據:高質量數據是成功的基石 💎
- 2. 軟件工具與硬件資源:高效訓練的保障 ??
- 3. 模型選擇:根據任務和資源選擇合適的模型 🤔
- 4. 提升定基 (Grounding):解決幻覺,提升理解 🎯
- 5. 提升對富含文本的圖像的理解:OCR 與場景文本理解 📝
- 6. 參數高效型微調 (Parameter-Efficient Fine-Tuning, PEFT):輕量級微調策略 🪶
- 7. 實現負責任的 VLM 評估:全面、多維度的性能度量 📊
- 8. 將 VLMs 擴展用于視頻:動態視覺信息處理 🎬
- 五. 結論與未來展望:VLM 的無限可能 ?
- 參考文獻
近年來,人工智能 (AI) 領域經歷了爆炸式發展,深度學習作為核心驅動力,在計算機視覺 (CV) 和自然語言處理 (NLP) 領域均取得了里程碑式的突破!🎉 為了進一步拓展 AI 的能力邊界,研究人員開始積極探索如何融合視覺和語言兩大模態,構建能夠理解、生成并跨越圖像和文本的模型。視覺語言模型 (Vision-Language Models, VLMs) 正是在這一背景下應運而生,它致力于彌合視覺與語言之間的語義鴻溝,賦予機器如同人類一般的多模態感知和認知能力。🧠?
本文旨在對 VLMs 進行深入的技術解析,內容涵蓋其重要性與挑戰、核心訓練范式、代表性模型詳解、訓練實踐指南以及未來發展趨勢展望。希望能夠為讀者提供一份全面而詳實的 VLM 技術解讀,助力大家深入理解并快速入門這一前沿領域。🚀👩?💻👨?💻
一. VLMs 的重要性與挑戰:連接視覺與語言的橋梁 🌉
VLMs 的出現,不僅是 CV 和 NLP 領域的交叉融合,更是 AI 技術發展的重要里程碑!它極大地拓展了 AI 的應用場景,賦予機器更強大的感知和交互能力:
圖像描述生成 (Image Captioning): VLMs 能夠自動生成圖像的自然語言描述,幫助機器“看懂”圖像內容,應用于智能相冊管理、輔助內容創作等領域。🖼???
視覺問答 (Visual Question Answering, VQA): VLMs 能夠根據圖像內容回答用戶提出的自然語言問題,實現更智能的人機交互,應用于智能客服、教育輔助等領域。 🖼??🗣?
跨模態檢索 (Cross-modal Retrieval): VLMs 能夠實現圖像和文本之間的相互檢索,例如通過文本描述檢索相關圖像,或通過圖像檢索相關文本,應用于圖像搜索引擎、多媒體內容管理等領域。 🔎 ?? 🖼?
圖像編輯 (Image Editing): 基于文本指令的圖像編輯 VLMs 允許用戶通過自然語言指令修改圖像內容,例如“將天空變成藍色”、“添加一只貓”,應用于創意設計、圖像處理等領域。 🖼? ?? ?
機器人控制 (Robotics Control): VLMs 可以作為機器人的視覺感知和語言理解模塊,使機器人能夠理解人類的自然語言指令,并根據視覺信息執行復雜任務,應用于智能家居、工業自動化等領域。 🤖 👁? 🗣?
然而,VLMs 的發展并非一帆風順,仍然面臨著諸多挑戰:
跨模態語義鴻溝: 如何有效對齊和融合視覺和語言兩種異構模態的信息,學習它們之間復雜的語義關聯 (例如空間關系、屬性、動作、因果關系等),是 VLMs 的核心挑戰之一。 🤯
組合泛化能力 (Compositional Generalization): VLMs 在處理涉及組合推理的任務時,例如理解復雜場景、處理否定描述、進行計數等,仍然面臨挑戰,需要提升模型的組合泛化能力。 🤔
“幻覺”問題 (Hallucination): VLMs 有時會生成與圖像內容不符或不真實的文本描述或圖像,即產生“幻覺”,降低了模型的可靠性和可信度。 👻
魯棒性與泛化性: VLMs 在面對分布外數據 (Out-of-Distribution, OOD) 或對抗性攻擊時,性能可能會顯著下降,需要提升模型的魯棒性和泛化性。 🛡?
訓練數據與計算資源: 訓練高性能 VLMs 通常需要海量標注數據和強大的計算資源,這限制了研究的普及和應用,如何降低訓練成本、提高數據效率是亟待解決的問題。 💰 💻
模型評估標準: 如何建立全面、客觀、可信的 VLM 性能評估標準,特別是在跨模態理解、生成質量、倫理道德等方面,仍然是一個開放性研究問題。 📊 🧐
二. VLMs 的核心訓練范式:四種主流策略 🗺?
基于 Transformer 架構的 VLMs,其訓練范式可歸納為以下四種主流策略 (如圖所示):
1. 對比訓練 (Contrastive Training):拉近正例,推遠負例 ??
核心思想: 借鑒能量模型 (Energy-Based Model, EBM) 的思想,通過構建正負樣本對,訓練模型學習將正樣本對 (例如圖像及其對應的文本描述) 的表示在特征空間中拉近,同時將負樣本對 (例如圖像與不相關的文本描述) 的表示推遠。目標是使模型能夠區分相似和不相似的視覺-語言對。🎯
能量模型視角: 對比訓練可以從能量模型的視角解釋。模型參數為 θ 的模型Eθ被訓練為對觀測變量賦予低能量,而對未觀測變量賦予高能量。目標分布中的數據應具有低能量,而其他數據點應具有高能量。?
損失函數:NCE 與 InfoNCE:
噪聲對比估計 (Noise Contrastive Estimation, NCE): 將對比學習問題轉化為二分類問題,模型需要區分來自真實數據分布的樣本 (正樣本) 和來自噪聲分布的樣本 (負樣本)。損失函數通常采用交叉熵損失。SigLIP 模型使用了基于二元交叉熵的原始 NCE 損失。 ??
InfoNCE (Information Noise Contrastive Estimation): 擴展了 NCE,利用模型表示空間中計算的距離度量 (例如余弦相似度),模型學習預測在表示空間中最接近的一對示例 (正樣本對),并為所有其他負樣本對分配較低的概率。CLIP 模型使用了 InfoNCE 損失。InfoNCE 的主要缺點是依賴于小批量大小,通常需要大批量才能有效。 📊
SimCLR: 一種自監督學習方法,使用 InfoNCE 損失。正樣本對定義為同一圖像的不同數據增強版本,負樣本對來自同一批次的其他圖像。 🖼???🖼?
代表模型:
CLIP (Contrastive Language–Image Pre-training): 由 OpenAI 提出,是對比訓練的里程碑式工作。CLIP 將視覺和語言編碼到共享的表示空間,通過對比損失訓練視覺和文本編碼器,將圖像及其標題的表示映射到相似的嵌入向量。原始 CLIP 模型在 4 億圖像-文本對上訓練,展現出強大的零樣本分類遷移能力,甚至在魯棒性基準上超越了監督 ResNet 模型。 🌟
SigLIP: 與 CLIP 相似,但使用原始 NCE 損失,在小批量上零樣本性能更優。 👍
Llip (Latent language image pretraining): 考慮到一張圖像可能對應多個不同的標題,Llip 通過交叉注意力模塊將圖像編碼與目標標題關聯,提升了表示的表達性,并改善了零樣本分類和檢索性能。 💡
2. 掩碼方法 (Masking):重構缺失信息,學習上下文關聯 🎭
核心思想: 借鑒 NLP 中 BERT 的掩碼語言模型 (MLM) 思想,將掩碼技術應用于視覺和語言模態,通過模型重構被掩碼部分的能力,學習模態內和跨模態的上下文關聯。掩碼方法可視為一種去噪自編碼器,其中噪聲具有空間結構。 🧩
掩碼方式:
掩碼圖像建模 (Masked Image Modeling, MIM): 隨機掩蓋圖像的部分區域 (圖像塊),模型需要根據未掩碼的區域重建被掩碼的區域。代表模型包括 MAE (Masked Autoencoders) 和 I-JEPA (Image-based Joint-Embedding Predictive Architecture)。 🖼? ?? 🖼?
掩碼語言建模 (Masked Language Modeling, MLM): 隨機掩蓋文本中的部分詞語,模型需要根據未掩碼的詞語和圖像信息重建被掩碼的詞語。BERT 在訓練期間使用了 MLM。 📝 ?? 📝
Transformer 架構的適用性: Transformer 架構的 token 化輸入方式使得掩碼操作更加容易實現,隨機丟棄特定輸入 token 成為可能。 ??
代表模型:
FLAVA (Foundational Language And Vision Alignment): 由 Facebook (Meta) 提出,是基于掩碼方法的代表性 VLM。FLAVA 架構包含圖像編碼器 (ViT)、文本編碼器 (Transformer) 和多模態編碼器 (Transformer) 三個核心組件。采用綜合訓練方案,結合了多模態和單模態掩碼建模損失以及對比目標,在 7000 萬圖像-文本對數據集上預訓練,在 35 個不同任務上實現了 SOTA 性能。FLAVA 使用了預訓練的視覺編碼器 (dVAE)。 🏆
MaskVLM: 為了降低對預訓練視覺編碼器的依賴,MaskVLM 直接在像素和文本 token 空間應用掩碼。其關鍵創新在于利用模態間的信息流動,文本重建任務接收圖像編碼器的信息,反之亦然。 🔄
3. 生成式 VLMs (Generative VLMs):直接生成文本或圖像 🎨
核心思想: 與前兩種范式主要操作潛在表示不同,生成式 VLMs 直接訓練模型生成文本描述或圖像。 🚀
生成任務類型:
圖像描述生成 (Image Captioning): 模型學習生成圖像的文本描述,例如 CoCa 模型。 🖼? ?? 📝
文本到圖像生成 (Text-to-Image Generation): 模型根據文本 prompt 生成圖像,例如 Stable Diffusion, Imagen, Parti 等模型。 📝 ?? 🖼?
多模態生成 (Multimodal Generation): 模型可以同時生成文本和圖像,例如 Chameleon 和 CM3leon 模型。 📝 🖼? ?? 📝 🖼?
訓練成本: 生成式 VLMs 的訓練成本通常最高,因為需要學習復雜的生成模型。 💸
代表模型:
CoCa (Contrastive Captioner): 由 Google 提出,在 CLIP 的對比損失基礎上,增加了生成損失。CoCa 采用多模態文本解碼器,接收圖像編碼器和單模態文本解碼器的輸出,生成圖像描述。CoCa 通過簡單地將注釋圖像標簽視為文本從頭開始進行預訓練,預訓練數據集包括 ALIGN (18 億圖像) 和 JFT-3B (內部數據集,29500 個類別標簽)。 ?
Chameleon 和 CM3leon: 多模態生成模型,CM3leon 由 Google 提出,用于文本到圖像和圖像到文本生成。CM3leon 借鑒了圖像 tokenizer 和文本 tokenizer 技術,將圖像和文本編碼為離散 token 序列,然后使用僅解碼器的 Transformer 模型進行訓練。CM3leon 經歷了檢索增強預訓練和監督微調 (SFT) 兩個階段。Chameleon 是 CM3leon 的擴展,由 Esser 等人提出,是一個混合模態基礎模型系列,能夠生成和推理交錯的文本和圖像內容序列,支持圖像、文本和代碼等多種模態。Chameleon 從一開始就被設計為混合模態,采用統一架構,在所有模態的混合數據上進行端到端訓練,使用了 query-key 規范化和修訂的層規范化位置等架構創新,以及監督微調方法。 🌈
Stable Diffusion, Imagen, Parti: 文本到圖像生成模型,雖然主要用于生成任務,但也可以用于解決視覺語言理解任務。這些模型可以用于生成分類任務,通過貝葉斯定理和條件概率估計進行分類。生成分類器在組合推理任務 (如 Winoground) 上表現優于判別方法,具有更強的形狀偏差,并更好地與人類判斷一致,且可以在測試時進行領域自適應。擴散模型進行似然估計需要計算變分下界,推理成本較高。 🚀
4. 利用預訓練模型的 VLMs (VLMs Leveraging Pre-trained Models):站在巨人肩膀上 🚀
核心思想: 充分利用現有的預訓練大型語言模型 (LLMs) (例如 Llama, GPT) 和/或視覺提取器 (例如 CLIP的視覺編碼器),避免從頭開始訓練整個 VLM,從而顯著降低訓練成本和資源需求。 💡
優勢: 可以復用 LLMs 強大的語言理解和生成能力,只需學習視覺模態到語言模態的映射,計算資源需求低,開發效率高。開源 LLMs 的普及也為此類方法提供了便利。 💯
方法: 通常采用“凍結”預訓練 LLM 的參數,僅訓練視覺編碼器和一個輕量級的映射網絡 (例如線性投影層或交叉注意力模塊),將視覺特征映射到 LLM 的輸入空間。 🧊
代表模型:
Frozen: 由 DeepMind 提出,是第一個利用預訓練 LLM 的 VLM 模型。Frozen 使用凍結的 LLM (7B 參數 Transformer,在 C4 數據集上預訓練),訓練視覺編碼器 (NF-ResNet-50) 和線性映射網絡,在 Conceptual Captions 數據集上通過文本生成目標進行訓練。Frozen 展示了快速適應新任務、快速訪問通用知識以及快速綁定視覺和語言元素的能力,是多模態 LLM 的重要先驅工作。 🧊🥇
MiniGPT 系列 (MiniGPT-4, MiniGPT-5, MiniGPT-v2): 由 Zhu 等人提出,MiniGPT-4 使用預訓練的視覺編碼器 (BLIP-2 中的 ViT) 和凍結的 LLM (Vicuna),僅訓練一個線性投影層,訓練成本極低 (僅需 4 個 A100 GPU 約 10 小時)。MiniGPT-5 擴展到可以交替生成文本和圖像,使用生成 token 和凍結的 Stable Diffusion 2.1 模型生成圖像。MiniGPT-v2 提出通過統一接口執行各種視覺語言任務,并通過任務標識符區分不同任務。 ?
Qwen-VL 和 Qwen-VL-Chat: 由阿里云提出,與 MiniGPT-4 類似,使用預訓練 LLM (Qwen-7B) 和視覺編碼器 (ViT-bigG),以及單層交叉注意力模塊進行視覺表示到 LLM 輸入空間的映射。 ??
BLIP-2 (Bootstrapping Language-Image Pre-training): 由 Salesforce 提出,利用預訓練的凍結模型,包括視覺編碼器 (例如 CLIP) 和大型語言模型 (例如 OPT)。BLIP-2 訓練一個小型 Q-Former 模塊 (約 100-200M 參數),通過交叉注意力機制將圖像嵌入映射到 LLM 的輸入空間。Q-Former 接受固定數量的查詢向量,通過交叉注意力與圖像嵌入交互,并通過線性層投影到 LLM 輸入空間。 🤝
三. 部分模型詳解
3.1 BLIP2
3.1.1 模型結構
Blip2的Adapter使用Query-Transformer(Q-Former) + 全連接層(Fully Connected)的結構。
主旨思想:將img和prompt同時輸入到Transformer中,同時利用Cross Attention 將vision emb 與可學習的,序列長度較短的learnable querys進行交互。最后將交互后的learnable querys作為視覺特征,輸入到大模型,從而達到降低視覺特征序列長度的目的。利用這樣一個類似BottleNeck的結構,提升學習效果,減小視覺特征的seq len,這樣能在有限的資源下,加快大模型的訓練。
Q-Former來自多模態模型Blip,是一個魔改的Transformer,其輸入部分增加了可學習的輸入(learnable querys)。learnable querys和img emb通過cross attn進行交互,最后網絡把模型輸出的learnable query作為圖像特征,喂給大模型。作者試圖使用Q-Former實現圖像的壓縮感知,即縮短表示圖像emb序列長度的同時,盡可能保留對生成文字有用的圖像信息。最后 Fully Connect 模塊用于講Q-Former輸出的維度對齊到大模型的維度。
3.1.2 模型訓練
模型訓練分為兩個階段,分別是 圖片表示學習(Vision-Language Representation Learning from a Frozen Image Encoder)和圖生文預訓練(vision-to-language generative pre-training)。訓練數據為圖文對。
圖片表示學習(訓練Q-Former的圖像表示能力)
圖片表示學習只訓練Adapter中的Q-Former結構,訓練目的是將Image-Encoder輸出的視覺特征進行壓縮感知,提取最能生成文字的視覺特征。其僅用到了Image Encoder 和 Q-Former且并未使用LLM。為了節省顯存,進行圖片表示學習時,Image Encoder的參數不做更新。
在這里除了Q-Former外,還引入了額外的權重用于處理文字(圖右上綠色部分),訓練時Q-Former加載的是Bert的權重(cross attn隨機初始化)。
其具體有三個訓練任務,使用的訓練數據集為一系列圖文對(文字是圖片的一個描述),每個訓練任務的attn-mask均不同。
圖文對比學習(Image-Text Contrastive Learning, ITC)該任務輸入圖像(img emb)和一段文字(prompt emb),在經過img_encoder和Q-Former后,我們使用一個emb表示圖像,用另一個emb表示文字。輸入的文字會額外帶一個[CLS]token, 文字的emb即用[CLS] token 對應的emb。圖像的emb是從vis emb 的多個query中與text emb相似度最高的query作為圖像的emb。在計算loss時,使用圖四最右側的attn mask 能保證圖像和文字的emb生成互不干擾。正樣本為圖文對,負樣本將文字換為數據集中隨機的某段文字。我們希望正樣本的圖像emb和文字emb盡可能相似,負樣本的圖像emb和文字emb盡可能遠離。
基于圖像的文字生成(Image-Grounded Text Generation, ITG)該任務使用圖像生成對應的文字描述,使用圖四中間的attn mask,在文字能看到圖片的同時保證文字部分使用 transformer decoder的causal attn mask。
圖文匹配(Image-Text Matching, ITM)該任務類似ITC,但與ITC不同的是,該任務不再要求對齊圖像和文字的表示,而是直接做一個分類任務,判斷圖像和文字是否是一對。attn mask使用圖四左邊的attn mask,保證圖像和文字互相之間都可以看到。
圖生文預訓練(訓練整個多模態大模型的Image-Caption能力)
圖生文是為了將Q-Former學習到的視覺特征與大模型相結合,利用大模型的生成能力更好的完成VQA任務。
大模型分為兩種分別是Decoder only類型的大模型和Encoder-Decoder類型的大模型。Blip2分別嘗試與這兩種大模型相結合。對于Decoder Only形式的大模型,輸入為圖片,輸出為圖文對的文字;對于Encoder-Decoder類的大模型,文字會被拆分成前綴和后綴,輸入為圖片和前綴,輸出為后綴。為了節省顯存并加速訓練,該訓練階段圖像Encoder和LLM的權重均不做更新。
Blip2通過嘗試Blip中模態融合的方式,通過凍住大模型權重和兩階段預訓練的方法,將視覺特征與大模型對齊,借助大模型的生成能力,利用有限的資源提升了視覺VAQ任務的效果。
3.2 LLaVA
Blip2的出現表示,這種將視覺模態經過一個Adapter對齊到大模型輸入的架構是可行的。于是研究者開始考慮,除了繁瑣的Q-Former對齊方式外,是否存在更簡單的方式來對齊圖像特征?LLaVA使用單個線性連接層完成了視覺模態與大模型的結合。除此之外,LLaVA還首次實現了多模態大模型的多輪對話能力。
3.2.1 訓練數據
在LLaVA產生的時代,開源的圖像大模型訓練數據幾乎都是圖文對(img, caption)其中文字是圖片內容的一個描述。幾乎沒有開源的 instruction-tuning 數據集。為了讓多模態大模型更好的與人類進行對話。LLaVA利用圖文對創建了兩個數據集:簡單的對話數據集(低質量,數據量大,標注成本低),復雜的對話數據集(高質量,數據量小,標注成本高)。
圖文對——>簡單的對話數據
作者利用ChatGPT生成如下的問題,并將caption作為問題的答案。
這些生成的問題就是換著法子問"請描述一下這個圖像",這樣就生成了如下格式的訓練數據 <img, question for caption, caption>。這些訓練數據較為簡單,只能用于單輪對話且缺少多樣性,但生成成本較低。
圖文對——>更復雜的對話數據
為了使用ChatGPT生成帶圖片的多輪對話數據,作者使用目標檢測將圖片變成chat-gpt可以讀懂的圖片描述。
基于這些圖片描述作者使用ChatGPT生成了三類訓練數據:
- 基于圖片進行多輪對話
- 給出圖片的詳細描述
- 基于圖片的復雜邏輯推理
3.2.2 模型訓練
對于多輪對話訓練數據{img, [(Q1,A1), …, (QT, AT)]},作者將其轉換為如下序列。
在計算損失時,只計算AI部分的損失,這樣就將多輪對話數據和單輪對話數據統一了起來(統一成sequence),方便用于模型訓練。模型訓練分為兩個階段分別為”圖像特征對齊預訓練“和”模型對話/讀圖能力訓練“。
圖像特征對齊預訓練
該階段只訓練線性鏈接層,使用相對較為簡單易學的訓練數據,將Adapter生成的圖像特征與LLM的input Embedding對齊,讓模型擁有初步的讀圖能力。
- 訓練數據:利用上述的數據構造方法 和 595K圖文對 生成的 簡單對話數據 (使用各種不同的問法 問該圖片描述了什么東西)
- 可學習參數:LLM和Vision Encoder均不訓練,只訓練線性鏈接層
- 訓練目的:讓模型擁有初步的讀圖能力
模型對話/讀圖能力訓練
該階段訓練Adapter和LLM對參數,使用較難學習的多輪對話和科學問答數據,讓模型具有對話能力。
- 訓練數據:利用上述的數據構造方法生產的158K復雜對話數據 + Since QA banchmark中的訓練數據
- 可學習參數:Vision Encoder不訓練,訓練線性鏈接層和LLM
- 訓練目的:讓模型擁有基于圖片進行多輪對話和邏輯推理的能力
3.2.3 LLaVA的貢獻
- 模型結構上:LLaVA僅用簡單的線性鏈接層就完成了視覺模型與LLM的結合,結合方法簡單但有效
- 訓練數據上:LLaVA給出了一種使用ChatGPT造訓練數據的方法。雖然類似的方法在語言大模型的訓練中較為常見,但該文是在多模態大模型上的首次嘗試
- 訓練方法上:作者先采用了大量的易學數據訓練少量參數讓模型學會認圖,再用少量難學的數據訓練大量參數讓模型學會基于圖像的多輪對話和邏輯推理能力
3.3 MiniGPT-4
MiniGPT4同樣是為了將多輪對話,邏輯推理等能力,融入到多模態大模型中,與LLaVA不同的是,該文提出的Adapter架構,參數量較小,模型收斂較快,只需4塊A100訓練1天。
3.3.1 Adapter結構
Mini-GPT4沿用了Blip2的Adapter結構,和Blip2的預訓練權重。其將圖片獲取到的img emb通過Q-Former(虛線部分)將seq_len變為指定的長度后,通過全連接層(藍色部分)對齊到大模型的模型。
訓練MiniGPT-4的過程中,Vision Encoder、LLM和Q-Former的權重全部被凍住,只有全連接層(藍色部分)參與訓練。這也是MiniGPT-4訓練速度較快的根源所在。
3.3.2 模型訓練
MiniGPT-4的視覺部分來自Blip2(下圖虛線框),LLM部分來自LLaMA(與Blip2不同),因此采用了兩階段的訓練方式,第一階段使用大量數據將視覺模型與LLM進行對齊,第二階段使用少量、多樣的數據,提升模型的理解圖片能力。
MiniGPT-4的模型結構,其中Q-Former和FFN為Adapter。圖中虛線框來自Blip2的模型權重,LLM來自LLaMA的模型權重。模型訓練時只訓練圖中橙色部分,其他權重均固定不變。
特征對齊訓練
- 訓練任務:圖生文,輸入圖片,LLM需要生成該圖片的一個描述。
- 訓練數據:LAION, SBU, Conceptual Caption共三個圖文對數據集,每條數據是一張圖片和該圖片對應的一段描述。
- 訓練設置:訓練20k step,batchsize256,訓練數據約5M,4卡A100(80G) * 10小時。
訓練完成后,模型輸出效果較為一般,會輸出只言片語,或者與圖片完全不相關的內容。
圖像理解訓練
Mini-GPT4和LLaVA是同時期的作品,因此Mini-GPT4訓練時仍然沒有指令微調數據集。為此,論文作者提出了如下造訓練數據的方法。
1.從Conceptual Caption中篩選出5k的圖片,利用Prompt和第一階段訓練過的模型,輸出圖像的詳細描述。
2.使用ChatGPT對這些詳細描述進行改寫,改寫為通暢,流利的描述
3.手動去掉ChatGPT中多余的輸出,如”改寫后的描述為:“
該過程使用這5K條高質量數據繼續訓練模型,在Batch_Size = 12,單卡A100上訓練了7分鐘。
3.4 QwenVL
QWenVL除了在中文數據上表現較好之外,還能處理多圖多輪對話任務,輸出圖像中物體的位置(以文字格式給出檢測框),在TextVQA,OCRVAQ等多個任務上均取得了SOTA的效果。該文提出來 能力增強訓練階段,并在該階段利用多種訓練任務讓模型擁有了OCR、目標檢測等多個能力。
3.4.1 輸入輸出格式
之前的多模態大模型通常是基于單個圖片做多輪對話,且不能給出圖中某個物體的具體位置。QwenVL更改了模型的輸入輸出格式,并用標記語言(類似html)和Tokenizer來適配多圖多輪對話和目標檢測任務。Assistant后面為語言模型需要生成的內容,其他內容均為Prompt。
對多圖的處理
QwenVL的Tokenizer在接受Prompt的時候會自動識別Prompt中表示圖像地址的部分,然后將該地址pad到固定長度256。在模型進行forward的時候,會識別圖片地址的位置并通過Image Encoder和Adapter將圖片轉為長度為256的序列(aligned img emb),并將該序列替換掉Prompt中的圖片地址。
對目標檢測任務的適配
QwenVL還能給出圖中物品的類別和坐標,表示方法為類別(min_x,min_y),(max_x,max_y),QwenVL用特定格式的輸出表示檢測框位置和被檢測物體的類別,其坐標直接使用Token表示,坐標是將圖片進行等比例縮放直到最長邊為1000后圖片上的坐標。這種使用Token表示坐標的方式非常反直覺,但確實能Work。
3.4.2 Adapter結構
QwenVL使用FC層和單層Cross Attention作為視覺模態的Adapter。 與之前介紹的Adapter不同,Qwen先使用FC層將圖像特征的維度對齊到大模型,再使用Cross Attention將圖像特征的長度變為指定的長度,其先使用FC,再使用Cross Attention的做法可能是為了增加Adapter的參數量。
除此之外,QwenVL的Adapter還在圖像的位置信息上做了一點調整。之前的多模態大模型使用的視覺Encoder通常是將圖像的patch按從上到下,從左到右的順序排序成一個序列,并按照序列的順序給圖像加入位置信息emb(1D位置emb)。除此之外,此前介紹的多模態大模型并未關注圖像emb的位置信息。
除了來自視覺模型的1D位置emb,QwenVL還在Adapter中的cross attn中加入了2D位置emb。其具體做法是將2D位置emb加到cross attn中的Key上,2D位置emb表示該patch是圖像分塊后的第幾行和第幾列,是通過分別計算行、列的1D位置emb再concat到一起得到的,其中行、列的1D位置emb來自sin位置emb。顯然的,加入的2D位置emb對于不同長寬比的圖片會更加友好,雖然QwenVL輸入的圖片有著固定的大小,但這可能是為后續的QwenVL-Plus/QwenVL-Max打下的基礎。
3.4.3 模型訓練
與LLaVA,Mini-GPT4不同,QwenVL的訓練被分為三個階段,分別是特征對齊訓練,能力增強訓練和指令跟隨訓練,不同階段的模型可訓練參數也各不相同。
特征對齊訓練
特征對齊訓練是使用大量的圖文對數據(img-caption)將視覺Encoder對齊到LLM上去,讓LLM能看到圖片上的信息。其特點是數據量大,文字內容小(seq_len較小,256圖像 + 512LLM),訓練速度快(因為seq_len小,所以訓練速度相對較快)。QWenVL從各種開源數據集中收集了1.4B的數據,其中77.3%為英文數據,22.7%為中文數據,具體數據來源見下表。
訓練時圖像被縮放至224*224的大小,batch_size 為30720,訓練了50K步,訓練時Vision Encoder和Adapter的權重有更新。其輸入輸出格式如下:
User: Picture 1tiger.jpg
Assistant:5只老虎在大草原上捕獵
其訓練過程中的Loss,Img Caption指標和DocVQA指標見下圖:
Filckr img-caption數據集上的評價文本相似性的指標(CIDEr),右邊是在VQAv2數據集上DocVQA的準確率。和Mini-GPT4類似,僅僅訓練Img-Caption任務即可提升VQA的準確率。其能力可能來自凍住的LLM有一定的推理能力。
能力增強訓練
在將Image Encoder對齊到大模型后,QwenVL將輸入的圖像大小從224 * 224 調整到 448 * 448,并使用了7個不同的訓練任務來增強模型的能力。模型的全部參數均參與訓練,訓練的seq_len為2048。
-
Captioning
User: lion.jpg
Assistant: 4只獅子在草原上捕食
訓練數據:LAION-en & zh, DataComp, Coyo, CC12M & 3M, SBU, COCO, 自有數據共19.7M
訓練任務:輸入圖片,給出圖片的一個描述 -
VQA
User:human.jpg圖上的人穿什么顏色的衣服
Assistant:藍色
訓練數據:GQA, VGQA, VQAv2, DVQA, OCR-VQA, DocVQA, TextVQA, ChartQA, AI2D 共3.6M
訓練任務:輸入圖片,給出一個和圖片有關的問題,要求模型給出問題的答案 -
Grounding
User:human.jpgThis(360,542),(476,705) is
Assistant:Yellow cross country ski racing gloves
訓練數據: GRIT
訓練任務:輸入圖片和圖中某個物體的位置,要求模型給出該物體的描述 -
Referring Grounding
User:VG_100K_2/3.jpgthe ear on a giraffe
Assistant:Yellow cross country ski racing gloves
訓練數據:GRIT, Visual Genome, RefCOCO, RefCOCO+, RefCOCOg,共8.7M
訓練任務:輸入圖片和圖中某個物體的位置,要求模型給出該物體的描述 -
Grounded Cap
User:coyo700m/1.jpgGenerate the caption in English with grounding:
Assistant: Beautiful shot of bees(661,612),(833,812)(120,555),(265,770) gathering nectars from an apricot flower(224,13),(399,313)
訓練數據:GRIT, Visual Genome, RefCOCO, RefCOCO+, RefCOCOg,共8.7M
訓練任務:描述圖片內容,并在描述時給出物體的位置 -
OCR
User:synthdog/1.jpgOCR with grounding:
Assistant: It is managed (568,121), (625,131), (624,182), (567,172)…
訓練數據:SynthDoG-en & zh, Common Crawl pdf & HTML,共24.8M
訓練任務:識別圖中的文字 -
Pure-text Autoregression
訓練數據:自建數據集,共7.8M
訓練任務:保證MLM的效果不退化
該階段主要是通過7個不同的訓練任務,訓練模型的讀圖能力,邏輯推理能力(VQA),識別物體位置的能力(Grounding)和OCR能力。
指令跟隨訓練
該階段主要是讓模型擁有聊天的能力,模型開放Adapter和LLM的參數用于訓練。QWenVL使用了基于LLM生成多模態的對話數據,并保證對話內容和圖像內容相關,指令微調數據量為359K,論文中并未具體給出數據生成的方法。數據集的格式如下:
<im_start>user
Picture 1: vg/VG_100K_2/649.jpgWhat is the sign in the picture?<im_end>
<im_start>assistant
The sign is a road closure with an orange rhombus.<im_end>
<im_start>user
How is the weather in the picture?<im_end>
<im_start>assistant
The shape of the road closure sign is an orange rhombus.<im_end>
3.5 InternVL-v1.5
QwenVL以數據和訓練任務為中心,通過暴力堆疊數據和設計多種訓練任務,QwenVL可以較好的理解圖像內容,甚至能給出圖中某些物體的坐標。但受限于448*448的圖像分辨率,QwenVL的OCR能力較差。如果將Mini-GPT4,Llava,Blip2,QwenVL當做多模態大模型發展的第一階段,則可以認為InternVL-v1.5將多模態大模型帶入了第二階段。
模型上,internVL-v1.5首次將ImageEncoder(VIT)的參數量擴展到了6B,將圖像的視覺特征擴展到了1.7k,將圖像的分辨率提升到7個448 * 448的patch,并引入了動態長寬比。數據上,InternVL-v1.5不僅收集了大量自然場景數據,還收集了大量文檔數據,進一步提升算法的OCR能力。
3.5.1 動態長寬比
此前,多模態大模型通常是將圖像resize到固定的長寬比(448 x 448 或 1344 x1344),再送入VIT獲取圖像特征,這種做法會造成兩個問題:
1.對于極端長寬比的圖片,失真嚴重
2.若固定一個較大的長寬比(比如1344*1344),則VIT會產生超長的序列長度,消耗大量算力
為了解決這兩個問題,InternVl-v1.5引入了動態長寬比。
如圖,動態長寬比的實現分為以下4個步驟:
1.預設最大patch數量:max_patches,圖像會被分為多個448x448的patch,但會保證patch數不超過max_patch
2.根據最大patch數量給出能夠適配的長寬比(長 * 寬 <= max_patch - 1)
3.根據原圖分辨率和原圖長寬比,給出最匹配的長寬比,并將圖片resize并分為多個448 x448的patch
4.最后將原圖resize到448x448放在patch的后面,就得到了圖像經過動態長寬比后的圖片
5.這些小圖分別經過VIT后會得到max_patch個1024長度的序列,將這些序列拼接起來即可得到圖像序列
這樣做的好處是:
1.可以處理較為極端長寬比的圖像,避免了因resize導致的圖像變形
2.大分辨率圖對應的序列長度較長,小分辨率圖對應的序列長度較小
3.將圖片切成了多個448x448的小片過VIT,采用了分塊的思想,解決了大分辨率圖像計算量大的問題。
3.5.2 超大VIT, Pixel Shuffle及模型結構
此前多模態大模型的VIT模型通常是OpenAI訓練的CILP模型的VIT(參數量約為200M)。由于大模型證明了模型參數量的重要性,InternVL-V1.5將VIT的參數量提升至6B從而提升模型效果。其使用的VIT模型輸入為448x448的圖像,該模型會將圖像切分成32x32個14x14的patch,最后會輸出長度為32x32=1024長度的序列。
由于動態長寬比的引入,VIT最多會接受max_patch個448x448的圖片,若不做任何處理,img_emb的序列長度會達到max_patchx1024。如此長的img_emb送入大模型會導致顯存占用高,計算慢的問題。該文引入了PixelShuffle算法將單張圖片的序列長度從1024降低至256。如圖3,PixelShuffle會將VIT輸出的(1024,hidden_dim)的序列reshape為(32,32,hidden_dim)的特征圖, 然后每個2x2為一個基礎單元按圖3個方式進行變換,進而得到(16, 16, hidden_dimx4)的特征圖。最后將特征圖進行flatten得到(256, hidden_dimx4)的序列。
3.5.3 訓練數據集
為了提升模型的通用能力和OCR能力,InternVL-V1.5收集了海量開源數據集用于模型預訓練和finetune。第一階段預訓練僅訓練VIT和MLP部分,預訓練數據集主要是基礎能力的訓練,包括圖像的簡單描述,目標檢測和OCR能力。第二階段finetune則包含各種復雜任務,包括圖像詳細描述,表格理解,圖像問答等。兩階段的序列長度均為4096并將max_patches設置為7。除此之外,為了提升模型的中文場景理解能力和中文OCR能力,在構建數據集時,InternVL-V1.5將大量英文數據集利用LLM翻譯成了中文(如將img-caption數據集的英文caption轉為中文caption),并使用PaddleOCR和Wukong數據集生成了Wukong-ocr數據集。
3.5.4 InternVL-v1.5的貢獻
相較于之前的工作,InternVL-v1.5的主要貢獻在于將大VIT、長img_emb和動態長寬比引入了多模態大模型并擴充了訓練數據集。
對于富文本圖片,其包含的信息量較大,此前使用的小VIT,短img_emb可能無法承載如此多的信息,大VIT,長img_emb讓internVL-V1.5擁有了理解富文本圖片的潛力
擴充的訓練數據集讓internVL-V1.5擁有了理解富文本圖片的能力
動態長寬比的引入則讓模型更好的處理極端長寬比的圖片(如宣傳海報),并且避免了圖像resize導致的形變問題
3.6 Qwen2VL
Qwen2VL,相較與InternVL-v1.5,其包含以下幾個改進:
Qwen2VL的模型架構的特殊性主要體現在動態分辨率和位置embedding上。
3.6.1 動態分辨率
InternVL系列的圖像轉序列(img_emb)模塊會將圖像分為多個448*448的patch,即圖像的長寬會被resize到448的倍數,該方法雖然能支持動態長寬比,但實際應用時,該圖像分patch機制更多考慮的是長寬比,而非分辨率。
而Qwen2VL的圖像轉序列不僅考慮了長寬比還考慮了分辨率對img_emb序列長度的影響, 極大程度上提升了模型的infer效率。其實現動態分辨率的具體做法分為圖像預處理和VIT兩個部分。
圖像預處理部分:以512x512的圖像為例,該圖像會被resize成504x504;然后被分為 36x36個patch,每個patch的大小均為14x14x3;隨后channel維度進行重復得到 36x36個patch,每個patch的大小均為14x14x3x2;最后會對圖像進行flatten操作,得到(36x36, 14x14x3x2) = (1296, 1176)的序列。
視覺部分:以512x512的圖像為例,其預處理后的序列會先過一個3D卷積將其變為(1296, 1280),其作用相當于過了一個FFN,模型中使用的3D卷積是為了將圖片與視頻相統一。該序列過完VIT后即得到(1296, 1280)的img_emb。由于圖像最開始被resize到長寬均能被28整除,因此此時得到的seq_len一定能被4整除。為了壓縮圖像序列,減少大模型的資源消耗,視覺部分將img_emb reshape為(1296/4=324,5120)的大小,并使用FFN將hidden維度數與大模型對齊。
3.6.2 統一的多模態Rope位置embedding
為了將視頻,圖像和文本將統一,該文提出了一個統一的位置embedding:Multimodal Rotary Position Embedding。對于每個token其有三個 position_id分別是 temporal position_ids(時間id,在純文本中表示原始的位置id,在圖片或視頻中表示時間位置id);height position_ids和width position_ids(寬高id,在純文本中寬高id與時間id一致,在視頻和圖片中表示圖片的寬高)。以下是一個position_id的例子。
input_ids: [V V V V V V V V V V V V T T T T T], here V is for vision.
vision temporal position_ids: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]
vision height position_ids: [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]
vision width position_ids: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
text temporal position_ids: [3, 4, 5, 6, 7]
text height position_ids: [3, 4, 5, 6, 7]
text width position_ids: [3, 4, 5, 6, 7]
temporal position_ids: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4, 5, 6, 7]
height position_ids: [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 3, 4, 5, 6, 7]
width position_ids: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 3, 4, 5, 6, 7]
在過完vision_token之后,text_token的時間id起始值為 之前三種id的最大值 + 1。這種設計有幾點好處:
- 保證后續pos id比前序pos id大
- 多模態他模型的圖像token的長度通常為1k-2k,但分patch后的圖像寬高通常在100以內。該方法可以減小position_id的值。從而使模型能用更小的pos_id適配更長的序列長度。
在基于多模態position_id應用到q,k的hidden_states時,Qwen2VL先分別生成時間,高度和寬度的rope位置編碼,分別分配給時間、高度和寬度。此處有一個細節,我們知道rope編碼在低維和高維的角度不同。
因此,在生成單個token的最終位置emb時,Qwen2VL使用圖4所示的方法合成位置emb,保證時間,寬度,高度這三個維度都均有高維區域和低維區域。
3.6.3 訓練過程
Qwen2VL的訓練經過了三個不同的階段,每個階段的訓練目標,可訓練參數和訓練數據集簡介見下表:
相較于之前的工作,Qwen2VL的主要貢獻在于將更精細的動態圖像預處理方式和統一的多模態位置編碼引入了多模態大模型。
- Qwen2VL僅要求圖像的寬高能被28整除,該方式能處理更多樣的長寬比。且能根據圖像分辨率分配img_emb的token數量,資源消耗更加合理。
- 統一的多模態位置emb(M-Rope)統一了圖像,視頻和文本。對比實驗證明了該編碼方式能提升模型效果。
四. VLM 訓練實踐指南 👑
這部分內容提供了 VLM 訓練的實踐指南,涵蓋數據準備、軟件工具、模型選擇、訓練技巧和優化策略等多個方面。 🛠?
1. 訓練數據:高質量數據是成功的基石 💎
-
數據質量 vs. 數據規模: 高質量的訓練數據比單純追求數據規模更重要。DataComp 基準研究表明,數據剪枝 (data pruning) 是提高 VLM 性能的關鍵步驟。 💯
-
數據剪枝 (Data Pruning) 方法:
啟發式方法 (Heuristics): 基于規則或經驗,過濾掉低質量或噪聲數據對。🧹
Bootstrapping 方法: 使用預訓練的 VLM 模型評估圖像-文本對的多模態對齊程度,并移除對齊程度較低的數據對,實現數據自 清洗。 ?
多樣化與平衡 (Diversity and Balance): 確保訓練數據集的多樣性 (覆蓋不同場景、風格、主題) 和類別平衡,避免模型學習偏見。 🌈 -
數據增強 (Data Augmentation): 采用圖像增強 (例如隨機裁剪、旋轉、顏色變換) 和文本增強 (例如同義詞替換、回譯) 等技術,增加數據的多樣性和模型的魯棒性。 ?
-
交錯式數據整編 (Interleaved Data Curation): 將不同來源、不同質量、不同類型的數據進行有效組合和混合,可能有助于提升模型的泛化能力和魯棒性。 🔄
-
多模態數據質量評估: 建立客觀的多模態數據質量評估指標和方法,例如圖像清晰度、文本流暢度、圖像-文本相關性等。 🧐
-
人類專業知識與數據標注: 高質量的人工標注數據 (例如邊界框標注、屬性標注、關系標注) 對于提升模型的定位能力、細粒度理解能力和對齊能力至關重要,尤其是在指令微調和 RLHF 等場景下。 🧑?🤝?🧑
2. 軟件工具與硬件資源:高效訓練的保障 ??
-
公共軟件庫 (Public Software Libraries): 利用現有的深度學習框架 (例如 PyTorch, TensorFlow) 和 VLM 相關庫 (例如 Hugging Face Transformers, PyTorch Image Models - timm) 可以顯著加速 VLM 的開發和訓練進程,降低開發門檻。 📦
-
GPU 資源需求 (GPU Requirements): 訓練大規模 VLMs 需要大量的 GPU 資源,具體數量取決于模型大小、數據集規模、訓練時長和 batch size 等因素。例如,訓練 CLIP 模型可能需要數百甚至上千張 GPU 運行數天甚至數周。 💸 💻
-
訓練加速技巧 (Training Speed-up Techniques):
混合精度訓練 (Mixed Precision Training): 使用半精度浮點數 (FP16) 替代單精度浮點數 (FP32) 進行訓練,可以顯著降低顯 存占用和計算時間,提升訓練速度。 🚀
梯度累積 (Gradient Accumulation): 在顯存受限的情況下,可以通過梯度累積來模擬更大的 batch size,提升訓練效果。 📈
分布式訓練 (Distributed Training): 利用多 GPU 或多機并行計算,加速大規模模型的訓練過程。 🚀🚀🚀 -
超參數調優 (Hyperparameter Tuning): 學習率 (Learning Rate)、Batch Size、Weight Decay、Dropout Rate 等超參數對 VLM 的性能至關重要,需要進行精細的調優,常用的調優方法包括網格搜索 (Grid Search)、隨機搜索 (Random Search)、貝葉斯優化 (Bayesian Optimization) 等。 🛠?
3. 模型選擇:根據任務和資源選擇合適的模型 🤔
- 對比模型 (例如 CLIP, SigLIP): 適用于零樣本分類、跨模態檢索等任務,具有強大的零樣本遷移能力。 🚀
- 掩碼模型 (例如 FLAVA, MaskVLM): 適用于視覺問答、圖像分割、細粒度圖像理解等任務,能夠學習更豐富的視覺和語言表示。 💡
- 生成模型 (例如 CoCa, Stable Diffusion): 適用于圖像描述生成、文本到圖像生成、多模態對話等任務,能夠生成多樣化的文本和圖像內容。 🎨
- 基于預訓練 LLM 的模型 (例如 Frozen, MiniGPT 系列, BLIP-2): 適用于資源有限的場景,能夠快速構建具備基本視覺語言能力的 VLM,并可以利用 LLMs 強大的語言能力。 ?
- 模型選擇策略: 需要根據具體的任務需求、數據規模、計算資源和性能指標要求,權衡不同模型的優缺點,選擇最合適的 VLM 架構和訓練范式。 ??
4. 提升定基 (Grounding):解決幻覺,提升理解 🎯
- 定基問題: VLMs 可能無法很好地理解文本 prompt,導致忽略 prompt 中的某些部分或產生幻覺。 👻
- 提升定基的技巧:
使用邊界框標注 (Bounding Box Annotations): 在訓練數據中引入物體邊界框標注,幫助模型學習物體的位置、大小和屬性信息,提升模型對空間關系的理解能力。 📦
否定描述 (Negative Descriptions): 在訓練數據中包含否定描述 (例如 “圖中沒有貓”),幫助模型理解否定概念和約束條件,提升模型的理解準確性。 🚫
提升對齊 (Alignment Improvement): 采用指令微調 (Instruction Tuning) 和人類反饋強化學習 (RLHF) 等技術,使模型的輸出更符合人類的期望和偏好,提升模型的對齊水平和可靠性。 🤝
5. 提升對富含文本的圖像的理解:OCR 與場景文本理解 📝
- 文本理解的重要性: 日常生活中的視覺信息包含大量文本,例如路標、廣告牌、商品標簽等,理解圖像中的文本信息對于 VLM 至關重要。 💯
- OCR 能力 (Optical Character Recognition): VLMs 需要具備良好的光學字符識別 (OCR) 能力,才能準確識別和理解圖像中的文本信息。 👁?
- 場景文本理解的挑戰: 圖像中的文本可能存在字體多樣、模糊不清、遮擋變形、方向傾斜等問題,給 OCR 和場景文本理解帶來挑戰。此外,理解文本與圖像內容的關聯也至關重要。 🤯
- 提升文本理解的方法:
細粒度的富含文本的數據指令微調 (LLaVAR): 使用包含細粒度文本描述的數據集進行微調,例如 LLaVAR 模型。 ?
處理高分辨率圖像中的細粒度文本 (Monkey): 提升模型處理高分辨率圖像和細粒度文本的能力,例如 Monkey 模型。 🐒
分立式場景文本識別模塊與 MM-LLM (Lumos): 將場景文本識別模塊 (例如專門的 OCR 模型) 與多模態大型語言模型 (MM-LLM) 解耦,例如 Lumos 模型,可以提升文本識別的準確性和效率。 💡
6. 參數高效型微調 (Parameter-Efficient Fine-Tuning, PEFT):輕量級微調策略 🪶
- 微調挑戰: 微調大規模 VLMs 的全部參數集計算成本高昂,且容易過擬合。 💸
- PEFT 方法的目標: 在保持模型性能的同時,僅微調少量參數,降低計算成本和存儲開銷,提高微調效率和泛化能力。 🎯
- PEFT 方法分類:
基于低秩適配器 (Low-Rank Adapters, LoRa) 的方法: 在預訓練模型的 Transformer 層中插入少量低秩矩陣,僅訓練這些低秩矩陣參數,例如 LoRa 和 AdaLoRa。 ?
基于 Prompt 的方法 (Prompt-based Methods): 設計可學習的 Prompt,引導預訓練模型完成下游任務,僅微調 Prompt 參數,例如 Visual Prompt Tuning 和 Adapter-Prompt。 📝
基于適配器 (Adapter-based Methods) 的方法: 在預訓練模型的 Transformer 層之間插入 Adapter 模塊,僅訓練 Adapter 模塊參數,例如 AdapterFusion 和 Compacter。 ??
基于映射 (Mapping-based Methods) 的方法: 學習輸入特征到下游任務特定空間的映射,例如 Prefix-Tuning 和 UNIPEL。 🗺?
7. 實現負責任的 VLM 評估:全面、多維度的性能度量 📊
- VLM 評估的重要性: 客觀、全面地評估 VLM 的性能,是推動 VLM 研究和應用的關鍵環節,有助于發現模型優勢和不足,指導模型改進方向,并確保模型的可靠性和安全性。 💯
- 早期評估任務: 圖像描述生成 (Image Captioning) 和視覺問答 (Visual Question Answering, VQA) 是 VLM 早期常用的評估任務。 📝?
- 文本為中心的 VQA (Text-centric VQA): 側重于評估模型理解和閱讀圖像中文本的能力,例如 TextVQA 和 ST-VQA 基準數據集。 🧐
- 零樣本預測 (Zero-shot Prediction): 例如在 ImageNet 分類任務上進行零樣本評估,評估模型的世界知識和零樣本遷移能力。 🚀
- 組合推理能力評估 (Compositional Reasoning Evaluation): 例如 Winoground 基準,評估模型的視覺-語言組合推理能力。 🤔
- 偏見與幻覺評估 (Bias and Hallucination Evaluation): 評估 VLM 模型在生成內容時是否存在偏見 (例如性別偏見、種族偏見) 和幻覺問題,確保模型的公平性和可靠性。 ??👻
8. 將 VLMs 擴展用于視頻:動態視覺信息處理 🎬
- 視頻 VLM 的挑戰: 視頻數據具有時間維度,數據量更大,計算復雜度更高,對模型處理動態視覺信息的能力提出了更高要求。 🤯
- 視頻 VLM 的優勢: 視頻 VLMs 能夠理解物體的運動軌跡、動態變化和時間關系,捕捉場景中的動作和事件,實現更豐富的視覺信息理解。 🚀
- 視頻 VLM 的應用: 視頻文本檢索 (Video-Text Retrieval)、視頻問答 (Video Question Answering)、視頻生成 (Video Generation)、視頻行為識別 (Video Action Recognition)、視頻內容分析 (Video Content Analysis) 等。 🎬 🔍?
- 視頻 VLM 的發展趨勢: 借鑒圖像-文本模型的成功經驗,將預訓練 LLMs 與視頻編碼器對齊,利用視覺指令微調等技術,構建更強大的視頻理解和生成模型。早期的視頻-文本模型更傾向于融合和時間對齊方法,近年來越來越多地采用預訓練 LLMs 作為骨干網絡,并進行視覺指令微調。 🚀
五. 結論與未來展望:VLM 的無限可能 ?
視覺語言模型 (VLMs) 作為連接視覺和語言世界的橋梁,已經成為人工智能領域最受矚目的研究方向之一。它們在圖像理解、文本生成、跨模態交互等多個方面展現出強大的能力,并在諸多應用領域具有巨大的潛力。 💯
盡管 VLMs 取得了顯著進展,但仍面臨著諸多挑戰,例如跨模態語義鴻溝、組合泛化能力、幻覺問題、魯棒性與泛化性、訓練成本和模型評估等。未來的研究方向將主要集中在:
- 提升跨模態深度理解: 探索更有效的模型架構和訓練方法,提升 VLMs 對視覺和語言信息深層次語義關聯的理解能力,例如因果推理、常識推理、情感理解等。 🧠💡
- 增強組合泛化能力: 提高 VLMs 在處理復雜場景、長尾數據和分布外數據時的泛化能力,提升模型的魯棒性和可靠性。 🛡?🚀
- 緩解和消除幻覺問題: 研究更有效的模型校準、知識融合和約束生成方法,降低 VLMs 產生幻覺的可能性,提升生成內容的真實性和可信度。 👻🚫
- 降低訓練成本和資源消耗: 探索更高效的訓練算法、模型壓縮和參數高效型微調技術,降低 VLMs 的訓練和部署成本,使其更容易普及和應用。 💰??
- 構建更全面和負責任的評估體系: 建立更全面、多維度、負責任的 VLM 評估指標和基準,涵蓋性能、魯棒性、公平性、安全性和倫理道德等方面。 📊??
- 拓展 VLM 的應用邊界: 將 VLMs 應用于更廣泛的領域,例如科學研究、醫療健康、教育、藝術創作、虛擬現實、元宇宙等,充分挖掘 VLMs 的潛力,創造更大的社會價值。 🚀🌍
- 視頻 VLMs 的突破與創新: 在視頻數據理解、視頻生成、視頻交互等領域取得突破,推動視頻 VLM 技術的快速發展和應用普及。 🎬🚀
隨著技術的不斷進步和研究的深入,視覺語言模型將在未來的人工智能領域扮演越來越重要的角色,為人類帶來更加智能、便捷和美好的生活體驗。 🎉💖
參考文獻
[1] https://zhuanlan.zhihu.com/p/700599618
[2] https://innovation64.github.io/2024/05/30/vlm/
[3] https://zhuanlan.zhihu.com/p/690339122
[4] https://mp.weixin.qq.com/s/oXsuMdwXOaKLS-pbc5tE6g
[5] https://mp.weixin.qq.com/s/3XM202pXAPpjfXU4Ke9IVQ
[6] https://mp.weixin.qq.com/s/Q2kLH6L87WwCc3FZrHOqUw