CentripetalNet:更合理的角點匹配,多方面改進CornerNet | CVPR 2020

CentripetalNet的核心在於新的角點匹配方式,額外學習一個向心偏移值,偏移值足夠小的角點即為匹配,相對於embedding向量的匹配方式,這種方法更為魯棒,解釋性更好。另外論文提出的十字星變形卷積也很好地貼合角點目標檢測的場景,增強角點特徵

來源:曉飛的演算法工程筆記 公眾號

論文: CentripetalNet: Pursuing High-quality Keypoint Pairs for Object Detection

Introduction


  CornerNet打開了目標檢測的新方式,通過檢測角點進行目標的定位,在角點的匹配上,增加了額外embedding向量,向量距離較小的角點即為匹配。而論文認為,這種方法不僅難以訓練,而且僅通過物體表面進行預測,缺乏目標的位置資訊。對於相似物體,embedding向量很難進行特定的表達,如圖1所示,相似的物體會造成錯框現象。
  為此,論文提出了CentripetalNet,核心在於提出了新的角點匹配方式,額外學習一個向心偏移值,偏移值足夠小的角點即為匹配。相對於embedding向量,這種方法更為魯棒,解釋性更好。另外,論文還提出十字星變形卷積,針對角點預測的場景,在特徵提取時能夠準確地取樣關鍵位置的特徵。最後還增加了實例分割分支,能夠將網路拓展到實例分割任務中。

CentripetalNet


  如圖2所示,CentripetalNet包含四個模組,分別為:

  • 角點預測模組(Corner Prediction Module):用於產生候選角點,這部分跟CornerNet一樣。
  • 向心偏移模組(Centripetal Shift Module):預測角點的向心偏移,並根據偏移結果將相近的角點成組。
  • 十字星變形卷積(Cross-star Deformable Convolution):針對角點場景的變形卷積,能夠高效地增強角點位置的特徵。
  • 實例分割分支(Instance Mask Head):類似MaskRCNN增加實例分割分支,能夠提升目標檢測的性能以及增加實例分割能力。

Centripetal Shift Module


Centripetal Shift

  對於bbox^i=(tlx^i,tly^i,brx^i,bry^i),幾何中心為(ctx^i, cty^i)=(\frac{tlx^i+brx^i}{2}, \frac{tly^i+bry^i}{2}),定義左上角點和右下角點的向心偏移為:

log函數用來減少向心偏移的數值範圍,讓訓練更容易。在訓練時,由於非GT角點需要結合角點偏移計算向心偏移,比較複雜,如圖a所示,所以僅對GT角點使用smooth L1損失進行向心偏移訓練:

Corner Matching

  屬於同一組的角點應該有足夠近的中心點,所以在得到向心偏移和角點偏移後,可根據角點對應的中心點判斷兩個角點是否對應。首先將滿足幾何關係tlx < brx \wedge tly < bry的角點組合成預測框,每個預測框的置信度為角點置信度的均值。接著,如圖c所示,定義每個預測框的中心區域:

R_{central}的角點計算為:

  $0 < \mu \le 1為中心區域對應預測框邊長的比例,根據向心偏移計算出左上角點的中心點(tl_{ctx}, tl_{cty})和右下角點的中心點(br_{ctx}, br_{cty}),計算滿足中心區域關係(tl^j_{ctx}, tl^j_{cty})\in R^j_{central} \wedge (br^j_{ctx}, br^j_{cty})\in R^j_{central}$的預測框的權值:

  從公式5可以看出,角點對應的中心點的距離越近,預測框的權值越高,對於不滿足中心點幾何關係的預測框,權值直接設為0,最後,使用權值對置信度進行加權輸出。

Cross-star Deformable Convolution


  為了讓角點感知目標的位置資訊,coner pooling使用max和sum來進行目標資訊的水平和垂直傳遞,導致輸出的特徵圖存在十字星現象,如圖4a所示,十字星的邊界包含了豐富的上下文資訊。為了進一步提取十字星邊界的特徵,不僅需要更大的感受域,還需要適應其特殊的幾何結構,所以論文提出了十字星變形卷積。

  但並不是所有的邊界特徵都是有用的,對於左上角點而言,由於十字星的左上部邊界特徵在目標的外部,所以其對左上角點是相對無用的,所以論文使用偏移引導(guiding shift)來顯示引導偏移值(offset field)的學習,偏移引導如圖b所示。偏移值共通過三個卷積層獲得,前兩個卷積層轉化corner pooling的輸出,通過下面的損失函數有監督學習:

\delta為偏移引導,定義為:

  第三層卷積將特徵映射為最終偏移值,內涵了目標的上下文資訊和幾何資訊。

  論文對不同的取樣方法進行了可視化,可以看到論文提出的十字星變形卷積的效果符合預期,左上角點對應的取樣點均為十字星的右下部邊界。

Instance Mask Head


  為了獲取實例分割的結果,論文取soft-NMS前的檢測結果作為候選框,使用全卷積網路進行mask預測。為了保證檢測模組能夠提供有效的候選框,先對CentripetalNet預訓練幾輪,然後取top-k候選框進行RoIAlign得到特徵,使用連續四個卷積層提取特徵,最後使用反卷積層進行上取樣,訓練時對每個候選框進行交叉熵損失:

Experiment


  完整的損失函數為:

L_{det}L_{off}跟CornerNet定義的一樣,為預測框損失和角點偏移損失,\alpha設置為0.005。

  目標檢測性能對比。

  實例分割性能對比。

  CornerNet/CenterNet/CentripetalNet可視化對比。

Conclusion


  CentripetalNet的核心在於新的角點匹配方式,額外學習一個向心偏移值,偏移值足夠小的角點即為匹配,相對於embedding向量的匹配方式,這種方法更為魯棒,解釋性更好。另外論文提出的十字星變形卷積也很好地貼合角點目標檢測的場景,增強角點特徵。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

work-life balance.