任務(wù)
Image captioning,即看圖說話,對輸入圖像做有意義且有效的文字描述。應(yīng)用可以是:目標(biāo)檢測。
方法
- 使用CLIP的image encoder(凍結(jié))將圖片轉(zhuǎn)換為embedding;
- 將embedding和學(xué)習(xí)得到的常量輸入到mapping network(輕量,基于transformer),得到Prefix embedding;
- (推理時)將Prefix embedding輸入到語言模型(凍結(jié)的GPT2),得到Caption tokens。
只有mapping network需要訓(xùn)練,一張1080使用300萬樣本訓(xùn)80小時即可。
訓(xùn)練
給定(image,caption)數(shù)據(jù)集合,我們的目標(biāo)是從沒見過的image生成有意義的caption(看成padding到定長的token序列
)。訓(xùn)練目標(biāo):
是可訓(xùn)練的參數(shù)(mapping network的參數(shù))。
我們將圖片語義(由CLIP的image encoder提供語義豐富的embedding)這一condition作為caption的前綴。由于圖片語義已經(jīng)包含在了前綴中,我們可以使用自回歸語言模型,在不考慮未來token的情況下,預(yù)測下一個token。
所以訓(xùn)練目標(biāo)就是:
怎么把圖片語義轉(zhuǎn)化成前綴用作自回歸的condition呢?這里用到mapping network,它以為輸入),輸出
(
個embedding vector),每個embedding vector和語言模型的token embedding形狀相同。
在訓(xùn)練中,我們拼接和
得到
。損失函數(shù)用了二分類交叉熵:
語言模型微調(diào)
訓(xùn)練中最大的挑戰(zhàn)在于,怎么互譯CLIP和語言模型的給出的表征。即便語義都很豐富,表征空間仍是不同的,并且訓(xùn)練數(shù)據(jù)集也會帶來差異。因此要在訓(xùn)練mapping network的同時對語言模型做微調(diào)。但微調(diào)會讓訓(xùn)練的參數(shù)量大大增加。所以作者參考Prefix Tuning設(shè)計了一個附加的量,而讓語言模型在訓(xùn)練中凍結(jié)。(作者還解釋了下為什么不對CLIP的image encoder做微調(diào),因為試了沒用)
Prefix Tuning還沒看完
。。。。。。。。。。。。。。。。。