《MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models》論文學習

一、ABSTRACT

最新的GPT-4展示了非凡的多模態能力,例如直接從手寫文本生成網站和識別圖像中的幽默元素。這些特性在以往的視覺-語言模型中很少見。然而,GPT-4背後的技術細節仍然未公開。我們認爲,GPT-4增強的多模態生成能力源自於複雜的大型語言模型(LLM)的使用。

爲了檢驗這一現象,我們提出了MiniGPT-4,它通過一個投影層將一個固定的視覺編碼器與一個固定的高級LLM,Vicuna對齊。我們的工作首次揭示了適當對齊視覺特徵與高級大型語言模型可以擁有多種高級多模態能力,正如GPT-4所展示的那樣,比如詳細的圖像描述生成和從手繪草圖創建網站。此外,我們還觀察到MiniGPT-4中的其他新興能力,包括受給定圖像啓發編寫故事和詩歌,根據食物照片教用戶如何烹飪等等。

在我們的實驗中,我們發現在短圖像標題對上訓練的模型可能會產生不自然的語言輸出(例如,重複和碎片化)。爲了解決這個問題,我們在第二階段整理了一個詳細的圖像描述數據集來微調模型,從而提高了模型的生成可靠性和整體可用性。

 

二、INTRODUCTION

近年來,大型語言模型(LLMs)經歷了迅速的進步。這些模型擁有卓越的語言理解能力,能夠以零樣本(zero-shot)的方式執行多種複雜的語言任務。特別值得注意的是,最近推出的大規模多模態模型GPT-4,它展示了在視覺-語言理解和生成方面的幾項令人印象深刻的能力。例如,

  • GPT-4能夠生成詳細準確的圖像描述
  • 解釋不尋常的視覺現象
  • 甚至能夠基於手寫文本指令構建網站

儘管GPT-4表現出了顯著的視覺語言能力,但其背後的方法仍是一個謎。我們認爲,這些令人印象深刻的技能可能源於使用了更先進的大型語言模型(LLM)。LLMs已經展現了多種湧現能力,正如在GPT-3的 few-shot prompting 實驗中所證實的,以及Wei 等人的研究成果所展示的。這樣的湧現屬性在小規模模型中很難發現。人們推測這些湧現能力也適用於多模態模型,這可能是GPT-4在視覺描述能力上令人印象深刻的基礎。

爲了支持我們的假設,我們提出了一個名爲MiniGPT-4的新型視覺-語言模型。

  • 在語言感知方面,它使用了一種先進的大型語言模型(LLM),Vicuna,該模型建立在LLaMA之上,並據報道在GPT-4的評估中達到了ChatGPT質量的90%,作爲語言解碼器使用。
  • 在視覺感知方面,我們採用了與BLIP-2相同的預訓練視覺組件,包括來自EVA-CLIP的ViT-G/14和一個Q-Former網絡。

MiniGPT-4添加了一個單獨的投影層來對齊視覺特徵編碼層與Vicuna語言編碼層,並凍結了所有其他視覺和語言組件。

MiniGPT-4最初在4個A100 GPU上使用256的批量大小進行了2萬步的訓練,利用一個綜合的圖像字幕數據集,該數據集包括來自

  • LAION圖像數據集
  • Conceptual Captions圖文數據集
  • SBU的圖像數據集

以將視覺特徵與Vicuna 語言模型對齊。

然而,要實現一個聊天機器人,僅僅將視覺特徵與語言模型(LLM)對齊是不足以確保魯棒的視覺對話能力。原始圖像-文本對中存在的底層噪聲可能會導致次優的語言輸出。因此,我們收集了另外3500對詳細的圖像描述對,以進一步微調模型,並設計了會話模板以改進生成語言的自然性和可用性。

在我們的實驗中,我們發現MiniGPT-4具有許多類似於GPT-4所展示的能力。例如,

  • MiniGPT-4可以生成複雜的圖像描述
  • 基於手寫文本指令創建網站
  • 解釋不尋常的視覺現象

