論文也撞衫,你更喜歡哪個無錨點CenterNet?

YujiaC發表於2019-09-17

1. Single-stage and Two-stage Detector

Faster RCNN [1] 及其變體自提出以來一直是主流目標檢測架構之一。由於其模型的 capacity 大,以及對 proposal 有預先處理等方面的優勢,這些模型在減輕物體姿態(角度)、光照和旋轉等問題方面都表現的十分出色。通過適當的 anchor 設定和訓練策略,也可以有效地檢測到微小和帶有遮擋的物體。總體來說,這種方法有兩個階段,即 proposal 和 detection(圖 1)。第二階段篩選和校準第一階段提出的 Region of Interests(RoIs)。proposal 階段使用的是 region proposal network (RPN) 來儘可能多的覆蓋到 True Positives(TP),detection 階段的檢測通常則是使用一些卷積和全連線層來保留第一階段找到的 TP 同時消除第一階段引入的 False Positives(FP)。

一方面,如果 proposal 方法不能達到高召回率(recall)或者 feature extractor 提取的特徵未能提供足夠有效的資訊,則第二階段的檢測器的結果將很差。另一方面,由於檢測是在 RoI 級別進行的,因此 convolution kernel 能夠更精確地對每一個類別的物體進行區分,兩階段的結合類似於一種粗分類+細分類的結合。然而,相對較低的速度(5FPS 左右)和較大的記憶體佔用阻礙了它在許多現實場景下的應用。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

圖 1. Faster RCNN 整體架構。作為 Two stage 方法的代表,其包括 proposal 和 detection 兩部分。

近幾年,single-stage detector 將目標檢測的速度普遍提高到了 30FPS 以上,同時保持了不錯的模型精度。SSD [2] 和 YOLO [3](圖 2)首先提供了高精度的實時物體檢測解決方案。許多基於 SSD 的變體也證明了單階段物體檢測的有效性。然而,這些方法在小物體檢測上表現不佳。SSD 在很多方面類似於一個 region proposal network (RPN),但它們的目標不同。RPN 選擇預測出的前 2000 個 bounding box 進行第二階段的訓練,而 SSD 只選擇一小部分(保證正負樣本的比例)作為訓練樣本。因此,在訓練 one-stage detector 時,特別小的物體只能匹配到很少的 anchor(對於 20 畫素及以下的物體甚至只有一個或沒有)。這些 anchor 尚不足以學習小物體的統計資訊。對於這種物體尺度問題,許多研究人員提出了不同的訓練策略。我們也對其中一些策略進行了試驗並報告了實驗結果,會在後續的文章中進行總結,希望能為進一步研究提供一些見解。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

圖 2. SSDYOLO 作為經典的 Single stage 方法,圖為其整體架構比較。

2. Anchor-based and Anchor-free Detector

2000 年起,就已經有很多傳統方法應用在了目標檢測的任務上。最初的 HoG 特徵,Haar 分類器等方法都是使用人工制定的規則計算特徵並通過滑窗的方法來確定物體位置。RCNN 等方法的提出開始使用 Selective Search 等傳統方法來生成 proposal,從而減少了計算量和運算時間。

自從 RPN 的提出以來,anchor-based 的方法便成了物體檢測模型的主流。這種方法在特徵圖的每一個畫素點預設幾個不同尺度和縱橫比的 bounding box,稱之為 anchor。之後對每一個 anchor 進行分類,並對正類的 anchor 進行迴歸(位置及大小調整)。之後的 SSDYOLO 等 single-stage 方法也是基於 anchor 進行檢測。Anchor 的引入帶來了很多優點:1)它很大程度上減少了計算量,並將 proposal 數量放到可控範圍內以便後面的計算和篩選。2)通過調整不同的 anchor 設定可以覆蓋儘可能多的物體,也可針對不同任務設定不同的 anchor 尺度範圍。3)由於 anchor 的尺度是人工定義的,物體的定位是通過 anchor 的迴歸來實現,僅僅計算偏移量而不是物體的位置大大降低了優化難度。

然而 anchor 的設定也有著它自身的缺點。1)在 Faster RCNN 以後的很多論文中我們不難發現,單純通過使用更多不同大小和縱橫比的 anchor 以及更多的訓練技巧就可以達到更好的效果,然而這種通過增加算力而改進網路的方法很難落實到實際的應用中(模型速度和大小)。2)anchor 的設定需要人為設定大量的引數,且離散的 anchor 尺度設定會導致一些物體無法很好的匹配到 anchor,從而導致遺漏。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

