論文:CORA: Adapting CLIP for Open-Vocabulary Detection with Region Prompting and Anchor Pre-Matching
代碼:https://github.com/tgxs002/CORA
出處:CVPR2023
一、背景
開集目標(biāo)檢測(Open-vocabulary detection,OVD)最近得到了很大的關(guān)注,CLIP 的出現(xiàn)讓開集目標(biāo)檢測有了新的解決方式
CLIP 是學(xué)習(xí)圖像和文本之間的關(guān)系來進(jìn)行匹配的,那么能否將 CLIP 用于解決開集目標(biāo)檢測呢
這里會有兩個問題:
-
如何將 CLIP 使用到 region-level 的任務(wù)上:
一個簡單的做法是將 region 扣出來當(dāng)做一個圖像,但這并非好的解決方式,因?yàn)?region 和 image 之間本來就有 gap
-
如何學(xué)習(xí)可泛化的目標(biāo) proposal:
ViLD、OV-DETR、Region-CLIP 等都需要使用 RPN 或 class-agnostic 目標(biāo)檢測器來挖掘出沒被提及的類別,但這些 RPN 也都是基于訓(xùn)練數(shù)據(jù)來訓(xùn)練的,不可能將所有目標(biāo)都檢出,所以其實(shí)能檢出的需要的類別也很少
本文中提出了一個基于 DETR 且引入了 CLIP 的方法,且沒有使用額外的 image-text 數(shù)據(jù),來實(shí)現(xiàn)開集目標(biāo)檢測
二、方法
OVD 是一個希望能檢出所有類別的檢測任務(wù),本文提出了 CORA 來解決該任務(wù)
2.1 總體結(jié)構(gòu)
如圖 1 所示,給定一個圖像作為輸入:
-
首先,使用訓(xùn)練好的 CLIP 中的 ResNet backbone 來提出圖像的特征,分類和定位共享這個特征
-
接著,region classification:給定一個待分類的 region(anchor box 或 box prediction),作者使用 RoIAlign 來得到 region 特征,然后使用 CLIP 的 attention pooling 來得到區(qū)域編碼,可以使用從 CLIP text encoder 得到的 class embedding 來進(jìn)行分類
-
然后,object localization:對于上面通過 CLIP 得到的圖像特征,會使用 DETR-like encoder 進(jìn)行進(jìn)一步特征提取,然后輸入 DETR-like decoder,anchor box 的 queries 會先使用 CLIP-based region classifier 進(jìn)行分類,然后會根據(jù)預(yù)測的標(biāo)簽進(jìn)行調(diào)整,然后使用 DETR-like decoder 來實(shí)現(xiàn)更好的定位。decoder 也會根據(jù)預(yù)測的 label 來估計(jì) query 的匹配。在訓(xùn)練中,預(yù)測的框會和 gt 進(jìn)行一對一匹配,然后使用 DETR 的方式進(jìn)行訓(xùn)練。推理時,box 的類別直接使用 CLIP-based region classifier 來確定
針對這兩個問題,CORA 也提出了解決方案:
- 目標(biāo)檢測是識別和定位圖像中的目標(biāo),CLIP 模型是在整個圖像上訓(xùn)練的,有一定的 gap:作者提出了 region prompt,來調(diào)整 region features 以獲得更好的定位
- 檢測器需要對新類別學(xué)習(xí)目標(biāo)的位置,但標(biāo)注的類別都是基礎(chǔ)類別:作者將 anchor pre-matching 提前了,讓 class-aware 的目標(biāo)定位能夠在 infer 的時候泛化到新的類別
2.2 region prompting
如圖 2 所示,給定一個圖像和一系列 RoI,首先對全圖使用 CLIP encoder 的前 3 個 blocks 進(jìn)行編碼,然后使用 RoIAlign pooling
由于 CLIP 對全圖編碼和區(qū)域編碼是有 gap 的,所以作者提出 region prompting 來通過可學(xué)習(xí)的 prompt p ∈ R S × S × C p\in R^{S \times S \times C} p∈RS×S×C 來擴(kuò)展 region feature,對兩組特征進(jìn)行對齊
- S:region feature 的空間尺寸
- C:region features 的維度
給定一個 input region feature f r e g i o n f_{region} fregion?,region prompt 計(jì)算如下:
- ? 表示逐點(diǎn)相加
- P 是 CLIP 中的 attention pooling
如何優(yōu)化 region prompt:
- 作者使用 base-class 標(biāo)注的檢測數(shù)據(jù)來訓(xùn)練 region prompt
- loss 為交叉熵
- 保持其他參數(shù)凍結(jié),只訓(xùn)練 region prompt
2.3 anchor pre-matching
region prompt 能夠幫助解決 image 和 region 的 gap
為了解決 RPN 在新類別上檢出能力不足的問題,作者提出了 class-aware query-based 目標(biāo)定位器,能夠提升模型在沒見過的類別上的定位能力
如圖 1 所示,給定一個從 CLIP image encoder 得到的視覺特征, object query 會和 class name embedding 進(jìn)行 pre-matched
Anchor Pre-matching:
目標(biāo)定位是使用 DETR-style 的 encoder-decoder 結(jié)構(gòu)實(shí)現(xiàn)的,encoder 用于細(xì)化特征圖,decoder 用于將 object query 解碼到 box
作者使用 DAB-DETR,object query 的類別 c i c_i ci? 是根據(jù)相關(guān)的 anchor box b i b_i bi? 來分配的
pre-matching 之后,每個 object query 會根據(jù)預(yù)測的類別來進(jìn)行 class-aware box regression,object query 是有下面得到的:
得到模型預(yù)測后,gt 和模型預(yù)測框的匹配是對每個類別分別使用雙邊匹配
對類別 c,假設(shè) gt y c y^c yc 匹配到了 N c N_c Nc? 個預(yù)測框,會通過最小化下面的分布來優(yōu)化 N c N_c Nc? 的排列:
- L m a t c h L_{match} Lmatch?:二值分類 loss,這里使用 focal loss
- L b o x L_{box} Lbox?:是定位誤差,這里使用 L1 和 GIoU 的加權(quán)和
模型的最終優(yōu)化 loss 如下:
三、效果
文章來源:http://www.zghlxwxcb.cn/news/detail-599879.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-599879.html
到了這里,關(guān)于【多模態(tài)】17、CORA | 將 CLIP 使用到開集目標(biāo)檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!