論文筆記-Learning Transferable Visual Models From Natural Language Supervision(CLIP)

論文地址:https://arxiv.org/abs/2103.00020
博客:https://openai.com/blog/clip/
代碼:https://github.com/OpenAI/CLIP
論文精讀:https://www.bilibili.com/video/BV1SL4y1s7LQ?share_source=copy_web

OpenAI 提出的 CLIP 方法很簡(jiǎn)單,效果卻很好,預(yù)訓(xùn)練的模型可以在分類等視覺任務(wù)上可以在不同數(shù)據(jù)集上 zero-shot 取得很好的結(jié)果,例如,CLIP 在ImageNet 上 Zero-shot 達(dá)到了原始 ResNet-50 的精確度,而不需要使用128萬個(gè)訓(xùn)練實(shí)例中的任何一個(gè)。

1. 引言

許多計(jì)算機(jī)視覺的任務(wù)都是基于類別的,固定的類別限制了模型的通用性和可用性,而文本可以提供更加豐富的監(jiān)督信息。

從文本中直接預(yù)訓(xùn)練的方法在 NLP 上取得了很大的成功,這些預(yù)訓(xùn)練模型的目標(biāo)與任務(wù)無關(guān),因此在結(jié)構(gòu)上不需要與下游數(shù)據(jù)集相關(guān)的輸出頭。但是在視覺中,預(yù)訓(xùn)練模型通常還是在像 ImageNet 這樣有很多標(biāo)簽的數(shù)據(jù)集上做的。那么能用純的文本來引導(dǎo)視覺方面的學(xué)習(xí)嗎?

一些工作曾經(jīng)嘗試過直接從自然語言學(xué)習(xí)圖像表征,但是效果不太好,而作者認(rèn)為,這些方法效果不好的原因是訓(xùn)練規(guī)模太小了(有錢人的思考方式)。

于是本文作者創(chuàng)建了一個(gè)4億(包括圖像-文本對(duì))的新數(shù)據(jù)集,并證明了從零開始訓(xùn)練的 ConVIRT 的簡(jiǎn)化版本,可以訓(xùn)練出一個(gè)效果驚人的預(yù)訓(xùn)練模型,在30個(gè)數(shù)據(jù)集上 zero shot 的表現(xiàn)不輸于一些專門設(shè)計(jì)的網(wǎng)絡(luò),并且更加健壯。

2. 方法

CLIP 的核心思想就是用自然語言來訓(xùn)練一個(gè)比較好的視覺模型。

利用自然語言來訓(xùn)練視覺模型,一方面可以避免使用大規(guī)模的標(biāo)注數(shù)據(jù),數(shù)據(jù)來更容易獲??;另一方面,訓(xùn)練學(xué)到的特征并不只是視覺表征,還有和文本語義的結(jié)合。

在訓(xùn)練之前,作者發(fā)現(xiàn)現(xiàn)有的數(shù)據(jù)集都不夠大,于是先自己搞了個(gè)數(shù)據(jù)集,包含4億對(duì)(圖像、文本)的新數(shù)據(jù)集,叫做 WIT( Web ImageText)。

在訓(xùn)練過程中,作者發(fā)現(xiàn)訓(xùn)練效率是自然語言監(jiān)督成功擴(kuò)展的關(guān)鍵,并根據(jù)這一度量選擇了最終的預(yù)訓(xùn)練方法。

在實(shí)驗(yàn)中作者發(fā)現(xiàn),如果用圖像CNN與文本transformer結(jié)合起直接預(yù)測(cè)圖片的標(biāo)題,這樣的訓(xùn)練效率會(huì)低很多,因?yàn)樗鼈冃枰獙W(xué)習(xí)每張圖對(duì)應(yīng)的文本中“多余”的文字。圖像對(duì)比表征學(xué)習(xí)的最新研究發(fā)現(xiàn),對(duì)比目標(biāo)比相應(yīng)的預(yù)測(cè)目標(biāo)能更好地學(xué)習(xí)表征。于是作者把任務(wù)改成了尋找文本中與圖片最匹配的文本,把預(yù)測(cè)目標(biāo)改成了對(duì)比目標(biāo),發(fā)現(xiàn)效率提高了四倍。

給定一個(gè) batch 包括 N個(gè)(圖像-文本)對(duì),CLIP 的訓(xùn)練目標(biāo)是判斷在一個(gè) batch 中 N×N 個(gè)圖像文本配對(duì)中的哪一對(duì)是匹配的。為此,CLIP 學(xué)習(xí)多模態(tài)嵌入空間,通過聯(lián)合訓(xùn)練圖像編碼器和文本編碼器來最大化 batch 中 N 對(duì)匹配的圖文特征的余弦相似度,同時(shí)最小化 N^2?N 個(gè)錯(cuò)誤對(duì)的余弦相似度。作者在這些相似度上用對(duì)稱的交叉熵?fù)p失進(jìn)行優(yōu)化。

