1. 多模態(tài)超詳細(xì)解讀 (六):BLIP:統(tǒng)一理解和生成的自舉多模態(tài)模型

        共 11711字,需瀏覽 24分鐘

         ·

        2023-06-20 11:28

        ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺(tái)
        作者丨科技猛獸
        編輯丨極市平臺(tái)

        極市導(dǎo)讀

         

        BLIP 作為一種新的 VLP 框架可以靈活地在視覺理解任務(wù)上和生成任務(wù)上面遷移,并且提出了一種高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法。 >>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

        本文目錄

        1 BLIP:統(tǒng)一理解和生成的自舉多模態(tài)模型
        (來自 Salesforce)
        1.1 背景和動(dòng)機(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í)驗(yàn)設(shè)置
        1.6 BLIP 實(shí)驗(yàn)結(jié)果
        1.7 各個(gè)下游任務(wù) BLIP 與其他 VLP 模型的對(duì)比

        太長(zhǎng)不看版

        BLIP 是一種多模態(tài) Transformer 模型,主要針對(duì)以往的視覺語(yǔ)言訓(xùn)練 (Vision-Language Pre-training, VLP) 框架的兩個(gè)常見問題:

        1. 大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型僅在基于理解的任務(wù)或者基于生成的任務(wù)方面表現(xiàn)出色,很少有可以兼顧的模型。
        2. 大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型為了提高性能,使用從網(wǎng)絡(luò)收集的嘈雜圖像-文本對(duì)擴(kuò)展數(shù)據(jù)集。這樣雖然提高了性能,但是很明顯這個(gè)帶噪聲的監(jiān)督信號(hào)肯定不是最優(yōu)的。

        BLIP 這種新的 VLP 框架可以靈活地在視覺理解任務(wù)上和生成任務(wù)上面遷移,這是針對(duì)第一個(gè)問題的貢獻(xiàn)。至于第二個(gè)問題,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 背景和動(dòng)機(jī)

        視覺語(yǔ)言訓(xùn)練 (Vision-Language Pre-training, VLP) 最近在各種多模態(tài)下游任務(wù)上取得了巨大的成功。然而,現(xiàn)有方法有兩個(gè)主要限制:

        1. 模型層面: 大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型僅在基于理解的任務(wù)或者基于生成的任務(wù)方面表現(xiàn)出色,很少有可以兼顧的模型。比如,基于編碼器的模型,像 CLIP,ALBEF 不能直接轉(zhuǎn)移到文本生成任務(wù) (比如圖像字幕),而基于編碼器-解碼器的模型,像 SimVLM 不能直接用于圖像文本檢索任務(wù)。
        2. 數(shù)據(jù)層面: 大多數(shù)現(xiàn)有的預(yù)訓(xùn)練模型為了提高性能,使用從網(wǎng)絡(luò)收集的嘈雜圖像-文本對(duì)擴(kuò)展數(shù)據(jù)集。這樣雖然提高了性能,但是很明顯這個(gè)帶噪聲的監(jiān)督信號(hào)肯定不是最優(yōu)的。

        本文提出了 BLIP:Bootstrapping LanguageImage Pre-training,用于統(tǒng)一的視覺語(yǔ)言理解和生成。BLIP 是一種新的 VLP 框架,與現(xiàn)有的方法相比,它可以實(shí)現(xiàn)更廣泛的下游任務(wù)。它分別從模型和數(shù)據(jù)的角度引入了兩個(gè)貢獻(xiàn):

        1. BLIP 提出了一種編碼器-解碼器混合架構(gòu) (Multimodal mixture of Encoder-Decoder, MED),MED 的特點(diǎn)是很靈活,它既可以作為單模態(tài)的編碼器,又可以作為基于圖像的文本編碼器,或者基于圖像的文本解碼器。BLIP 由三個(gè)視覺語(yǔ)言目標(biāo)聯(lián)合訓(xùn)練:圖像文本的對(duì)比學(xué)習(xí)、圖像文本匹配和圖像條件語(yǔ)言建模。
        2. 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,看上去稍微有點(diǎn)復(fù)雜,一塊一塊拆開看。

        圖1:BLIP 的模型架構(gòu)

        1 視覺編碼器:提取圖片特征

        圖1最左邊的是視覺編碼器,就是 ViT 的架構(gòu)。將輸入圖像分割成一個(gè)個(gè)的 Patch 并將它們編碼為一系列 Image Embedding,并使用額外的 [CLS] token 來表示全局的圖像特征。視覺編碼器不采用之前的基于目標(biāo)檢測(cè)器的形式,因?yàn)?ViLT 和 SimVLM 等工作已經(jīng)證明了 ViT 計(jì)算更加友好。

        2 文本編碼器:提取文本特征

        圖1第2列的是視覺編碼器,就是 BERT 的架構(gòu),其中 [CLS] token 附加到文本輸入的開頭以總結(jié)句子。作用是提取文本特征做對(duì)比學(xué)習(xí)。

        3 視覺文本編碼器:

        圖1第3列的是視覺文本編碼器,使用 Cross-Attention,作用是根據(jù) ViT 給的圖片特征和文本輸入做二分類,所以使用的是編碼器,且注意力部分是雙向的 Self-Attention。添加一個(gè)額外的 [Encode] token,作為圖像文本的聯(lián)合表征。

        4 視覺文本解碼器:

        圖1第4列的是視覺文本解碼器,使用 Cross-Attention,作用是根據(jù) ViT 給的圖片特征和文本輸入做文本生成的任務(wù),所以使用的是解碼器,且注意力部分是 Casual-Attention,目標(biāo)是預(yù)測(cè)下一個(gè) token。添加一個(gè)額外的 [Decode] token 和結(jié)束 token,作為生成結(jié)果的起點(diǎn)和終點(diǎn)。

        一個(gè)需要注意的點(diǎn)是:相同顏色的部分是參數(shù)共享的,即視覺文本編碼器和視覺文本解碼器共享除 Self-Attention 層之外的所有參數(shù)。每個(gè) image-text 在輸入時(shí),image 部分只需要過一個(gè) ViT 模型,text 部分需要過3次文本模型。

        1.3 BLIP 的預(yù)訓(xùn)練目標(biāo)

        BLIP 在預(yù)訓(xùn)練期間聯(lián)合優(yōu)化了3個(gè)目標(biāo),有兩個(gè)理解任務(wù)的目標(biāo)函數(shù)和一個(gè)生成任務(wù)的目標(biāo)函數(shù)。

        對(duì)比學(xué)習(xí)目標(biāo)函數(shù) (Image-Text Contrastive Loss, ITC)

        ITC 作用于1 視覺編碼器 和 2 文本編碼器,目標(biāo)是對(duì)齊視覺和文本的特征空間。方法是使得正樣本圖文對(duì)的相似性更大,負(fù)樣本圖文對(duì)的相似性更低,在 ALBEF 里面也有使用到。作者在這里依然使用了 ALBEF 中的動(dòng)量編碼器,它的目的是產(chǎn)生一些偽標(biāo)簽,輔助模型的訓(xùn)練。

        圖文匹配目標(biāo)函數(shù) (Image-Text Matching Loss, ITM)

        ITM 作用于1 視覺編碼器 和 3 視覺文本編碼器,目標(biāo)是學(xué)習(xí)圖像文本的聯(lián)合表征,以捕獲視覺和語(yǔ)言之間的細(xì)粒度對(duì)齊。ITM 是一個(gè)二分類任務(wù),使用一個(gè)分類頭來預(yù)測(cè)圖像文本對(duì)是正樣本還是負(fù)樣本。作者在這里依然使用了 ALBEF 中的 hard negative mining 技術(shù)。

        語(yǔ)言模型目標(biāo)函數(shù) (Language Modeling Loss, LM)

        BLIP 包含解碼器,用于生成任務(wù)。既然有這個(gè)任務(wù)需求,那就意味著需要一個(gè)針對(duì)于生成任務(wù)的語(yǔ)言模型目標(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ì)量的人工注釋圖像-文本對(duì) (例如, COCO) 因?yàn)槌杀靖甙核詳?shù)量不多。最近的工作 ALBEF, SimVLM 利用從網(wǎng)絡(luò)自動(dòng)收集的大量替代的圖文對(duì) 。但是, 這些網(wǎng)絡(luò)的替代數(shù)據(jù)集通常不會(huì)準(zhǔn)確地描述圖像的視覺內(nèi)容, 質(zhì)量相對(duì)嘈雜, 帶噪聲的監(jiān)督信號(hào)肯定不是最優(yōu)的。

        BLIP 這里提出了一種高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法:Captioning and Filtering,CapFilt。

        圖2:高效率利用噪聲網(wǎng)絡(luò)數(shù)據(jù)的方法 CapFilt

        CapFilt 方法如上圖2所示。它包含兩個(gè)模塊:

        字幕器 Captioner: 給一張網(wǎng)絡(luò)圖片,生成字幕。它是一個(gè)視覺文本解碼器,在 COCO 數(shù)據(jù)集上使用 LM 目標(biāo)函數(shù)微調(diào)。給定網(wǎng)絡(luò)圖片 , Captioner 生成字幕 。

        過濾器 Filter: 過濾掉噪聲圖文對(duì)。它是一個(gè)視覺文本編碼器,看文本是否與圖像匹配,在 COCO 數(shù)據(jù)集上使用 ITC 和 ITM 目標(biāo)函數(shù)微調(diào)。Filter 刪除原始 Web 文本 和合成文本 中的嘈雜文本,如果 ITM 頭將其預(yù)測(cè)為與圖像不匹配,則認(rèn)為文本有噪聲。

        最后,將過濾后的圖像-文本對(duì)與人工注釋對(duì)相結(jié)合,形成一個(gè)新的數(shù)據(jù)集,作者用它來預(yù)訓(xùn)練一個(gè)新的模型。

        1.5 BLIP 實(shí)驗(yàn)設(shè)置

        BLIP 在兩個(gè) 16-GPU 節(jié)點(diǎn)上面做預(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個(gè)數(shù)據(jù)集,圖片數(shù)加起來大概是 4M。

        • Conceptual Captions
        • SBU Captions
        • COCO
        • Visual Genome

        還引入了噪聲更大的 Conceptual 12M 數(shù)據(jù)集,最終將圖像總數(shù)增加到 14.1M (有的數(shù)據(jù)集失效了)。

        作者還嘗試了一個(gè)額外的 web 數(shù)據(jù)集 LAION ,該數(shù)據(jù)集包含 115M 圖像,具有更多的噪聲文本。

        1.6 BLIP 實(shí)驗(yàn)結(jié)果

        如下圖3所示,作者比較了在不同數(shù)據(jù)集上預(yù)訓(xùn)練的模型,是一個(gè) CapFilt 的消融實(shí)驗(yàn)結(jié)果。Retrieval 代表檢索任務(wù)的結(jié)果,Caption 代表生成任務(wù)的結(jié)果。

        當(dāng)使用 14M 的數(shù)據(jù)集設(shè)置時(shí),聯(lián)合使用字幕器 Captioner 和過濾器 Filter 可以觀察到性能改進(jìn),而且它們的效果相互互補(bǔ),證明了 CapFilt 方法能夠從嘈雜的原始數(shù)據(jù)中提煉出有用的數(shù)據(jù)。

        當(dāng)使用更大的數(shù)據(jù)集 129M 的設(shè)置或者更大的模型 ViT-L 時(shí),CapFilt 可以進(jìn)一步提高性能,這驗(yàn)證了它在數(shù)據(jù)大小和模型大小方面的可擴(kuò)展性。而且,僅僅增加字幕器和過濾器的模型尺寸時(shí),也可以提高性能。

        圖3:CapFilt 的消融實(shí)驗(yàn)結(jié)果

        下圖4中,作者展示了一些示例的字幕與對(duì)應(yīng)的圖片。 是直接從網(wǎng)絡(luò)上爬取的原始字幕, 是字幕器生成的字幕。圖4中的紅色文本是 Filter 刪除的文本,綠色文本是 Filter 保留下來的文本??梢钥闯鰩讖垐D片里面,紅色的文本不是不好,只是沒有綠色的文本對(duì)圖片的描述更加貼切。這個(gè)結(jié)果說明了 CapFilt 方法確實(shí)是能夠提升圖文對(duì)數(shù)據(jù)集的質(zhì)量。

        圖4:一些示例的字幕與對(duì)應(yīng)的圖片,展示 Filter 的作用

        1.7 各個(gè)下游任務(wù) BLIP 與其他 VLP 模型的對(duì)比

        檢索任務(wù)實(shí)驗(yàn)結(jié)果

        如下圖5所示是檢索任務(wù)實(shí)驗(yàn)結(jié)果,作者做了兩個(gè)數(shù)據(jù)集 COCO 和 Flickr30K。與現(xiàn)有方法相比,BLIP 實(shí)現(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)有的方法。

        圖5:Fine-tuned 檢索任務(wù)實(shí)驗(yàn)結(jié)果
        圖6:Zero-Shot 檢索任務(wù)實(shí)驗(yàn)結(jié)果

        圖片字幕實(shí)驗(yàn)結(jié)果

        如下圖7所示是圖片字幕任務(wù)實(shí)驗(yàn)結(jié)果,作者做了兩個(gè)數(shù)據(jù)集 NoCaps 和 COCO,兩者都使用在 COCO 上微調(diào)的模型和 LM 損失進(jìn)行評(píng)估。作者遵循 SimVLM 的做法在每個(gè)字幕的開頭添加了一個(gè)提示 "a picture of",發(fā)現(xiàn)這樣使得結(jié)果更好了。使用了 14M 預(yù)訓(xùn)練圖像的 BLIP 大大優(yōu)于使用相似數(shù)量預(yù)訓(xùn)練數(shù)據(jù)的方法。使用了 129M 圖像的 BLIP 實(shí)現(xiàn)了與使用了 200M 的 LEMON 相比具有競(jìng)爭(zhēng)力的性能。值得注意的是,LEMON 需要很耗費(fèi)計(jì)算量的預(yù)訓(xùn)練的目標(biāo)檢測(cè)器和更高分辨率 (800×1333) 的輸入圖像,導(dǎo)致推理時(shí)間比使用低分辨率 (384×384) 輸入圖像的無檢測(cè)器 BLIP 慢得多。

        圖7:圖片字幕實(shí)驗(yàn)結(jié)果

        視覺問答 (Visual Question Answering, VQA) 實(shí)驗(yàn)結(jié)果

        VQA 要求模型預(yù)測(cè)給定圖像和問題的答案。BLIP 沒有將 VQA 制定為多答案分類任務(wù),而是按照 ALBEF 的做法把 VQA 視為一種答案生成的任務(wù)。結(jié)構(gòu)如下圖8所示,在微調(diào)過程中,作者重新排列預(yù)訓(xùn)練模型,把視覺編碼器的輸出塞進(jìn)文本編碼器,這樣圖像和問題就編碼為了多模態(tài)嵌入,再把這個(gè)表征輸入文本解碼器獲得答案。VQA 模型使用真實(shí)答案作為目標(biāo)使用 LM 損失進(jìn)行微調(diào)。

        圖8:VQA 下游任務(wù)的 BLIP 架構(gòu)

        結(jié)果如下圖9所示,使用 14M 圖像,BLIP 在測(cè)試集上優(yōu)于 ALBEF 1.64%。

        圖9:VQA 下游任務(wù)實(shí)驗(yàn)結(jié)果

        自然語(yǔ)言視覺推理 (Natural Language Visual Reasoning, NLVR2) 實(shí)驗(yàn)結(jié)果

        自然語(yǔ)言視覺推理任務(wù)要求模型預(yù)測(cè)一個(gè)句子是否描述了一對(duì)圖像,是個(gè)二分類任務(wù)。為了能對(duì)兩對(duì)圖像進(jìn)行推理,作者對(duì)預(yù)訓(xùn)練模型進(jìn)行了簡(jiǎn)單的修改,如下圖10所示。首先兩個(gè)圖片通過視覺編碼器得到視覺特征,再分別通過兩個(gè)交叉注意力來處理兩個(gè)輸入圖片,并且把它們的輸出合并起來送入 FFN 中。這兩個(gè) Cross-Attention 層是從相同的預(yù)訓(xùn)練權(quán)重初始化的。通過 [Encode] token 的過了 MLP 的輸出完成二分類任務(wù)。

        圖10:NLVR2 下游任務(wù)的 BLIP 架構(gòu)

        實(shí)驗(yàn)結(jié)果如下圖11所示,BLIP 優(yōu)于所有現(xiàn)有方法,除了 ALBEF 執(zhí)行定制預(yù)訓(xùn)練的額外步驟。但是有趣的是,NLVR2 的性能并沒有從額外的網(wǎng)絡(luò)圖像中受益太多,這可能是由于網(wǎng)絡(luò)數(shù)據(jù)和下游數(shù)據(jù)之間的域差距。

        圖11:NLVR2 下游任務(wù)實(shí)驗(yàn)結(jié)果

        視覺對(duì)話 (Visual Dialog, VisDial) 實(shí)驗(yàn)結(jié)果

        視覺對(duì)話任務(wù)在自然會(huì)話設(shè)置中擴(kuò)展了 VQA,其中模型不僅需要基于圖像-問題對(duì)預(yù)測(cè)答案,還需要考慮對(duì)話歷史和圖像的字幕。作者對(duì)預(yù)訓(xùn)練模型進(jìn)行了修改,如下圖12所示。圖片先經(jīng)過 Image Encoder 得到視覺表征,Caption Encoder 的輸入是字幕和 [Encode] token,并通過交叉注意力建模它們。Dialog Encoder 的輸入是 [Encode] token,問題 QA 和對(duì)話歷史。使用 ITM 損失進(jìn)行二分類式的訓(xùn)練,以區(qū)分問題的答案是真還是假。

        圖12:VisDial 下游任務(wù)的 BLIP 架構(gòu)

        實(shí)驗(yàn)結(jié)果如下圖13所示,BLIP 在 VisDial v1.0 驗(yàn)證集上實(shí)現(xiàn)了最先進(jìn)的性能。

        圖13:VisDial 下游任務(wù)實(shí)驗(yàn)結(jié)果


        公眾號(hào)后臺(tái)回復(fù)“CNN綜述”獲取67頁(yè)綜述深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)

        極市干貨

        技術(shù)干貨損失函數(shù)技術(shù)總結(jié)及Pytorch使用示例深度學(xué)習(xí)有哪些trick?目標(biāo)檢測(cè)正負(fù)樣本區(qū)分策略和平衡策略總結(jié)

        實(shí)操教程GPU多卡并行訓(xùn)練總結(jié)(以pytorch為例)CUDA WarpReduce 學(xué)習(xí)筆記卷積神經(jīng)網(wǎng)絡(luò)壓縮方法總結(jié)

        極市平臺(tái)簽約作者#


        科技猛獸

        知乎:科技猛獸


        清華大學(xué)自動(dòng)化系19級(jí)碩士

        研究領(lǐng)域:AI邊緣計(jì)算 (Efficient AI with Tiny Resource):專注模型壓縮,搜索,量化,加速,加法網(wǎng)絡(luò),以及它們與其他任務(wù)的結(jié)合,更好地服務(wù)于端側(cè)設(shè)備。


        作品精選

        搞懂 Vision Transformer 原理和代碼,看這篇技術(shù)綜述就夠了
        用Pytorch輕松實(shí)現(xiàn)28個(gè)視覺Transformer,開源庫(kù) timm 了解一下?。ǜ酱a解讀)
        輕量高效!清華智能計(jì)算實(shí)驗(yàn)室開源基于PyTorch的視頻 (圖片) 去模糊框架SimDeblur



        投稿方式:
        添加小編微信Fengcall(微信號(hào):fengcall19),備注:姓名-投稿
        △長(zhǎng)按添加極市平臺(tái)小編

        覺得有用麻煩給個(gè)在看啦~  

        瀏覽 38
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 水多多成人精品视频 | 好好日AV | 日韩精品啪啪啪 | 黄色片国产在线观看 | 插比网 |