CVPR 2022|重新思考对齐Prototype的域自适应:基于Graph Matching的新范式
?作者 |?李舞陽
單位 |?AIM Group/香港城市大學
研究方向 |?目標檢測
論文題目:
SIGMA: Semantic-complete Graph Matching for Domain Adaptive Object Detection
論文鏈接:
https://arxiv.org/abs/2203.06398
項目鏈接:
https://github.com/CityU-AIM-Group/SIGMA
本文介紹我們的工作:SIGMA: Semantic-complete Graph Matching for Domain Adaptive Object Detection。其實主要有兩個目的:1)希望能分享自己在做本工作的一些思考,起到拋磚引玉的效果。2)希望能解釋下本工作一些可能引起困惑的地方,幫助大家更好的了解本工作的思路。對于一些個人理解的淺薄、錯誤之處,也歡迎大家指出,互相學習(本文章會繼續更新)。同時,歡迎感興趣的伙伴加入我們的 AIM Group,我們組招多個 Postdoc 和 RA。
序言
Prototype 這個詞相信大家都不陌生,作為一種面向“中心”的“描述子”,已經被廣泛應用到各種基于機器學習的視覺任務,其核心思想可以抽象為:用少量歸納的知識描述或建模大量樣本的分布特性,進而服務于下游任務。個人感覺,這類工作可以由四個“變量”共同決定:
1)數據層次:這種思想可以應用于各種層次的樣本,比如從一張圖片的像素集,到一個 domain 的樣本分布等。2)定義方式:這種基于中心的定義方式有很多,比如樣本點的均值、質心等。3)更新/學習方式:prototype 的學習與更新方式有很多,比如去年比較流行的 momentum。4)下游任務:有了 prototype 我們怎么服務于特定的任務(比如對于跨域的對齊 prototype,X-shot 的用 prototype 索引,或者單純為了表征學習)。通過以上四個變量的“賦值”,誕生了很多好文章。
但是,有利必有弊,這種人為的歸納建模必定會損失一些對分布的感知能力,一個最直觀的例子是 LeCun 在今年 ICLR [1] 引入一個簡單 variance 正則。目前可以感受一個現象:很多任務在引入各種 fancy 的 prototype 設計后,性能雖然提升顯著,但是也似乎逐漸進入了瓶頸。尤其是對于泛化相關的工作(X-shot, domain相關, semi-supervised ...),很多時候一個“寬松的(var 大一些)”分布要比 “緊湊”的分布性能更好, 而這種“寬松”往往是 prototype 很難去直接做的。這也就讓我們思考能不能引用其他的建模方式來保持更好的分布的感知能力,并足夠服務于我們的任務?
背景,核心思想,以及Graph Matching科普
2.1 背景
在 Domain Adaptive Object Detection 的領域背景下(就是把 UDA 任務放到目標檢測上),一類常用的做法是利用大量的 region proposal 建模 prototype,進一步根據 metric learning 實現 prototype-based 的對齊(數據層次 = bounding box,定義方式?= 特征均值 / graph aggregation,更新方式 = online,下游任務 = 域對齊 )。通過對不同類的 prototype 建模、拉近,進而實現對齊 Class Conditional Distribution(CCD), 這個過程可以換一種表述:強化網絡對跨域的兩種類別中心的 affinity 感知能力。
對于這種對齊方式,其具有兩個弊端:1)正如在序言中討論的,會損失一定的分布感知能力(這個引用文章 [2] 在補充材料里給了一個非常好的 toy example),2)這種 prototype 建模是依賴樣本的,如果“貓”這個目標在某個域里沒有出現,那么我們就沒法估計當前 batch 的 prototype,這是本文中提到 semantic mismatch。
▲ 兩個垂直橢圓的toy example [2] 可視化問題1)的情況
2.2 核心思想
于是,我們思考的是如何舍棄 prototype 建模方式,而是直接基于樣本實現域對齊,同時解決上述兩個弊端?這也就引出了我們這篇文章的核心思想:用 Graph 來建模一種新的范式。根據 “把大象裝到冰箱里”的三步走原理,我們的思路如下:用 graph 取代 prototype 建模,補全類別 mismatched 的節點,進一步用 Graph Matching 實現對齊。
▲ SIGMA的核心思想
如果說 prototype+metric learning 是優化網絡在讓 domain A 的貓的 protoype 能自主匹配到 domain B 的 貓的 protoype 的能力,那么 GM 可以用來優化讓網絡對在 domain A 的 {貓頭,貓尾,貓鼻子,貓嘴...} 能自主匹配到 domain B 的 {貓頭,貓尾,貓鼻子,貓嘴...} ,不同之處在于,protoype 是人為設計的,而 node 可以是 dense 的 raw 的,保持最原始的分布情況 (這里舉的例子中,貓的各個部位實際上是有基于 GCN 的信息交互的,而不是獨立的)。
2.3 什么是Graph Matching??
簡單來講,Graph Matching 解決兩個圖之間的一對一匹配問題:圖 A 的節點 M 應該與圖 B 的哪個節點匹配?這種匹配關系用分配矩陣 表示,橫和縱分別代表 圖 A 和圖 B 的節點 index, 代表圖 A 的 i 節點匹配到圖 B 的 j 節點,否則為 0。公式表達如下:
▲ Graph Matching的優化目標
這個公式可以簡單理解為:第一項希望匹配上的兩個節點在各自圖的局部鄰居盡可能相似(如果圖 A 的節點 M 與圖 B 的節點 N 匹配上了, 那么節點 M 在圖 A 的局部連接與節點 N 在圖 B 的局部連接也應該相似,Structure Affinity ),第二項是希望匹配上的兩個節點本身的 embedding 是相似的,也就是 Node Affinity (optimal transport 主要做第二項)。
方法介紹
我們的方法其實就是跟隨上述的三步流程按部就班地把想法實現:
▲ SIGMA 的整體框圖:主要包含 GSC和 BGM 兩個部分,GSC 負責建圖并補全 mismatched 的類別信息,BGM 負責匹配與 DA
3.1 節點采樣
我們的核心目標是對齊,那么我們首先需要想辦法得到一些樣本(畢竟分布依賴于樣本而產生),于是我們選擇了最直接的方式:對于源域,我們把 ground-truth ?的 bounding box 映射到特征層,直接在物體內部采一定數目的 feature point,同時,我們在物體外側均勻采一些背景點。對于目標域,我們直接基于檢測頭得到的 prediction (考慮到 sigmoide 的激活特性,我們設置了很低的 0.5 閾值)正采樣,同時用 0.05 采樣一些背景點(熟悉檢測的小伙伴應該知道幾乎所有檢測器最后都用 0.05 卡閾值)這里的實現是基于 FCOS 的 point 分配 github.com/CityU-AIM-Gr。為了便于優化,我們盡可能控制采樣節點數目在近似的數量級。之后我們過了一個映射層,把 feature point 映射為 node embedding ,值得注意的是,我們直接得到的 feature point 的數值范圍是 [0,+INF)由于ReLU, 這個映射是為了擴大數值范圍(-INF,+INF)。
3.2 節點補全
由于每個 batch 的數據是隨機采樣的,很容易出現某個類別只在一個 domain 中出現,于是我們的做法是想辦法產生一些節點來補全丟失的語義信息(文章中叫做hallucination node)。簡單來講,我們設置了一個 bank 存儲每個類別的均值 (GMB),之后根據該均值以及另一個域的方差產生等數目的節點。(畢竟這種方差信息很不穩定,而且隨著訓練過程變化,選取對立域的方差主要是為了至少保證 語義空間?處于相似的訓練階段)
3.3 建立圖結構
其實到目前位置已經沒有 image-batch 的概念了,我們得到的是兩組節點集合,這兩組集合有以下特別好的性質:1) 因為我們的有針對性的采樣方式,這些節點很強的語義表達能力,2)類別信息是匹配的, 3)突破了圖像的 Grid 空間約束,也就信息的傳遞是說不再是 NxN 的網格形式,而是可以跨像素、跨 image 遞。于是順理成章地我們用一層 GCN layer 進行了長距離的語義傳遞。考慮到進行這次 Graph 傳遞后我們的語義表達得到了很大的升華,我們用新的 node embedding 去更新之前提到的 bank。
到此為止是我們第一個貢獻點:Graph-embedded Semantic Completion,建模每個域各自的模型。目前我們已經有兩個建立好的圖,這兩個圖分別建模兩個域的語義分布,我們下一步是怎么利用兩個圖的匹配實現 DA,也就而是 Bipartite Graph Matching。
3.4 跨圖交互
我們首先利用 attention 的機制先建立起兩個圖之間dense的信息交互,(其實這個我們是 follow 一系列 Graph Matching 的先人工作),讓每個節點首先具備一定的跨域感知的能力。這里也可以看作遵循從 dense 到 sparse 的過程 [3]:attention-based dense 以及 GM-based sparse matching。
▲ 跨域交互
3.5 Node Affinity 學習
這里對應 Graph Matching 的公式的第二項,主要是利用節點本身的 affinity 建立matching 矩陣,并用一層 MLP 將 affinity 編碼成 GM 的分配形式,配合Sinkhorn 優化得到一個初始的分配矩陣。
▲ Node Affinity 學習
3.6 Structure-aware Matching Loss
這里是文章核心的優化目標,一句話概括是:對于圖 A 中的節點 M,我們希望網絡在圖 B 中找到最匹配的一個同類別的節點 N,強化這些dense節點之間的 pair-wise sparse 感知能力(dense 指的是節點數目相比單個 prototype 是 dense 的,sparse 指的是 Graph Matching 給予的是一種一對一的 sparse 匹配)。
然而,最大的困難是我們其實并不知道究竟哪一個同類節點是對 DA 最合適的,我們只知道這一堆節點可能是同類的。于是就有了下面這個 loss 的設計:這個 matching loss 包含三個項,第一項是去優化響應強度(TE):也就是讓網絡最確信的同類匹配更加確信,第二項是懲罰錯誤的匹配(FS)如下圖所示,第三項是把 edge 信息引進來實現 Graph Matching 公式的第一項正則。
▲ Graph Matching Loss:
簡單來說:強化大概率正確的、最確信的匹配(TE);抑制錯誤的匹配(FS);對于屬于可能正確的其他匹配我們直接 Ignore。這里的優化方式其實跟 Faster RCNN 的 anchor loss 設計有點相似:對于 pos (IoU>0.7) 和 neg (IoU<0.3) 的產生各自的正負監督,對于其他的直接 ignore。
讀到這里,肯定會有疑問matching loss實際上是怎么實現的對齊?熟悉 UDA 的小伙伴應該知道,對于分類任務,Entropy Minimization(EM)是一個常見的做法,主要是在沒有語義標簽的情況下,利用 EM 讓分類 task “對的更對,錯的更錯”,而 Matching 實際上是建立了一個“是否 match 到同類別”的 proxy task, 我們的優化目標是基于這個 proxy task 的 EM,兩種方式的對比如下:類別的 EM 是拉近樣本與類中心的距離,Mactching 是拉近樣本與匹配樣本的距離(有點 contrastive learning 味道了)
▲ DA的兩種策略:EM和Matching
可視化出來學習結果如下圖所示(注意:我們在工程實現上為了方便,將節點進行了按照類別從 1 到 K 進行排序,這就導致我們的分配矩陣長成這種規規矩矩樣子:github.com/CityU-AIM-Gr)
▲ 可視化分配矩陣以及Ground-truth
3.7 其他的設置
考慮到 GM 在實現 p(x|y) 的對齊,我們針對節點又加了一個 p(x) 的節點判別器(MLP-based),這個不是必須的。我們發現這條 graph 分支由于 Attention 的存在,很容易在訓練后期 bias 到 noisy 樣本 [4],也就是先到上升再下,我們最終加了這個判別器解決了這個問題,當初研究了好久想通的。。。。。
實驗
關于實驗方面,我們發現新方法已經遠超過我們的前身工作 SCAN(AAAI'22 ORAL)的性能。
GitHub-CityU-AIM-Group/SCAN: [AAAI' 22 ORAL] SCAN: Cross Domain Object Detection with Semantic Conditioned Adaptation
▲?benchmark性能對比
SIGMA 匯報的性能是 warmup 雙階段訓練的,我們后續發現完全可以端到端訓練,而且還可以達到更高的性能,這個框架的潛力還大大有待發掘。另外,我們放幾個比較有趣的實驗結果:
4.1 節點數目的探索
我們用更多的節點能進一步提升性能,但是考慮到對匹配優化的計算量有指數倍需求,我們并沒有用更多節點。
▲ 我們探索了源域和目標域節點數目對性能的影響
4.2 方式的探索
我們發現 one-to-one 的優化方式竟然比 many-to-one 的好一些,感覺有兩個原因,一是文章中說的 Noisy 的問題,二是可能是 constrastive learning 和? supervised learning 之間的優化目標的角逐。
▲ 我們探索了一對一和多對多的匹配方式
4.3 對檢測性能的直觀提升
其實最直觀的是對判別的提升:比如減少一些?FP 樣本以及 FN 漏檢。
▲ 我們檢測性能的對比
總結
本文提出了一種基于圖匹配的 DAOD 框架。隨著基于 patch 的 transformer 的潛力被不斷挖掘,Graph 的潛力也逐步體現出來,個人感覺 Graph 的優勢不在于多么 fancy 的圖卷積設計,而在于如何更巧妙的突破傳統卷積的 local 局限(類似 transformer),同時一些 Graph 領域的積累(比如圖匹配)似乎也能推動對 CV 的發展。?希望我們的 SIGMA 能夠激發更多有趣的想法,共同推動這個領域的進步。同時,對于文章的內容也歡迎討論。
參考文獻
[1] Bardes, A., Ponce, J., & LeCun, Y. (2021). Vicreg: Variance-invariance-covariance regularization for self-supervised learning.arXiv preprint arXiv:2105.04906.
[2] Cheng, J., & Vasconcelos, N. (2021). Learning deep classifiers consistent with fine-grained novelty detection. InProceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition(pp. 1664-1673).
[3] Min, J., & Cho, M. (2021). Convolutional hough matching networks. InProceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition(pp. 2940-2950).
[4] Yang, X., Zhang, H., Qi, G., & Cai, J. (2021). Causal attention for vision-language tasks. InProceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition(pp. 9847-9857).
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的CVPR 2022|重新思考对齐Prototype的域自适应:基于Graph Matching的新范式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10怎么该电脑模式 win10如何
- 下一篇: 教你怎么扩容u盘图文教程 扩大U盘容量,