国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

6、CLIP:連接文本和視覺(jué)世界的預(yù)訓(xùn)練模型

這篇具有很好參考價(jià)值的文章主要介紹了6、CLIP:連接文本和視覺(jué)世界的預(yù)訓(xùn)練模型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

????????

目錄

一、論文題目

二、背景與動(dòng)機(jī)

三、創(chuàng)新與賣點(diǎn)

四、技術(shù)細(xì)節(jié)

模型結(jié)構(gòu)

簡(jiǎn)易代碼

clip實(shí)現(xiàn)zero shot分類

五、為什么是CLIP?為什么是對(duì)比學(xué)習(xí)?

六、一些資料


????????在人工智能領(lǐng)域,文本和圖像是兩個(gè)極其重要的數(shù)據(jù)形式。傳統(tǒng)上,機(jī)器學(xué)習(xí)模型往往專注于其中一種形式的處理—要么是文本(自然語(yǔ)言處理),要么是圖像(計(jì)算機(jī)視覺(jué))。OpenAI 推出的 CLIP(Contrastive Language–Image Pre-training)模型在這兩個(gè)領(lǐng)域之間架起了一座橋梁,為圖像理解和文本圖像交互提供了新的視角。

一、論文題目

Learning Transferable Visual Models From Natural Language Supervisionhttps://arxiv.org/pdf/2103.00020.pdf???????

二、背景與動(dòng)機(jī)

????????傳統(tǒng)的視覺(jué)模型的限制。傳統(tǒng)的計(jì)算機(jī)視覺(jué)模型通常需要大量的標(biāo)注數(shù)據(jù)來(lái)訓(xùn)練,這些數(shù)據(jù)的獲取成本非常高。此外,模型的泛化能力受限于訓(xùn)練數(shù)據(jù)集,對(duì)于訓(xùn)練集之外的新類別或新場(chǎng)景,模型的表現(xiàn)常常會(huì)大打折扣。

????????自然語(yǔ)言的表達(dá)力。自然語(yǔ)言以其豐富的表達(dá)力賦予了人類溝通的無(wú)限可能。若機(jī)器能理解豐富的語(yǔ)言描述,將能更好地理解和處理視覺(jué)信息。這一直是人工智能領(lǐng)域的一個(gè)追求。

????????對(duì)于以上問(wèn)題,OpenAI 提出了一個(gè)問(wèn)題:是否可以開(kāi)發(fā)一種模型,利用大量的文本描述來(lái)學(xué)習(xí)視覺(jué)概念,從而減少對(duì)標(biāo)注數(shù)據(jù)的依賴,并提高模型對(duì)新場(chǎng)景的適應(yīng)能力?

三、創(chuàng)新與賣點(diǎn)

????????預(yù)訓(xùn)練和零樣本學(xué)習(xí)。CLIP 的主要?jiǎng)?chuàng)新點(diǎn)在于它采用了大規(guī)模的預(yù)訓(xùn)練,學(xué)習(xí)圖像與自然語(yǔ)言的關(guān)聯(lián)。它可以從描述中識(shí)別出視覺(jué)概念,而不需要直接的圖像標(biāo)注。這種方法讓 CLIP 具備了零樣本(zero-shot)學(xué)習(xí)的能力,即在沒(méi)有直接學(xué)習(xí)特定類別的情況下,識(shí)別出這些類別的圖像。

????????對(duì)比學(xué)習(xí)。CLIP 通過(guò)對(duì)比學(xué)習(xí)將圖像和文本嵌入到相同的空間中。模型預(yù)測(cè)圖像描述的匹配程度,從而學(xué)習(xí)將視覺(jué)內(nèi)容和語(yǔ)言描述聯(lián)系起來(lái)。這種方法在不同的數(shù)據(jù)集和任務(wù)上都表現(xiàn)出了卓越的性能。

????????大規(guī)模數(shù)據(jù)。CLIP 的訓(xùn)練涉及到了超過(guò) 4 億個(gè)圖像文本對(duì),這些數(shù)據(jù)的多樣性大大提高了模型的泛化能力。

四、技術(shù)細(xì)節(jié)

模型結(jié)構(gòu)

6、CLIP:連接文本和視覺(jué)世界的預(yù)訓(xùn)練模型,AIGC論文筆記,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),深度學(xué)習(xí)