此外,我們的發現還揭示了MiniGPT-4擁有其他多種有趣的能力,而這些能力在GPT-4的演示中並未展示出來。例如,

  • MiniGPT-4可以直接從食品照片生成詳細的烹飪食譜
  • 從圖像中獲得靈感來編寫故事或詩歌
  • 爲圖片中的產品編寫廣告
  • 識別照片中顯示的問題並提供相應的解決方案
  • 直接從圖像中檢索關於人物、電影或藝術的豐富事實等能力

這些能力在以前的視覺-語言模型中是不存在的,如Kosmos-1和BLIP-2,這些模型使用的語言模型不太強大。這進一步驗證了將視覺特徵與先進的語言模型結合起來是增強視覺-語言模型的關鍵之一。

 

三、 METHOD 

MiniGPT-4 旨在將預訓練的視覺編碼器和高級的大型語言模型(LLM)的視覺信息進行對齊。

具體來說,我們使用 Vicuna作爲我們的語言解碼器,它是基於 LLaMA構建的,能夠執行一系列複雜的語言任務。對於視覺感知,我們採用與 BLIP-2中使用的相同視覺編碼器,一個 ViT backbone 與其預訓練的 Q-Former 相結合。

語言和視覺模型都是開源的。我們的目標是使用線性投影層來彌合視覺編碼器和 LLM 之間的差距,整體架構如下圖所示,

爲了實現一個有效的 MiniGPT-4,我們提出了一個兩階段訓練方法。

  • 第一階段,涉及在大量對齊的圖像-文本對上預訓練模型,以獲取視覺-語言知識。
  • 第二階段,我們使用一個更小但高質量的圖像-文本數據集以及設計的對話模板來微調預訓練模型,以提高生成的可靠性和可用性。 

0x1:FIRST PRETRAINING STAGE

在初始預訓練階段,該模型旨在通過大量對齊的圖像-文本對來獲取視覺-語言知識。

我們將線性投影層輸出視爲LLM(大型語言模型)的軟提示(soft prompt),促使其生成對應的真實文本。在整個預訓練過程中,預訓練的視覺編碼器和LLM都保持凍結狀態,只有線性投影層進行了預訓練參數調整。

我們使用了Conceptual Caption、SBU和LAION的組合數據集來訓練我們的模型。

我們的模型經過了2萬個訓練步驟,每個批次大小爲256,大約覆蓋了500萬對圖像-文本。整個過程大約需要10小時完成,使用了4個A100(80GB)GPU。

在經歷了第一階段的預訓練後,我們的MiniGPT-4展現出擁有豐富知識和對人類詢問提供合理迴應的能力。然而,我們觀察到它在生成語言輸出時會出現不連貫的現象,比如重複的詞或句子、碎片化的句子或不相關的內容。這些問題阻礙了MiniGPT-4與人類進行流暢的視覺對話的能力。

我們還觀察到GPT-3遇到了類似的挑戰。儘管它在廣泛的語言數據集上進行了預訓練,GPT-3在生成與用戶意圖精確對齊的語言輸出方面仍然存在困難。通過從人類反饋中進行指令細化調整和強化學習的過程,GPT-3演變爲GPT-3.5,並變得能夠產生更符合人類友好性的輸出。這一現象與MiniGPT-4在其初始預訓練階段後的當前狀態類似。因此,不足爲奇的是,我們的模型在這個階段可能會掙扎於生成流暢自然的人類語言輸出。

爲了提高生成語言的自然度並增強模型的可用性,進行第二階段的對齊過程是至關重要的。

雖然在自然語言處理(NLP)領域中,指令微調數據集和對話容易獲取,但是在視覺-語言領域並不存在等效的數據集。爲了解決這個不足,我們仔細策劃了一個詳細的圖像描述數據集,專門爲視覺-語言對齊目的量身定製。隨後,這個數據集被用於在第二階段的對齊過程中微調我們的MiniGPT-4。

