Clip微調系列:《coOp: learning to prompt for vision-language models》

論文鏈接:arxiv.org/pdf/2109.01134v1

推薦視頻(clip_coop的代碼邏輯講解,代碼簡單,有助于理解):CLIP和CoOp工作的簡單Pytorch復現和理解_嗶哩嗶哩_bilibili

其他參考鏈接:CoOp - CLIP 自適應Prompt工程 【一】_coop clip-CSDN博客?


?動機

如下圖所示,有三種手工設計的prompt提示詞:

  1. a [class]
  2. a photo of [class]
  3. a photp of a [class]

用這三種提示詞去做zero-shot測試,實驗發現盡管這三種提示詞在我們人為看來區別不大,但是實際結果卻不同------>文本輸入(即提示詞)對下游數據集性能起關鍵作用。

因此,作者提出:想讓機器自己學習到最合適的prompt提示詞來獲得更好的結果


具體方法

如下圖所示,原本在CLIP中,文本端的輸入就是人為手工設計的prompt + class(A photo if a [class]);

具體而言,就是

1. 先給定所有的標簽labels,然后加上prompt(A photo of) 變成完整的input

2. 再使用tokenizer(bert中先wordpieces)將人能看懂的詞語映射成為768維的向量,這里又10個labels,所以是[10,768]維的輸入到Text Encoder。

下圖是coOp的方法,文本輸入端的prompt 變成了 可學習的向量 + class。

具體而言:

1. 剛開始給的還是 a photo of [class]

2. 將這個a photo of [class] 傳給預訓練好的模型,加載預訓練權重,得到學習好的這個句子對應的向量(10,4,768);

3. clip中原本就直接用這個得到的向量去和圖片做交叉熵損失找出相似度最大的類別;

4. coOp得到預訓練模型學習好的向量以后,把class類別的向量凍結住;

5. 將得到的4(A photo of [class])的前三個向量當作初始值,然后去學習;

?6. 將學習后得到的這三個向量再和[class]拼接回原來的模樣,再去?做相似度計算。

最終得到的前三個向量也就是我們學習得到的prompt,作者將每個詞向量與預訓練詞典進行歐式距離計算。 選擇最接近的向量詞,作為填充,最終構成一句話,發現其實沒有語言邏輯,人是看不懂的。


細節

其實作者考慮了兩種可學習prompt:unified context統一可學習?, class-specific context特定類別可學習

我們上面舉的例子是?unified context,也就是雖然有十個類別,但是學習到的learnable prompt 都是相同的;

還有一種class-specific context就是不同的類別對應一種learnble prompt。

還考慮了[class]在句子中的不同位置:mid or end.

下面是實驗結果:

都是少樣本訓練(0-16個樣本量)

  1. ?大部分數據集下, CoOp的效果會明顯好于 Linear Probe 形式。且對于 Base model,只有在 8 到 16個 數據集以上的 Few-Shot 才會比 CLIP 的 Zero-Shot 更具優勢。
  2. Prompt詞語的 語句序列構成, [CLASS] 在中間 和 在末尾 影響較少,說明 文本Encoder 對于 Prompt詞的排序序列 有更強的魯棒性。
  3. 統一可學習向量unfiied context 與特定可學習向量class-specific context?相比, ?明顯發現 unified context 的效果會更好一些。

結果3 是因為:訓練的數據參數比?統一可學習向量?多的多,然而在 Few-Shot 數據量明顯不夠,如果要對class-specific context有更好的效果,就需要更多的參數來去擬合。

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

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

相關文章

[論文閱讀] 人工智能 + 軟件工程 | 開源軟件中的GenAI自白:開發者如何用、項目如何管、代碼質量受何影響?

開源軟件中的GenAI自白:開發者如何用、項目如何管、代碼質量受何影響? 論文:Self-Admitted GenAI Usage in Open-Source SoftwarearXiv:2507.10422 Self-Admitted GenAI Usage in Open-Source Software Tao Xiao, Youmei Fan, Fabio Calefato…

AI繪畫版權問題全解析:你的作品真的屬于你嗎?

AI繪畫版權問題全解析:你的作品真的屬于你嗎? 關鍵詞:AI繪畫、版權歸屬、生成式AI、訓練數據、獨創性、法律合規、知識產權 摘要:當你用MidJourney生成一張“賽博朋克風格的熊貓”,或用Stable Diffusion畫出“梵高筆觸的星空咖啡館”時,你是否想過:這張圖的版權屬于你、…

深入理解Linux文件I/O:系統調用與標志位應用

目錄 一、引入 二、標志位 1、什么是標志位? 2、標志位傳遞示例 輸出結果分析 關鍵點解釋 三、文件描述符(File Descriptor)(先大概了解) 四、接口介紹:open()函數 1、命令查看 2、頭文件 3、函數原型 4、參數說明 …

海康線掃相機通過采集卡的取圖設置

目錄 1、掃描高度小于65000行 1.1 軟觸發 1、采集卡設置項 2、相機設置項 1.2 硬觸發 1、采集卡設置項 2、相機設置項 2、掃描高度大于65000行 1.1 軟觸發 1、采集卡設置項 2、相機設置 1.2 硬觸發 1、采集卡設置項 2、相機設置 2.1 幀掃描 2.2 行掃描 3、注意…

InfluxDB 3與Apache Parquet:打造高性能時序數據存儲與分析解決方案

在當今數據驅動的時代,各行業產生的數據量呈爆炸式增長,如何高效存儲和管理海量數據成為企業和開發者面臨的重大挑戰。對于時序數據而言,其具有數據量大、寫入頻繁、查詢模式多樣等特點,對存儲系統的性能和效率提出了更高的要求。…

