CLIP 論文的關鍵內容

CLIP 論文整體架構

該論文總共有 48 頁,除去最后的補充材料十頁去掉,正文也還有三十多頁,其中大部分篇幅都留給了實驗和響應的一些分析。

從頭開始的話,第一頁就是摘要,接下來一頁多是引言,接下來的兩頁就是講了一下方法,主要說的是怎么做預訓練,然后從第六頁一直到第十八頁全都是說的實驗,當然這里面也包括了怎么去做 zeor-shot 的推理,還有包括這種 prompt engineering 、prompt ensemble 等等,算是方法和實驗的合體。

講完了實驗作者大概花了一頁篇幅去討論了一下 CLIP 工作的局限性,然后接下來的五頁作者主要就是討論了一下CLIP這篇工作有可能能帶來的巨大的影響力,在這個部分首先討論的是 bias ,即模型的偏見,然后討論了 CLIP 有可能在監控視頻里的一些應用,最后作者展望了一下 CLIP 還有哪些可以做的這個未來工作,然后在講完了所有的這些方法、實驗和分析之后作者用了一頁的篇幅就大概說了一下相關工作,最后給出了一個簡短的小結論。

CLIP 到底是什么

CLIP 的遷移學習能力非常強,其預訓練好的模型能夠在任意一個視覺分類的數據集上取得不錯的效果。
最重要的是,其是 zero-shot 的:

在這里插入圖片描述

預訓練的含義:

在這里插入圖片描述

作者在這篇文章中做了超級多的實驗,在超過三十個數據集上做了測試:

在這里插入圖片描述

CLIP 到底是什么?到底是怎么去做到 zero-shot 推理的?

看文章中的圖一:

在這里插入圖片描述

上圖是模型總覽圖,這是 CLIP 工作的一個大概流程。

CLIP 是如何進行預訓練的?從題目中可以窺見一二,通過自然語言處理那邊來的一些監督信號,我們可以訓練一個遷移效果很好的視覺模型。因此明顯這是一個牽扯到文字、圖片的一個多模態的工作。

那么是如何利用來自自然語言處理那邊的信號的呢?在訓練過程中,模型的輸入是一個圖片和文字的配對。以上圖為例,圖片是一只狗,配對的文字也是 pepper 是一只小狗。

然后圖片會通過一個 Image Encoder 圖片編碼器,從而得到一些特征(這里的編碼器可以是一個 ResNet 也可以是一個Vision Transformer)。對于文本句子來說其也會通過一個文本編碼器,從而得到一些文本的特征。

假設現在每個Training Batch(訓練批次)里都有 n 個這樣的圖片文本對,也就是說有 n 個句子,n 張圖片,對應的會得到 n 個文本特征以及 n 個圖片特征,而 CLIP 就是在這些特征上去做對比學習。

對比學習非常的靈活,只需要一個正樣本和一個負樣本的定義即可,其他的都是正常套路。

正樣本是啥?其實很簡單,上面圖中的一個配對的 圖片-文本對 就是一個正樣本。因為其描述的是一個東西。

所以說在上圖中的特征矩陣里,沿著對角線方向上的內容都是正樣本:

在這里插入圖片描述

因為 I1T1 、I2T2 這些本身就都是配對的。

那么剩下矩陣中的不是對角線上的其他元素就都是負樣本了。也就是說我們有 n 個正樣本,然后又 n 平方減去 n 個負樣本。

一旦有了正負樣本,模型就可以通過對比學習的方式去訓練起來了,完全不需要任何手工的標注。

但是對于這種無監督的預訓練方式,也就是對比學習,其是需要大量的數據的,因此 OpenAI 還專門去收集了這么一個數據集。該數據集中有 4 億個 圖片-文本對,數據質量很高,這也是為什么 CLIP 這個預訓練模型為什么能這么強大的主要原因之一。

CLIP 如何做推理的

CLIP 如何去做 zeor-shot 的推理的呢?

從上面可以知道,CLIP 這個模型經過預訓練之后其實只能得到一些視覺上和文本上的特征,他并沒有在任何分類的任務上去做繼續的這種訓練或者微調,因此他是沒有分類頭的,沒有分類頭怎么做推理呢?

分類頭:

在這里插入圖片描述

本文提出了一個非常巧妙的利用自然語言的一種辦法,叫 prompt template。

這里使用 Image Net 數據集做一個例子。

CLIP 就是先將 Image Net 里這 1000 個類,比如飛機啊、汽車啊、狗啊變成一個句子:

在這里插入圖片描述

從上圖可以看到,也就是用 plane、cat、dog 等去替代花括號包起來的 object 的這個內容,就相當于一個模板(在很多 it 技術領域都有類似概念的存在)。

有 1000 個類,那么就生成了這樣的 1000 個句子。然后這 1000 個句子通過我們之前預訓練好的這個文本編碼器 Text Encoder 就會得到一千個這個文本的特征。