在初始階段,我們使用來自第一次預訓練階段得到的模型來生成輸入圖像的全面描述。
爲了使我們的模型能夠生成更詳細的圖像描述,我們設計了一個遵循Vicuna語言模型的對話格式的提示,如下所示。

在這個提示中,<ImageFeature>代表由線性投影層產生的視覺特徵。 
爲了識別不完整的句子,我們檢查生成的句子是否超過80個token。如果沒有,我們會加入一個額外的提示,
###Human: 繼續 ###Assistant: 
以此來促使我們的MiniGPT-4延長生成過程。
通過連接這兩步的輸出,我們可以創建更全面的圖像描述。這種方法使我們能夠生成帶有詳細的、有信息量的圖像描述的圖像-文本配對。
我們從Conceptual Caption dataset中隨機選擇了5000張圖片,並使用預訓練模型爲每張圖片生成相應的語言描述。 

2、Data post-processing

上述自動生成的圖像描述中包含了噪聲或不連貫的描述,例如單詞或句子的重複、片段化的句子或不相關的內容。

爲了解決這些問題,我們使用ChatGPT通過以下提示來修復描述:

在完成post-processing階段後,我們會手動驗證每個圖像描述的正確性,以確保其高質量。

具體來說,我們首先識別了一些經常出現的錯誤(“對不起,我犯了一個錯誤...”或者“爲此我道歉...”),然後硬編碼規則自動過濾掉這些錯誤。我們還通過手動刪除ChatGPT未能檢測到的多餘單詞或句子來精煉生成的標題。最後從5000對圖像-文本配對中篩選出了大約3500對數據滿足我們的要求,隨後這些配對被用於第二階段的對齊過程。

0x3:SECOND-STAGE FINETUNING

在第二階段,我們用篩選出的高質量圖像-文本配對對我們的預訓練模型進行微調。在微調過程中,我們使用以下模板中預定義的提示:

在這個Prompt提示中, <Instruction>代表從我們預定義的指令集中隨機抽取的一條指令,該指令集包含多種形式的指令,例如

  • “詳細描述這幅圖像”
  • “你能爲我描述這幅圖像的內容嗎”

需要注意的是,我們不爲這個特定的文本-圖像提示計算迴歸損失。

經過這個步驟後,MiniGPT-4 現在能夠產生更自然、更可靠的語言輸出。

此外,我們觀察到這個微調過程非常高效,僅需大約400個訓練步驟,每批次大小爲12,使用單個A100 GPU大約需要7分鐘。 

參考鏈接:

https://minigpt-4.github.io/
https://www.youtube.com/watch?v=atFCwV2hSY4
https://minigpt-v2.github.io/#
https://huggingface.co/spaces/Vision-CAIR/MiniGPT-v2 

 

四、EXPERIMENTS 

0x1:Installation

1、Prepare the code and the environment

git clone https://github.com/Vision-CAIR/MiniGPT-4.git
cd MiniGPT-4
conda env create -f environment.yml
conda activate minigptv

2、Prepare the pretrained LLM weights

安裝git lfs,用於之後下載hugeface模型文件,

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

下載LLM基礎模型權重文件,

Vicuna V0 7B
Download
mkdir model
cd model
git clone https://huggingface.co/Vision-CAIR/vicuna-7b

修改模型權重配置路徑,

  • For MiniGPT-4 (Vicuna), set the LLM path here at Line 18

3、Prepare the pretrained model checkpoints

作者已經開源了訓練好的預訓練和微調後的checkpoints文件,我們可以直接下載到本地使用。同時也可以選擇自己從頭開始預訓練和微調。

MiniGPT-4 (Vicuna 7B)
Download

設置配置文件中的pretrained checkpoint path。

0x2:Launching Demo Locally

