從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

CVer發表於2019-05-15

最近 Anchor-free (no-prior box)的概念又重新火熱起來,anchor-free的概念從2015年densebox,  yolov1開始出現,但一開始效能並不是很好,後來基於anchor(prior box)的概念的檢測演算法如faster rcnn, ssd效能有很大的提升,於是目標檢測從此走進anchor時代,但是最近anchor-free的文章出現很多,目標檢測發現不使用anchor依然可以達到較好的效果。今天要介紹的Dubox和Densebox都是由百度提出的無先驗框的一階段目標檢測演算法。

《DuBox: No-Prior Box Objection Detection via Residual Dual Scale Detectors》

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

arXiv: https://arxiv.org/abs/1904.06883

github: None

作者團隊:百度

注:2019年04月17日剛出爐的paper

引言:

傳統的神經目標檢測方法使用多尺度特徵,讓多個檢測器獨立並行地在多個分支執行檢測任務。同時,加入先驗框(prior box)提高了演算法處理尺度不變性的能力。然而,過多的先驗框和多個檢測器會增加檢測演算法的計算冗餘度。這篇論文介紹了一種新的一步檢測方法Dubox,它可以在沒有先驗框的情況下檢測物體。設計的雙尺度殘差單元具有多尺度特性,使雙尺度檢測器不再獨立執行。高層檢測器學習低層檢測器的餐叉。Dubox增強了啟發式引導的能力,進一步使第一尺度探測器能夠最大限度地檢測小目標,第二尺度探測器能夠檢測第一尺度探測器無法識別的目標。此外,對於每一個比例探測器,採用新的classification-regression strap loss,使檢測過程不基於先驗框。結合這些策略,檢測演算法在速度和精度方面取得了優異的效能。通過對VOC、COCO目標檢測基準的大量實驗,證實了該演算法的有效性。


從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

標籤和loss設計:

首先對於標籤的設計:

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

文章定義了在物體框內

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測


為正樣本,其他為負樣本。

熟悉densebox的同學都知道,這種設計和densebox相似,densebox更像分割類演算法,對物體的中心範圍進行迴歸+分類,因為物體內的範圍都是正樣本,其其他範圍為負樣本,為了克服正負樣本波動性所以在正樣本週圍加上了一圈ignore範圍,從而防止梯度的波動。Dubox沒有使用固定的ignore範圍,而是在loss設計時候是有iou gate unit自動的學習ignore範圍。


從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

既只有迴歸框和真值框達到0.5的重合時分類才在該點產生loss,從而達到自動學習ignore範圍的作用。用公式表達就可以寫成:

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

其中

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

Dubox框架設計:

Dubox的另一大創新是不再多個分支上獨立並行的使用多個檢測器,而是將檢測器減少到了兩個:

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

在這種設計中高層的檢測器去檢測底層檢測器無法檢測到的物體,從而最大化檢測效能,

同時論文中為了減少兩個檢測器之間的檢測冗餘,設計了諸多減少冗餘策略,使兩個檢測器之間的檢測冗餘最小,但整體達到了最優效能。

這種設計帶來的好處有以下幾點:

1.     基於分割的檢測使底層檢測效果明顯高於yolo等演算法。這源自於其基於分割的思想。

2.     第二個分支去檢測第一個分支的殘差,使獨立執行變成了協同運作。

3.     整個網路的設計只使用簡單的基本操作,這讓其在部署中有非常大的優勢。

4.     最後一個核心的可能只有經歷過硬體部署的同學才能體會到,那就是更加優秀的int8部署。在部署gpu硬體上一般使用int8加速,但是使用一個分支進行int8進行量化時,有非常大的損失,這種損失可以看作,迴歸範圍被強制對映到256個值,損失是在所難免的。而dubox的設計將兩個分支進行分成無冗餘的兩個分支,兩個分支分別進行int8量化產生的損失非常小甚至幾乎沒有。

實驗:

最終的實驗結果,論文各個部件的消融實驗:

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

在voc上的速度和效能,達到了82.89的map, 其320x320版本達到了79.31map 和高達50fps的速度。

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測

在coco上的效能:

從Densebox到Dubox:更快、效能更優、更易部署的anchor-free目標檢測


總結:

Dubox整體上屬於densebox的強化版,進一步加強了其在硬體上的友好性,達到了速度和效能上的最優表現。使用int8量化後的速度會有更大的提升,相對的精度會損失很少,雖然論文中沒有提到,這使dubox的設計更加適用於工程實踐。

相關文章