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

CLIP 論文解讀

這篇具有很好參考價值的文章主要介紹了CLIP 論文解讀。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


現(xiàn)有的計算機視覺系統(tǒng)用來預測一組固定的預訂對象類別,比如ImageNet數(shù)據(jù)集有1000類,CoCo數(shù)據(jù)集有80類。這種受限的監(jiān)督形式限制了模型的通用性和可用性。使用這種方法訓練好的模型對訓練過程中出現(xiàn)的對象類別有很好的識別效果,但是對訓練過程中未出現(xiàn)的類別,識別效果很差。直接從圖像的原始文本中學習是一種很有潛力的選擇,這樣可以獲得更多的監(jiān)督信號。OpenAI從互聯(lián)網(wǎng)上收集 4億(圖像,文本)對,基于此數(shù)據(jù)集,訓練一個預測哪一個文本描述當前哪一個圖像的預訓練任務, 此任務取得了SOTA的圖像表示。預訓練之后,可以通過自然語言匹配視覺概率從而實現(xiàn)zero-shot的遷移。

模型

CLIP算法的核心是利用自然語言包含的監(jiān)督信號來訓練視覺模型。相比于其他的訓練方法,從自然語言中學習具有以下兩個優(yōu)勢。首先,相比于標準的有標簽圖像分類數(shù)據(jù)集,這種方法無需標注,就很容易擴展數(shù)據(jù)集;其次,圖像和文字配對訓練,學習到的特征不單單是一個視覺特征,而是多模態(tài)的特征,有助于zero-shot的遷移學習。

圖像和文本的配對訓練需要一個足夠大的數(shù)據(jù)集,然而現(xiàn)有的數(shù)據(jù)集要么數(shù)據(jù)量不夠,要不標注質量太差,為了解決這個問題,OpenAI他們從互聯(lián)網(wǎng)上的各種公開來源公收集了4億(圖像,文本)對。

最近視覺領域的算法訓練都需要巨大的計算量。 在ImageNet數(shù)據(jù)集上訓練ResNeXt101-32x48d模型需要19個GPU年,訓練Noisy Student EfficientNet-L2模型需要33個TPUv3 core-years。那么從自然語言中直接學習視覺概念的開放集合這一任務所需要的計算資源令人望而生畏。經(jīng)過一些列的努力,他們發(fā)現(xiàn)訓練效率對多模型預訓練是至關重要的。

最初的方法,與VirTex相似,聯(lián)合訓練一個圖像CNN和文本transformer去預測圖像所對應的文本。然而,一個6300萬參數(shù)的transformer語言模型,比ResNet-50圖像編碼器多了兩倍的計算量,學習識別ImageNet類別的速度比一個更簡單預測同一文本的BOW編碼器慢了三倍。它們試圖預測每張圖片所附文本的確切單詞,這種做法顯然是比較困難的。對于一張圖片來說,可以有不同的描述。比如下面一張圖,你可以描述“有一只狗在草地上”,也可以描述“這是一張小狗的圖片”,還可以描述“一條小黑狗伸著小舌頭”等等。
CLIP 論文解讀
最近在圖像對比表征學習方面的工作發(fā)現(xiàn),contrastive objectives可以比同等的predictive objective學習更好的表征,而且其他工作發(fā)現(xiàn),圖像的生成模型相比同性能的對比模型相比,需要更多的計算量才能夠學習到高質量的圖像表示。基于此,將文本看做一個整體,而不是一個個單詞,與圖像進行配對。將基準BOW編碼器的預測性的目標函數(shù)替換成對比性的目標函數(shù),訓練效率提高了4倍。

CLIP 論文解讀

訓練

下圖是CLIP的偽代碼。CLIP包含兩個編碼器,一個圖像編碼器和一個文本編碼器,圖像編碼器的輸入形式是 [ n , h , w , c ] [n,h,w,c] [n,h,w,c] n n n是批次大小, h , w , c h,w,c h,w,c是圖像的大小,比如 224 × 224 × 3 224 \times 224 \times 3 224×224×3;文字編碼器的輸入形式是 [ n , l ] [n,l] [n,l],由于是圖像文本對,所以文本編碼器中的批次是與圖像編碼器中的批次是一樣的, l l l是序列長度。圖像編碼器可以是深度卷積網(wǎng)絡,也可以是Transformer;文本編碼器可以是CBOW,也可以是Text Transformer。

