論文:Open-vocabulary Object Detection via Vision and Language Knowledge Distillation
代碼:https://github.com/tensorflow/tpu/tree/master/models/official/detection/projects/vild
效果:
- 在 zero-shot 測試下,coco 達(dá)到了 36.6 AP,PASCAL VOC 達(dá)到了 72.2AP,Object365 達(dá)到了 11.8AP
本文提出了 Vision and Language knowledge Distillation(ViLD):
- 通過將預(yù)訓(xùn)練的開集分類模型作為 teacher model,來蒸餾兩階段目標(biāo)檢測器 student model
- 即使用 teacher model 來對 category texts 和 proposal region進(jìn)行編碼
- 然后訓(xùn)練 student detector 來對齊 text 和 region embedding
一、背景
如圖 1 所示,作者思考,目標(biāo)檢測器能否識別 base category 之外的類別?
所以,本文作者就構(gòu)建了一個 open-vocabulary 目標(biāo)檢測器,用于檢測從 text 輸入的任意類別的目標(biāo)
現(xiàn)有的目標(biāo)檢測方法都是只學(xué)習(xí)數(shù)據(jù)集中出現(xiàn)的類別,而擴(kuò)充檢測類別的方法就是收集更多的類別標(biāo)注數(shù)據(jù),如 LVIS 包括 1203 個類別,有較為豐富的詞匯量,但也不夠強(qiáng)大。
另外一方面,互聯(lián)網(wǎng)上有豐富的 image-text pairs,CLIP 就嘗試使用 4 億圖文對兒來聯(lián)合訓(xùn)練模型,并且在 30 個數(shù)據(jù)集上展示了很好的效果
zero-shot 遷移的效果很大程度上來源于預(yù)訓(xùn)練的 text encoder 對任意類別文本的編碼能力,盡管現(xiàn)在對 image-level 特征表達(dá)的編碼能力已經(jīng)被證明挺好的了,但還 object-level 的特征編碼仍然很有挑戰(zhàn)
所以,本文作者思考能否從開集分類模型中拿到一些能力來用于開集檢測
作者首先從 R-CNN 類的方法入手,將開集目標(biāo)檢測也構(gòu)建為兩個子問題:
- object proposal 的生成
- open-vocabulary 圖像分類
如何操作 R-CNN 類的模型:
- 先基于基礎(chǔ)類別訓(xùn)練一個 region proposal model
- 然后使用預(yù)訓(xùn)練好的圖像分類器來對 cropped object proposal 進(jìn)行分類,可以包括新類和基礎(chǔ)類
- 作者使用 LVIS 當(dāng)做 benchmark,把 rare 類別作為 novel categories,將其他類當(dāng)做 base categories
- 缺點:很慢,因為每個 object proposal 都是一個個的進(jìn)入分類器來分類的
基于此,作者提出了 ViLD,來訓(xùn)練兩階段的開放詞匯目標(biāo)檢測器,ViLD 包含兩部分:從開集目標(biāo)分類模型的輸出中來學(xué)習(xí) text embedding 和 image embedding
- ViLD-text:只會從基礎(chǔ)類中蒸餾
- 首先,將類別名稱輸入預(yù)訓(xùn)練好的 text encoder 來得到 text embedding
- 然后,使用推理的 text embedding 結(jié)果來對檢測到的 region 進(jìn)行分類
- ViLD-image:會同時從基礎(chǔ)類和新類中來蒸餾,因為 proposal 網(wǎng)絡(luò)可能會檢測到包含新類的區(qū)域
- 首先,將 object proposal 經(jīng)過 NMS 算法過濾后,在原圖上裁剪,裁剪出原圖區(qū)域,然后將裁剪后的原圖送入 CLIP 的 image encoder 中,CLIP 的 image encoder 的輸出就是該區(qū)域的教師特征,
- 然后,訓(xùn)練一個 Mask R-CNN 來學(xué)習(xí)教師網(wǎng)絡(luò)的輸出,也就是將 student 輸出和 teacher image embedding 來對齊
二、方法
作者將檢測數(shù)據(jù)集中的類別分類 base 和 novel:
- base: C B C_B CB?,參與訓(xùn)練
- novel: C N C_N CN?
編碼器符號:
- T ( . ) T(.) T(.):text encoder
- V ( . ) V(.) V(.):image encoder
2.1 對新類別的定位 Localization
開放詞匯目標(biāo)檢測的第一個挑戰(zhàn)就是對新類別目標(biāo)的定位
作者以 Mask RCNN 為例,作者使用 class-agnostic 模塊替換了 class-specific 定位模塊,對每個 RoI,模型只能對所有類別預(yù)測一個 bbox 和一個 mask,而不是每個類別都會預(yù)測一個,所以,使用 class-agnostic 的模塊可以擴(kuò)展到用于新類別的定位
2.2 使用 cropped regions 進(jìn)行開放詞匯檢測
一旦對目標(biāo)候選區(qū)域定位成功,就可以使用預(yù)訓(xùn)練好的分類器來對區(qū)域進(jìn)行分類
Image embedding:
- 作者基于基礎(chǔ)類別 C B C_B CB? 訓(xùn)練了一個 proposal 網(wǎng)絡(luò),來提取感興趣區(qū)域
- 首先從原圖中 crop 并 resize ,然后將原圖區(qū)域輸入 CLIP 的 image encoder 中計算 image embedding
- 作者使用了兩種 crop 區(qū)域的 resize 方式:1x 和 1.5x,1.5x 的用于提供更多的上下文信息,整合后的 embedding 然后會被歸一化
Text embedding:
- 作者會使用 prompt 模版(如 “a photo of {} in the scene”)來送入 text encoder,并得到 text embedding
相似度:
- 計算完兩個 embedding 之后,作者使用 cosine similarities 來計算 image embedding 和 text embedding 的相似程度,然后使用 softmax 激活和類內(nèi)的 NMS 來得到最終的檢測結(jié)果
效率:
- 由于每個 cropped region 都會被送入 image encoder 來提取 image embedding,所以效率很低
2.3 ViLD
作者提出了 ViLD 來緩解上面提到的效率低的問題
使用 text embedding 來代替分類器:
- 首先,引入了 ViLD-text,目標(biāo)是訓(xùn)練一個可以使用 text embedding 來分類的 region embedding
- 如圖 3b 展示了訓(xùn)練的目標(biāo)函數(shù),使用 text embedding 來代替了如圖 3a 的分類器,只有 text embedding 用于訓(xùn)練
- 對于沒有匹配到任何 gt 的 proposal,被分配到背景類別,可以學(xué)習(xí)其自己的編碼 e b g e_{bg} ebg?,
- 對所有類別編碼,都計算 region embedding 和 category embedding 的余弦相似性,包括前景和背景 e b g e_{bg} ebg?,
- 然后,計算帶溫度參數(shù)的 softmax 激活后的分布并計算 cross-entropy loss
- 為了訓(xùn)練第一個階段,也就是 region proposal 網(wǎng)絡(luò),作者在線抽取 region proposal r,并且從頭開始使用 ViLD-text 來訓(xùn)練
ViLD-text 的 loss 如下:
蒸餾 image embedding:
訓(xùn)練 ViLD-image 時,主要是從 teacher model 來蒸餾到 student model 上
為了提升訓(xùn)練速度,對每個 training image 先離線抽取 M 個 proposal,并且計算其對應(yīng)的 image embedding
這些 proposal 包含了基礎(chǔ)類和新類,所以網(wǎng)絡(luò)是可以擴(kuò)展的
但 ViLD-text 只能從基礎(chǔ)類學(xué)習(xí)
ViLD-image loss 是 region embedding 和 image embedding 的 L1 loss:
ViLD 的整個訓(xùn)練 loss 如下:w 是超參數(shù)
三、效果
文章來源:http://www.zghlxwxcb.cn/news/detail-620208.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-620208.html
到了這里,關(guān)于【多模態(tài)】18、ViLD | 通過對視覺和語言知識蒸餾來實現(xiàn)開集目標(biāo)檢測(ICLR2022)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!