天天看點

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

作者:極市平台

作者丨科技猛獸

編輯丨極市平台

本文目錄

1 ViLT:一種極簡多模态學習架構 Baseline

(來自 NAVER AI Lab)

1.1 背景和動機

1.2 視覺-語言模型的分類

1.3 模态互動的方式

1.4 ViLT 模型總體架構

1.5 ViLT 預訓練目标

1.6 文本小技巧:整個單詞的掩碼

1.7 圖像小技巧:資料增強

1.8 實驗結果

太長不看版

ViLT 可以看做是一種極簡多模态學習架構 Baseline,它的特點是把每個模态的特征抽取部分做到了最小化,把主要的計算量都使用 Transformer 放在了特征融合部分,在很大程度上推動了當年多模态學習的進展。比如圖檔部分需要一個特征提取器,文本部分呢,也需要一個特征提取器。目前的 Vision-and-Language Pre-training (VLP) 方法嚴重依賴于圖像特征提取過程,其中大部分涉及區域性特征 (如目标檢測) 和卷積架構 (如 ResNet)。ViLT 的圖檔和文本的特征提取模型都是 Convolution-Free 的極簡架構。作者表明,ViLT 比以前的 VLP 模型快十倍,但具有競争力或更好的下遊任務性能。那麼 ViLT 到底做了什麼呢?其實從題目中的 "Without Convolution or Region Supervision" 就大概看得出來,ViLT 把以往多模态工作中的目标檢測部分的區域性特征,從多模态學習的架構中給移除了。

1 ViLT:一種極簡多模态學習架構 Baseline

論文名稱:ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision (ICML 2021)

論文位址:

https://arxiv.org/pdf/2102.03334.pdf

代碼位址:

https://github.com/dandelin/vilt

1.1 背景和動機

預訓練-微調的方案已經分别擴充到視覺和語言的領域,也誕生了視覺-語言預訓練 (Vision-and-Language Pre-training, VLP) 方法。典型的工作包括[1]等等,這些模型通過圖像文本比對 (image text matching) 和掩碼語言模組化 (masked language modeling) 目标進行訓練,并在視覺和語言各自的下遊任務上面進行微調。

那麼為了把圖像模态的輸入喂給 VLP 模型,圖像像素需要與語言标記一起以密集的形式變成 token。在 ViT 這個經典的圖檔分 Patch 的工作誕生之前,大家一般使用在 Visual Genome 資料集上預先訓練的目标檢測器[2]或者卷積神經網絡[3] (ResNet) 提取圖像的特征。

到目前為止,大多數 VLP 研究都把提升圖像-文本預訓練模型的性能的希望寄托于視覺 Encoder 上面,大家希望設計能力更強的視覺 Encoder。在我們平常做實驗的時候,視覺 Encoder 提取到的 region feature 可以提前緩存,以減小訓練時的負擔。但是在實際應用的時候,在面對新資料集的時候,還是必須經曆一個緩慢的提取 region feature 的過程。

是以,本文受到當時的工作 ViT 使用 Patch Embedding 編碼圖像特征的啟發,希望把每個模态的特征抽取部分做到了最小化,把主要的計算量都使用 Transformer 放在了特征融合部分。本文提出的 ViLT 是一種無需目标檢測器的多模态架構,如下圖1所示,它的圖檔和文本的特征提取模型都是 Convolution-Free 的極簡架構。ViLT 與以前的 VLP 模型的主要不同之處在于:ViLT 去掉了複雜的處理圖像特征的目标檢測器,而改為了極簡的一層 Linear Embedding,這樣的設計極大地減小了模型的整體尺寸和運作時間。結果顯示,ViLT 比以前的 VLP 模型快十倍,同時在視覺和語言下遊任務上表現出相似甚至更好的性能。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖1:傳統 VLP 模型和本文 ViLT 模型的對比

1.2 視覺-語言模型的分類

作者首先對視覺-語言模型做了一個像綜述一樣的分類,說主要是基于以下兩點分類:

  1. 圖像和文本這兩個模态的編碼器是不是具有相似的參數或者計算成本。
  2. 這兩個模态的編碼結果是不是通過一個深度模型進行互動。

按照這兩個分類依據,視覺-語言模型能夠分為以下4類,如下圖2所示。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖2:視覺-語言模型的四種範式:每個矩形的高度表示它的相對計算大小。VE、TE 和 MI 分别代表視覺編碼器、文本編碼器和模态互動器

第1種模型如圖 2(a) 所示,屬于是視覺模型占大部分算力,用簡單的點積或淺注意層來表征兩種模态中特征的相似性,代表模型是 VSE++[4]和 SCAN[5]。