CLIP 論文解讀

圖像輸入和文本輸入分別進入圖像編碼器和文本編碼器之后,得到相應的特征表示;然后后接一個歸一化的操作。歸一化操作時,牽涉到線性投射層 n p . d o t ( I f , W i ) np.dot(I_f, W_i) np.dot(If?,Wi?) n p . d o t ( T f , W t ) np.dot(T_f, W_t) np.dot(Tf?,Wt?)。線性投射層將每個編碼器的表示映射到多模態(tài)嵌入空間。歸一化操作后得到用于對比的特征 I e I_e Ie? T e T_e Te?。接下來,計算 n n n個圖像的特征和 n n n個文本的特征的余弦相似性。偽代碼中的余弦相似性值為 l o g i t s logits logits,logits的形狀大小為 n × n n \times n n×n,然后logits與分別與圖像和文本的gt標簽做交叉熵目標函數(shù),最后的損失函數(shù)為對稱損失函數(shù)。gt的計算使用了arrange 函數(shù),labels的取值為 1 , 2 , 3 , 4 , 5 , ? ? , n 1,2,3,4,5, \cdots ,n 1,2,3,4,5,?,n,CLIP的正樣本標簽為對角線上的元素。

OpenAI收集了4億圖像文本對,數(shù)據(jù)量過于巨大,所以圖像編碼器和文本編碼器無預訓權重。由于文本是被當做一個句子,所以文本編碼器對文本無增強操作;圖像編碼器中的圖像增強方式也僅僅使用了resize和隨機裁減。溫度參數(shù) τ \tau τ,控制softmax中l(wèi)ogits的范圍,在訓練過程中直接被優(yōu)化為標量,而不是作為一個超參數(shù)。

CLIP 論文解讀

推理

當使用訓練好的CLIP模型進行推理時,首先需要使用clip.load()加載模型,然后分別對圖像和文本進行前處理。文字前處理是對數(shù)據(jù)集中的所有類別進行prompt engineering處理,將每個類別轉換成句子,clip.tokenize()將句子長度padding到77個token長度。下面的代碼中,圖像選取了CIFAR100數(shù)據(jù)集中的其中一張。接下來,將圖像和文字分別喂入圖像編碼器和文字編碼器,提取圖像特征和文字特征,分別將圖像特征和文字特征正則化之后,計算圖像特征和文字特征之間的相似度,并對相似度進行softmax操作。

# 下面代碼使用CLIP進行zero shot預測,從CIFAR-100數(shù)據(jù)集中挑選一張圖片,預測這張圖像最有可能與此數(shù)據(jù)集中100個標簽中哪一個標簽最相似。
import os
import clip
import torch
from torchvision.datasets import CIFAR100

# Load the model
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load('ViT-B/32', device) # 加載模型,返回的preprocess中包含一個torchvision transform依次執(zhí)行Resize,CenterCrop和Normalization等操作。

# Download the dataset
cifar100 = CIFAR100(root=os.path.expanduser("~/.cache"), download=True, train=False)

# Prepare the inputs
image, class_id = cifar100[3637]
image_input = preprocess(image).unsqueeze(0).to(device) # 圖像前處理
text_inputs = torch.cat([clip.tokenize(f"a photo of a {c}") for c in cifar100.classes]).to(device) # 文字前處理

# Calculate features
with torch.no_grad():
    image_features = model.encode_image(image_input) # 圖像編碼器提取輸入圖像的特征
    text_features = model.encode_text(text_inputs) # 文字編碼器提取輸入文字的特征

# Pick the top 5 most similar labels for the image
image_features /= image_features.norm(dim=-1, keepdim=True) # 正則化
text_features /= text_features.norm(dim=-1, keepdim=True) # 正則化
similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1) #計算圖像特征與文字特征之間的相似度
values, indices = similarity[0].topk(5)

# Print the result
print("\nTop predictions:\n")
for value, index in zip(values, indices):
    print(f"{cifar100.classes[index]:>16s}: {100 * value.item():.2f}%")