圖 5. Cornernet 示意圖。Cornernet 使用 key point detection+mathcing 的方法來檢測物體,為 object detection 提供了一種新的解決思路。

CornerNet [4] 的提出開啟了一系列 anchor-free 的方法。不同於預先設定 anchor 再預測偏移量,這一系列方法直接對物體位置進行預測。FSAF [5] 使用 anchor-free 分支直接預測物體位置並結合 anchor-based 方法進行預測,使得不同預測層可以覆蓋更多的物體,從而改善了上述第二個問題。FCOS [6] 和 fovea Box [7] 等方法預測每一個正樣本區域內的點距離其邊框的偏移量,也避免了直接預測物體區域帶來的尺度變化太大難以訓練的問題(圖 6)。CornerNet,CenterNet 則提供了另外一種 bottom-up 的思路-key point based object detection-將物體檢測的問題轉換為關鍵點的檢測。CornerNet 直接預測每個物體左上角和右下角,並利用 embedding vector 將其進行匹配(圖 5)。CenterNet 則認為 CornerNet 檢測的 bounding box 的角點缺乏語義資訊,並不能很好的代表一個物體,轉而進行物體中心點的預測。值得一提的是,在相鄰時間段有兩篇不同的論文同時提出兩個不同版本的 CenterNet,我們會在文章第三部分進行比較。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

圖 6. FCOS 示意圖。FCOS 基於尺度金字塔對每個畫素點預測其對應的邊界框的位置。不同於 cornernet,很大一部分的 anchor free 方法還是基於 bounding box 位置的預測。

Anchor-free 的方法在 MSCOCO 上已經超過了 anchor-based single-stage 方法,AP 已然快和 two-stage 的方法持平。相比於 anchor-based 的方法,其亮點之一在於減少了人為設定的引數,而且不存在 anchor 與不同尺度的 ground truth 無法匹配的問題。同時,它也減少了輸入影像尺度和 anchor 尺度同時變換帶來的冗餘計算的問題。然而,所有 Anchor-free 方法都仍然要面臨的一個挑戰是如何更合理的重新規劃物體檢測任務,從而減少影像中物體尺度差別過大導致的訓練不穩定問題。除了數值上常用的 log 運算外,大部分文章仍在使用 rescale 的偏移量作為預測輸出,keypoint based 方法則直接將問題進行了轉換從而規避了這一風險。總體來說,anchor free 方法已成為現階段物體檢測的主流研究方向,也不斷有體量更小,引數更少,精度更高的模型被提出。

3. CenterNet

2019 年 4 月,中科院聯合牛津、華為在 CornerNet 的基礎上提出了新的 anchor-free 物體檢測方法 CenterNet,構建三元組進行物體檢測(後文簡稱 CenteNet-Triplets)[8],並在 MSCOCO 資料集上大幅超過了所有已有 single-stage 方法。與此同時,得克薩斯奧斯汀大學和伯克利也提出了同名的 CenterNet(後文簡稱 CenterNet-Keypoint),取得了最佳的速度-準確性權衡。兩篇文章都嘗試利用物體中心點的資訊進行物體檢測,出發點和方式卻不盡相同。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

圖 7. CenterNet-Triplets 整體架構圖

CenterNet-Triplets 是在 CornerNet 的基礎上發展而來,其架構如圖 7 所示。作者發現使用 CornerNet 進行檢測時會出現很多 FP,而這一問題很可能是在進行左上角和右下角的 grouping 時發生的問題。實際上,將物體框的左上角和右下角進行配對是一個比較困難的問題,因為對於大部分物體來說,這兩個角點都在物體外面,兩角點的 embedding vector 並不能很好的感知物體的內部資訊。因此,作者提出了三種思路來解決這個問題。首先,將左上角、右下角和中心點結合成為三元組進行物體框的判斷。具體來講,CenterNet-Triplets 不僅預測角點,也預測中心點,如果角點所定義的預測框的中心區域包含中心點,則保留此預測框,否則棄掉。這樣做的相當於對 CornerNet 的預測做了一次後處理的矯正,使得預測準確率更高。第二種思路是使用 Cascade Corner Pooling 替代原來的 corner Pooling,它首先提取物體邊界最大值(Corner Pooling),然後在邊界最大值處繼續向內部提取提最大值,並與邊界最大值相加,以結合更多內部資訊。第三種思路是針對中心點的預測使用 Center Pooling,提取中心點水平方向和垂直方向的最大值並相加,以此給中心點提供所處位置以外的資訊。這一操作使中心點有機會獲得更易於區分於其他類別的語義資訊。Center Pooling 可通過不同方向上的 corner pooling 的組合實現。這三種思路無一不是在嘗試給 CornerNet 結合更多的物體內部資訊,實驗結果也表明了作者的出發點的正確性,三種思路都起到了一定效果。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