第2種模型如圖 2(b) 所示,屬于是視覺模型和文本模型都使用較大算力,用簡單的點積或淺注意層來表征兩種模态中特征的相似性,代表模型是 CLIP[6]。但是,這種方法對于視覺-語言下遊任務性能很差,比如 CLIP 在 NLVR2 資料集上面性能較差,說明縱使單一模态的編碼器很好,但是對其輸出的簡單融合可能也不足以學習複雜的視覺和語言任務,這可能就需要我們去研究更嚴格的跨模态互動方案了。

第3種模型如圖 2(c) 所示,屬于是視覺模型占大部分算力,使用 Transformer 對圖像和文本特征的互動進行模組化,代表模型是 FiLM[7]和 MoVie[8]。

第4種模型如圖 2(d) 所示,屬于是視覺模型和文本模型都極其簡單,大部分計算力集中在模态的互動上面,使用 Transformer 對圖像和文本特征的互動進行模組化,代表模型是本文的 ViLT。

1.3 模态互動的方式

模态互動的核心是 Transformer,它以圖像和文本的表征的序列作為輸入,通過每個 Transformer Block 對模态之間和模态内部的資訊進行互動,然後輸出互動之後的特征序列。模态互動的方式可分成兩類:

  1. 單流方法:代表是 VisualBERT[9] 和 UNITER[10]。先把圖像和文本的表征拼接起來以後,再一并輸入給 Transformer,本文 ViLT 也屬于單流方法。
  2. 雙流方法:代表是 ViLBERT[11] 和 LXMERT[12]。圖像和文本的表征不在輸入階段作拼接。

1.4 ViLT 模型總體架構

如下圖3所示是 ViLT 模型的總體架構,Transformer Encoder 的權重以 ViT-B/32 的預訓練權重做初始化,而不是 BERT 的預訓練權重。作者解釋這麼做的原因是:因為 ViLT 沒有單獨的 Image Encoder 了,是以借助 ViT 去做初始化。其實真相是作者也實驗了以 BERT 的預訓練權重做初始化,同時使用 ViT 模型的 Patch Projection 層,但是發現這樣做不 work。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖3:ViLT 模型的總體架構

然後,ViLT 模型的表達式是:

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline
無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

1.5 ViLT 預訓練目标

ViLT 的預訓練過程使用了兩個訓練目标:Image Text Matching (ITM) 和 Masked Language Modeling (MLM)。

Image Text Matching 就是随機将對齊的圖像替換為不同的圖像,機率為0.5,然後使用一個線性層,得到輸出。并希望模型預測出文本和圖檔是否比對。

Masked Language Modeling 也就是 BERT 中的完形填空任務,即先把一些文本的詞根 (text token) 蓋住,mask ratio 為0.15,然後使用一個兩層 MLP 得到輸出。輸入 mask 之後的東西,并希望模型預測出 mask 的内容。

1.6 文本小技巧:整個單詞的掩碼

就是在做完形填空任務時,每次是把整個詞都 mask 掉的,而不是隻 mask 掉一個詞根。比如說作者舉個例子:"giraffe" 這個詞,可以拆解成3個詞根:["gi", "##raf", "##fe"]。正常 mask 時,可以 mask 掉 "##raf",但是仔細想想如果說讓模型已知 "gi" 和 "##fe" 來預測 "##raf" 時,可以說這個任務是比較不依賴圖檔資訊的。如果不是所有的詞根都被屏蔽,模型可能隻依賴附近的兩個語言标記 "gi" 和 "##fe" 來預測被屏蔽的 "##raf",而不是使用圖像中的資訊。

是以,如果是把 "giraffe" 這個詞全部 mask 掉,模型就隻能根據上下文和圖像的資訊來做完形填空了,這也是我們所希望看到的。

1.7 圖像小技巧:資料增強

圖像增強提高了視覺模型的泛化能力,但是之前的 VLP 工作很多沒辦法使用。因為大多數 VLP 模型有比較 heavy 的目标檢測模型,是以一般是提前把輸入喂入目标檢測器,得到特征之後事先存起來,訓練的時候就不用再通過一遍了。但是有了資料增強之後毫無疑問這就做不了了。

是以呢,之前基于目标檢測的 VLP 的工作不會這麼用。即便是 Pixel-BERT 這種不考慮目标檢測的工作,也沒使用資料增強。

但是 ViLT 這個方法不涉及目标檢測,是以作者這裡使用了資料增強 RandAugment。作者使用了所有原始的政策,除了兩個:其一是 color inversion,因為文本通常也包含顔色資訊。其二是:cutout,因為它可能會裁減掉圖檔裡面很重要的小物體。

1.8 實驗結果