For MiniGPT-4 (Vicuna version),

python3 demo.py --cfg-path eval_configs/minigpt4_eval.yaml  --gpu-id 0

爲了節省GPU內存,默認情況下,大型語言模型(LLMs)以8位的形式加載,並設定beam search寬度爲1。這種配置對GPU內存的需求如下:

  • 13B級別大型語言模型23G的GPU內存
  • 7B級別大型語言模型11.5G的GPU內存

對於更強大的GPU,您可以通過在相關配置文件中將low_resource設置爲False,來以16位的形式運行模型:

0x3:Training

https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT4_Train.md 

參考鏈接:

https://huggingface.co/Vision-CAIR/vicuna-7b
https://github.com/Vision-CAIR/MiniGPT-4/blob/main/minigpt4/configs/models/minigpt4_vicuna0.yaml#L18 
https://drive.google.com/file/d/1RY9jV0dyqLX-o38LrumkKRh6Jtaop58R/view 
https://juejin.cn/s/git%20lfs%20%E4%B8%8B%E8%BD%BD%E5%8D%95%E4%B8%AA%E6%96%87%E4%BB%B6 

 

五、LIMITATION ANALYSIS

0x1:Hallucination

由於MiniGPT-4是建立在大型語言模型(LLMs)之上的,因此它繼承了像臆造不存在的知識這樣的LLM的限制。例如,下圖中的一個例子顯示MiniGPT-4錯誤地識別出圖片中有白色桌布,儘管實際上並不存在。

在這裏,我們使用CHAIRi指標來衡量生成內容的臆造率,同時設定了兩種不同的提示來控制模型生成長度:

  • MiniGPT-4(long):請儘可能詳細地描述這幅圖像。
  • MiniGPT-4(short):請簡短且精確地描述這幅圖像,用不超過20個詞。

下表中的結果顯示,較長的描述傾向於有更高的臆造率。

在詳細圖像描述中的臆造問題仍然是一個未解決的問題。使用帶有臆造檢測模塊的強化學習和人工智能反饋可能是一個潛在的解決方案。

0x2:Spatial Information Understanding

MiniGPT-4的視覺感知能力仍然有限。它可能難以區分空間定位。例如,下在圖中,MiniGPT-4未能識別出窗戶的位置。

這種限制可能源於缺乏爲理解空間信息而設計的對齊的圖像-文本數據。在像RefCOCO或Visual Genome這樣的數據集上進行訓練,可能有助於緩解這個問題。 

 

六、DISCUSSION

MiniGPT-4如何獲得這些高級能力?GPT-4展示的許多高級視覺-語言能力可以理解爲基於兩個基礎技能的組合性技巧:

  • 圖像理解
  • 語言生成

以基於圖像的詩歌創作任務爲例,像ChatGPT和Vicuna這樣的高級大型語言模型已經能夠根據用戶指令創作詩歌。如果它們獲得了理解圖像的能力,即使在訓練數據中沒有圖像-詩歌對,也有可能組合性地概括到基於圖像的詩歌創作任務。

在第一階段的預訓練中,MiniGPT-4通過建模圖像與圖像標題數據集中的簡短圖像描述之間的相關性來學習理解圖像。然而,這些圖像標題數據集中的語言風格與現代大型語言模型的生成風格不同,這導致了扭曲的語言生成,阻礙了成功的組合性概括。因此,我們引入了第二階段的微調來恢復語言生成能力。經過兩階段訓練後的MiniGPT-4成功地概括到許多高級組合性視覺-語言能力,如從草圖編寫網站代碼或解讀表情包,驗證了我們的假設。

未來的研究可能會深入探討組合性概括的機制,並尋找增強它們的方法。我們希望我們的工作,作爲這些基於視覺的大型語言模型能力的早期探索,將激發在這一領域的進一步調查。

參考鏈接:

https://arxiv.org/pdf/2304.10592.pdf

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章