論文閱讀 | CenterNet:Keypoint Triplets for Object Detection

論文信息:

論文鏈接:https://arxiv.org/pdf/1904.08189v3.pdf

Github:https://github.com/Duankaiwen/CenterNet

Blog介紹:https://zhuanlan.zhihu.com/p/62789701   //作者寫的挺詳細

論文作者團隊:中科院、牛津大學、華爲諾亞方舟實驗室

 

閱讀中大部分總結思路跟着一個論文試聽課的帶讀,不過該視頻並沒有完整講完:https://appuaAoe86p4947.h5.xeknow.com/st/1MuOQs7v4 (微信打開)

筆者花了幾天時間閱讀該篇論文,仍舊會覺得有些地方難以理解,但是希望通過記錄閱讀過程中的理解、總結,方便以後複習查看。

 

該篇文章

1.基於CornerNet改進的One-stage目標檢測方法

2.針對CornerNet通過左上右下兩個關鍵點來檢測目標物體,而感知物體內部信息相對較弱的問題,提出了使用三個keypoint(左上、右下、中心)來進行目標檢測,並有效降低假陽率。

3.論文中提出了兩種pooling機制:Center pooling和Cascade corner pooling,分別用來提取中心點和邊角點的特徵。

 

論文背景:Object detection目標檢測

  • two-stage approaches,將物體識別和物體定位分爲兩個步驟,分別完成,這一類的典型代表是R-CNNfast R-CNN, faster-RCNN家族。他們識別錯誤率低,漏識別率也較低,但速度較慢,不能滿足實時檢測場景。
  • one-stage approaches, 典型代表是YoloSSDYoloV2,RefineDet,RetinaNet等。他們識別速度很快,可以達到實時性要求,而且準確率也基本能達到faster R-CNN的水平。(物體識別與分類主流算法:Lenet5 AlexNet VGG Inception ResNet 

 

  • Anchor-based系列方法:上面的大部分目標檢測算法

什麼是Anchor-based方法?——檢測物體時需要預定義一系列bbox框(Anchor框),最後在預測輸出時對bbox框進行迴歸以修正位置座標。    

存在問題:1.需要大量的anchor框以保證有足夠的高IOU的框作爲正樣本進行模型訓練。2.anchor 的設定需要人爲設定大量的參數(長寬比、大小、數量等),且離散的 anchor 尺度設定會導致一些物體無法很好的匹配到。

  •  Anchor-free系列方法:ConerNet  (大多基於one-stage方法)

代表性:cornerNet

存在問題:1.感知物體全局信息能力相對偏弱。每個物體由一對邊角點構建,對物體的邊界敏感,而稍微忽略了物體內部信息,即look inside的能力較差。2。假陽率較高,即檢測出錯誤bbox的數量較多。

參考:https://mp.weixin.qq.com/s/7lwEn49G-3RDnBKBv5c7Ag

 

回到論文——論文大框架大致如下: 

  •  Baseline and Motivation

看上圖,紅色框爲conerNet檢測的出的框,藍色部分爲真實框。圖片中顯示很多紅色框(即錯誤框)

論文作者在實驗中對cornerNet錯誤發現率(假陽率)做了一個統計,表中顯示假陽率在37.8,小物體的FDs時60.3。坐鎮認爲CornerNet不能較好的感知bbox的內部區域信息所以導致預測出的bbox的假陽率較高。

所以作者基於這個問題提出一個解決思路:

--預測三個關鍵點:左上、右下、中心。

--每個預測框(由邊角點構建)定義一箇中心區域,通過判斷每個目標框的中心區域是否含有中心點,若有則保留。

 

 左圖爲CornerNet檢測出3個預測框,可以看到大框中心區域不含有中心點(加上檢測中心點的話),加入這種方法後,可以有效消除誤檢的目標框。

  • CornerNet的網絡架構

如上圖的網絡架構所示,用一箇中心點和一對角來表示一個對象。

1.圖片進入後通過一個backbone提取特徵,輸出兩個分支:上分支主要是去預測一對CornerNet Heatmaps(熱圖)、Embedding和offsets,下分支預測Center Heatmaps、offsets 。

2.使用在CornerNet中提出的方法來生成top-k個bbox。

3.根據得分選擇top-k箇中心關鍵點;使用相應的offset信息將這些中心關鍵點重新映射到輸入圖像;

4.爲每個bbox定義一箇中心區域(central region),檢查中心區域是否包含中心關鍵點。注意,選中的中心關鍵字的類標籤應該與包圍框的類標籤相同;

5.如果在中心區域檢測到中心關鍵點,我們將保留bounding box。bbox的socre將被三個關鍵點的score平均值代替,即,左上角,右下角和中心關鍵點。如果在其中心區域沒有檢測到中心關鍵字,則將刪除bbox。並且此時框的 confidence 爲中心點、左上角點和右下角點的confidence的平均,若無則去除,使得網絡具備感知目標區域內部信息的能力,能夠有效除錯誤的目標框。

與CornerNet的區別在於CenterNet添加了一個分支,做了一個後處理提高了檢測準確率。

  • 核心

 

  • Center pooling. 

一個物體的中心並不一定含有很強的,易於區分於其他類別的語義信息。例如,一個人的頭部含有很強的,易於區分於其他類別的語義信息,但是其中心往往位於人的中部。作者提出了center pooling 來豐富中心點特徵。圖(a)爲該方法原理,center pooling提取中心點水平方向和垂直方向的最大值並相加,以此給中心點提供所處位置以外的信息。這一操作使中心點有機會獲得更易於區分於其他類別的語義信息。在實際操作時,可以由不同方向上的corner pooling的組合實現。

  • Cascade corner pooling.

一般情況下角點位於物體外部,所處位置並不含有關聯物體的語義信息,這爲角點的檢測帶來了困難。圖(b) 爲傳統做法,稱爲 corner pooling。它提取物體邊界最大值並相加,該方法只能提取物體邊緣語義信息,很難提取出物體內部的語義信息。圖(c)爲cascade corner pooling 原理,它首先提取物體邊界最大值,然後在邊界最大值處繼續向內部(圖中沿虛線方向)提取提最大值,並與邊界最大值相加,以此給角點特徵提供更加豐富的關聯物體語義信息。這樣的機制及可以提取物體邊緣語義信息又可以感知物體內部的語義信息。

 

  • Central Region(中心區域)的確定  

作者發現中心區域的尺度會影響錯誤框去除效果。中心區域過小導致很多準確的小尺度的目標也會被去除,而中心區域過大導致很多大尺度的錯誤目標框無法被去除。因此作者提出了尺度可調節的中心區域定義法(公式如下) 。該方法可以在預測框的尺度較大時定義一個相對較小的中心區域,在預測框的尺度較小時預測一個相對較大的中心區域。

 原理:將bbox的長寬分成n份,其中中心區域時最中心的那一份,由此可計算出中心區域座標。(n越大中心區域越小)在實驗中:若bbox的像素大小>150*150則n設爲5,否則設爲3.

 

  • 實驗分析

作者在blog中寫的挺詳細(地址在文章開頭)

  • 消除實驗

第一行爲 CornerNet 結果。

CRE,Center region exploration,中心關鍵點使用普通的Conv層

結果:中心點的加入 (CRE) 使得網絡提(AP)升了2.3% (37.6% vs 39.9%)。對於中心點的檢測,實驗使用傳統的卷積操作進行。其中小尺度目標(APs)提升的最多,提升了4.6% (18.5% vs 23.1%), 而大尺度目標幾乎沒有發生變化。這說明小尺度的錯誤目標框被去除的最多,這是因爲從概率上講,小尺度目標框由於面積小更容易確定其中心點,因此那些錯誤的小目標框不在中心點附近的概率更大,因此去除的最多。

CTP,Center pooling ,增加Center pooling 到網絡中:

結果:使網絡進一步提升了0.9%。值得注意的是,大尺度目標提升了1.4% (52.2% vs 53.6%),小目標和中等目標也得到了一定的提升,這表明 center pooling 能夠使中心點獲得更易於區分於其他類別的語義信息。

CCP,Cascade corner pooling,替換corner pooling爲CCP:

結果:使得使網絡性能進一步提升。第二行的單獨試驗中,我們將 CornerNet 的corner pooling 替換成了 cascade corner pooling,性能提升了0.7% (37.6% vs 38.3%)。可以觀察到大目標的 AP 沒有發生變化,AR 卻提升了1.8% (74.0% vs 75.8%), 這說明 cascade corner pooling 通過加入了物體內部信息能夠感知更多的物體,但是由於大目標由於面積過大,使其容易獲得較明顯的內部特徵而干擾了邊緣特徵,因此使得預測出的目標框位置不精確。當結合了 CRE 後,由於 CRE 能夠有效去除錯誤目標框,因此使大目標框的AP得到了提升 (53.6% vs 55.8%).

Embedding機制

由於在一張圖片中一般會有多個物體,可以檢測出多個corner對,因此需要一種機制曲判斷哪兩個左上和右下的corner是同時屬於一個物體的。論文中應用到了embedding機制。

如何做到呢:

A. 每個corner預測一個對應的embedding向量,這個向量具有如下效果:

  • 若某個Top-left Corner和某個Bottom-right Corner是屬於一個bbox,那麼這兩個Corner的Embedding向量的距離非常小
  • 若某個Top-left Corner和某個Bottom-right Corner是不屬於一個bbox,那麼這兩個Corner的Embedding向量的距離非常大

B. 設計損失函數:

embedding損失,包括pull,push損失,Lpull損失使屬於同一個bounding box的兩個point的距離儘量小(bbox內部的距離),push損失使屬於不同bounding box的兩個point的距離儘量大(不同bbox之間的距離)

e_{t_{k}}e_{b_{k}}分別指物體k的左上和右下corner的一維embedding向量

e_{k} = 0.5 * ( e_{t_{k}} +e_{b_{k}}) 其中在實驗中\Delta = 1

需要優化的訓練損失 

總結

論文——

  1. 提出了使用三個keypoint來檢測物體,其中左上右下兩個corner關鍵點用來定位bbox框,中心關鍵點用來降低大物體和小物體的識別假陽率。
  2. 提出了2個pooling機制 :提出了Cascade Corner Pooling機制,可以在Corner Pooling的基礎上感知到物體內部信息;提出了Center Pooling機制,豐富中心關鍵點特徵,便於提取中心關鍵點。
  3. 對小尺度目標檢測友好,並且能降低物體檢測的假陽率。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章