但其實直接使用原生的那些單詞去做文本特征的提取也是可以的,但是因為在模型預訓練的時候我們的圖片每次看到的基本都是一個句子,如果在推理的時候突然把所有的這個文本都變成了一個單詞,那這樣就跟在訓練的時候看到的這個文本就不太一樣了,效果就會稍有下降。

另外一個單詞如何變成一個句子也是很有講究的。因此 CLIP 這篇論文在后面還提出了 prompt engineering 和 prompt ensemble 這兩種方式去進一步的提高這個模型的準確率。而不需要重新訓練這個模型。

然后在推理的時候,不論此時來到的什么圖片,我們只要將這個圖片扔給這個圖片的編碼器,得到了這個圖片特征之后就讓這個圖片特征去跟所有的這些文本特征去做這個 cosine similarity(余弦相似度):

在這里插入圖片描述

計算相似性,最后這個圖像特征和這里的哪個文本特征最相似,那么就把這個文本特征和所對應的那個句子挑出來,從而完成了分類這個任務:

在這里插入圖片描述

也就是這張圖片里有狗這個物體。

并且在 CLIP 真正使用的時候,這里的標簽還是可以改的(比如不是飛機,而是坦克),不光是 Image Net 這 1000 個類,可以換成任意的單詞,同樣圖片也可以是任何的圖片,然后依舊可以使用這種通過算余弦相似度的方式去判斷這張圖片里到底還有哪些物體。

這個性質就是CLIP的強大之處,因為它徹底擺脫了 categorical label 的這個限制,也就是說不論是在訓練的時候還是在推理的時候,其都不需要有一個這么提前定好的這么一個標簽列表了。任意給我一張照片,我都可以通過給模型去喂這種不同的文本句子從而知道這張圖片里到底有沒有我所感興趣的物體。

而且 CLIP 不光是能識別新的物體,由于它真的把這個視覺的語義和文字的語義聯系到了一起,所以它學到的這個特征的語義性非常強,遷移效果也非常的好。

基于CLIP的應用

基于CLIP 的圖像生成,用文本去指導圖像的生成。

基于CLIP 的物體檢測和分割。

基于CLIP 的用來做視頻檢索的,意思是給定一段視頻,然后想去搜索這個視頻里到底有沒有出現過某個物體或者是場景,那么就可以通過直接輸入文本的這種形式去做檢索。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15921.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

常用 CSS 寫法

