iPAS AI 應用規劃師 中級 科目一

CLIP 能用文字提示直接搜影像,靠的是什麼技術?

原題 35

某媒體公司計畫導入 CLIP(Contrastive Language-Image Pre-training)模型,以協助大量影像自動標註與搜尋,並希望在無需新增訓練資料的情況下,僅透過文字提示(Text Prompt)即可識別影像內容。請問此應用情境中,CLIP 能夠達成的關鍵技術特性為何?

白話

一家媒體公司要用 CLIP 模型來自動幫大量影像做標籤和搜尋。他們的特殊需求是:不需要額外訓練資料,只要輸入文字描述(Text Prompt),就能識別影像內容。

例如:輸入「海邊日落的照片」,就能從資料庫裡找到對應的影像。

問你:CLIP 能做到這件事,靠的是哪個關鍵技術特性

點選你的答案。

01 總結

一句話總結

CLIP 能「只靠文字提示找影像」的關鍵是:它用對比式學習(Contrastive Learning)把影像和文字都轉成同一個空間裡的向量,讓「語意相近的影像和文字距離很近」,所以直接比較向量距離就能找到對應影像,不需要再訓練。這叫零樣本分類(Zero-shot Classification)

02 情境

先感受問題:媒體公司的影像庫有千萬張,怎麼找

假設「映像傳媒」擁有 1000 萬張存檔照片,從 1990 年代到現在各類新聞、廣告、藝術影像都有。

現在記者要找「2000 年代台北街頭夜市人潮」的照片,但:

  • 舊照片沒有文字標籤(或標籤不夠精確)
  • 不可能每次需求都重新訓練一個分類模型
  • 有新的搜尋需求就要立刻能用

傳統做法:要找「夜市」,你需要先有人把 1000 萬張照片裡有夜市的都標好「夜市」,才能搜。但沒人做得完這個標籤工作。

CLIP 的做法:記者輸入「台北街頭夜市人潮」這段文字,CLIP 把這段文字轉成一個向量,再把所有照片的向量(已預先計算好)跟這個向量一一比較相似度,最相近的照片就排在最前面。

不需要照片有標籤,不需要重新訓練,直接靠「文字和影像都住在同一個向量空間」來搜尋。

03 對照

傳統影像辨識為什麼無法做到「輸入文字就能找圖」

傳統方法有五個根本限制:

  1. 類別封閉:傳統分類模型訓練時確定「要認哪些類別」(例如 ImageNet 的 1000 類),訓練完就固定了,沒辦法認識訓練時沒有的類別。
  2. 需要大量標記資料:每個新類別都要收集幾百到幾千張已標記的照片才能訓練,成本很高。
  3. 文字和影像是兩個分開的世界:傳統模型輸入圖片,輸出類別標籤,沒辦法把「一段文字描述」直接拿來跟圖片比較相似度。
  4. 無法理解語意組合:「穿藍色外套的女生在下雨天站在路燈旁」這種複雜描述,傳統模型沒有辦法理解並找到對應圖片。
  5. 擴充類別代價高:媒體公司如果下個月想多搜一個新類別,傳統做法要重新收集資料、重新訓練,甚至可能要等幾週。
04 解法

CLIP 的對比式學習怎麼打通圖和文的牆

回到「映像傳媒」。CLIP 在預訓練階段學的事情:

從網路上抓了 4 億個(圖片, 說明文字)配對,例如:

圖片:夜市照片 ↔ 文字:「台北饒河夜市的人潮」
圖片:狗的照片 ↔ 文字:「一隻金毛在草地上奔跑」
圖片:日落照片 ↔ 文字:「海邊橘色的夕陽」

對比式學習的訓練目標:讓配對的圖文向量距離很近,不配對的圖文向量距離很遠。

訓練完成後,「共同嵌入空間(Shared Embedding Space)」就建立了。影像和文字都住在同一個空間裡,語意相近的就離得近。

現在記者輸入「台北街頭夜市人潮」:

  • CLIP 的文字編碼器把這段文字轉成向量
  • 1000 萬張照片的向量(已預先算好)拿來比較
  • cosine 相似度最高的照片排在最前面

完全不需要照片有「夜市」這個標籤,也不需要重新訓練。這就是零樣本分類(Zero-shot Classification)的運作方式。

這就是選項 A 講的:透過圖文對比式學習將影像與文字映射至共同嵌入空間,可直接以語意相似度進行零樣本分類

技術版:CLIP 的訓練目標與對比損失函數

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

CLIP 的架構

