極市導(dǎo)讀
本文作者基于CLIP進(jìn)行多類型圖文聯(lián)合檢索,并實(shí)現(xiàn)了CLIP注意力機(jī)制的可視化,便于對(duì)CLIP檢索結(jié)果進(jìn)行分析,附有項(xiàng)目地址。 >>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿
上月,由OpenAI開源的大規(guī)模圖文預(yù)訓(xùn)練模型CLIP憑借其優(yōu)越的性能,已經(jīng)取得大量關(guān)注,并在社區(qū)得到了廣泛討論。
CLIP(Contrastive Language-Image Pre-Training)是由OpenAI開源基于對(duì)比學(xué)習(xí)的大規(guī)模圖文預(yù)模型,其中CLIP的文本和圖像編碼器都是基于transformer結(jié)構(gòu),圖文的相似度直接使用文本和圖像特征的余弦相似度,代碼層面上實(shí)現(xiàn)難度不大。整個(gè)項(xiàng)目最大的亮點(diǎn)和難點(diǎn)在于OpenAI采集的4個(gè)億的圖文Pair。CLIP已提供官方預(yù)訓(xùn)練模型,但由于CLIP的訓(xùn)練語(yǔ)料主要為英文,所以暫時(shí)不支持別的語(yǔ)言,可以事先使用翻譯模型進(jìn)行翻譯。
此前,已有開發(fā)者基于CLIP模型,開源了一個(gè)使用預(yù)訓(xùn)練CLIP在Unsplash數(shù)據(jù)集上進(jìn)行圖像和視頻的檢索。近日,一位來(lái)自CMU的開發(fā)者基于CLIP進(jìn)行了更多的嘗試,在常規(guī)圖文檢索的基礎(chǔ)上,支持多種類型的圖文聯(lián)合檢索(圖文檢索、以圖搜圖、多文本搜索、圖文聯(lián)合搜索),并實(shí)現(xiàn)了CLIP注意力機(jī)制的可視化,便于對(duì)CLIP檢索結(jié)果進(jìn)行分析。
項(xiàng)目地址:https://github.com/haofanwang/natural-language-joint-query-search
該項(xiàng)目主要基于natural-language-image-search(https://github.com/haltakov/natural-language-image-search),同樣在Unsplash數(shù)據(jù)集上進(jìn)行檢索。作者也提供了Colab Notebook,可以直接運(yùn)行。項(xiàng)目包含兩個(gè)內(nèi)容,一個(gè)是聯(lián)合檢索,一個(gè)是注意力機(jī)制可視化,其中由于可視化階段修改了部分CLIP項(xiàng)目中參數(shù)返回的代碼,所以需要使用作者提供的CLIP版本。具體修改的代碼在model.py,具體細(xì)節(jié)可參考CLIP官方貢獻(xiàn)者在issue(https://github.com/openai/CLIP/issues/18)中給出的建議。
model.py:
https://github.com/haofanwang/natural-language-joint-query-search/blob/acd70e9b8e7b4161edb5ab3dedd45a97a4393ade/CLIP/clip/model.py
本質(zhì)上,CLIP模型檢索的原理是比較特征空間中兩個(gè)特征編碼的余弦相似度,所以并不局限在文本特征與圖像特征的比較。該項(xiàng)目正是基于此進(jìn)行嘗試,作者在實(shí)際測(cè)試中發(fā)現(xiàn),CLIP對(duì)于多特征聯(lián)合檢索,也能夠取得一些不錯(cuò)的結(jié)果。作者提供了一些測(cè)試樣例。
檢索文本:“Tokyo tower at night.”
檢索文本:“People come and go on the street.”
上圖中是給出文本檢索圖像的結(jié)果,這也是最常見的檢索方式??梢钥吹?,CLIP都能夠檢索出非常匹配的圖片。
源圖像是一張街景圖,下圖最左
除了圖文搜索,在現(xiàn)實(shí)場(chǎng)景中,以圖搜圖也是很常見的應(yīng)用場(chǎng)景。上面是作者提供的例子。源圖像(左圖)是一張空曠的街景圖,而檢索結(jié)果(右邊三張)都是非常相似的街景。
文本-圖像以及圖像-圖像的檢索,都是利用了單一特征之間的相似度進(jìn)行檢索,那么如果同時(shí)有多個(gè)文本,每一個(gè)文本都描述獨(dú)立的場(chǎng)景,但希望檢索結(jié)果中盡可能同時(shí)包含多個(gè)場(chǎng)景呢?CLIP是否仍然有效呢?所以在這里,作者還嘗試了聯(lián)合搜索的形式,得到了非常有意思的結(jié)果。
檢索文本1:“Flower”,檢索文本2:“Blue sky”
檢索文本1:“Flower”,檢索文本2:“Bee”
上圖是多文本-圖像的檢索示例。可以看到,檢索的結(jié)果中同時(shí)包含了兩個(gè)獨(dú)立文本描述的主體。而實(shí)現(xiàn)的代碼非常簡(jiǎn)單。首先是對(duì)兩個(gè)文本各自進(jìn)行編碼,然后將兩個(gè)文本特征進(jìn)行線性相加,此外并未進(jìn)行額外的歸一化操作,最后將合并后的特征與圖像進(jìn)行相似度計(jì)算。不同的權(quán)重用于調(diào)整不同文本的重要性。比如在第二個(gè)示例中,“Bee”和“Flower”的權(quán)重分別是2和1,所以可以看到,檢索結(jié)果中會(huì)更突出“蜜蜂”。
檢索圖像:街景圖(無(wú)車輛),下圖最左 檢索文本:“cars”
之前已經(jīng)說到CLIP可以實(shí)現(xiàn)以圖搜圖的效果,在此基礎(chǔ)上,作者還嘗試在文本的限制條件下,進(jìn)行以圖搜圖。上面的示例中,圖像仍然是一張空曠的街景圖,而文本則是“cars”,通過聯(lián)合檢索,可以得到右邊三張包含車輛的接近圖,效果也非常不錯(cuò)。
對(duì)于長(zhǎng)文本,可能包含多個(gè)實(shí)體名詞,那么對(duì)于檢索的結(jié)果,如何知道檢索的依據(jù)是什么呢?所以除了檢索外,作者還提供了CLIP文本的可視化分析,以增強(qiáng)模型的后驗(yàn)可解釋性。單詞的權(quán)重來(lái)自于CLIP模型中的文本編碼器里multi-head attention模塊的權(quán)重,來(lái)可視化文本中每一個(gè)詞匯的重要性(注:關(guān)于attention的權(quán)重是否是有效的可解釋性方法還有待商榷)。以下是作者提供的可視化例子。
檢索文本:“A woman holding an umbrella standing next to a man in a rainy day”
檢索文本:“A red flower is under the blue sky and there is a bee on the flower”
從作者提供的兩個(gè)例子中,可以看到,文本中只有部分單詞得到了較高的權(quán)重,這些單詞基本對(duì)應(yīng)了圖像中的物體。
目前,多模態(tài)檢索、預(yù)訓(xùn)練模型受到越來(lái)越多的關(guān)注,在知乎上也引起關(guān)于“視頻搜索會(huì)成為新的趨勢(shì)嗎”的討論,CLIP在多模態(tài)邁出了第一步,即在大規(guī)模數(shù)據(jù)的情況下,模型對(duì)于圖像和文本的學(xué)習(xí)能力會(huì)很很大的提升。相較于學(xué)術(shù)界常見的圖文匹配數(shù)據(jù)集中,文本通常非常具像化地描述了圖像中出現(xiàn)的各種物體,CLIP使用的文本數(shù)據(jù)噪聲更大,而在實(shí)際測(cè)試階段,也可以發(fā)現(xiàn),CLIP對(duì)于一些偏風(fēng)格的抽象文本也能夠檢索出不錯(cuò)的結(jié)果。CLIP預(yù)計(jì)也會(huì)成為多模態(tài)領(lǐng)域一個(gè)重要的baseline。
視頻搜索會(huì)成為新的趨勢(shì)嗎?
https://www.zhihu.com/question/444565876/answer/1733424884
此外,近期除了OpenAI的CLIP模型外,還有很多多模態(tài)的論文或項(xiàng)目提出,比如南大開源了CPD模型,微軟開源的ClipBERT(這里的Clip與上文的CLIP無(wú)關(guān)),還有結(jié)合CLIP與StyleGAN來(lái)實(shí)現(xiàn)圖像編輯的StyleCLIP。值得一提的是,同樣由OpenAI開源的生成模型DALLE近日也提供了官方代碼??紤]到實(shí)際生活中多模數(shù)據(jù)(最常見包括圖像、語(yǔ)音、文本)的廣泛存在,多模態(tài)未來(lái)預(yù)計(jì)會(huì)有很大應(yīng)用空間。
CPD:
https://github.com/MCG-NJU/CPD-Video
ClipBERT:
https://github.com/jayleicn/ClipBERT
StyleCLIP:
https://github.com/orpatashnik/StyleCLIP
聯(lián)系客服