不是最后一個 :not(:last-child)漸變色 background: linear-gradient(270deg, #15aaff 0%, #02396a 100%);文字漸變色 background-image: linear-gradient(to right, #ff7e5f, #feb47b); -webkit-background-clip: text; background-clip: text; color: transparent;

python文件IO基礎知識

目錄 1.open函數打開文件 2.文件對象讀寫數據和關閉 3.文本文件和二進制文件的區別 4.編碼和解碼 讀寫文本文件時 讀寫二進制文件時 5.文件指針位置 6.文件緩存區與flush()方法 1.open函數打開文件 使用 open 函數創建一個文件對象,read 方法來讀取數據&…

談談磁盤的那些操作

磁盤格式化 是指把一張空白的盤劃分成一個個小區域并編號,以供計算機存儲和讀取數據。格式化是一種純物理操作,是在磁盤的所有數據區上寫零的操作過程,同時對硬盤介質做一致性檢測,并且標記出不可讀和壞的扇區。由于大部分硬盤在…

電子技術學習路線

在小破站上看到大佬李皆寧的技術路線分析,再結合自己這幾年的工作。發現的確是這樣,跟著大佬的技術路線去學習是會輕松很多,現在想想,這路線其實跟大學四年的學習順序是很像的。 本期記錄學習路線,方便日后查看。 傳統…

python 深度圖生成點云(方法二)

深度圖生成點云 一、介紹1.1 概念1.2 思路1.3 函數講解二、代碼示例三、結果示例接上篇:深度圖生成點云(方法1) 一、介紹 1.1 概念 深度圖生成點云:根據深度圖像(depth image)和相機內參(camera intrinsics)生成點云(PointCloud)。 1.2 思路 點云坐標的計算公式如…

pillow學習7

繪制驗證碼 from PIL import Image,ImageFilter,ImageFont,ImageDraw import random width100 hight100 imImage.new(RGB,(width,hight),(255,255,255)) drawImageDraw.Draw(im) #獲取顏色 def get_color1():return (random.randint(200, 255), random.randint(200, 255), ran…

京東Java社招面試題真題,最新面試題

Java中接口與抽象類的區別是什么? 1、定義方式: 接口是完全抽象的,只能定義抽象方法和常量,不能有實現;而抽象類可以有抽象方法和具體實現的方法,也可以定義成員變量。 2、實現與繼承: 一個類…

幾種常用的配置文件格式對比分析——ini、json、xml、toml、yaml

配置文件用于存儲軟件程序的配置信息,以便程序能夠根據這些信息進行自定義和調整。常用的配置文件格式包括INI、XML、JSON和YAML。下面對它們進行簡單介紹,并分析各自的優缺點。 1. INI 文件格式 簡介: INI(Initialization&…

FPGA之tcp/udp

在調試以太網的過程中,考慮了vivado IP配置(管腳、reset等),SDK中PHY芯片的配置(芯片地址、自適應速率配置等),但是,唯獨忽略了tcp/udp協議,所以在ping通之后仍無法連接。 所以現在來學習一下tcp與udp的區別 ---- 為什…

經典面試題:進程、線程、協程開銷問題,為什么進程切換的開銷比線程的大?

上下文切換的過程? 上下文切換是操作系統在將CPU從一個進程切換到另一個進程時所執行的過程。它涉及保存當前執行進程的狀態并加載下一個將要執行的進程的狀態。下面是上下文切換的詳細過程: 保存當前進程的上下文: 當操作系統決定切換到另…

浪潮信息IPF24:AI+時代,創新驅動未來,攜手共創智慧新紀元

如今,數字化時代的浪潮席卷全球,人工智能已經成為推動社會進步的重要引擎。浪潮信息IPF24作為行業領先的AI技術盛會,不僅為業界提供了交流合作的平臺,更在激發創新活力、拓展發展路徑、加速AI技術落地等方面發揮了重要作用。 升級…

OS復習筆記ch6-2

死鎖的解決 死鎖的預防(打疫苗)死鎖的避免(戴口罩)死鎖的檢測(做核酸) 死鎖的預防 前面我們提到了死鎖的四個必要條件 防止前三個必要條件,就是間接預防防止最后一個必要條件–循環等待&…

軟測刷題-錯題1

提高測試效率的方法: 1、不要做無效的測試 2.不要做重復的測試 3.不同測試版本的測試側重點 4.優化測試順序 LoadRunner是對服務器進行施壓。 在數據庫中存在的用戶數是指注冊用戶數。 input標簽可以直接使用send_keys實現上傳,而非input標簽是無法直…

Rust后臺管理系統Salvo-admin源碼編譯

1.克隆salvo-admin后臺管理系統源碼: https://github.com/lyqgit/salvo-admin.git 2.編譯 編譯成功 3.創建mysql數據庫與執行sql腳本 輸入名稱ry-vue 執行sql腳本 全部執行上面3個sql 修改數據庫用戶名與密碼: 清理及重新編譯 cargo clean cargo build 4.運行并測試 cargo…

Android內存碎片化調優

概念 內存碎片分為兩種,一種是內存頁中的碎片,被稱為內部碎片;另一種是空閑分散的內存頁,湊不齊一個組物理地址連續的空閑內存頁,就沒辦法分配了,這些散落的內存頁被稱為外部碎片。 在Android系統中,內存碎片化是指內存中存在很多小塊的空閑內存,這些內存塊之間不連續…

使用vue,mybatis,mysql,tomcat,axios實現簡單的登錄注冊功能

目錄 第一步環境搭建 后端: 前端: 第二步畫流程圖 web: service: dao層: 第三步前端代碼的實現 這是開始的頁面,接下來我們要到router路由下書寫#login的路徑 路由中的component在我們自己創建的views書寫vue文件…

單日收益1000+看了就會的項目,最新靈異短視頻項目,簡單好上手可放大操作

各位好友,佳哥在此與大伙兒聊聊一項神秘莫測的短視頻項目。你或許會想,“又是一個視頻創作項目?” 但別急,這個項目與眾不同,日入千元不再是夢,而且它的易用性讓人驚喜,無論你是初學者還是資深玩…

春秋云境CVE-2018-7422

簡介 WordPress Plugin Site Editor LFI 正文 1.進入靶場 2.漏洞利用 /wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path/../../../../../../flag看別人wp做的。不懂怎么弄的,有沒有大佬講一下的

沒有電商經驗的人去操作抖音小店,難度大不大?好操作嗎?

大家好,我是電商小V 很多新手小伙伴想去操作抖音小店項目,咨詢的最多的問題就是我沒有電商運營的經驗可以去操作嗎? 當然是可以操作的,抖音小店項目對于新手來說是一個非常友好的項目,很多小伙伴都是感覺沒有電商經驗去…

數據庫攻防之MySQL

MySQL 是最流行的關系型數據庫,與此同時也是 web 應用中最好的關系型數據庫管理應用軟件。我們在滲透過程中碰到的 PHP 站點大部分都會搭配 MySQL 數據庫,因此它是紅隊攻防中最常遇到的數據庫。 0x01 MySQL簡介 MySQL 是典型的關系型數據庫,…