????????CLIP 包括兩部分:視覺(jué)編碼器和文本編碼器。視覺(jué)編碼器是基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的變體,如 ResNet 或 Vision Transformer(ViT)。文本編碼器則是基于 Transformer 架構(gòu)的。在訓(xùn)練過(guò)程中,CLIP 通過(guò)最大化圖像與其對(duì)應(yīng)描述的相似度來(lái)進(jìn)行學(xué)習(xí)。同時(shí),它最小化與不匹配描述的相似度。這一過(guò)程涉及到大量的負(fù)樣本,為模型提供了區(qū)分力。

簡(jiǎn)易代碼

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision.models import resnet50
from transformers import BertTokenizer, BertModel

class SimpleCLIP(nn.Module):
    def __init__(self):
        super(SimpleCLIP, self).__init__()
        
        # 圖像分支 - 使用簡(jiǎn)化的 ResNet50 作為例子
        self.visual_model = resnet50(pretrained=True)
        
        # 文本分支 - 使用簡(jiǎn)化的 BERT 作為例子
        self.text_model = BertModel.from_pretrained('bert-base-uncased')

    def forward(self, images, text_tokens):
 
        # I[n, h, w, c] - minibatch of aligned images
        # T[n, l] - minibatch of aligned texts
        # W_i[d_i, d_e] - learned proj of image to embed
        # W_t[d_t, d_e] - learned proj of text to embed
        # t - learned temperature parameter

        # 分別提取圖像特征和文本特征
        I_f = self.visual_model (I) #[n, d_i]     # Extract visual features
        T_f = self.text_model (T) #[n, d_t]       # Extract text

        # 對(duì)兩個(gè)特征進(jìn)行線性投射,得到相同維度的特征,并進(jìn)行l(wèi)2歸一化
        I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
        T_e = l2_normalize(np.dot(T_f, W_t), axis=1)

        

        return I_e, T_e

# 初始化模型
model = SimpleCLIP()

# 定義對(duì)比損失 - InfoNCE 損失的簡(jiǎn)化版本
criterion = nn.CrossEntropyLoss()

# 優(yōu)化器
optimizer = optim.Adam(model.parameters(), lr=1e-5)

# 數(shù)據(jù)加載 - 偽代碼,需替換為實(shí)際代碼
image_loader = ...
text_loader = ...

# 訓(xùn)練循環(huán)
for epoch in range(num_epochs):
    for images, texts in zip(image_loader, text_loader):
        # Zero the parameter gradients
        optimizer.zero_grad()

        # Forward pass
        visual_features, text_features = model(images, texts)

        # 計(jì)算損失函數(shù)
        # 計(jì)算縮放的余弦相似度:[n, n]
        logits = np.dot(visual_features, text_features.T) * np.exp(t)   # t為超參數(shù)

        # 對(duì)稱的對(duì)比學(xué)習(xí)損失:等價(jià)于N個(gè)類別的cross_entropy_loss
        labels = np.arange(n) # 對(duì)角線元素的labels
        loss_i = cross_entropy_loss(logits, labels, axis=0)
        loss_t = cross_entropy_loss(logits, labels, axis=1)
        loss = (loss_i + loss_t)/2
       

        # Backward and optimize
        loss.backward()
        optimizer.step()

print("Training finished.")

clip實(shí)現(xiàn)zero shot分類

首先請(qǐng)確保安裝了必要的庫(kù):

pip install torch torchvision 
pip install ftfy regex tqdm 
pip install git+https://github.com/openai/CLIP.git

簡(jiǎn)易實(shí)現(xiàn)?

import torch
import clip
from PIL import Image
import urllib.request
import matplotlib.pyplot as plt

# 加載預(yù)訓(xùn)練的 CLIP 模型
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load("ViT-B/32", device=device)

# 準(zhǔn)備輸入數(shù)據(jù)
image_url = "https://raw.githubusercontent.com/openai/CLIP/main/CLIP.png"
image = Image.open(urllib.request.urlopen(image_url))
text = ["a diagram", "a dog", "a cat"]

# 使用 CLIP 預(yù)處理圖像并將文本轉(zhuǎn)換為張量
image_input = preprocess(image).unsqueeze(0).to(device)
text_inputs = clip.tokenize(text).to(device)

