最近ChatGPT風(fēng)頭正勁,但只能理解文字或多或少限制其才華的發(fā)揮。得益于Transformer在NLP和CV領(lǐng)域的大放異彩,多模態(tài)近幾年取得了非常大的進(jìn)步。但之前的工作大多數(shù)局限在幾個(gè)特定的,比如VQA,ITR,VG等任務(wù)上,限制了其應(yīng)用。最近,Junnan Li大佬掛出了他最新的杰作BLIP2。讓我對(duì)多模態(tài)模型有了一些新的認(rèn)識(shí),希望通過(guò)本文分享一下我的想法。由于本身水平有限,加上很長(zhǎng)時(shí)間沒有survey過(guò)相關(guān)領(lǐng)域的論文了,里面大部分的思考可能都是閉門造車,所以不可避免有很多錯(cuò)誤,歡迎大家指正討論。
ALBEF,BLIP,BLIP2 都是 Junnan Li 大佬的杰作,給了我很大的啟發(fā)。ALBEF去掉了笨重的Detector,BLIP統(tǒng)一了理解與生成,BLIP2再次刷新了我的認(rèn)知,感謝大佬!
BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
論文連接:https://arxiv.org/abs/2301.12597
代碼倉(cāng)庫(kù):https://github.com/salesforce/LAVIS/tree/main/projects/blip2
HF上的Demo:
https://huggingface.co/spaces/Salesforce/BLIP2
TL,DR
實(shí)現(xiàn)了開放性的多模態(tài)內(nèi)容理解與生成,讓我們有了更多的想象空間;
從新的視角去看待圖文模態(tài),引入了LLM模型。CV模型是傳感器,負(fù)責(zé)感知,LLM模型是處理器,負(fù)責(zé)處理;
相對(duì)友好的計(jì)算資源,比起動(dòng)輒幾百?gòu)埧ǖ拇竽P?,BLIP 2 最大的模型也不過(guò)16張A100 40G;
傳統(tǒng)圖文任務(wù)上性能爆表;
從泰坦尼克號(hào)說(shuō)起
BLIP2模型的多模態(tài)問(wèn)答
開始前介紹論文前我們先來(lái)討論下,實(shí)現(xiàn)圖片中的問(wèn)答,需要什么能力呢?
圖片里發(fā)生了什么:一位男士在船頭摟著一位女士。(感知-CV模型的能力)
問(wèn)題問(wèn)的什么:電影的結(jié)尾是什么?(感知-NLP模型的能力)
圖片和電影有什么關(guān)系:這是泰坦尼克號(hào)里的經(jīng)典鏡頭。(對(duì)齊融合-多模態(tài)模型的能力)
電影的結(jié)尾是什么:泰坦尼克號(hào)沉沒了。(推理-LLM模型的能力)
對(duì)不同模型扮演角色的理解
從上面的問(wèn)題可以看出,為了解決這個(gè)問(wèn)題,需要幾個(gè)模型配合一下。其實(shí)自從多模態(tài)模型(特別是圖文多模態(tài)模型)出現(xiàn),模態(tài)之間怎么配合就是個(gè)問(wèn)題。
ViLBERT
19年20年的時(shí)候,ViLBERT和Uniter采用了Object-Text對(duì)來(lái)提升模型對(duì)圖片的理解能力。Object的引入,不可避免的需要一個(gè)笨重的檢測(cè)器,去檢測(cè)各種框,使得圖像模態(tài)顯得比較笨重。而且檢測(cè)器模型不可避免的會(huì)存在漏檢的問(wèn)題,可以參考后來(lái)Open-Vocabulary一些工作,比如ViLD。這一階段,顯然對(duì)圖像的理解是多模態(tài)的重頭戲,文本更多是輔助圖像任務(wù)的理解。
ViLT
到了21年22年,去掉檢測(cè)器成了主流,ViLT,ALBEF,VLMo,BLIP 等等都拋棄了檢測(cè)器,徹底擺脫了CNN網(wǎng)絡(luò)的舒服,全面擁抱Transformer,當(dāng)然這也得益于本身ViT模型在CV領(lǐng)域的大放光彩,讓兩個(gè)模態(tài)的有機(jī)融合成為了可能。在這一階段,文本模態(tài)感覺已經(jīng)可以和圖像模態(tài)平起平坐了。從在各項(xiàng)具體下游任務(wù)(VQA、VG、ITR)的實(shí)際表現(xiàn)上來(lái)說(shuō),已經(jīng)比較令人滿意了。但總感覺差點(diǎn)味道,就是復(fù)雜推理。比如VQA上的問(wèn)題,大多數(shù)是簡(jiǎn)單的邏輯計(jì)算或識(shí)別,感覺還不夠智能。
那么如何實(shí)現(xiàn)更加復(fù)雜的推理呢?眾所周知,NLP領(lǐng)域一直領(lǐng)先于CV領(lǐng)域的發(fā)展。得益于更豐富的語(yǔ)料庫(kù),NLP領(lǐng)域的已經(jīng)擁有了一些具有初步推理能力模型的研究,特別是LLM大模型的出現(xiàn)。(今天谷歌剛剛發(fā)布了22B的ViT,而在NLP領(lǐng)域這個(gè)規(guī)模的模型應(yīng)該已經(jīng)不算新聞了。)我對(duì)于LLM能力有多強(qiáng)的理解,其實(shí)也是ChatGPT之后才有明確的感知。
BLIP2
23年1月,BLIP2出來(lái)了,引入了LLM。從圖像上看,BLIP2大概由這么幾個(gè)部分組成,圖像(Image)輸入了圖像編碼器(Image Encoder),得到的結(jié)果與文本(Text)在Q-Former(BERT初始化)里進(jìn)行融合,最后送入LLM模型。我是學(xué)自動(dòng)化出身的,從自動(dòng)化的角度看看BLIP2。
圖像和文本:自然信號(hào);
圖像編碼器(Image Encoder):傳感器(圖像);
Q-Former:傳感器(文本)+ 融合算法(Query);
LLM:處理器。
之前的模型大多都關(guān)注在了傳感器和融合算法的設(shè)計(jì)上,但忽略了處理器的重要作用。BERT模型雖然能理解文本,但卻沒有世界觀的概念,沒有龐大的背景知識(shí)庫(kù),只能作一個(gè)傳感器。只有LLM模型,才能實(shí)現(xiàn)這一角色,統(tǒng)一起各個(gè)模態(tài)的信號(hào),從一個(gè)宏觀的角度去看待這個(gè)問(wèn)題。這里引用一段原文中的話。
Powered by LLMs (e.g. OPT (Zhang et al., 2022), FlanT5 (Chung et al., 2022)), BLIP-2 can be prompted to perform zero-shot image-to-text generation that follows natural language instructions, which enables emerging capabilities such as visual knowledge reasoning, visual conversation, etc.
目前看,或許LLM就是下一代多模態(tài)模型的關(guān)鍵一環(huán)。
言歸正傳,我們開始介紹論文。
如何統(tǒng)一多模態(tài)的表征
LLM本質(zhì)上是個(gè)語(yǔ)言模型,自然無(wú)法直接接受其他模態(tài)的信息。所以如何把各個(gè)模態(tài)的信息,統(tǒng)一到LLM能理解的特征空間,就是第一步要解決的問(wèn)題。為此,作者提出了Q-Former。
Q-Former的設(shè)計(jì)
為了融合特征,那Transformer架構(gòu)是最合適不過(guò)的了。熟悉ALBEF或者BLIP的同學(xué)或許發(fā)現(xiàn),Q-Former的結(jié)構(gòu)和ALBEF其實(shí)很像,如果看代碼的話,可以發(fā)現(xiàn)就是在ALBEF基礎(chǔ)上改的。
相較于ALBEF,最大的不同,就是Learned Query的引入??梢钥吹竭@些Query通過(guò)Cross-Attention與圖像的特征交互,通過(guò)Self-Attention與文本的特征交互。這樣做的好處有兩個(gè):(1)這些Query是基于兩種模態(tài)信息得到的;(2)無(wú)論多大的視覺Backbone,最后都是Query長(zhǎng)度的特征輸出,大大降低了計(jì)算量。比如在實(shí)際實(shí)驗(yàn)中,ViT-L/14的模型的輸出的特征是257x1024的大小,最后也是32x768的Query特征。
這里其實(shí)有點(diǎn)疑問(wèn),也歡迎大家討論。論文里是這樣講的:
This bottleneck architecture works together with our pre-training objectives into forcing the queries to extract visual information that is most relevant to the text.
作者通過(guò)Q-Former強(qiáng)制讓Query提取文本相關(guān)的特征,但如果在推理時(shí)沒有文本先驗(yàn),那什么樣的特征算是相關(guān)的呢?
針對(duì)Q-Former的三個(gè)訓(xùn)練任務(wù)分別是 Image-Text Contrastive Learning (ITC),Image-grounded Text Generation (ITG),Image-Text Matching (ITM)。其中 ITC 和 ITM 任務(wù),與ALBEF中的實(shí)現(xiàn)類似,只不過(guò)圖像特征改為了Query的特征,具體可以參考代碼實(shí)現(xiàn)(ITC和ITM)。這里比較特別的是ITG任務(wù),與ALBEF中的MLM不同,這里改成了生成整句Text的任務(wù),類似Captioning,具體代碼實(shí)現(xiàn)ITG。實(shí)際上,這幾個(gè)任務(wù)都是以Query特征和文本特征作為輸入得到的,只不過(guò)有不同的Mask組合,具體可以參考上圖中的右圖。
第一階段,對(duì)于模型的訓(xùn)練,就是由以上三個(gè)任務(wù)組成,通過(guò)這幾個(gè)任務(wù),實(shí)現(xiàn)了對(duì)于特征的提取與融合。但現(xiàn)在模型還沒見過(guò)LLM。我們現(xiàn)在用傳感器完成了數(shù)據(jù)的提取與融合,下一步,我們得把數(shù)據(jù)轉(zhuǎn)換成處理器能識(shí)別的格式。
變成LLM認(rèn)識(shí)的樣子
第二階段的訓(xùn)練架構(gòu)
通過(guò)第一階段的訓(xùn)練,Query已經(jīng)濃縮了圖片的精華,現(xiàn)在要做的,就是把Query變成LLM認(rèn)識(shí)的樣子。
為什么不讓LLM認(rèn)識(shí)Query,而讓Query變成LLM認(rèn)識(shí)呢?這里的原因有兩:(1)LLM模型的訓(xùn)練代價(jià)有點(diǎn)大;(2)從 Prompt Learning 的觀點(diǎn)來(lái)看,目前多模態(tài)的數(shù)據(jù)量不足以保證LLM訓(xùn)練的更好,反而可能會(huì)讓其喪失泛化性。如果不能讓模型適應(yīng)任務(wù),那就讓任務(wù)來(lái)適應(yīng)模型。
這里作者針對(duì)兩類不同LLM設(shè)計(jì)了不同的任務(wù):
Decoder類型的LLM(如OPT):以Query做輸入,文本做目標(biāo);
Encoder-Decoder類型的LLM(如FlanT5):以Query和一句話的前半段做輸入,以后半段做目標(biāo);
為了適合各模型不同的Embedding維度,作者引入了一個(gè)FC層做維度變換。
至此,模型兩階段的訓(xùn)練方法就介紹完了。
訓(xùn)練細(xì)節(jié)
作為圖文預(yù)訓(xùn)練的工作,工程問(wèn)題往往是關(guān)鍵。BLIP2的訓(xùn)練過(guò)程主要由以下幾個(gè)值得關(guān)注的點(diǎn):
訓(xùn)練數(shù)據(jù)方面:包含常見的 COCO,VG,SBU,CC3M,CC12M 以及 115M的LAION400M中的圖片。采用了BLIP中的CapFilt方法來(lái)Bootstrapping訓(xùn)練數(shù)據(jù)。
CV模型:選擇了CLIP的ViT-L/14和ViT-G/14,特別的是,作者采用倒數(shù)第二層的特征作為輸出。
LLM模型:選擇了OPT和FlanT5的一些不同規(guī)模的模型。
訓(xùn)練時(shí),CV模型和LLM都是凍結(jié)的狀態(tài),并且參數(shù)都轉(zhuǎn)為了FP16。這使得模型的計(jì)算量大幅度降低。主要訓(xùn)練的基于BERT-base初始化的Q-Former只有188M的參數(shù)量。
最大的模型,ViT-G/14和FlanT5-XXL,只需要16卡A100 40G,訓(xùn)練6+3天就可以完成。
所有的圖片都被縮放到224x224的大小。
實(shí)驗(yàn)部分
作者首先用了整整一頁(yè)的篇幅,為我們展示了BLIP2的 instructed zero-shot image-to-text generation 能力。這里暫且按下不表,到后面一起討論。我們先看看BLIP2在傳統(tǒng)的一些圖文任務(wù)上的效果。
Image Captioning
Captioning 實(shí)驗(yàn)結(jié)果
作者用圖片配合文字 prompt “a photo of”作為模型的輸入。訓(xùn)練過(guò)程中凍結(jié)LLM,訓(xùn)練Q-Former和CV模型??梢钥吹?,在域內(nèi)數(shù)據(jù)集(COCO)上,其表現(xiàn)并沒有非常亮眼,但在域外數(shù)據(jù)集NoCaps上,BLIP2顯示出了強(qiáng)大的泛化能力,相交之前的模型有明顯的提升。
Visual Question Answering
VQA 實(shí)驗(yàn)結(jié)果
VQA 任務(wù) Pipeline
訓(xùn)練的參數(shù)和IC任務(wù)一致,主要是Q-Former和ViT。不同的是,Q-Former和LLM都有Question作為文本輸入。Q-Former的文本輸入,保證了Query提取到的特征更加的精煉。
Image-Text Retrieval
Image-Text Retrieval 實(shí)驗(yàn)結(jié)果
ITR任務(wù),作者只采用了第一階段的Q-Former和ViT來(lái)做,沒有引入LLM。具體的做法與ALBEF類似,先通過(guò)ITC任務(wù)算出點(diǎn)積相似度,再取Topk的匹配對(duì),作ITM任務(wù),得到最后的Matching Score。Flickr30K上再次刷新了SOTA,特別是I2T,基本飽和了。
Instructed Zero-shot Image-to-Text Generation
我覺得這個(gè)能力才是BLIP2最亮眼的地方。文章中是這樣說(shuō)的:
Selected examples of instructed zero-shot image-to-text generation using a BLIP-2 model w/ ViT-G and FlanT5XXL, where it shows?a wide range of capabilities including visual conversation, visual knowledge reasoning, visual commensense reasoning, storytelling, personalized image-to-text generation, etc.
首先我們來(lái)看看BLIP2對(duì)信息的檢索能力,下面幾個(gè)例子都是對(duì)圖片中物體的背景知識(shí)提問(wèn),可以看到,模型都給出了相應(yīng)的答案。這里體現(xiàn)的實(shí)際上是LLM強(qiáng)大的背景知識(shí)庫(kù)。圖中有什么(ViT)+ 問(wèn)的是什么(Q-Former,LLM)+ 找答案 (LLM)。
信息檢索能力
下面的幾個(gè)問(wèn)題,都是要求模型對(duì)圖片的內(nèi)容進(jìn)行進(jìn)一步的推理。比如圖二,需要建立對(duì)男人驚訝和雞之間的因果聯(lián)系。
事實(shí)推理能力
最后的幾個(gè)問(wèn)題是開放性的生成問(wèn)題。需要模型有一定的長(zhǎng)文本生成能力。
開放生成問(wèn)題
為了進(jìn)一步探索BLIP2模型的效果,我也自己測(cè)試了一些Demo,這里采用的是ViT-G和FlanT5的模型組合,Hugging Face 上提供的CKPT加起來(lái)有50G左右了,作為一個(gè)平時(shí)接觸CV多一點(diǎn)的人來(lái)看,是想當(dāng)炸裂的,一般我模型的CKPT和最后那個(gè)零頭差不多。
模型參數(shù)文件
先介紹一下測(cè)試的輸入格式,這里主要參考:
GitHub - NielsRogge/Transformers-Tutorials: This repository contains demos I made with the Transformers library by HuggingFace.
我測(cè)試了如下形式的輸入樣例,其中比較特別的是Incontext Learning,這里除了圖片中的信息,我還會(huì)給出一段文本中的信息,希望模型通過(guò)綜合兩個(gè)模態(tài)的信息給出答案。
Single-question answering
Template:"Question: {} Answer:"
Input: [Query, Template]
Multi-questions answering
Context: "Question: {} Answer: {}."
Template: "Question: {} Answer: "
Input: [Query, Context, Template]
Incontext Learning
Template: "Context: {} Question: {}"
Input: [Query, Template]
Instructed Generation
Input: [Query, Command]
下面是一些測(cè)試樣例以及有趣的發(fā)現(xiàn)。粗體為模型的輸出結(jié)果。
樣例:Airbus 380
首先,我們問(wèn)幾個(gè)簡(jiǎn)單的問(wèn)題
Q: What type of aircraft is this?
A: a a380
Q: What are the characteristics of this type of aircraft?
A: the a380 is the largest commercial passenger airline.
可以看到BLIP2基本給出了正確的回答,但當(dāng)我詢問(wèn)飛機(jī)載客量時(shí),模型確依然給出了380,推測(cè)可能是這個(gè)飛機(jī)和380這個(gè)數(shù)字的聯(lián)系比較緊密。
Q: How many people can this aircraft accommodate?
A: 380
于是,同樣的問(wèn)題,我們給出一點(diǎn)文字上的提示,這里摘取了一段Wiki上的介紹送入模型。
C: The Airbus A380 is a large wide-body airliner that was developed and produced by Airbus. It is the world's largest passenger airliner and only full-length double-deck jet airliner. Airbus studies started in 1988, and the project was announced in 1990 to challenge the dominance of the Boeing 747 in the long-haul market. The full-length double-deck aircraft has a typical seating for 525 passengers, with a maximum certified capacity for 853 passengers.
Q: How many people can the aircraft in this figure accommodate?
A: 853
這時(shí),我們可以看到,模型成功的給出了回答。也就是說(shuō),模型有聯(lián)合兩個(gè)模態(tài)信息聯(lián)合推理的能力。如果我們使點(diǎn)壞呢,比如給出錯(cuò)誤的Context。
C: The Airbus A350 is a long-range, wide-body twin-engine jet airliner developed and produced by Airbus.
Q: What type of aircraft is this figure?
A: airbus a350
可以看到,模型輸出了錯(cuò)誤的答案??赡苡捎诒旧鞮LM對(duì)文字更加關(guān)注,而且Figure的概念可能對(duì)他來(lái)說(shuō)并不熟悉,在他看來(lái),32個(gè)Query只不過(guò)是帶Visual信息的Word Token。
樣例:交通標(biāo)志
在這個(gè)樣例中,我們直接讓模型自己生成個(gè)問(wèn)題。
Q: Give me several question about the figure.
A: What is the speed limit on the road?
接著,我們問(wèn)問(wèn)看,模型自己知道答案么?
Q: What is the speed limit on the road?
A: 40 mph.
可以看到,模型準(zhǔn)確地給出了限速。接著我們讓他做一些簡(jiǎn)單邏輯判斷。
Q: Can I drive 70 mph here?
A: No.
Q: Can I drive 30 mph here?
A: Yes.
模型竟然都能夠正確的給出答案。最后,來(lái)個(gè)OCR的任務(wù),讓模型輸出牌子上寫了什么。
Q: What is written on this sign?
A: speed limit 40.
模型同樣也給出了正確的答案。可以看到,模型對(duì)于邏輯判斷和圖片中文字的識(shí)別,都有一定的基礎(chǔ)。
樣例:表格
這里先用文章中自己的表格做測(cè)試。
Q: What is the name of the table?
A: a comparison of the mri and ct scans.
Emmm,屬于是自家人不認(rèn)自家人了。問(wèn)問(wèn)他認(rèn)識(shí)自己不?
Q: Do you know BLIP2?
A: BLIP2 is a protein that in humans is encoded by the BLIP2 gene.
好吧,不認(rèn)識(shí)。接著又有一些問(wèn)題,模型的回答也不是很好。
Q: Which model in the table performs best?
A: dcm vs dcm vs dcm vs dcm vs dcm vs dcm.
Q: How many training parameters does BLIP2 have?
A: BLIP2 has a total of ten training parameters.
原因的話,其實(shí)比較好理解,表格的圖片相對(duì)于自然圖像的Gap較大,模型本身可能缺乏相應(yīng)的訓(xùn)練數(shù)據(jù);其次,雖然32的Query使得信息變得精煉,但也使得模型的表達(dá)能力有了瓶頸,加上224x224的大小,這種小文字的識(shí)別其實(shí)是比較困難的。我們看下個(gè)例子。
樣例:圖表1
我們讓模型自己?jiǎn)杺€(gè)問(wèn)題。
Q: Give me several question about the figure
A: What is the percentage of survival for those with no adolescent treatment?
可以看到,模型提問(wèn)的大致方向是可以的,比如存活率。但是圖表中的Adjuvant Treatment卻被識(shí)別成了adolescent treatment。這說(shuō)明,模型有一定的OCR能力,但不多。尤其是對(duì)于這種比較小又不常見的文字,很容易識(shí)別錯(cuò)誤。
樣例:圖表2
同樣,先讓模型自己?jiǎn)杺€(gè)問(wèn)題。
C: Caption: Fig. 3. The hospitalization and ICU ?gures from our simulation.
Q: Give me several question about the figure
A: What is the population of the city?
自問(wèn)自答一下。
C: Caption: Fig. 3. The hospitalization and ICU ?gures from our simulation.
Q: What is the population of the city?
A: NYC population 8 million.
從這里不難看出,模型其實(shí)對(duì)于常見的單詞,即使圖片比較小也能夠很好地識(shí)別到。最后來(lái)個(gè)最難的。
Q: On day 20, approximately how many people were hospitalized?
A: 200, 000.
這個(gè)問(wèn)題的要求其實(shí)挺高,需要模型根據(jù)坐標(biāo)去推斷數(shù)值,不出意外的回答錯(cuò)誤了。
Limitation
首先,不可否認(rèn)的是,這篇工作確實(shí)讓我們的想象空間更多了,尤其是 Instructed Zero-shot Image-to-Text Generation 的能力,我覺得肯定還有沒有發(fā)現(xiàn)的潛在能力。但我們從測(cè)試樣例中也看到,模型還存在一些問(wèn)題。在文章中,作者也給出了一些Bad Case,比如錯(cuò)誤的建立聯(lián)系,錯(cuò)誤的推斷依據(jù)以及過(guò)時(shí)的知識(shí)庫(kù)。
Bad Case
作者在文中對(duì)自己模型的不足主要解釋為,首先,
However, our experiments with BLIP-2?do not observe an improved VQA performance when providing the LLM with in-context VQA examples.?We attribute the lack of in-context learning capability to our pretraining dataset, which only contains a single image-text pair per sample.
由于圖文數(shù)據(jù)集大多數(shù)是一對(duì)一的匹配,所以很難讓模型建立上下文的聯(lián)系。
其次,
BLIP-2's image-to-text generation could have unsatisfactory results due to various reasons including inaccurate knowledge from the LLM, activating the incorrect reasoning path, or not having up-to-date information about new image content.
這個(gè)主要是由于LLM模型本身局限決定的。
除了作者提到的幾點(diǎn),我覺得一下幾點(diǎn)也是可以探索的:
細(xì)粒度的識(shí)別,由于圖像的信息都濃縮在了32個(gè)Query中,所以能否識(shí)別細(xì)粒度信息以及圖像中重要的位置信息就成了疑問(wèn);
更多的任務(wù),BLIP2強(qiáng)大zero-shot能力,能不能應(yīng)用在更多的任務(wù)上,多模態(tài)的類似VG,單模態(tài)的類似Classification。
當(dāng)然從傳感器與處理器的角度去看,其他模態(tài)(比如Audio)也可以拿個(gè)傳感器去測(cè),然后送給處理器分析分析hhh
當(dāng)然,BLIP2的能力應(yīng)該還遠(yuǎn)遠(yuǎn)沒有被挖掘完,等有新的認(rèn)識(shí)了再分享。
編輯:黃飛
?
評(píng)論