一般的計(jì)算機(jī)視覺(jué)方法總是在一個(gè)類別已知且固定的數(shù)據(jù)集上去訓(xùn)練和預(yù)測(cè)赠叼,這限制了模型的泛化能力甘改,而直接從文本來(lái)學(xué)習(xí)圖像是有有前景的拦键,因?yàn)槔昧烁鼜V泛的監(jiān)督信號(hào)。因此將任務(wù)定義為預(yù)測(cè)哪條文本與哪副圖像在語(yǔ)義上最接近嗤练,以此來(lái)學(xué)習(xí)SOTA的圖像表征榛了。訓(xùn)練數(shù)據(jù)是400 million的文本圖像對(duì),訓(xùn)練完成之后將可以用于多種下游視覺(jué)任務(wù)煞抬,例如在ImageNet數(shù)據(jù)集上霜大,不需要額外訓(xùn)練(zero shot),就能媲美ResNet50革答。
同時(shí)訓(xùn)練一個(gè)Image Encoder和一個(gè)Text Encoder战坤,其中,Image Encoder有兩種:ResNet-50x64和ViT-L残拐,Text Encoder是BERT途茫,對(duì)于一個(gè)訓(xùn)練batch中的N對(duì)(image, text)對(duì),CLIP通過(guò)優(yōu)化兩個(gè)Encoder來(lái)學(xué)習(xí)一個(gè)多模態(tài)的空間溪食,使得N對(duì)正對(duì)的image embedding與text embedding(經(jīng)過(guò)線性變換和L2歸一化)之間的余弦相似度盡可能大囊卜,其余對(duì)負(fù)對(duì)的image embedding與text embedding(經(jīng)過(guò)線性變換和L2歸一化)之間的余弦相似度經(jīng)盡可能小。實(shí)際上错沃,由于都進(jìn)行了L2歸一化栅组,可以直接相乘來(lái)計(jì)算余弦距離,同一pair對(duì)的結(jié)果趨近于1枢析,不同pair對(duì)的結(jié)果趨近于0玉掸。偽代碼如下:
聯(lián)合訓(xùn)練的batchsize為32768,當(dāng)以ResNet-50x64作為Image Encoder時(shí)醒叁,訓(xùn)練資源:使用592塊V100耗時(shí)18天司浪,當(dāng)以ViT-L/14@336px作為Image Encoder時(shí),訓(xùn)練資源:使用256塊V100耗時(shí)12天把沼。
在用于下游任務(wù)時(shí)啊易,比如用于圖像識(shí)別任務(wù)時(shí),用訓(xùn)練好的Text Encoder針對(duì)下游任務(wù)數(shù)據(jù)集構(gòu)建一個(gè)分類器饮睬,比如將數(shù)據(jù)集的類別映射到CLIP空間中的Text Embedding认罩,然后用Image Enoder將待預(yù)測(cè)圖片映射到CLIP空間中的Image Embedding,計(jì)算兩兩之間的余弦相似度续捂,相似度最高的即為分類結(jié)果垦垂。