字節跳動 AI Lab 提出多模態模型:X-VLM,學習視覺和語言多粒度對齊(字節跳動lite模型)
寫在前面
視覺語言預訓練提高了許多下游視覺語言任務的性能,例如:圖文檢索、基于圖片的問答或推理。有朋友要問了,除了在公開的學術任務上使用更大的模型/更多的數據/技巧把指標刷得很高,多模態預訓練模型有什么實際應用呢?
為此,字節跳動 AI Lab Research 團隊提出了X-VLM,首次提出學習多粒度的視覺和語言對齊。實驗證明,這種預訓練方法十分高效,模型規模無需很大,預訓練數據無需很多, 僅216M參數量的X-VLM就能在廣泛的多模態任務上獲得了十分優秀的表現,例如:圖像文本檢索、基于圖片的問答或推理、視覺定位、圖片描述生成。目前,X-VLM 在字節跳動的真實應用場景上超過了業界常用的多個模型,完成了上線,服務于如今日頭條等業務。相關論文已被ICML 2022接收。
論文:https://arxiv.org/abs/2111.08276
代碼:https://github.com/zengyan-97/X-VLM
比如,X-VLM 學到了多粒度的視覺和語言對齊,能為圖片生成更正確的描述物體和物體間關系的句子,這項能力被應用到了字節跳動的公益項目上。有視覺障礙的趙先生常用今日頭條了解時事新聞,他一直有個期待:“希望和普通人一樣‘看’到全部資訊內容?!?今日頭條上超過三分之二的資訊內容帶有圖片,為了解決視障人士的讀圖難題,今日頭條App最近應用了 X-VLM 的生成能力,可以自動識別圖片并為它們配上描述。
為了讓他們“看”見每張圖片,我們做了個小改進。
此外,X-VLM的理解和生成能力還被使用在大力智能學習燈的自動批改功能上。下圖展示了補全短語題型以及模型預測的結果:
搭配了自動解題功能的大力智能學習燈廣受家長好評,這項能力還在持續優化中。
研究背景
現有的多模態預訓練模型大致分為兩類:
1)依賴目標檢測器提取基于物體(例如:車、人、樹、背包)的特征來表示圖片,這種方法可以學習到物體級別的視覺和語言對齊,如圖1中(a)所示。這些方法要么直接利用預先訓練的目標檢測器,要么將目標檢測過程合并到多模態預訓練中;
2)用 ResNet 或者 Vision Transformer 編碼整張圖片,只學習圖片和文本之間的對齊,如圖1(b)所示。
這兩種方法都存在一定的問題。首先,基于目標檢測的方法會識別圖片中所有可能的物體,其中不乏一些與配對文本無關的。此外,這種方法所提取的基于物體的視覺特征可能會丟失物體之間的信息(可以認為是一種上下文信息)。而且,這種方法只能識別有限種類的物體,我們很難預先定義合適的物體類別。而第二種方法則比較簡單直接,但是較難學習到細粒度的視覺和語言對齊,例如:物體級別的對齊。這種細粒度的對齊關系被之前的工作證實對于視覺推理 (visual reasoning) 和視覺定位 (visual grounding) 任務很有幫助。
實際上,對于多模態預訓練,有以下公開數據以供模型使用:1)圖片和圖片標題;2)區域標注,例如:圖1中的文本 “man crossing the street” 關聯到了圖片中的某個具體區域。然而,之前的工作卻粗略地將區域標注與整張圖片對齊;3)物體標簽,例如 “backpack”,這些標注被之前的工作用來訓練目標檢測器。
與之前的做法不同,本文中作者提出X-VLM,以統一的方式利用上述數據高效地學習多粒度的視覺和語言對齊,能夠避免高開銷的目標檢測過程,也不局限于學習圖像級別或物體級別的對齊。具體來說,作者提出可以使用基于 Vision Transformer 的 patch embeddings 來靈活表示各種粒度大小的視覺概念,如圖1(c)所示:例如,視覺概念 “backpack” 由2個patch組成,而視覺概念 “man crossing the street” 由更多的patch組成。
因此,X-VLM學習多粒度視覺和語言對齊的秘訣在于:
1)使用 patch embeddings 來靈活表示各種粒度的視覺概念,然后直接拉齊不同粒度的視覺概念和對應文本,這一過程使用常用的對比學習損失、匹配損失、和MLM損失優化;
2)更進一步,在同一張圖片中,給出不同的文本,要求模型能預測出對應粒度的視覺概念的坐標,以邊界框坐標的回歸損失和交并比損失優化。實驗證明,這種預訓練方法十分高效,模型規模無需很大,預訓練數據無需很多,X-VLM 就能在下游多種多模態理解/生成任務上獲得非常優秀的表現。
方法
X-VLM 由一個圖像編碼器,一個文本編碼器,一個跨模態編碼器組成。
圖2左側給出了視覺概念 (可以是物體/區域/圖片)的編碼過程:該圖像編碼器基于Vision Transformer,將輸入圖片分成patch編碼。然后,給出任意一個邊界框,靈活地通過取框中所有patch表示的平均值獲得區域的全局表示。再將該全局表示和原本框中所有的patch表示按照原本順序整理成序列,作為該邊界框所對應的視覺概念的表示。通過這樣的方式獲得圖片本身(I)和圖片中視覺概念(V1,V2,V3)的編碼。與視覺概念對應的文本,則通過文本編碼器一一編碼獲得,例如圖片標題、區域描述、或物體標簽。
X-VLM采用常見的模型結構,其不同之處在于預訓練的方法。作者通過以下兩類損失進行優化:
第一,在同一張圖片中,給出不同的文本,例如:T(text)、T1(text1)、T2(text2)、T3(text3),要求模型預測圖片中對應視覺概念的邊界框:
xjcls是跨模態編碼器在 [CLS] 位置的輸出向量。Sigmoid 函數是為了標準化預測的邊界框。Ground-truth bj對應了 ,依次是標準化后的的中心橫坐標、中心縱坐標、寬、高。最后,該損失是邊界框坐標的回歸損失(L1)和交并比損失(GIoU)之和。作者認為在同一張圖片中,給不同文字,要求模型預測出對應的視覺概念,能使模型更有效地學習到多粒度的視覺語言對齊。該損失也是首次被使用在多模態預訓練中。
第二,使用patch embeddings來靈活表示各種粒度的視覺概念,然后直接優化模型去拉齊不同粒度的文本和視覺概念,包括了物體/區域/圖片與文本的對齊。作者使用多模態預訓練中常見的三個損失優化,依次是:
1)對比學習損失:
yv2t,yt2v ∈ Rbsz x bsz是ground-truth相似度, 對角線為1,其余為0。
pv2t, pt2v ∈ Rbsz x bsz是模型基于文字編碼器輸出和圖像編碼器輸出所計算的相似度。
2)匹配損失:
pmatch是基于跨模態編碼器計算,預測所給 對是否匹配(換句話說,0/1分類)。對于每對正例,作者采樣一對負例。
3)Masked Language Modeling損失:
T(估計值)中的一些詞已經被隨機替換成了 [MASK],pj(V, T(估計值))是跨模態編碼器在詞tj位置的輸出向量所計算的詞表概率分布。
實驗
作者使用多模態預訓練中常見的中等規模的4M和16M圖片數據集進行實驗,如下表所示:
其中,標注(# Ann)是區域標注和物體標簽的總和。可以看出,有些數據集沒有圖片標題,例如Visual Genome(VG),有些數據集沒有圖片標注,例如CC-3M/12M。
表2展示了在圖像文本檢索任務 (MSCOCO和Flickr30K) 上的表現。即使,之前的方法在更大量的內部數據上預訓練或者模型規模更大,在4M圖片數據集下訓練的X-VLM就已經可以超過之前的方法。
表3展示了在視覺推理 (VQA2.0和NLVR2)、視覺定位 (RefCOCO ) 、圖片描述生成 (COCO Caption) 上的模型表現。為了公平的對比,X-VLM 沿用了之前工作的 fine-tune 方法,沒有進行額外的調整。結合表2和表3,可以看出,相比之前的方法,X-VLM支持更多種類的下游任務,并且在這些常見的視覺語言任務上都取得了十分優秀的表現。
總結和討論
在本文中,作者提出了X-VLM以學習多粒度的視覺和語言對齊,能夠避免高開銷的目標檢測過程,也不局限于學習圖像級別或物體級別的對齊。X-VLM 的秘訣在于:
1)基于 patch embeddings 靈活表示各種粒度的視覺概念,然后直接拉齊不同粒度的視覺概念和對應文本;
2)更進一步,在同一張圖片中,給出不同的文本,要求模型能預測出對應視覺概念的坐標。實驗證實這種預訓練方法十分高效。
在實驗部分,作者使用常用的4M和16M數據,訓練總參數量216M的 X-VLM ,就能超過更大規模的模型或使用大量預訓練數據的模型,在下游多種多模態理解/生成任務上取得非常優秀的表現。并且,字節跳動的工程師們也把 X-VLM 用在了真實的業務場景上,例如:為視障人群描述圖片內容,小學生作業的自動批改。實際上,X-VLM 還十分擅長細粒度的 retrieval,visual grounding 等任務。