# 通過(guò)模型前向傳播
with torch.no_grad():
    image_features = model.encode_image(image_input)
    text_features = model.encode_text(text_inputs)

    # 計(jì)算圖像和文本特征之間的余弦相似度
    logits_per_image, logits_per_text = model(image_input, text_inputs)
    probs = logits_per_image.softmax(dim=-1).cpu().numpy()

# 顯示圖像和預(yù)測(cè)
plt.imshow(image)
plt.title(f"Predicted label: {text[probs.argmax()]} with probability {probs.max() * 100:.2f}%")
plt.show()

五、為什么是CLIP?為什么是對(duì)比學(xué)習(xí)?

一下引自神器CLIP:連接文本和圖像,打造可遷移的視覺(jué)模型 - 知乎

? ??在計(jì)算機(jī)視覺(jué)領(lǐng)域,最常采用的遷移學(xué)習(xí)方式就是先在一個(gè)較大規(guī)模的數(shù)據(jù)集如ImageNet上預(yù)訓(xùn)練,然后在具體的下游任務(wù)上再進(jìn)行微調(diào)。這里的預(yù)訓(xùn)練是基于有監(jiān)督訓(xùn)練的,需要大量的數(shù)據(jù)標(biāo)注,因此成本較高。近年來(lái),出現(xiàn)了一些基于自監(jiān)督的方法,這包括基于對(duì)比學(xué)習(xí)的方法如MoCo和SimCLR,和基于圖像掩碼的方法如MAE和BeiT,自監(jiān)督方法的好處是不再需要標(biāo)注。但是無(wú)論是有監(jiān)督還是自監(jiān)督方法,它們?cè)谶w移到下游任務(wù)時(shí),還是需要進(jìn)行有監(jiān)督微調(diào),而無(wú)法實(shí)現(xiàn)zero-shot。對(duì)于有監(jiān)督模型,由于它們?cè)陬A(yù)訓(xùn)練數(shù)據(jù)集上采用固定類別數(shù)的分類器,所以在新的數(shù)據(jù)集上需要定義新的分類器來(lái)重新訓(xùn)練。對(duì)于自監(jiān)督模型,代理任務(wù)往往是輔助來(lái)進(jìn)行表征學(xué)習(xí),在遷移到其它數(shù)據(jù)集時(shí)也需要加上新的分類器來(lái)進(jìn)行有監(jiān)督訓(xùn)練。但是NLP領(lǐng)域,基于自回歸或者語(yǔ)言掩碼的預(yù)訓(xùn)練方法已經(jīng)取得相對(duì)成熟,而且預(yù)訓(xùn)練模型很容易直接zero-shot遷移到下游任務(wù),比如OpenAI的GPT-3。這種差異一方面是由于文本和圖像屬于兩個(gè)完全不同的模態(tài),另外一個(gè)原因就是NLP模型可以采用從互聯(lián)網(wǎng)上收集的大量文本。那么問(wèn)題來(lái)了:能不能基于互聯(lián)網(wǎng)上的大量文本來(lái)預(yù)訓(xùn)練視覺(jué)模型?

????????那么其實(shí)之前已經(jīng)有一些工作研究用文本來(lái)作為監(jiān)督信號(hào)來(lái)訓(xùn)練視覺(jué)模型,比如16年的工作Learning Visual Features from Large Weakly Supervised Data將這轉(zhuǎn)化成一個(gè)多標(biāo)簽分類任務(wù)來(lái)預(yù)測(cè)圖像對(duì)應(yīng)的文本的bag of words;17年的工作Learning Visual N-Grams from Web Data進(jìn)一步擴(kuò)展了這個(gè)方法來(lái)預(yù)測(cè)n-grams。最近的一些工作采用新的模型架構(gòu)和預(yù)訓(xùn)練方法來(lái)從文本學(xué)習(xí)視覺(jué)特征,比如VirTex基于transformer的語(yǔ)言模型,ICMLM基于語(yǔ)言掩碼的方法,ConVIRT基于對(duì)比學(xué)習(xí)的方法。整體來(lái)看,這方面的工作不是太多,這主要是因?yàn)檫@些方法難以實(shí)現(xiàn)較高的性能,比如17年的那篇工作只在ImageNet上實(shí)現(xiàn)了11.5%的zero-shot性能,這遠(yuǎn)遠(yuǎn)低于ImageNet上的SOTA。另外,還有另外的是一個(gè)方向,就是基于文本弱監(jiān)督來(lái)提升性能,比如谷歌的BiT和ViT基于JFT-300M數(shù)據(jù)集來(lái)預(yù)訓(xùn)練模型在ImageNet上取得SOTA,JFT-300M數(shù)據(jù)集是谷歌從互聯(lián)網(wǎng)上收集的,通過(guò)一些自動(dòng)化的手段來(lái)將web text來(lái)轉(zhuǎn)化成18291個(gè)類別,但是存在一定的噪音。雖然谷歌基于JFT-300M數(shù)據(jù)集取得了較好的結(jié)果,但是這些模型依然采用固定類別的softmax分類器進(jìn)行預(yù)訓(xùn)練,這大大限制了它的遷移能力和擴(kuò)展性。

