Anchor-free目標檢測綜述 -- Keypoint-based篇

曉飛的演算法工程筆記發表於2022-02-23

  早期目標檢測研究以anchor-based為主,設定初始anchor,預測anchor的修正值,分為two-stage目標檢測與one-stage目標檢測,分別以Faster R-CNN和SSD作為代表。後來,有研究者覺得初始anchor的設定對準確率的影響很大,而且很難找到完美的預設anchor,於是開始不斷得研究anchor-free目標檢測演算法,意在去掉預設anchor的環節,讓網路自行學習anchor的位置與形狀,在速度和準確率上面都有很不錯的表現。anchor-free目標檢測演算法分為兩種,一種是DenseBox為代表的Dense Prediction型別,密集地預測的框的相對位置,另一種則是以CornerNet為代表的Keypoint-bsaed Detection型別,以檢測目標關鍵點為主。
  本文主要列舉幾種Keypoint-based Detection型別的網路,主要涉及以下網路:

CornerNet


  CornerNet將目標檢測定義為左上角點和右下角點的檢測。網路結構如圖1所示,通過卷積網路預測出左上角點和右下角點的熱圖,然後將兩組熱圖組合輸出預測框,徹底去除了anchor box的需要。論文通過實驗也表明CornerNet與當前的主流演算法有相當的效能,開創了目標檢測的新正規化。

  CornerNet的結構如圖4所示,使用hourglass網路作為主幹網路,通過獨立的兩個預測模組輸出兩組結果,分別對應左上角點和右下角點,每個預測模組通過corner池化輸出用於最終預測的熱圖、embedding向量和偏移。

ExtremeNet


  ExtremeNet通過檢測目標的四個極點進行目標定位,如圖1所示。整體演算法基於CornerNet的思想進行改進,使用五張熱圖分別預測目標的四個極點以及中心區域,將不同熱圖的極點進行組合,通過組合的幾何中心在中心點熱圖上的值判斷組合是否符合要求。另外,ExtremeNet檢測的極點能夠配合DEXTR網路進行目標分割資訊的預測。

CenterNet


  CornerNet將目前常用的anchor-based目標檢測轉換為keypoint-based目標檢測,使用角點對錶示每個目標,CornerNet主要關注目標的邊界資訊,缺乏對目標內部資訊的獲取,很容易造成誤檢,如圖1所示。為了解決這個問題,論文提出CenterNet,在角點對的基礎上加入中心關鍵點組成三元組進行檢測,既能捕捉目標的邊界資訊也能兼顧目標的內部資訊。另外,為了更好地提取特徵,論文還提出了center pooling和cascade corner pooling,分別用於更好地提取中心關鍵點和角點。

CenterNet(Object as Point)


  CenterNet演算法將檢測目標視為關鍵點,先找到目標的中心點,然後迴歸其尺寸。首先將輸入的圖片轉換成熱圖,熱圖中的高峰點對應目標的中心,將高峰點的特徵向量用於預測目標的高和寬,如圖2所示。在推理時,只需要簡單的前向計算即可,不需要NMS等後處理操作。對比上一篇同名的CenterNet演算法,這個演算法更簡潔且效能足夠強大,不需要NMS等後處理方法,能夠擴充到其它檢測任務中。

CSP


  CSP的網路結構大致如圖1所示,在主幹網路上分別預測目標中心點的位置及其對應的尺寸。這篇文章的整體思想與CenterNet(zhou. etc)基本一致,但不是抄襲,因為是同一個會議上的論文,CenterNet主要研究常規的目標檢測,而這篇主要研究人臉檢測和行人檢測。但CSP仍然需要進行NMS的後處理,較CenterNet更遜色一些,但不妨礙我們進行簡單地瞭解,包括學習論文的訓練方法以及引數。

CornerNet-Lite


  CornerNet作為Keypoint-based目標檢測演算法中的經典方法,雖然有著不錯的準確率,但其推理很慢,大約需要1.1s/張。雖然可以簡單地縮小輸入圖片的尺寸來加速推理,但這會極大地降低其準確率,效能比YOLOv3要差很多。為此,論文提出了兩種輕量級的CornerNet變種:CornerNet-Saccade和CornerNet-Squeeze。

  CornerNet-Saccade在可能出現目標的位置的小區域內進行目標檢測,首先通過縮小的完整圖片預測attention特徵圖,獲得初步的預測框位置以及尺寸,然後在高解析度圖片上擷取以該位置為中心的圖片區域進行目標檢測。

  在CornerNet中,大多數的計算時間花在主幹網路Hourglass-104的推理。為此,CornerNet-Squeeze結合SqueezeNet和MobileNet來減少Hourglass-104的複雜度,設計了一個新的輕量級hourglass網路。

RepPoints


  經典的bounding box雖然有利於計算,但沒有考慮目標的形狀和姿態,而且從矩形區域得到的特徵可能會受背景內容或其它的目標的嚴重影響,低質量的特徵會進一步影響目標檢測的效能。為了解決bounding box存在的問題,論文提出了RepPoints這種新型目標表示方法,能夠進行更細粒度的定位能力以及更好的分類效果。

  RepPoints是一個點集,能夠自適應地包圍目標並且包含區域性區域的語義特徵。論文基於RepPoints設計了anchor-free目標檢測演算法RPDet,包含兩個識別階段。因為可變形卷積可取樣多個不規則分佈的點進行卷積輸出,所以可變形卷積十分適合RepPoints場景,能夠根據識別結果的反饋進行取樣點的引導。

CentripetalNet


  CornerNet開啟了目標檢測的新方式,通過檢測角點進行目標的定位,在角點的匹配上,增加了額外embedding向量,向量距離較小的角點即為匹配。而論文認為,這種方法不僅難以訓練,而且僅通過物體表面進行預測,缺乏目標的位置資訊。

  CentripetalNet的核心在於提出了新的角點匹配方式,額外學習一個向心偏移值,偏移後足夠近的角點即為匹配。如圖2所示,CentripetalNet包含四個模組,分別為:

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

SaccadeNet


  SaccadeNet的結構如圖2所示,首先初步預測目標的中心位置以及角點位置,然後利用四個角點位置以及中心點位置的特徵進行迴歸優化。整體思想類似於two-stage目標檢測演算法,將第二階段的預測框精呼叫的區域特徵轉化為點特徵,在精度和速度上都可圈可點,整體思想十分不錯。

RepPointsV2


  RepPointsV2的整體思想類似與Mask R-CNN,加入更多的任務來監督目標檢測演算法的學習,具體的實現方法是在原網路上加入輔助分支(auxiliary side-branches)的形式,有監督地進行學習,輔助分支能夠優化中間特徵以及進行聯合檢測。

CPNDet


  本文為CenterNet作者發表的,作者認為acnhor-free方法通常會出現大量的誤檢,需要一個獨立的分類器來提升檢測的準確率。於是結合acnhor-free方法和two-stage正規化提出了Corner-Proposal-Network(CPN),完整的結構如圖2所示。首先使用anchor-free方法提取關鍵點,遍歷關鍵點組合成候選框,最後使用兩個分類器分別對候選框進行誤檢過濾以及標籤預測。



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

work-life balance.

相關文章