多模態(tài)超詳細(xì)解讀 (六):BLIP:統(tǒng)一理解和生成的自舉多模態(tài)模型
極市導(dǎo)讀
BLIP 作為一種新的 VLP 框架可以靈活地在視覺理解任務(wù)上和生成任務(wù)上面遷移,并且提出了一種高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法。 >>加入極市CV技術(shù)交流群,走在計算機(jī)視覺的最前沿
本文目錄
1 BLIP:統(tǒng)一理解和生成的自舉多模態(tài)模型
(來自 Salesforce)
1.1 背景和動機(jī)
1.2 BLIP 的模型架構(gòu) MED
1.3 BLIP 的預(yù)訓(xùn)練目標(biāo)
1.4 BLIP 高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法:CapFilt
1.5 BLIP 實驗設(shè)置
1.6 BLIP 實驗結(jié)果
1.7 各個下游任務(wù) BLIP 與其他 VLP 模型的對比
太長不看版
BLIP 是一種多模態(tài) Transformer 模型,主要針對以往的視覺語言訓(xùn)練 (Vision-Language Pre-training, VLP) 框架的兩個常見問題:
-
大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型僅在基于理解的任務(wù)或者基于生成的任務(wù)方面表現(xiàn)出色,很少有可以兼顧的模型。 -
大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型為了提高性能,使用從網(wǎng)絡(luò)收集的嘈雜圖像-文本對擴(kuò)展數(shù)據(jù)集。這樣雖然提高了性能,但是很明顯這個帶噪聲的監(jiān)督信號肯定不是最優(yōu)的。
BLIP 這種新的 VLP 框架可以靈活地在視覺理解任務(wù)上和生成任務(wù)上面遷移,這是針對第一個問題的貢獻(xiàn)。至于第二個問題,BLIP 提出了一種高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法。即先使用嘈雜數(shù)據(jù)訓(xùn)練一遍 BLIP,再使用 BLIP 的生成功能生成一系列通過預(yù)訓(xùn)練的 Captioner 生成一系列的字幕,再把這些生成的字幕通過預(yù)訓(xùn)練的 Filter 過濾一遍,得到干凈的數(shù)據(jù)。最后再使用干凈的數(shù)據(jù)訓(xùn)練一遍 BLIP。
1 BLIP:統(tǒng)一理解和生成的自舉多模態(tài)模型
論文名稱:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML 2022)
論文地址:
https://larxiv.org/pdf/2201.12086.pdf
代碼地址:
https://github.com/salesforce/BLIP
官方解讀博客:
https://blog.salesforceairesearch.com/blip-bootstrapping-language-image-pretraining/
1.1 背景和動機(jī)
視覺語言訓(xùn)練 (Vision-Language Pre-training, VLP) 最近在各種多模態(tài)下游任務(wù)上取得了巨大的成功。然而,現(xiàn)有方法有兩個主要限制:
-
模型層面: 大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型僅在基于理解的任務(wù)或者基于生成的任務(wù)方面表現(xiàn)出色,很少有可以兼顧的模型。比如,基于編碼器的模型,像 CLIP,ALBEF 不能直接轉(zhuǎn)移到文本生成任務(wù) (比如圖像字幕),而基于編碼器-解碼器的模型,像 SimVLM 不能直接用于圖像文本檢索任務(wù)。 -
數(shù)據(jù)層面: 大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型為了提高性能,使用從網(wǎng)絡(luò)收集的嘈雜圖像-文本對擴(kuò)展數(shù)據(jù)集。這樣雖然提高了性能,但是很明顯這個帶噪聲的監(jiān)督信號肯定不是最優(yōu)的。
本文提出了 BLIP:Bootstrapping LanguageImage Pre-training,用于統(tǒng)一的視覺語言理解和生成。BLIP 是一種新的 VLP 框架,與現(xiàn)有的方法相比,它可以實現(xiàn)更廣泛的下游任務(wù)。它分別從模型和數(shù)據(jù)的角度引入了兩個貢獻(xiàn):
-
BLIP 提出了一種編碼器-解碼器混合架構(gòu) (Multimodal mixture of Encoder-Decoder, MED),MED 的特點是很靈活,它既可以作為單模態(tài)的編碼器,又可以作為基于圖像的文本編碼器,或者基于圖像的文本解碼器。BLIP 由三個視覺語言目標(biāo)聯(lián)合訓(xùn)練:圖像文本的對比學(xué)習(xí)、圖像文本匹配和圖像條件語言建模。 -
BLIP 提出了一種高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法。即先使用嘈雜數(shù)據(jù)訓(xùn)練一遍 BLIP,再使用 BLIP 的生成功能生成一系列通過預(yù)訓(xùn)練的 Captioner 生成一系列的字幕,再把這些生成的字幕通過預(yù)訓(xùn)練的 Filter 過濾一遍,從原始網(wǎng)絡(luò)文本和合成文本中刪除嘈雜的字幕,得到干凈的數(shù)據(jù)。最后再使用干凈的數(shù)據(jù)訓(xùn)練一遍 BLIP。
1.2 BLIP 的模型架構(gòu) MED
如下圖1所示是 BLIP 的模型架構(gòu) MED,看上去稍微有點復(fù)雜,一塊一塊拆開看。
1 視覺編碼器:提取圖片特征
圖1最左邊的是視覺編碼器,就是 ViT 的架構(gòu)。將輸入圖像分割成一個個的 Patch 并將它們編碼為一系列 Image Embedding,并使用額外的 [CLS] token 來表示全局的圖像特征。視覺編碼器不采用之前的基于目標(biāo)檢測器的形式,因為 ViLT 和 SimVLM 等工作已經(jīng)證明了 ViT 計算更加友好。
2 文本編碼器:提取文本特征
圖1第2列的是視覺編碼器,就是 BERT 的架構(gòu),其中 [CLS] token 附加到文本輸入的開頭以總結(jié)句子。作用是提取文本特征做對比學(xué)習(xí)。
3 視覺文本編碼器:
圖1第3列的是視覺文本編碼器,使用 Cross-Attention,作用是根據(jù) ViT 給的圖片特征和文本輸入做二分類,所以使用的是編碼器,且注意力部分是雙向的 Self-Attention。添加一個額外的 [Encode] token,作為圖像文本的聯(lián)合表征。
4 視覺文本解碼器:
圖1第4列的是視覺文本解碼器,使用 Cross-Attention,作用是根據(jù) ViT 給的圖片特征和文本輸入做文本生成的任務(wù),所以使用的是解碼器,且注意力部分是 Casual-Attention,目標(biāo)是預(yù)測下一個 token。添加一個額外的 [Decode] token 和結(jié)束 token,作為生成結(jié)果的起點和終點。
一個需要注意的點是:相同顏色的部分是參數(shù)共享的,即視覺文本編碼器和視覺文本解碼器共享除 Self-Attention 層之外的所有參數(shù)。每個 image-text 在輸入時,image 部分只需要過一個 ViT 模型,text 部分需要過3次文本模型。
1.3 BLIP 的預(yù)訓(xùn)練目標(biāo)
BLIP 在預(yù)訓(xùn)練期間聯(lián)合優(yōu)化了3個目標(biāo),有兩個理解任務(wù)的目標(biāo)函數(shù)和一個生成任務(wù)的目標(biāo)函數(shù)。
對比學(xué)習(xí)目標(biāo)函數(shù) (Image-Text Contrastive Loss, ITC)
ITC 作用于1 視覺編碼器 和 2 文本編碼器,目標(biāo)是對齊視覺和文本的特征空間。方法是使得正樣本圖文對的相似性更大,負(fù)樣本圖文對的相似性更低,在 ALBEF 里面也有使用到。作者在這里依然使用了 ALBEF 中的動量編碼器,它的目的是產(chǎn)生一些偽標(biāo)簽,輔助模型的訓(xùn)練。
圖文匹配目標(biāo)函數(shù) (Image-Text Matching Loss, ITM)
ITM 作用于1 視覺編碼器 和 3 視覺文本編碼器,目標(biāo)是學(xué)習(xí)圖像文本的聯(lián)合表征,以捕獲視覺和語言之間的細(xì)粒度對齊。ITM 是一個二分類任務(wù),使用一個分類頭來預(yù)測圖像文本對是正樣本還是負(fù)樣本。作者在這里依然使用了 ALBEF 中的 hard negative mining 技術(shù)。
語言模型目標(biāo)函數(shù) (Language Modeling Loss, LM)
BLIP 包含解碼器,用于生成任務(wù)。既然有這個任務(wù)需求,那就意味著需要一個針對于生成任務(wù)的語言模型目標(biāo)函數(shù)。LM 作用于1 視覺編碼器 和 4 視覺文本編碼器,目標(biāo)是根據(jù)給定的圖像以自回歸方式來生成關(guān)于文本的描述。與 VLP 中廣泛使用的 MLM 損失 (完形填空) 相比,LM 使模型能夠?qū)⒁曈X信息轉(zhuǎn)換為連貫的字幕。
1.4 BLIP 高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法:CapFilt
高質(zhì)量的人工注釋圖像-文本對 (例如, COCO) 因為成本高昂所以數(shù)量不多。最近的工作 ALBEF, SimVLM 利用從網(wǎng)絡(luò)自動收集的大量替代的圖文對 。但是, 這些網(wǎng)絡(luò)的替代數(shù)據(jù)集通常不會準(zhǔn)確地描述圖像的視覺內(nèi)容, 質(zhì)量相對嘈雜, 帶噪聲的監(jiān)督信號肯定不是最優(yōu)的。
BLIP 這里提出了一種高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法:Captioning and Filtering,CapFilt。
CapFilt 方法如上圖2所示。它包含兩個模塊:
字幕器 Captioner: 給一張網(wǎng)絡(luò)圖片,生成字幕。它是一個視覺文本解碼器,在 COCO 數(shù)據(jù)集上使用 LM 目標(biāo)函數(shù)微調(diào)。給定網(wǎng)絡(luò)圖片 , Captioner 生成字幕 。
過濾器 Filter: 過濾掉噪聲圖文對。它是一個視覺文本編碼器,看文本是否與圖像匹配,在 COCO 數(shù)據(jù)集上使用 ITC 和 ITM 目標(biāo)函數(shù)微調(diào)。Filter 刪除原始 Web 文本 和合成文本 中的嘈雜文本,如果 ITM 頭將其預(yù)測為與圖像不匹配,則認(rèn)為文本有噪聲。
最后,將過濾后的圖像-文本對與人工注釋對相結(jié)合,形成一個新的數(shù)據(jù)集,作者用它來預(yù)訓(xùn)練一個新的模型。
1.5 BLIP 實驗設(shè)置
BLIP 在兩個 16-GPU 節(jié)點上面做預(yù)訓(xùn)練,視覺編碼器以 ImageNet-1K 上預(yù)訓(xùn)練的 ViT 權(quán)重初始化,文本編碼器以 BERT-Base 的權(quán)重初始化。使用 2880 的 Batch Size 訓(xùn)練 20 Epochs。
預(yù)訓(xùn)練數(shù)據(jù)集和 ALBEF 一樣:
使用下面4個數(shù)據(jù)集,圖片數(shù)加起來大概是 4M。
-
Conceptual Captions -
SBU Captions -
COCO -
Visual Genome
還引入了噪聲更大的 Conceptual 12M 數(shù)據(jù)集,最終將圖像總數(shù)增加到 14.1M (有的數(shù)據(jù)集失效了)。
作者還嘗試了一個額外的 web 數(shù)據(jù)集 LAION ,該數(shù)據(jù)集包含 115M 圖像,具有更多的噪聲文本。
1.6 BLIP 實驗結(jié)果
如下圖3所示,作者比較了在不同數(shù)據(jù)集上預(yù)訓(xùn)練的模型,是一個 CapFilt 的消融實驗結(jié)果。Retrieval 代表檢索任務(wù)的結(jié)果,Caption 代表生成任務(wù)的結(jié)果。
當(dāng)使用 14M 的數(shù)據(jù)集設(shè)置時,聯(lián)合使用字幕器 Captioner 和過濾器 Filter 可以觀察到性能改進(jìn),而且它們的效果相互互補(bǔ),證明了 CapFilt 方法能夠從嘈雜的原始數(shù)據(jù)中提煉出有用的數(shù)據(jù)。
當(dāng)使用更大的數(shù)據(jù)集 129M 的設(shè)置或者更大的模型 ViT-L 時,CapFilt 可以進(jìn)一步提高性能,這驗證了它在數(shù)據(jù)大小和模型大小方面的可擴(kuò)展性。而且,僅僅增加字幕器和過濾器的模型尺寸時,也可以提高性能。
下圖4中,作者展示了一些示例的字幕與對應(yīng)的圖片。 是直接從網(wǎng)絡(luò)上爬取的原始字幕, 是字幕器生成的字幕。圖4中的紅色文本是 Filter 刪除的文本,綠色文本是 Filter 保留下來的文本??梢钥闯鰩讖垐D片里面,紅色的文本不是不好,只是沒有綠色的文本對圖片的描述更加貼切。這個結(jié)果說明了 CapFilt 方法確實是能夠提升圖文對數(shù)據(jù)集的質(zhì)量。
1.7 各個下游任務(wù) BLIP 與其他 VLP 模型的對比
檢索任務(wù)實驗結(jié)果
如下圖5所示是檢索任務(wù)實驗結(jié)果,作者做了兩個數(shù)據(jù)集 COCO 和 Flickr30K。與現(xiàn)有方法相比,BLIP 實現(xiàn)了顯著的性能提升。使用相同的 14M 預(yù)訓(xùn)練圖像,BLIP 在 COCO 上的平均召回率 R@1 上比之前的最佳模型 ALBEF 高出 +2.7%。作者還通過將在 COCO 上微調(diào)的模型直接遷移到 Flickr30K 來做 Zero-Shot Retrieval。結(jié)果如圖6所示,其中 BLIP 的性能也大大優(yōu)于現(xiàn)有的方法。
圖片字幕實驗結(jié)果
如下圖7所示是圖片字幕任務(wù)實驗結(jié)果,作者做了兩個數(shù)據(jù)集 NoCaps 和 COCO,兩者都使用在 COCO 上微調(diào)的模型和 LM 損失進(jìn)行評估。作者遵循 SimVLM 的做法在每個字幕的開頭添加了一個提示 "a picture of",發(fā)現(xiàn)這樣使得結(jié)果更好了。使用了 14M 預(yù)訓(xùn)練圖像的 BLIP 大大優(yōu)于使用相似數(shù)量預(yù)訓(xùn)練數(shù)據(jù)的方法。使用了 129M 圖像的 BLIP 實現(xiàn)了與使用了 200M 的 LEMON 相比具有競爭力的性能。值得注意的是,LEMON 需要很耗費計算量的預(yù)訓(xùn)練的目標(biāo)檢測器和更高分辨率 (800×1333) 的輸入圖像,導(dǎo)致推理時間比使用低分辨率 (384×384) 輸入圖像的無檢測器 BLIP 慢得多。
視覺問答 (Visual Question Answering, VQA) 實驗結(jié)果
VQA 要求模型預(yù)測給定圖像和問題的答案。BLIP 沒有將 VQA 制定為多答案分類任務(wù),而是按照 ALBEF 的做法把 VQA 視為一種答案生成的任務(wù)。結(jié)構(gòu)如下圖8所示,在微調(diào)過程中,作者重新排列預(yù)訓(xùn)練模型,把視覺編碼器的輸出塞進(jìn)文本編碼器,這樣圖像和問題就編碼為了多模態(tài)嵌入,再把這個表征輸入文本解碼器獲得答案。VQA 模型使用真實答案作為目標(biāo)使用 LM 損失進(jìn)行微調(diào)。
結(jié)果如下圖9所示,使用 14M 圖像,BLIP 在測試集上優(yōu)于 ALBEF 1.64%。
自然語言視覺推理 (Natural Language Visual Reasoning, NLVR2) 實驗結(jié)果
自然語言視覺推理任務(wù)要求模型預(yù)測一個句子是否描述了一對圖像,是個二分類任務(wù)。為了能對兩對圖像進(jìn)行推理,作者對預(yù)訓(xùn)練模型進(jìn)行了簡單的修改,如下圖10所示。首先兩個圖片通過視覺編碼器得到視覺特征,再分別通過兩個交叉注意力來處理兩個輸入圖片,并且把它們的輸出合并起來送入 FFN 中。這兩個 Cross-Attention 層是從相同的預(yù)訓(xùn)練權(quán)重初始化的。通過 [Encode] token 的過了 MLP 的輸出完成二分類任務(wù)。
實驗結(jié)果如下圖11所示,BLIP 優(yōu)于所有現(xiàn)有方法,除了 ALBEF 執(zhí)行定制預(yù)訓(xùn)練的額外步驟。但是有趣的是,NLVR2 的性能并沒有從額外的網(wǎng)絡(luò)圖像中受益太多,這可能是由于網(wǎng)絡(luò)數(shù)據(jù)和下游數(shù)據(jù)之間的域差距。
視覺對話 (Visual Dialog, VisDial) 實驗結(jié)果
視覺對話任務(wù)在自然會話設(shè)置中擴(kuò)展了 VQA,其中模型不僅需要基于圖像-問題對預(yù)測答案,還需要考慮對話歷史和圖像的字幕。作者對預(yù)訓(xùn)練模型進(jìn)行了修改,如下圖12所示。圖片先經(jīng)過 Image Encoder 得到視覺表征,Caption Encoder 的輸入是字幕和 [Encode] token,并通過交叉注意力建模它們。Dialog Encoder 的輸入是 [Encode] token,問題 QA 和對話歷史。使用 ITM 損失進(jìn)行二分類式的訓(xùn)練,以區(qū)分問題的答案是真還是假。
實驗結(jié)果如下圖13所示,BLIP 在 VisDial v1.0 驗證集上實現(xiàn)了最先進(jìn)的性能。
公眾號后臺回復(fù)“CNN綜述”獲取67頁綜述深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)
技術(shù)干貨:損失函數(shù)技術(shù)總結(jié)及Pytorch使用示例|深度學(xué)習(xí)有哪些trick?|目標(biāo)檢測正負(fù)樣本區(qū)分策略和平衡策略總結(jié)
實操教程:GPU多卡并行訓(xùn)練總結(jié)(以pytorch為例)|CUDA WarpReduce 學(xué)習(xí)筆記|卷積神經(jīng)網(wǎng)絡(luò)壓縮方法總結(jié)
# 極市平臺簽約作者#
科技猛獸
知乎:科技猛獸
清華大學(xué)自動化系19級碩士
研究領(lǐng)域:AI邊緣計算 (Efficient AI with Tiny Resource):專注模型壓縮,搜索,量化,加速,加法網(wǎng)絡(luò),以及它們與其他任務(wù)的結(jié)合,更好地服務(wù)于端側(cè)設(shè)備。
作品精選