The output will look like the following (the exact numbers may be slightly different depending on the compute device):
Top predictions:
           snake: 65.31%
          turtle: 12.29%
    sweet_pepper: 3.83%
          lizard: 1.88%
       crocodile: 1.75%

CLIP 論文解讀
大多數(shù)標準的圖像分類只會使用標簽的數(shù)字id來注釋圖像,并包含一個將這些數(shù)字id映射回其英文名稱的文件。這樣就導致一個最常見的問題就是多義性。當類的名稱作為唯一的信息提供給CLIP的文本編碼器時,由于缺乏上下文,它無法區(qū)分詞義。在某些情況下,同一個單詞的多個含義可能做為不同的類包含在同一數(shù)據(jù)集中。比如在ImageNet數(shù)據(jù)集中,建筑起重機和飛行的鶴。而且,在CLIP的預訓練數(shù)據(jù)集中,與圖像配對的文本中只有一個單詞的情況是相對罕見的。通常,文本都是一個描述圖像的完整句子。為了彌合這一分布差距,作者團隊發(fā)現(xiàn)使用提示模板“A photo of a {label}”是一個很好的選擇,有助于指定文本是關于圖像的內容。與僅使用標簽文本的基線模型相比,通常會提升性能。

在官方提供的Prompt_Engineering_for_ImageNet.ipynb中,ImageNet數(shù)據(jù)集總共包含1000個類,CLIP團隊陸陸續(xù)續(xù)地提供了80個提示模板。

實驗

與Visual N-Grams 相比較

Visual N-Grams是17年的工作,它是首個將零樣本遷移到現(xiàn)有圖像分類數(shù)據(jù)集的算法。它使用一般預處理模型研究zero shot到標準圖像分類數(shù)據(jù)集的遷移。

下表展示了Visual N-Grams和CLIP在三個數(shù)據(jù)集上的性能對比。在ImageNet數(shù)據(jù)集上,CLIP模型在沒有使用這128萬標注數(shù)據(jù)的前提下,將準確率從Visual N-Grams的11.5%提升到76.2%。在aYahoo和SUN數(shù)據(jù)集上,CLIP模型相比于Visual N-Grams模型的性能有所提升。

CLIP與Visual N-Grams比較相似,但是17年的時候,transformer還沒有出世,上述的比較,主要是為了了解CLIP的性能。

CLIP 論文解讀

分布Shift的魯棒性

2015年時,深度學習模型在ImageNet測試數(shù)據(jù)集的性能超過人類,但是這些模型仍然會犯一些簡單的錯誤,我們戲稱為人工智障。我們知道,深度學習模型的訓練和測試數(shù)據(jù)集遵從獨立同分布IID假設,這樣就導致模型對分布外的數(shù)據(jù)分類性能較差。最常見的一個解釋就是:深度學習模型非常善于找到其訓練數(shù)據(jù)集中的一些相關性和模式,而這些相關性和模式實際上是偽造的,不適用于其他分布,導致模型在其他數(shù)據(jù)集上的性能大幅下降。為了使模型泛化性能更好,有一些學者在研究分布外OOD(out-of-distribution)分類問題。

CLIP模型從一個不同于以往的角度研究這個問題,它在一個非常大的數(shù)據(jù)集上通過自然語言監(jiān)督進行訓練模型,能夠實現(xiàn)zero-shot的高性能。直觀上說,zero-shot 模型由于沒有針對某個分布進行訓練,它不能夠學習到僅在特定分布上保持的虛假的相關性和模式,因此,zero-shot模型應當具有更高的魯棒性。

ImageNetV2、ImageNet Sketch、ObjectNet, ImageNet Adversarial 和 ImageNet Rendition這幾個數(shù)據(jù)集,為ImageNet數(shù)據(jù)集的分布偏移。訓練集為ImageNet數(shù)據(jù)集訓練得到的模型,在這五個數(shù)據(jù)集上的表現(xiàn)都低于在ImageNet測試數(shù)據(jù)集上的性能;而zero-shot CLIP模型則取得較好的性能,如下圖所示,尤其實在ImageNet-R數(shù)據(jù)集上,有51.2%的性能提升。

CLIP 論文解讀文章來源地址http://www.zghlxwxcb.cn/news/detail-445311.html