影像 → Image Encoder(ViT 或 ResNet)→ 影像向量 v_i
文字 → Text Encoder(Transformer)→ 文字向量 v_t

兩個向量都投影到同維度空間(例如 512 維)
Step 1 純故事版
  1. 訓練時:給模型一批圖文配對,讓配對的圖和文靠近,不配對的圖和文推遠
  2. 學完後:圖和文住在同一個「語意地圖」上,語意近的距離近
  3. 使用時:輸入文字查詢,在語意地圖上找最近的圖片,不需要額外訓練
Step 2 中文 ↔ 程式碼對照
故事程式碼(OpenAI CLIP)
載入 CLIP 模型model, preprocess = clip.load("ViT-B/32")
把文字轉成向量text_features = model.encode_text(text_tokens)
把圖片轉成向量image_features = model.encode_image(image_tensor)
計算相似度similarity = (image_features @ text_features.T)
Step 3 符號角色表
Contrastive Learning(對比式學習)
訓練方式:讓正例(配對的圖文)向量相近,負例(不配對的圖文)向量相遠。CLIP 的訓練損失叫 InfoNCE Loss。
Shared Embedding Space(共同嵌入空間)
影像向量和文字向量都被投影到同一個維度空間,讓兩個模態可以直接比較距離。
Zero-shot Classification(零樣本分類)
對沒有在訓練集裡出現過的類別做分類。CLIP 把類別名稱轉成文字向量,跟圖片向量比較相似度,不需要任何針對新類別的標記資料。
Cosine Similarity(餘弦相似度)
量測兩個向量方向有多接近,值介於 -1 到 1,越接近 1 代表語意越相似。CLIP 用它找最接近查詢文字的圖片。
Step 4 完整公式對應

CLIP 的對比損失(InfoNCE Loss):

# 假設 batch 有 N 個圖文配對
# I_i = 第 i 張圖的向量,T_j = 第 j 段文字的向量

# 相似度矩陣(N × N)
S = I @ T.T / temperature  # temperature 是溫度超參數

# 圖→文 方向的損失(每張圖要找到對的文字)
L_image = CrossEntropy(S, 對角線標籤)

# 文→圖 方向的損失(每段文字要找到對的圖)
L_text  = CrossEntropy(S.T, 對角線標籤)

# 總損失
L = (L_image + L_text) / 2

對角線標籤 = 第 i 張圖的正確文字是第 i 條,其他 N-1 條都是負例。

Step 5 自我複述

蓋住架構圖,說出 CLIP 的零樣本工作流程:

  1. 把查詢文字送進 Text Encoder,得到文字向量
  2. 把所有圖片送進 Image Encoder,得到圖片向量(可預先算好)
  3. 計算文字向量和每張圖片向量的 cosine 相似度
  4. 相似度最高的圖片就是最匹配的結果
  5. 全程不需要任何標記資料或額外訓練
05 陷阱

為什麼其他選項是錯的

B透過影像增強與特徵擴散降低標註資料需求

字面在說什麼

用資料擴增(旋轉、裁切、調色等)和特徵傳遞的技術,讓模型在標記資料少的情況下仍能訓練。

為什麼不對

影像增強是通用的訓練技巧,不是 CLIP 的核心特性,也不是讓 CLIP 能做零樣本搜尋的原因。CLIP 降低標記資料需求靠的是「圖文對比式學習」而不是「資料擴增」,而且 CLIP 的訓練資料(4 億圖文配對)本身量就很大,不是靠擴增來補充。「特徵擴散」也不是 CLIP 架構的一部分,選項描述的技術跟 CLIP 無關。

誰會選錯

知道「增強資料可以降低對標記資料的需求」,覺得跟題目描述的「不需要新增訓練資料」有點像的人。但 CLIP 的零樣本能力來自對比式學習和共同嵌入空間,跟資料擴增完全是兩回事。

C以監督式學習結合多層感知器(Multilayer Perceptron,MLP)進行影像特徵分類

字面在說什麼

用傳統的監督式學習,搭配 MLP 分類器,把影像特徵映射到固定的類別標籤。

為什麼不對

這是傳統影像分類的做法,正好是 CLIP 要突破的限制。傳統 MLP 分類器的輸出層大小等於類別數,類別是固定的、封閉的,無法對沒見過的類別做分類。CLIP 的特色恰恰相反:不用 MLP 輸出固定類別,而是把影像和文字都投影到同一個連續向量空間,動態比較相似度,類別數量可以無限增加。

誰會選錯

