ExtremeNet論文詳解

論文名稱:Bottom-up Object Detection by Grouping Extreme and Center Points

作者:Xingyi Zhou&Jiacheng Zhuo等

論文鏈接:https://arxiv.org/pdf/1901.08043.pdf

代碼鏈接:https://github.com/xingyizhou/ExtremeNet


提要

本篇論文是CVPR2019的一篇anchor free的目標檢測論文,借鑑了CornerNet的思想,又對其進行了進一步的改進,取得了還不錯的效果,不同於CornerNet,本文提出網絡ExtremeNet,不再檢測目標的左上角點與右下角點,而是檢測目標的4個極值點(即最上點,最下點,最左點,最右點),框出目標,極值點示例如下圖所示,方法比較新穎,同時也取得了比較不錯的效果,在COCO測試集上,取得了43.7%的精度,速度其實沒有特別大的優勢,大約300ms處理一張圖像,下面我們詳細介紹一下本篇論文。

在這裏插入圖片描述

詳細介紹

隨着2015年faster R-CNN網絡提出anchor,anchor可以說是目標檢測網絡的靈魂,同時anchor方法也帶領着目標檢測領域走向了輝煌,在VOC數據集上的識別精度,從最開始的只有不到50%,到現如今的超過80%,但是傳統的方法同樣具有一些問題,如下:

  • 一個規律的矩形框並不能代表一個物體。
  • 很多的物體並不是與座標軸平行的,強行使用矩形框包圍,會產生很多幹擾的背景信息,同時破壞了物體本身的信息,比如形狀,姿態等。

基於這些不足,本文提出了基於extreme point的anchor free檢測算法,想法也非常簡單,通過檢測目標的4個極值點(分別對應上下左右,4個方向),來確定目標的位置以及類別,如上圖所示,這樣就有效的避免了上面提到了強行使用矩形框包圍物體帶來的問題。該方法思想借鑑於人體關鍵點估計。

那麼該方法是怎麼做的呢?下圖給出了總體的檢測流程圖。網絡首先分別通過上下左右4個heatmap來分別檢測上下左右4個極值點,如下圖中第一行所示,以及通過Center heatmap來檢測中心極值點,如下圖左下角所示,當檢測到所有的極值點之後,利用匹配算法,將所有極值點進行組合,下圖中給出了兩個可能的組合示例(中間行,右邊圖),在得到所有的組合示例之後,通過驗證組合中是否存在中心極值點,來對所有的組合示例進行篩選,如果存在中心極值點,則得到了一個目標,如果不存在中心極值點,則該目標框爲錯誤框。

在這裏插入圖片描述
說到這裏,我們便不得不提一下anchor free領域的重量級網絡CornerNet,其實該方法跟CornerNet的思想是很像的,只是採用了不同的方法,CornerNet中是通過檢測目標的左上角點以及右下角點來判斷目標的,其實也是一種檢測目標框的方法,並且由於其左上角以及右下角點並沒有在目標上,並沒有帶有很強的特徵,也會帶來一定的影響。本文方法就不一樣了,檢測的極值點肯定是在目標上,極值點的檢測也會更簡單更準確。

另外,CornerNet是通過Embeding來進行匹配的,即單獨訓練了一個匹配層,根據座標點的在該層上的距離來判斷左上角點與右下角點是不是屬於同一個框,而本文通過center point來進行檢測,即通過檢測候選框中是否含有center point來進行判斷,換言之,本文方法實際上利用了物體的特徵信息,而CornerNet實際上沒有用到。

細節介紹

下圖所示爲本文的網絡結構,backbone使用的是hourglass104網絡,後面接的分別是5個4xCxHxW的heatmap以及4個對應的offsets,C代表類別,這裏網絡通過不同channel的heatmap預測不同的類別極值點。在預測的時候,網絡分別預測了上下左右+中心,5個heatmap,並且對,上下左右的關鍵點同時預測了offset,因爲在backbone網絡下采樣的過程中,會存在取整時候的精度損失,這裏需要學回來,Center heatmap沒有預測關鍵點,主要原因是center point只是用來校驗使用,不需要特別高的準確性。

上下左右以及中心關鍵點在訓練的時候採用的是focal loss,並且同樣在gt周圍設置了高斯的loss減少策略(這裏借鑑於CornerNet,主要原因在於關鍵點存在一點的偏差實際上沒有特別大的影響,所以gt附近的loss適當的減小一點。)
在這裏插入圖片描述
求完了極值點,如何進行極值點的組合呢?下面給出了算法

首先對所有檢測到的極值點(利用Tp閾值過濾得到的)進行組合,然後求組合的中心位置,然後在對應的center heatmap上面驗證對應的得分,如果得分大於Tc,則找到,box的得分用着5個點的得分的平均值代替。

在這裏插入圖片描述

box 鬼影問題

當出現3個連續的目標在一排或者在一列的時候,容易出現鬼影問題,比如,3個一排,如果選擇了最左邊的最左點,最右邊的最右點,這樣在判斷中心的時候,可能選擇了中間目標的中心點,這樣這個box也就被保留下來了,出現了誤判,怎麼解決這個問題呢?作者選擇了一種後處理的方法,如果一個大框中,包含了多個目標(大於等於3個)就將該目標的得分除以2,通過這種方法來一定程度的抑制誤檢的出現。

edge聚類問題

極值點的檢測還會出現一個問題,比如汽車,會出現幾個頂上好多的極值點,這會導致找不到一個突出的極值點的問題,怎麼解決這個問題呢?作者採用了邊緣聚類的方法,對水平與豎直方向的極值點,分別向左右兩個方向聚類到極小值點,利用這些點的和代替該極值點的分數,這樣就使得這種問題的效果好了一下,如下他所示:

在這裏插入圖片描述

實驗效果

整體來看,平均AP達到了43.7%,效果還是不錯的。

在這裏插入圖片描述

總結

本文方法雖然速度不是很快,在實時中無法使用,但是思想還是比較好的,通過極值點來檢測目標,感覺相比較與Corner要靠譜一點,希望在這種方法上,看到精度更高速度更快的算法出來吧~~~~

數據標註問題
COCO數據集中並沒有極值點的標籤,這裏作者使用分割的標籤來找到極值點,對於邊緣平行或者小於3度的邊,會存在多個極值點,這裏利用中心點來作爲極值點。

另外作者在論文中提到,其實關鍵點的標註成本是更低的,因爲標註框的時候,實際上要找到左上角點,可能要多嘗試幾次,而標註4個極值點相對比較容易,因爲都在物體上嘛。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章