????????作者認(rèn)為谷歌的弱監(jiān)督方法和之前的方法的一個(gè)重要的區(qū)別在于規(guī)模,或者說(shuō)算力和數(shù)據(jù)的規(guī)模不同。JFT-300M數(shù)據(jù)量達(dá)到了上億級(jí)別,而且谷歌用了強(qiáng)大的算力來(lái)進(jìn)行預(yù)訓(xùn)練。而VirTex,ICMLM和ConVIRT只在10萬(wàn)級(jí)別的數(shù)據(jù)上訓(xùn)練了幾天。為了彌補(bǔ)數(shù)據(jù)上的差異,OpenAI從網(wǎng)上收集了4億的數(shù)據(jù)來(lái)實(shí)驗(yàn)。但是新的問(wèn)題來(lái)了:采用什么樣的方法來(lái)訓(xùn)練。OpenAI首先嘗試了VirTex模型,即聯(lián)合訓(xùn)練一個(gè)CNN和文本transformer來(lái)預(yù)測(cè)圖像的文本(image caption),但是發(fā)現(xiàn)這種方法的訓(xùn)練效率(用ImageNet數(shù)據(jù)集上的zero-shot性能來(lái)評(píng)估)還不如直接預(yù)測(cè)bag of words,如下圖所示,兩者的訓(xùn)練效率能相差3倍。如果進(jìn)一步采用ConVIRT,即基于對(duì)比學(xué)習(xí)的方法,訓(xùn)練效率可以進(jìn)一步提升4倍。之所出現(xiàn)這個(gè)差異,這不難理解,訓(xùn)練數(shù)據(jù)所包含的文本-圖像對(duì)是從互聯(lián)網(wǎng)收集來(lái)的,它們存在一定的噪音,就是說(shuō)文本和圖像可能并不完全匹配,這個(gè)時(shí)候適當(dāng)?shù)慕档陀?xùn)練目標(biāo),反而能取得更好的收斂。而從任務(wù)難度來(lái)看:Transformer Language Model > Bag of Words Prediction > Bag of Words Contrastive (CLIP)。由于訓(xùn)練數(shù)據(jù)量和模型計(jì)算量較大,訓(xùn)練效率成為一個(gè)至關(guān)重要的因素。這就是作者最終選擇對(duì)比學(xué)習(xí)的方法來(lái)訓(xùn)練的原因。

六、一些資料

神器CLIP:連接文本和圖像,打造可遷移的視覺(jué)模型 - 知乎碼字不易,勿忘點(diǎn)贊!2021年見(jiàn)證了vision transformer的大爆發(fā),隨著谷歌提出ViT之后,一大批的vision transformer的工作席卷計(jì)算機(jī)視覺(jué)任務(wù)。除了vision transformer,另外一個(gè)對(duì)計(jì)算機(jī)視覺(jué)影響比較大的工作就是O…https://zhuanlan.zhihu.com/p/493489688GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an imageCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image - GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an imagehttps://github.com/openai/CLIPGitHub - OFA-Sys/Chinese-CLIP: Chinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.Chinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation. - GitHub - OFA-Sys/Chinese-CLIP: Chinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.https://github.com/OFA-Sys/Chinese-CLIP

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-793239.html

到了這里,關(guān)于6、CLIP:連接文本和視覺(jué)世界的預(yù)訓(xùn)練模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包