不足

  1. Zero-shot的CLIP比基于ResNet-50特征的線性分類器相比具有優(yōu)勢,但在很多任務上,仍遜色于SOTA模型。
  2. CLIP在細分類數(shù)據(jù)集上表示不好;CLIP不擅長處理抽象任務,比如數(shù)一數(shù)圖像中物體的個數(shù);CLIP對一些不包含預訓練集中的新型任務,表現(xiàn)也不好, 比如對一張圖像中到最近汽車的距離進行分類。
  3. 對于一些真正的分布外的數(shù)據(jù),CLIP的泛化性能很差。
  4. CLIP本質上還是在有限的類別中進行推理,相比于image caption直接能生成新的輸出,還是具有局限性的。一個值得嘗試的簡單想法是將對比和生成目標進行聯(lián)合訓練,整合CLIP的有效性和caption模型的靈活性。
  5. CLIP仍然沒有解決深度學習中的poor data efficiency問題。CLIP與自監(jiān)督和自訓練結合訓練會是一個提高數(shù)據(jù)效率方面的方向。
  6. CLIP 雖然一直強調zero-shot,但是在訓練過程中,也反復以數(shù)據(jù)集的validation performance指導CLIP的表現(xiàn),并不算真實的zero shot。如果能夠創(chuàng)造一個驗證zero-shot的遷移能力的新數(shù)據(jù)集,將會解決這種問題。
  7. 4億圖像文本對,不論圖像和文本都是從網(wǎng)上爬下來的。而是這些圖像文本對沒有進行過濾和處理,難,難免會攜帶一些社會性偏見。
  8. 很多復雜的任務和視覺概念很難僅僅通過文本指定。未來的工作需要進一步開發(fā)一種將CLIP強大的zero shot性能與few shot學習相結合的方法。

參考

  1. Learning Transferable Visual Models From Natural Language Supervision
  2. CLIP blog
  3. openai/CLIP