對影像分類的「標準流程」(CNN 提特徵 + MLP 分類)很熟悉,把 CLIP 也想像成同樣架構的人。CLIP 的 Encoder 雖然也提取影像特徵,但後面不接固定輸出的 MLP 分類器,而是輸出向量做相似度比較,架構目的完全不同。

D以自迴歸生成模型(Autoregressive Model)逐步生成文字標籤描述影像內容

字面在說什麼

用自迴歸模型(像 GPT 那種逐詞生成的方式)對影像生成文字描述,就是影像說明生成(Image Captioning)。

為什麼不對

CLIP 不是生成模型,它不生成文字。CLIP 做的是「比較相似度」,判斷「這段文字和這張圖有多像」,輸出的是分數而不是文字。自迴歸生成是 GPT、BLIP-2、LLaVA 這類多模態語言模型在做的事。CLIP 是判別模型(Discriminative),不是生成模型(Generative)。

誰會選錯

把「用文字和影像互動」聯想到「讓模型生成文字描述影像」的人。CLIP 確實是圖文模型,但它做的是「判斷圖文是否配對」,不是「從圖片生成文字」。記憶口訣:CLIP 是找配對(對比),GPT 系列是生成文字(自迴歸)。

06 變形

同個考點下次怎麼變形

變形 1 邊界

CLIP 對沒有語言描述的抽象概念(如「悲傷的氛圍」),零樣本效果怎麼樣?

直覺

CLIP 從圖文配對學習,抽象情感概念在圖文資料裡常見嗎?

答案

效果較差,但不是完全沒用。網路上確實有「這張照片透著淡淡的憂傷」這類文字描述,CLIP 從中學到了一些語意關聯。但抽象情感的圖文關聯比具象物件弱得多(「狗」的圖文配對極多、高度一致,「悲傷氛圍」的配對少且模糊)。實務上要對情感做精確分類,仍需要額外微調(fine-tune)或搭配其他情感分析模型。

變形 2 反例

CLIP 能直接做影像生成嗎(例如「生成一張夜市照片」)?

直覺

CLIP 既然懂圖文關係,是不是也能生成對應文字描述的影像?

答案

CLIP 本身不能生成影像。CLIP 是判別模型,只輸出「相似度分數」,不輸出影像。但 CLIP 常被用來引導生成模型:例如 DALL-E 2 用 CLIP 的嵌入空間作為條件,引導擴散模型(Diffusion Model)生成對應文字的影像。CLIP 負責「理解文字要什麼」,擴散模型負責「生成像素」,兩者分工。

變形 3 升級版

CLIP 之後的多模態模型(如 LLaVA、GPT-4V)比 CLIP 多了什麼能力?

直覺

CLIP 是 2021 年的技術,現在的多模態模型做了哪些升級?

答案

CLIP 只能做「相似度比較」(這張圖最像哪段文字)。後續模型(LLaVA、GPT-4V)在 CLIP 的圖文理解基礎上加上了語言生成能力:能對影像做問答(「這張圖裡有幾個人?」)、產生詳細描述、讀取影像中的文字(OCR)、理解圖表和文件。這些需要把影像理解和語言生成模型整合,CLIP 做的是前者(理解),缺少後者(生成)。

變形 4 跨領域

CLIP 能用在醫療影像辨識嗎(例如 X 光判讀)?

直覺

CLIP 在一般圖片上很強,但醫療影像是高度專業的領域,零樣本效果好嗎?

答案

直接用通用 CLIP 效果有限,因為預訓練資料(網路圖片)裡醫療影像很少,圖文配對品質也不高。但概念可以遷移:BioViL-T、MedCLIP 等模型用醫學論文的圖文配對(X 光圖 + 放射科報告)做 CLIP 式對比訓練,學到的嵌入空間對醫療術語和影像有很好的對應。這種「在特定領域重新做 CLIP 訓練」的模式叫做領域適應(Domain Adaptation)的 CLIP 變體。

變形 5 評估指標

怎麼評估 CLIP 的零樣本分類效果?

直覺

CLIP 說自己做零樣本分類,這個「好」怎麼量化?

答案

標準評估方式:在 ImageNet 等公開資料集上,不給 CLIP 看任何 ImageNet 訓練圖,直接用類別名稱(如「貓」「狗」「汽車」)作為文字查詢,讓 CLIP 對測試圖片分類,算 Top-1 和 Top-5 準確率。CLIP(ViT-B/32)在 ImageNet 零樣本分類的 Top-1 準確率約 63%,接近 2014 年有完整監督訓練的 ResNet-50(76.1%),考慮到零樣本的難度,是很強的成績。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 35 題

查看官方原文 PDF