圖 8. CenterNet-Keypoint 示意圖。

雖提出時間十分相近,但 CenterNet-Keypoint 卻與 CenterNet-Triplets 思路不盡相同(圖 8)[9]。本文作者仍然也指出了 CornerNet 在匹配左上角和右下角角點時會不可避免的發生一些錯誤,這可能會成為該模型進一步發展的 upper bound,於是作者乾脆摒棄這種思路,直接將物體檢測轉換為關鍵點檢測,並不需要對關鍵點本身做進一步的處理(比如匹配角點)。CenterNet-Keypoint 提供了一種更簡潔的思路,預測每一個畫素點是否為物體中心,如果是的話,針對中心點預測物體邊界。這種方法和 anchor-based 的方法關係十分密切,因為 feature map 中的每一個畫素點都可以看作是一個 shape-agnostic anchor,只不過這種「anchor」只和位置有關,也不需要進一步預測 offset 和使用 Non-Maximum Suppression(NMS)做後處理。CenterNet-Keypoint 也取得了目前所有 single-stage detector 在 MSCOCO 資料集上的最好成績,比 CornerNet 提高了三個百分點。此外,值得一提的是 CenterNet-Keypoint 使用的思路十分具有普遍性,可以很容易的擴充套件到其他任務上。作者同時提供了該網路在 3D 物體檢測和人體姿態檢測任務中取得的結果,也取得了不錯的成績。

兩種模型在 MSCOCO 上的物體檢測結果如表 2 和表 3 所示,在輸入解析度相近的情況下,CenterNet-Triplets 表現略勝一籌。兩者皆在 Single-stage 的方法中取得了最好成績,並已經和 Two-stage 方法的準確率十分接近。作為 anchor free single stage object detector,兩種模型均可達到實時的速度,但因為作者使用不同的 GPU 進行測試,結果無法進行公平的比較,感興趣的話可以去原文一探究竟。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

表 2. CenterNet-Triplets 在 MSCOCO 上結果比較。

論文也撞衫,你更喜歡哪個無錨點CenterNet?

表 3. CenterNet-Keypoint 在 MSCOCO 上結果比較。

總體來講,物體檢測任務一路發展過來,從人工定義特徵,到 two-stage 方法,以及 single-stage 方法,再到 anchor free 方法的提出,整體架構都在不斷的發生著改變,模型也正在朝著容量更小、超引數更少、速度更快、準確率更高的方向發展。近期在 arxiv 上釋出的一篇文章中,Matrix Net一舉打破所有記錄,成為精度最高的 single-stage 實時物體檢測器,並和 SOTA 的 two-stage 的方法取得了相當的成績。目前作者尚未公開更多細節,讓我們拭目以待。

作者簡介

大家好,我是陳禹嘉,現為卡耐基梅隆大學計算機視覺方向研究生,曾在亞馬遜無人超市組、中科院自動化所等實習,主要研究方向為物體、行為檢測,模型壓縮,3D 點雲處理等。十分開心可以和大家交流。

[1] Girshick, Ross. "Fast r-cnn." Proceedings of the IEEE international conference on computer vision. 2015.

[2] Liu, Wei, et al. "Ssd: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.

[3] Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[4] Law, Hei, and Jia Deng. "Cornernet: Detecting objects as paired keypoints." Proceedings of the European Conference on Computer Vision (ECCV). 2018.

[5] Zhu, Chenchen, Yihui He, and Marios Savvides. "Feature selective anchor-free module for single-shot object detection." arXiv preprint arXiv:1903.00621 (2019).

[6] Tian, Zhi, et al. "FCOS: Fully Convolutional One-Stage Object Detection." arXiv preprint arXiv:1904.01355 (2019).

[7] Kong, Tao, et al. "FoveaBox: Beyond Anchor-based Object Detector." arXiv preprint arXiv:1904.03797 (2019).

[8] Duan, Kaiwen, et al. "CenterNet: Object Detection with Keypoint Triplets." arXiv preprint arXiv:1904.08189 (2019).

[9] Zhou, Xingyi, et al. "Objects as Points." arXiv preprint arXiv:1904.07850 (2019).

相關文章