預訓練資料集: 作者使用了4個資料集來做預訓練:Microsoft COCO (MSCOCO), Visual Genome (VG), SBU Captions (SBU) , Google Conceptual Captions (GCC)。這4個資料集的規模如下圖4所示。這4個資料集合起來一般叫做 4 Million 的設定,因為它們的圖檔數加起來差不多是 4 Million。值得一提的是每個資料集單張圖檔對應的 Caption 的數量都不同,多的比如 COCO 資料集,隻有 113K 張圖檔,但是一共有 567K 個 Caption,說明每張圖檔都有很多的文本去描述,說明描述得更細節。少得比如 Google Conceptual Captions 和 SBU Captions,都是用1個較長的 Caption 把圖檔描述清楚。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖4:ViLT 預訓練所使用的資料集

任務: 作者在兩種常見的視覺-語言下遊任務上面評價 ViLT 模型,分别是:分類任務 Classification (VQAv2 和 NLVR2 資料集) 和檢索任務 Retrieval (MSCOCO 和 Flickr30K)。

實驗設定: ViLT 使用 bert-base-uncased tokenizer 來 tokenize 文本輸入。優化器使用 AdamW,初始學習率 0.0001,weight decay 設為0.01。

分類任務實驗結果

作者使用隐次元大小為1,536的兩層 MLP 作為微調下遊頭。分類任務主要包含兩種:

Visual Question Answering (VQA) 任務借助 VQAv2 資料集來評估。VQA 任務要求給定圖像對和自然語言問題,尋求答案。帶注釋的答案最初是自由形式的自然語言,但常見的做法是将任務轉換為具有 3,129 個答案的分類任務。

Natural Language for Visual Reasoning (NLVR) 任務借助 NLVR2 資料集來評估。NLVR 任務是給定兩個圖像的三元組和自然語言的問題,做二進制分類的任務。由于與預訓練設定不同有兩個輸入圖像,是以下遊任務存在多種政策。在 ViLT 中,輸出是兩個圖檔,一個問題,那麼分成 (問題,圖檔1) 和 (問題,圖檔2),并把它們分别喂給 ViLT 模型,得到的兩個 Pooled Representation,也就是 拼接起來,最後輸出分類結果。

結果如下圖5所示,圖5裡面的 Region 是用上了區域特征,Grid 是用的網格特征,而 Linear 就是隻使用一個線性層的 ViLT 模型方法。結果顯示,ViLT-B/32 在兩個資料集上都保持了具有競争力的性能,但是推理速度卓越。比如基于 Region 區域特征的方法的推理時間大概在 900ms,基于 Grid 網格特征的方法的推理時間大概在 100+ms,基于 ViLT 的方法的推理時間僅僅為 15ms。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖5:分類任務實驗結果

檢索任務實驗結果

作者在 MSCOCO 和 Flickr30K 資料集上面微調 ViLT-B/32 模型,對于圖像到文本和文本到圖像的檢索,作者測試了 Zero-Shot 和 Fine-tuning 的性能,結果分别如下圖6和7所示。這兩個在做法上的差別就是一個用了 MSCOCO 和 Flickr30K 做微調,一個不使用。從圖6和7也看得出來 ViLT 的速度還是特别快,但是召回率性能上不如最強的基于 Region 特征和 Grid 特征的模型。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖6:檢索任務的 Zero-Shot 實驗結果

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖7:檢索任務的 Fine-tuning 實驗結果

消融實驗結果

如下圖8所示是消融實驗結果,作者首先來驗證訓練的時長 (Training Steps) 對于結果的影響。因為 VLP 也是一種Self-Supervised Training,是以作者研究了訓練時間的影響。正如預期的那樣,随着訓練步驟的提升,模型下遊任務的性能也不斷提高。同時,整個單詞的掩碼和圖像的資料增強對結果都是有幫助的。但是,作者還試了額外的訓練目标,即遮住圖像的一部分做預測 (Masked Patch Prediction),mask ratio 為0.15,讓模型預測 masked patch 的 RGB 值,但是發現這個訓練目标對下遊性能沒有貢獻。

無需目标檢測器,ViLT:一種極簡多模态學習架構 Baseline

圖8:消融實驗結果

參考:https://www.youtube.com/watch%3Fv%3Dug8YvZOjOCE%26t%3D1s

參考

  1. ^VL-BERT: Pre-training of Generic Visual-Linguistic Representations
  2. ^Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering
  3. ^Pixel-BERT: Aligning Image Pixels with Text by Deep Multi-Modal Transformers
  4. ^VSE++: Improving Visual-Semantic Embeddings with Hard Negatives
  5. ^Stacked Cross Attention for Image-Text Matching
  6. ^Learning Transferable Visual Models From Natural Language Supervision
  7. ^FiLM: Visual Reasoning with a General Conditioning Layer
  8. ^MoVie: Revisiting Modulated Convolutions for Visual Counting and Beyond
  9. ^VisualBERT: A Simple and Performant Baseline for Vision and Language
  10. ^UNITER: Learning UNiversal Image-TExt Representations
  11. ^ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks
  12. ^LXMERT: Learning Cross-Modality Encoder Representations from Transformers

繼續閱讀