到了這里,關于CLIP 論文解讀的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【計算機視覺】如何利用 CLIP 做簡單的圖像分類任務?(含源代碼)

    【計算機視覺】如何利用 CLIP 做簡單的圖像分類任務?(含源代碼)

    要使用 CLIP 模型進行預測,您可以按照以下步驟進行操作: 安裝依賴:首先,您需要安裝相應的依賴項。您可以使用 Python 包管理器(如 pip )安裝 OpenAI 的 CLIP 庫。 導入所需的庫,包括 clip (用于加載和使用 CLIP 模型)、 torch ( PyTorch 框架)和 PIL (用于圖像處理)。 設置

    2024年02月16日
    瀏覽(35)
  • 【計算機視覺】使用 notebook 展示如何下載和運行 CLIP models,計算圖片和文本相似度,實現(xiàn) zero-shot 圖片分類

    【計算機視覺】使用 notebook 展示如何下載和運行 CLIP models,計算圖片和文本相似度,實現(xiàn) zero-shot 圖片分類

    項目地址: CLIP(Contrastive Language-Image Pretraining)是由OpenAI開發(fā)的一個深度學習模型,用于處理圖像和文本之間的聯(lián)合表示。它的目標是將圖像和文本嵌入到一個共享的向量空間中,使得相似的圖像和文本在這個空間中距離較近,而不相似的圖像和文本距離較遠。 CLIP模型的特

    2024年02月08日
    瀏覽(20)
  • 【計算機視覺】ViT:代碼逐行解讀

    這段代碼是一個實現(xiàn)了 Vision Transformer(ViT)模型的 PyTorch 實現(xiàn)。 ViT 是一個基于 Transformer 架構的圖像分類模型,其主要思想是將圖像分成一個個固定大小的 patch ,并將這些 patch 看做是一個個 token 輸入到 Transformer 中進行特征提取和分類。 以下是對代碼的解讀: ViT類繼承自

    2024年02月03日
    瀏覽(27)
  • 【計算機視覺】Gaussian Splatting源碼解讀補充(二)

    【計算機視覺】Gaussian Splatting源碼解讀補充(二)

    第一部分 本文是對學習筆記之——3D Gaussian Splatting源碼解讀的補充,并訂正了一些錯誤。 其中出現(xiàn)的輔助函數(shù): 這部分的參考資料: [1] CUDA Tutorial [2] An Even Easier Introduction to CUDA [3] Introduction to CUDA Programming CUDA是一個為支持CUDA的GPU提供的平臺和編程模型。該平臺使GPU能夠進

    2024年04月10日
    瀏覽(72)
  • 【計算機視覺】Gaussian Splatting源碼解讀補充(一)

    【計算機視覺】Gaussian Splatting源碼解讀補充(一)

    本文旨在補充@gwpscut創(chuàng)作的博文學習筆記之——3D Gaussian Splatting源碼解讀。 Gaussian Splatting Github地址:https://github.com/graphdeco-inria/gaussian-splatting 論文地址:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_high.pdf 這部分可以參考PlenOctrees論文的附錄B。 有時候從不同的

    2024年04月09日
    瀏覽(52)
  • 【計算機視覺 | 目標檢測】CORA: Adapting CLIP for Open-Vocabulary Detection with Region Prompting and Anchor

    【計算機視覺 | 目標檢測】CORA: Adapting CLIP for Open-Vocabulary Detection with Region Prompting and Anchor

    基于區(qū)域提示和錨點預匹配的開放詞匯檢測。 CORA 在目標檢測任務中提出了一種新的 CLIP 預訓練模型適配方法,主要包括 Region Prompting 和 Anchor Pre-Matching 兩部分。 這種方法能夠讓 CLIP 模型適應目標檢測的任務,能夠識別出圖像中的對象,并提供準確的分類和定位信息。 開放

    2024年02月14日
    瀏覽(29)
  • 【計算機視覺 | 圖像分類】arxiv 計算機視覺關于圖像分類的學術速遞(6月 29 日論文合集)

    【計算機視覺 | 圖像分類】arxiv 計算機視覺關于圖像分類的學術速遞(6月 29 日論文合集)

    基于多示例學習的全幻燈片圖像分類的偽袋混合增強 論文地址: 鑒于十億像素圖像建模的特殊情況,多實例學習(MIL)已成為全幻燈片圖像(WSI)分類最重要的框架之一。 在當前實踐中,大多數(shù) MIL 網(wǎng)絡在訓練中經(jīng)常面臨兩個不可避免的問題:i)WSI 數(shù)據(jù)不足,ii)神經(jīng)網(wǎng)絡

    2024年02月11日
    瀏覽(30)
  • 【計算機視覺 | 目標檢測】arxiv 計算機視覺關于目標檢測的學術速遞(8 月 14 日論文合集)

    基于保持歷史分布的連續(xù)人臉偽造檢測 人臉偽造技術發(fā)展迅速,并帶來了嚴重的安全威脅?,F(xiàn)有的人臉偽造檢測方法試圖學習可推廣的特征,但它們仍然缺乏實際應用。此外,在歷史訓練數(shù)據(jù)上微調這些方法在時間和存儲方面是資源密集型的。在本文中,我們關注一個新穎且

    2024年02月11日
    瀏覽(31)
  • 【計算機視覺 | 圖像分割】arxiv 計算機視覺關于圖像分割的學術速遞(8 月 30 日論文合集)

    Novis:端到端近在線視頻實例分割實例 直到最近,視頻實例分割(VIS)社區(qū)在以下共同信念下操作:離線方法通常優(yōu)于逐幀在線處理。然而,最近在線方法的成功質疑這種信念,特別是對于具有挑戰(zhàn)性和長視頻序列。我們將這項工作理解為對最近觀察結果的反駁,并呼吁社區(qū)

    2024年02月09日
    瀏覽(93)
  • 【計算機視覺 | 圖像分割】arxiv 計算機視覺關于圖像分割的學術速遞(7 月 6 日論文合集)

    【計算機視覺 | 圖像分割】arxiv 計算機視覺關于圖像分割的學術速遞(7 月 6 日論文合集)

    面向跨域語義分割的提示擴散表示法 雖然最初設計用于圖像生成,擴散模型最近已證明提供了優(yōu)秀的預訓練的特征表示語義分割。這一結果引起了興趣,我們開始探索擴散預訓練表示如何推廣到新的領域,這是任何表示的關鍵能力。我們發(fā)現(xiàn),擴散預訓練實現(xiàn)了非凡的領域泛

    2024年02月12日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包