因?yàn)閿?shù)據(jù)集太大了,所以作者并不擔(dān)心過擬合,也不需要用預(yù)訓(xùn)練的權(quán)重初始化編碼器。作者用線性投影來將每個(gè)編碼器的表示映射到多模式嵌入空間。數(shù)據(jù)集的數(shù)據(jù)增強(qiáng)只是用了隨即裁剪。在訓(xùn)練過程中,控制softmax中邏輯數(shù)范圍的溫度參數(shù)被直接優(yōu)化為對(duì)數(shù)參數(shù)化乘法標(biāo)量,以避免轉(zhuǎn)變?yōu)槌瑓?shù)。

圖1 CLIP偽代碼
圖 2 CLIP 預(yù)訓(xùn)練以及 zero-shot transfer 流程

作者考慮了兩種不同的圖像編碼器結(jié)構(gòu)。第一個(gè)是ResNet-50 作為圖像編碼器的基礎(chǔ)架構(gòu),用 ResNet-D 和 antialiased rect-2 blur pooling 對(duì)原始版本進(jìn)行了幾個(gè)修改,還用注意力匯集機(jī)制取代了全局平均匯集層。第二個(gè)是ViT略微做了一些修改。

文本編碼器是一個(gè)修改過的 Transformer。作者使用了一個(gè)63M參數(shù)的寬度512的8頭模型,在文本編碼器中使用了 masked self-attention,以保持使用預(yù)先訓(xùn)練的語言模型初始化或添加語言建模作為輔助目標(biāo)的能力。

作者同樣地分配額外的計(jì)算來增加模型的寬度、深度和分辨率。對(duì)于文本編碼器,只縮放模型的寬度,使其與 ResNet 寬度的計(jì)算增量成正比,而不縮放深度,因?yàn)樽髡甙l(fā)現(xiàn) CLIP 的性能對(duì)文本編碼器的容量不那么敏感。

訓(xùn)練部分的參數(shù)設(shè)置:

  • 5 個(gè) ResNet: ResNet-50,ResNet-101,4xResNet-50, 16xResNet-50, 64xResNet-50
  • 3 個(gè) ViT: ViT-B/32, ViT-B/16, ViT-L/14
  • epochs: 32
  • optimizer: Adam with decoupled weight decay regularization
  • scheduler: cosine schedule
  • 初始超參數(shù):grid search
  • 其他: 半精度,訓(xùn)練好后再在略大一些的336分辨率多訓(xùn)練一個(gè)epoch

最終選擇效果最好的 ViT-L/14@336px,作為后文 CLIP 所指的模型。

3. 實(shí)驗(yàn)

3.1 Zero-Shot Transfer

在計(jì)算機(jī)視覺中,Zero-Shot 學(xué)習(xí)通常指的是在圖像分類中對(duì)沒見過的對(duì)象類別進(jìn)行泛化的研究。而這里作者指的是更廣義的在沒見過的數(shù)據(jù)集上的泛化研究。

與Visual N-gram的對(duì)比

Visual N-gram首先研究了現(xiàn)有圖像分類數(shù)據(jù)集的 zero-shot transfe,它使用了一種通用的預(yù)訓(xùn)練模型,用 zero-shot transfer 到標(biāo)準(zhǔn)圖像分類數(shù)據(jù)集的方法。這也是作者所知的唯一一項(xiàng)研究 zero-shot transfer 到標(biāo)準(zhǔn)圖像分類數(shù)據(jù)集的工作,并且是對(duì)CLIP 的最佳參照。他們的方法學(xué)習(xí)了 142,806 個(gè)視覺 n-grams (跨度為1-5-gram)的字典的參數(shù),并使用 Jelinek-Mercer 平滑的差分版本來優(yōu)化這些n-gram,以最大化給定圖像的所有文本 n-gram 的概率。為了實(shí)現(xiàn) zero-shot transfer,他們首先將數(shù)據(jù)集的每個(gè)類名的文本轉(zhuǎn)換成其n-gram表示,然后根據(jù)他們的模型計(jì)算其概率,預(yù)測(cè)得分最高的那個(gè)。

CLIP 的預(yù)訓(xùn)練方式是預(yù)測(cè)一張圖片和一段文本在其數(shù)據(jù)集中是否匹配。為了實(shí)現(xiàn) zero-shot transfer, 對(duì)于每個(gè)數(shù)據(jù)集,作者使用數(shù)據(jù)集中所有類的名稱作為潛在文本配對(duì)的集合,并用 CLIP 預(yù)測(cè)最可能的(圖像-文本)配對(duì)。