20250718-4-Kubernetes 應用程序生命周期管理-Pod對象:實現機制_筆記

一、Pod對象1. 資源共享實現機制1)共享網絡基本概念實現方式:通過將業務容器網絡加入到負責網絡的容器(infra container)實現網絡共享核心特點:共享網絡協議棧(包括TC…

防爆手機是什么?能用普通手機改裝嗎?

在石油開采平臺的井架之上,在化工車間的反應釜旁,在煤礦深達千米的巷道中,一群特殊的工作人員正使用著看似普通的通訊設備。這些設備外殼上醒目的Ex防爆認證標志,揭示著其與眾不同的身份——防爆手機。這類專為易燃易爆環境設計的…

gem install報錯解析

報錯內容 [rootlocalhost ~]# gem install bundler Fetching: bundler-2.6.9.gem (100%) ERROR: Error installing bundler:bundler requires Ruby version > 3.1.0. The current ruby version is 2.5.0.解決方案(任選其一) 這個錯誤表明你當前的 Ru…

css 如何實現大屏4個占位 中屏2個 小屏幕1個

1、 使用grid.container {display: grid;grid-template-columns: repeat(4, 1fr);gap: 20px;border: 1px solid red;width: 400px;height: 400px;}media (max-width: 768px) {.container {grid-template-columns: 1fr;}}media (min-width: 768px) and (max-width: 992px) {.con…

Redis學習系列之—— JDHotKey 熱點緩存探測系統

一、為什么需要熱點緩存探測 在回答這個問題前,我們先考慮一下:為什么光用 Redis 還不夠,還需要使用本地緩存? 一般來說,Redis 集群的性能能抗住幾十萬并發,能夠應付大部分情況。但對于一些頭部 APP&#x…

Linux 安全加固

Linux 安全加固需要從??用戶權限、系統服務、網絡防護、日志審計、文件系統、訪問控制??等多個維度入手,目標是減少攻擊面、限制未授權訪問、提升系統健壯性。以下是??詳細步驟實操示例??,覆蓋主流 Linux 發行版(如 CentOS/Ubuntu&am…

【Docker#2】容器歷史發展 | 虛擬化實現方式

一、前言 – 容器技術發展史 容器技術是現今計算技術的重要組成部分,其發展歷程可以追溯到很早的計算機系統提供的進程隔離工具。以下是容器技術的發展歷程,其中涵蓋了從早期的進程隔離技術到現代云計算和云原生的演變: ① Jail 時代 1979 年…

React + Mermaid 圖表渲染消失問題剖析及 4 種代碼級修復方案

Mermaid 是一個流行的庫&#xff0c;它可以將文本圖表&#xff08;例如 graph LR; A-->B;&#xff09;轉換為 SVG 圖表。在靜態 HTML 頁面中&#xff0c;Mermaid 會查找 <pre class"mermaid"> 代碼塊&#xff0c;并在頁面加載時將它們替換為渲染后的圖表。它…

[Element]修改el-pagination背景色

[Element]修改el-pagination背景色 代碼 <el-pagination:current-page.sync"queryParams.current":page-size.sync"queryParams.size":page-sizes"[10, 20, 50, 100]"layout"prev, pager, next, jumper, sizes":total"queryP…

Docker 可用鏡像列表

Docker 鏡像源列表&#xff08;7月15日更新-長期&免費&#xff09;_dockerhub國內鏡像源列表-CSDN博客

低代碼可視化工作流的系統設計與實現路徑研究

一、背景分析在數字化轉型不斷深化的背景下&#xff0c;企業業務流程呈現出高度定制化與動態調整的趨勢&#xff0c;傳統信息系統在開發周期、實施成本與擴展能力上的局限性日益凸顯&#xff0c;已難以支撐快速響應和敏捷迭代的實際需求。面向這一現實挑戰&#xff0c;基于 BPM…

mac mlx大模型框架的安裝和使用

mlx是apple平臺的大模型推理框架&#xff0c;對mac m1系列處理器支持較好。 這里記錄mlx安裝和運行示例。 1 安裝mlx框架 conda create -n mlx python3.12 conda activate mlx pip install mlx-lm 2 運行mlx測試例 以下是測試程序&#xff0c;使用方法和hf、vllm等推理框架基…

JAVA 使用Apache POI合并Word文檔并保留批注的實現

一、需求背景 在實際工作中&#xff0c;我們經常需要將多個Word文檔合并成一個文件。但當文檔中包含批注&#xff08;Comments&#xff09;時&#xff0c;傳統的復制粘貼會導致批注丟失或引用錯亂。本文將介紹如何通過Java和Apache POI庫實現保留批注及引用關系的文檔合并功能。…

Linux的服務管理工具:`systemd`(`systemctl`)和`SysVinit ` 筆記250718

Linux的服務管理工具:systemd(systemctl)和SysVinit 筆記250718 Linux的服務管理工具 Linux 的服務管理工具隨著發行版和初始化系統的發展而演變。以下是主要的服務管理工具及其對應的初始化系統&#xff1a; 1. systemd (現代主流標準) 初始化系統&#xff1a; 是絕大多數…

Couchbase 可觀測性最佳實踐

Couchbase 介紹 Couchbase 是一個開源的分布式 NoSQL 數據庫&#xff0c;專為高性能和高可擴展性設計&#xff0c;適用于實時數據處理的企業應用。它結合鍵值存儲和文檔數據庫的優勢&#xff0c;支持 JSON 文檔存儲&#xff0c;并通過 N1QL&#xff08;類 SQL 查詢語言&#x…