- 論文:https://arxiv.org/abs/2112.10003
- 代碼:https://github.com/timojl/clipseg
- 語(yǔ)雀文檔:https://www.yuque.com/lart/papers/ma3gkwbb5ud1ewbw
目標(biāo)任務(wù):refering/zero-shot/one-shot segmentation
目標(biāo)數(shù)據(jù)集: PhraseCut
主要目的
本文基于CLIP強(qiáng)大的零樣本的文本編碼和圖像編碼能力, 設(shè)計(jì)了一個(gè)新的系統(tǒng), 基于測(cè)試時(shí)任意的Prompt信息(任意的文本或者圖像提示), 來(lái)生成圖像分割, 整體的形式非常類似于Few-shot的Segmentation形式.
這種策略解決現(xiàn)有基于固定類別的分割學(xué)習(xí)范式的局限性, 即現(xiàn)有圖像分割任務(wù)的使用固定的目標(biāo)類別來(lái)訓(xùn)練模型, 對(duì)于之后擴(kuò)展額外的類或者更加復(fù)雜的查詢信息時(shí), 不夠靈活和方便, 需要重新訓(xùn)練模型來(lái)包含這些表達(dá).
這樣的設(shè)計(jì)可以方便地構(gòu)建一個(gè)統(tǒng)一模型, 通過(guò)一次訓(xùn)練可以應(yīng)對(duì)三類常見(jiàn)的分割任務(wù), 即:
- referring expression segmentation:由文本提示指定目標(biāo)分割。訓(xùn)練時(shí)會(huì)見(jiàn)到所有類別,也就是說(shuō)并不需要考慮到泛化到未知類別的問(wèn)題。
- zero-shot segmentation:測(cè)試中存在訓(xùn)練時(shí)未知類別,這些未知類別需要通過(guò)建立與已知類別之間的關(guān)系來(lái)實(shí)現(xiàn)分割?,F(xiàn)有方法會(huì)借助于類別文本嵌入等手段實(shí)現(xiàn)信息的關(guān)聯(lián)。
- one-shot segmentation:測(cè)試中,目標(biāo)類別的分割需要提供與之關(guān)聯(lián)的單個(gè)樣本作為提示(support data)來(lái)指導(dǎo)分割,這通??梢允挂粋€(gè)有著對(duì)應(yīng)mask的圖像。
注意, 這里提到的類別未知指的是模型不知道可能存在的類別, 但可以通過(guò)人為提供目標(biāo)類別的信息來(lái)指導(dǎo)模型的分割.
主要內(nèi)容
整個(gè)方法構(gòu)建在CLIP之上, 使用CLIP(ViT-B/16)作為backbone, 擴(kuò)展了一個(gè)小的基于Transformer的條件分割解碼器來(lái)實(shí)現(xiàn)密集預(yù)測(cè)任務(wù). 如圖所示, 這里將CLIP的兩個(gè)編碼器參數(shù)凍結(jié)了, 只有綠色部分是可學(xué)習(xí)的.
模型使用CLIP的聯(lián)合文本視覺(jué)嵌入空間來(lái)指導(dǎo)模型的學(xué)習(xí), 確保了可以處理文本和圖像形式的Prompt. 這里的想法是教解碼器將CLIP內(nèi)部的激活與輸出的分割聯(lián)系起來(lái), 同時(shí)盡可能減少數(shù)據(jù)集偏置, 并保持CLIP的杰出和廣泛的預(yù)測(cè)能力.
在通過(guò)PhraseCut數(shù)據(jù)集的擴(kuò)展版本上的訓(xùn)練后, 整個(gè)模型可以獲得一個(gè)二值分割圖, 這會(huì)對(duì)應(yīng)于輸入端提供的query, 即任意文本或者提示圖像的信息.
這里作者提到:這種混合輸入的形式, 使得對(duì)于三類分割任務(wù)具有了動(dòng)態(tài)適應(yīng)的能力, 同時(shí)也使得模型可以適應(yīng)那些可以通過(guò)特定的文本或者圖像來(lái)表述的二值分割任務(wù).
這里其實(shí)反映了很重要的一點(diǎn), 文字描述本身具有一定的主觀性和模糊性, 而用特定圖像作為指導(dǎo)又必然會(huì)受限于圖像的形式和目標(biāo)的狀態(tài). 它們對(duì)于被用來(lái)指導(dǎo)模型進(jìn)行確定性分割的需求而言, 并不能完全勝任.
Decoder
整體流程可見(jiàn)圖2中的解釋. 所有CLIP的參數(shù)都是凍結(jié)的. 模型整體僅需訓(xùn)練一個(gè)緊湊的界面奧奇, 所以CLIPSeg在特征嵌入維度為64的時(shí)候, 整體可學(xué)習(xí)的參數(shù)只有1M多.
- query圖像通過(guò)CLIP視覺(jué)編碼器. 這里的圖像通過(guò)合并分割mask和圖像獲得了engineered visual prompt來(lái)輸入CLIP, 這一query的預(yù)處理過(guò)程在文中稱為visual prompt engineering.
- 中間的激活結(jié)果被讀取并映射到解碼器中的嵌入維度上. 提取的激活(包括CLS token)被加到解碼器每個(gè)transformer block之前. 解碼器transformer blocks的數(shù)量和CLIP中提取的激活數(shù)量一致. 實(shí)際模型中, 從CLIP的第3、7、9層中獲得激活輸出, 也因此解碼器只有三層.
- 解碼器使用一個(gè)線性投影生成二值分割.
- 為了解碼特定的分割目標(biāo), 這里使用FiLM, 通過(guò)條件向量來(lái)調(diào)制解碼器的輸入.
- FiLM來(lái)自于https://arxiv.org/pdf/1709.07871.pdf.
- 條件向量可以從兩種方式獲得, 即使用CLIP文本編碼器對(duì)文本Query的嵌入和使用CLIP視覺(jué)編碼器對(duì)圖像Query的嵌入.
- 實(shí)際上, 由于CLIP構(gòu)建了圖像和文本之間的共享的嵌入空間, 作者們?cè)谶@里使用了二者之間的隨機(jī)線性插值作為條件向量, 并將這種方式作為了一種訓(xùn)練時(shí)的數(shù)據(jù)增強(qiáng)策略(image-text interpolation). 即使用圖像嵌入 S i S_i Si?和文本嵌入 t i t_i ti?線性組合獲得條件向量: x i = α S i + ( 1 ? α ) t i , α ∈ [ 0 , 1 ] x_i = \alpha S_i + (1-\alpha)t_i, \alpha \in [0, 1] xi?=αSi?+(1?α)ti?,α∈[0,1].
PhraseCut+
PhraseCut原本只有340000個(gè)有著對(duì)應(yīng)圖像分割的短語(yǔ), 并不包含任何的visual support. 作者們擴(kuò)展了這個(gè)數(shù)據(jù)集:
- 為了為prompt p添加visual support image, 隨機(jī)從樣本集合Sp中抽取了部分?jǐn)?shù)據(jù), 他們共享prompt p. 對(duì)于只有單一樣本對(duì)應(yīng)的prompt, 則模型僅依賴于text prompt.
- 另外為數(shù)據(jù)集引入了負(fù)樣本, 即樣本中并沒(méi)有prompt中匹配的目標(biāo). 具體就是將樣本的對(duì)應(yīng)的短語(yǔ)按照固定的概率qneg, 隨機(jī)替換為不同的短語(yǔ).
短語(yǔ)使用一組固定前綴隨機(jī)增強(qiáng)(正如CLIP作者所建議的那樣). 在圖像上, 我們?cè)诳紤]對(duì)象位置的情況下應(yīng)用隨機(jī)裁剪, 確保對(duì)象至少保持部分可見(jiàn). 本文將此擴(kuò)展數(shù)據(jù)集稱為PhraseCut+(縮寫(xiě)為PC+).
與原始的 PhraseCut 數(shù)據(jù)集只使用文本來(lái)指定目標(biāo)相反, PC+支持使用image-text interpolation的方式訓(xùn)練. 通過(guò)這種方式可以訓(xùn)練一個(gè)聯(lián)合模型來(lái)處理文本和視覺(jué)輸入.
這里倒是沒(méi)有提到, 測(cè)試時(shí)同時(shí)輸入文本和圖像時(shí), 如何插值處理?
Visual Prompt Engineering
基于Prompt的學(xué)習(xí), 實(shí)際上本質(zhì)目的在于將特定目標(biāo)信息引入作為指導(dǎo). 所以如何獲取特定目標(biāo)信息也是一個(gè)關(guān)鍵. 這里從特征層面和輸入層面兩個(gè)角度進(jìn)行了討論.
為了評(píng)估不同的masking策略, 這里在LVIS數(shù)據(jù)集上, 基于CLIP的對(duì)齊關(guān)系進(jìn)行了一些評(píng)估.
使用CLIP來(lái)計(jì)算與圖像中目標(biāo)名稱對(duì)應(yīng)的文本嵌入ti. 然后將它們與原始圖像視覺(jué)嵌入so, 以及使用修改后圖像或注意力mask來(lái)突出目標(biāo)物體后的視覺(jué)嵌入sh, 分別進(jìn)行比較. 通過(guò)softmax歸一化對(duì)齊向量(可以理解為成對(duì)相似度), 得到的分布如圖3所示.
這里將不同masking策略的評(píng)估指標(biāo)定義為 Δ P ( o b j e c t ) = s h t 0 ? s o t 0 \Delta P(object) = s_h t_0 - s_o t_0 ΔP(object)=sh?t0??so?t0?, 這里將目標(biāo)類別的文本嵌入定義為 t 0 t_0 t0?. 所以這里表示了不同的圖像嵌入與目標(biāo)文本嵌入的相似性, 相對(duì)于原始圖像對(duì)應(yīng)的相似性的差異.
特征級(jí)別的特定目標(biāo)信息提取: Masked Pooling
作者們首先討論了傳統(tǒng)基于卷積的方案中, 為了計(jì)算prototype vector常使用的Masked Pooling的技術(shù), 這一技術(shù)作用于support圖像特征上. 而本文中為了提取特定目標(biāo)信息的prompt信息的過(guò)程與此概念頗為類似.
但由于整體結(jié)構(gòu)基于Transformer, 語(yǔ)義信息不僅在特征圖中分散存在, 在其內(nèi)部參與了層次聚合過(guò)程的CLS token也有. 而繞過(guò)CLS token并直接從特征映射的mask pooling中派生條件向量也是不可能的, 因?yàn)樗鼤?huì)破壞CLIP的文本嵌入和視覺(jué)嵌入之間的兼容性.
在Transformer中, 與masked pooling等效的直接方法是直接在tokens應(yīng)用mask. 通常, visual transformer由一組固定的token組成, 這些令牌可以通過(guò)多頭注意在每層進(jìn)行交互. 其中有用于讀出的CLS token和最初從圖像patch中獲得的與圖像區(qū)域相關(guān)的token.
mask可以通過(guò)將一個(gè)(例如最后一層)或多個(gè)transformer層的限制為mask內(nèi)的patch token僅和CLS令牌之間的交互. 表2左表中展示了實(shí)驗(yàn)結(jié)果. 可以看到這種masking策略效果一般, 相較于完全masking有小幅度提升.
輸入級(jí)別的特定目標(biāo)信息提取: Visual Prompt Engineering
替代在模型內(nèi)部使用使用masking, 可以直接組合mask和image來(lái)獲得一個(gè)新的圖像, 從而可以被visual transformer處理. 相似于(analogous to)NLP中的prompt engineering, 這里將其稱之為visual prompt engineering. 由于這種prompt設(shè)計(jì), 在NLP中新穎且在上下文未知的情況下表現(xiàn)最佳, 這里通過(guò)設(shè)計(jì)了多種形式來(lái)評(píng)估不同的變體, 如表2中所示. 可以發(fā)現(xiàn)mask和image結(jié)合的形式非常重要. 這里確定了三種圖像操作來(lái)改善文本prompt與圖像之間的對(duì)齊: 降低背景亮度, 使用高斯濾波器模糊背景, 和對(duì)目標(biāo)裁剪. 表二中可以看到, 三種操作的組合獲得了最好的效果. 本文使用這種形式.
實(shí)驗(yàn)細(xì)節(jié)
實(shí)驗(yàn)中, 由于涉及到單通道預(yù)測(cè)圖像的二值化的問(wèn)題, 所以作者對(duì)于閾值的設(shè)定進(jìn)行了一些特殊化的設(shè)定: 在二值分割中, IoU需要指定一個(gè)閾值. 雖然大多數(shù)情況下會(huì)使用自然的選擇0.5, 但如果對(duì)象匹配查詢的概率在訓(xùn)練和推理之間不同, 則最優(yōu)值可能會(huì)嚴(yán)重偏離0.5(查詢匹配場(chǎng)景中一個(gè)或多個(gè)對(duì)象的先驗(yàn)概率高度依賴于內(nèi)容和數(shù)據(jù)集). 因此, 本文報(bào)告了使用閾值對(duì)每個(gè)任務(wù)和模型進(jìn)行優(yōu)化的one-shot分割的性能.
這里的實(shí)驗(yàn)中設(shè)計(jì)了兩種baseline變體:
- CLIP-Deconv使用CLIP和一個(gè)非常簡(jiǎn)單的解碼器, 僅僅包含F(xiàn)iLM條件化結(jié)構(gòu)、一個(gè)線性映射和一個(gè)轉(zhuǎn)置卷積. 這有助于估計(jì)CLIP獨(dú)自對(duì)于結(jié)果起到的作用.
- ViTSeg使用與提出的CLIPSeg相同的結(jié)構(gòu), 但是這里的視覺(jué)編碼器使用ImageNet預(yù)訓(xùn)練的參數(shù)來(lái)替換CLIP的初始化. 而文本編碼器仍然使用CLIP初始化. 這有助于了解到特定的CLIP權(quán)重對(duì)性能的影響.
Refering Segmentation
對(duì)比中可以看到:
- 不同模型在不同數(shù)據(jù)集上的最優(yōu)閾值不同.
- ViTSeg的性能反映了同時(shí)使用CLIP兩個(gè)編碼器更重要.
- 在Refering分割上, 使用擴(kuò)充數(shù)據(jù)集效果并不好. 僅基于文本訓(xùn)練的形式反而效果要更好.
Zero-shot Segmentation
這里是直接評(píng)估, 訓(xùn)練是在排除了Pascal中的unseen類別的PhraseCat+上開(kāi)展的. 這是通過(guò)將 Pascal 類分配給 WordNet 同義詞集并通過(guò)遍歷下位詞(例如, 不同的狗品種表示狗)來(lái)生成一組無(wú)效詞來(lái)實(shí)現(xiàn)的. 包含這樣一個(gè)詞的提示將從數(shù)據(jù)集中刪除.
作者在這里提到, 試驗(yàn)所關(guān)注的數(shù)據(jù)集Pascal-VOC的設(shè)定是多標(biāo)簽的. 提出的模型由于本身是二值預(yù)測(cè)的形式, 所以對(duì)于這種多標(biāo)簽的需求, 直接為20個(gè)Pascal類別分別預(yù)測(cè)一個(gè)獨(dú)立的二值圖. 從所有的20個(gè)預(yù)測(cè)中, 為每個(gè)像素預(yù)測(cè)概率最大的類別.
或許可以理解為, 每個(gè)圖像中包含的類別不止一個(gè), 所以實(shí)際上這是一個(gè)多類別的任務(wù). 對(duì)于本文的設(shè)定, 每個(gè)輸入可能無(wú)法事先知道存在哪些類別, 所以直接一次性生成20個(gè)類別的預(yù)測(cè).
實(shí)驗(yàn)結(jié)果中非常有趣的一點(diǎn)是提出的CLIPSeg在unseen類上的性能要比在seen上的好. 作者任務(wù)這可能是因?yàn)閷?shí)際的seen類要比unseen更難一些. 例如, 對(duì)于unseen-4的設(shè)定, 四個(gè)類分別是airplane/cow/motorbike/sofa, 他們多為大且相對(duì)獨(dú)特的目標(biāo).
One-shot Segmentation
這類任務(wù)中, 目標(biāo)的識(shí)別需要借助于提示圖像和對(duì)應(yīng)的mask, 所以也就無(wú)法依賴于文本標(biāo)簽了.
這里使用前面提到的三種操作處理提示圖像來(lái)突出目標(biāo).
這里使用相同的策略移除了和Pascal重疊的類別.
Open Vocabulary
這里探究了對(duì)于三種不同文本prompt下的預(yù)測(cè)效果.
- Generalized Prompts: 亦為affordance-like prompt.
- Descriptive Prompts from PhraseCut test set: 上圖中黃色區(qū)域額外測(cè)試了使用錯(cuò)誤顏色描述的情況.
提示中的細(xì)節(jié)信息(藍(lán)色框中)和顏色信息(橙色框中)對(duì)預(yù)測(cè)對(duì)象的判定影響很大.
為了定量評(píng)估generalized prompt的性能, 作者構(gòu)建了 LVIS 測(cè)試數(shù)據(jù)集的子集, 其中僅包含與affordance或者attribute相對(duì)應(yīng)的類的圖像. 然后要求模型以這些作為prompt進(jìn)行分割. 例如, 當(dāng)使用"sit on"作為提示時(shí), 計(jì)算與扶手椅、沙發(fā)和雙人沙發(fā)目標(biāo)之間的前景IoU. 類別映射的完整列表可見(jiàn)論文的附表.
實(shí)驗(yàn)發(fā)現(xiàn) PC+ 上訓(xùn)練的 CLIPSeg 版本比 CLIP-Deconv 基線, 和在 LVIS 上訓(xùn)練的CLIPSeg表現(xiàn)更好(它只包含對(duì)象標(biāo)簽而不是復(fù)雜的短語(yǔ)).
這一結(jié)果表明, 數(shù)據(jù)集的多變性和模型的復(fù)雜性對(duì)于泛化都是必要的.
ViTSeg 表現(xiàn)更差, 這是意料之中的, 因?yàn)樗鼪](méi)有使用以泛化能力而聞名的強(qiáng)大的 CLIP backbone.
Ablation Study
從圖中可以看到, CLIP的預(yù)訓(xùn)練權(quán)重對(duì)于提出的CLIPSeg非常重要. 混合prompt形式的訓(xùn)練使得模型對(duì)于不同輸入的獨(dú)立性能更加平衡.
CLIP對(duì)于輸入尺寸的依賴性分析
由于多頭注意力不需要固定數(shù)量的標(biāo)記, CLIP 中的transformer可以處理任意大小輸入. 然而, 公開(kāi)可用的 CLIP 模型(ViT-B/16 和 ViT-B/32)是在 224×224 圖像上訓(xùn)練的. 這里在分類任務(wù)中測(cè)量了 CLIP 性能與輸入圖像大小的相關(guān)性.
從兩個(gè) CLIP 編碼器中, 提取最后一層的 CLS 向量. 使用此向量作為輸入, 在 ImageNet 子集上訓(xùn)練邏輯回歸分類器以區(qū)分 67 類車輛.
結(jié)果表明 CLIP 通??梢院芎玫靥幚泶髨D像尺寸, ViT-B/16版本在大約 350×350 的尺寸下表現(xiàn)出更好的性能.
文本prompt形式、目標(biāo)大小和類別
為了更好理解模型的表現(xiàn), 這里比較了不同形式的文本prompt、目標(biāo)大小和類別.文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-487654.html
實(shí)驗(yàn)是通過(guò)PC+上預(yù)訓(xùn)練的CLIPSeg. 在所有情況下訓(xùn)練期間隨機(jī)抽取不同的提示形式. 這里評(píng)估了 PhraseCut 測(cè)試集 5000 個(gè)樣本的性能.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-487654.html
- 幾種prompt形式對(duì)性能的影響很小.
- 在較大對(duì)象上有更好性能的趨勢(shì)明顯.
- 不同類別的表現(xiàn)相當(dāng)平衡.
到了這里,關(guān)于CVPR 2022 | Segment Everything Everywhere All at Once的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!