具體可以看上面的圖2的(2)和(3),首先計(jì)算圖像的特征嵌入和可能文本集合的特征嵌入,然后計(jì)算這些嵌入的余弦相似度,用溫度參數(shù)進(jìn)行縮放,并通過Softmax將其歸一化為概率分布。

預(yù)測(cè)層是具有L2歸一化輸入、L2歸一化權(quán)重、無偏差和溫度縮放的多項(xiàng)式 Logistic回歸分類器。圖像編碼器計(jì)算圖像的特征表示,而文本編碼器基于視覺類別的文本來生成線性分類器的權(quán)重。對(duì)于ImageNet上的 zero-shot遷移,文本編碼器需要生成 1000 個(gè)類別的表示,對(duì)于每張圖片,都會(huì)用圖片的特征表示和這 1000 個(gè)文本表示進(jìn)行匹配,最接近的文本特征對(duì)應(yīng)的類別就是圖像屬于的類別。

與 Visual N-Grams 的比較可以看出 CLIP 有很大的提升。 Visual N-Grams 在ImageNet上zero-shot遷移的準(zhǔn)確率是 11.5%,而 CLIP 是76.2% 嗎,相當(dāng)于原始ResNet-50的性能。但是這不是一個(gè)公平的對(duì)比,因?yàn)镃LIP的數(shù)據(jù)集和模型更大,計(jì)算量更多。

Prompt Engineering 和 Ensembling

對(duì)于一些數(shù)據(jù)集,單獨(dú)的一個(gè)標(biāo)簽也許并不能很好的描述圖片的內(nèi)容,比如多義詞的問題,在 Oxford-IIIT Pet 數(shù)據(jù)集里,boxer指的是一種狗,而不是拳擊運(yùn)動(dòng)員。

另一方面,作者的數(shù)據(jù)集中用來描述圖片內(nèi)容的文本通常是一個(gè)句子,而不是一個(gè)單詞,因此作者使用了 “A photo of a {label}.” 的模板來生成文本。這個(gè)方法比只使用標(biāo)簽文本的baseline 性能有所提高,在ImageNet上的準(zhǔn)確率提高了1.3%。此外,如果在文本模板里在多加點(diǎn)信息,例如“A photo of a {label}, a type of pet.”,會(huì)很好的提高效果。

prompt engineering 效果的提升

zero-shot CLIP 的表現(xiàn)
在 27 個(gè)數(shù)據(jù)集上與一個(gè)linear probe的ResNet50的對(duì)比,可以看出在一些比較日常場(chǎng)景的任務(wù)上 CLIP 的表現(xiàn)的更好,在一些更加專業(yè)的、復(fù)雜的數(shù)據(jù)集上,比如德國(guó)交通標(biāo)志識(shí)別(GTSRB),CLIP 表現(xiàn)得不如 ResNet。

綠色的是CLIP表現(xiàn)得更好

與line probe CLIP的比較

3.2 特征學(xué)習(xí)

Fine-tuning 與 linear probe

  • Linear probe:把一個(gè)訓(xùn)練好的模型凍結(jié)住,只訓(xùn)練最后一層的分類頭去做分類任務(wù)。
  • Fine tune:對(duì)整個(gè)模型參數(shù)進(jìn)行端到端的訓(xùn)練

CLIP 的作者選擇了linear probe的方法進(jìn)行預(yù)訓(xùn)練模型在其他數(shù)據(jù)集上表現(xiàn)的對(duì)比。

Linear probe CLIP 與其他SOTA模型的比較
CLIP的特征提取能力比EfficientNet L2 NS 更好一些
CLIP也表現(xiàn)出了更強(qiáng)的健壯性

6. 局限性

  • CLIP zero-shot遷移的效果并不比SOTA的模型更好,并且不能用增大規(guī)模的方式進(jìn)一步提高效果
  • CLIP 在一些數(shù)據(jù)集上效果不好
  • CLIP 在超出數(shù)據(jù)集分布的數(shù)據(jù)上表現(xiàn)也不好,比如MNIST
  • CLIP 需要很大量的數(shù)據(jù)
  • 雖然CLIP是用來zero-shot遷移學(xué)習(xí)的,其實(shí)無形中利用到了驗(yàn)證集的信息。
  • 數(shù)據(jù)集本身可能存在社會(huì)偏見等

總結(jié)一下,這是一個(gè)用大模型和大數(shù)據(jù)做了大量實(shí)驗(yàn)的工作,最值得注意的應(yīng)該是CLIP擺脫了對(duì)于有標(biāo)簽的數(shù)據(jù)的依賴,對(duì)于訓(xùn)練和遷移學(xué)習(xí)更加方便。

后續(xù)工作:
StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery,CLIP+StyleGAN文字引導(dǎo)圖像改變
CLIPDraw: Exploring Text-to-Drawing Synthesis through Language-Image Encoders,文字生成簡(jiǎn)筆畫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容