從CLIP應(yīng)用領(lǐng)會隱空間的魅力
1 前言
在前面所刊登的《從隱空間認(rèn)識CLIP 多模態(tài)模型》一文里,已經(jīng)闡述了CLIP 基于隱空間的運作了。在本文里,將從商店柜臺的產(chǎn)品推薦應(yīng)用來說明:我們可以拿CLIP 的源代碼,搭配商家自有產(chǎn)品圖像(Image) 和圖像敘述文句(Text),來訓(xùn)練出企業(yè)自用的CLIP 小模型,同時也領(lǐng)會其幕后隱空間(Latent space) 的運作及其效果。
茲復(fù)習(xí)一下CLIP 的特性,它的目標(biāo)是透過大量圖片及文字描述,建立兩者間的對應(yīng)關(guān)系。其做法是利用ResNet50 等來萃取圖像的特征,并映射到隱空間(Latent space)。也就是將圖像編碼成為隱空間向量。同時,也利用Transformer 萃取與圖像相配對文句的特征,并將文句編碼成為隱空間向量。最后經(jīng)由模型訓(xùn)練來逐漸提高兩個向量的相似度。換句話說,CLIP 能將圖像和文句映像到同一個隱空間,因此可以迅速計算圖像與文句的相似度。
換句話說,CLIP 發(fā)揮了隱空間的魅力,藉之學(xué)習(xí)整個文句與其對應(yīng)的圖像之間的關(guān)系。當(dāng)我們在整個文句上訓(xùn)練時,它可以學(xué)到更多的隱藏的東西,并在圖像和文句之間找到一些規(guī)律。因而,在當(dāng)今主流的ChatGPT 和Stable Diffusion 大模型,其幕后都使用CLIP 來提供“文找圖”和“圖找文”的雙向功能。在一般企業(yè)里,也常常需要上述的“文找圖”和“圖找文”雙向功能。
2 以“商店柜臺AI產(chǎn)品推薦”為例
這是一項CLIP 模型的應(yīng)用案例。其應(yīng)用于商家( 如便利商店) 柜臺,進(jìn)行瞬間實時商品推薦。典型的使用情境是:
1) 客人在便利商店里,挑選了一項產(chǎn)品,拿到柜臺結(jié)賬,例如青島啤酒;
2) 柜臺( 收銀臺) 正上方天花板設(shè)置一個Camera,立即拍下這張圖像,如圖1;
圖1
3) 柜臺的收款機(jī)(POS) 系統(tǒng)把這張圖像,傳送給后臺的CLIP 模型;
4) 此時,CLIP 模型立即找出< 最接近( 相似)> 的產(chǎn)品圖像,如圖2;
圖2
5) CLIP 模型回傳給POS 系統(tǒng),然后將這兩張相關(guān)圖像,顯示于柜臺的雙向平板屏幕上,柜臺人員和客人立即看到了(圖3),達(dá)到促銷的效益;
圖3
6) 依不同客人結(jié)帳的產(chǎn)品,而立即找出最符合客人〈偏好〉的相關(guān)產(chǎn)品,達(dá)到實時推薦& 行銷。再如,另一位客人購買產(chǎn)品是圖4;
圖4
7) CLIP 模型就立即找出< 最接近( 相似)> 的相關(guān)< 產(chǎn)品> 的圖像,如圖5;
圖5
8) CLIP 模型回傳給POS 系統(tǒng),然后將這兩張相關(guān)圖像,顯示于柜臺的雙向平板屏幕上,柜臺人員和客人立即看到了,達(dá)到促銷的效益。
上述的CLIP 模型是針對“產(chǎn)品”的。而一般POSPOS 機(jī)的人臉AI 是針對“人”。我們可以擴(kuò)大建立一個商品推薦AI 模型,把兩者匯合起來,就實現(xiàn)了“比客人更懂客人”的極佳效果了。
3 實現(xiàn)方法
接下來,就來說明如何實現(xiàn)上述的“商店柜臺AI產(chǎn)品推薦”模型開發(fā)。
Step1下載CLIP源代碼
下載網(wǎng)址是:https://github.com/moein-shariatnia/OpenAI-CLIP
Step2準(zhǔn)備訓(xùn)練圖像(Image)
在本范例里,收集了該商店的產(chǎn)品圖像,共20張。放置在這活頁夾/ox_super_market_data/train/ 里(圖-6):
圖6 訓(xùn)練數(shù)據(jù)
Step3準(zhǔn)備相對應(yīng)的文本(Text)
在本范例里,會自動讀取圖像的文件名(File name)來做為圖像的相互對應(yīng)的文本。例如,圖6 里的第0 張圖,其檔名為:”天工貢糖_J”。于是,就擷取”天工貢糖”做為此圖像的相對應(yīng)文本,如圖7所示。
圖7 圖與文的對應(yīng)關(guān)系
Step4展開訓(xùn)練(Training))
接著,就基于上述圖像數(shù)據(jù)、文本數(shù)據(jù)、以及它們之間的對應(yīng)關(guān)系,來訓(xùn)練CLIP模型。如果使用一般的GPU硬件設(shè)備來進(jìn)行訓(xùn)練,大約10 分鐘即可訓(xùn)練5000回合。然后匯出*.ckpt 檔案。
Step5應(yīng)用(一):圖找文
訓(xùn)練好了CLIP 模型,就拿一些圖像來檢測看看CLIP 的< 圖找文> 功能,如圖8 里的圖像。
圖8 測試圖像
在源碼里也提供了CLIP 的預(yù)測功能,就搭配我們自己訓(xùn)練的模型( 即*.ckpt 檔案),來檢驗CLIP 的預(yù)測能力。例如輸入圖8 里的image_00.jpg 圖像,CLIP 立即找出其< 最接近的> 文本,如圖9。
圖9 CLIP做了很棒的預(yù)測
Step6應(yīng)用(二):文找圖
接下來,就拿一段文本來檢測CLIP 的“文找圖”功能。例如:輸入文句:”有沒有青島山水美啤酒呢?”CLIP 找出其“最接近的”圖象,如圖10。
圖10
根據(jù)圖10的描述可以繪出該圖像為圖11,CLIP輸出了美好的結(jié)果。
圖11
Step8應(yīng)用(三):圖找圖
再來,就拿一張圖檢測看看CLIP 的“圖找圖”功能。例如:輸入一張圖,然后由CLIP 立即找出其“最接近的”圖象,如圖12,CLIP 的表現(xiàn)很棒。
圖12
4 結(jié)語
本文以大家很能理解的應(yīng)用案例,來讓您體會CLIP 幕后的作業(yè),尤其是它將圖像特征,以及文本特征映像到隱空間,也就是將其編碼成為隱空間向量,并計算其相似度。最后,基于相似性來找出“最接近的”圖像或文本。
(本文來源于《EEPW》2023年11月期)
評論