對象檢測新趨勢anchor-free模型之CenterNe

  • 2019 年 12 月 15 日
  • 筆記

概述

01

CornerNet作為anchor-free對象檢測網路,克服了one-stage對象檢測依賴anchor boxes的缺點,但是CornerNet本身在對象檢測方面的精度仍然有限,本文作者認真分析了CornerNet網路的缺陷,提出了新的改進方法。CornerNet網路依賴關鍵點對來定位對象的bounding box然而這種方法常常會導致錯誤定位,CenterNet提出了基於三聯關鍵點定位改進,通過自定義兩個關鍵模組-級聯Corner Pooling 與 Center Pooling從而提升位置資訊識別能力,在MS-COCO數據集上AP達到了47%超過所有其它的one-stage對象檢測模型,同時擁有更快的推理速度。

CornerNet的一個缺點是經常預測錯誤的點對,這個需要後期根據比率進行適當的過濾才會產生正確的bounding box,而通過中心位置點可以很快確認正確的點對資訊,提升CornerNet模型的精度。圖示如下

第一行藍色框是ground truth, 紅色框是預測結果。第二行為添加中心點之後的改進,當對象與預測框IOU很高時候,中心可能性也應該很高,反之亦然。CornerNet在不同尺度大小與IOU並交比時候的不同錯誤率如下:

網路架構

02

相比CornerNet多出一個分支輸出,就是中心點資訊預測,此外這裡的backbone網路依然採用Hourglass網路。通過CornerNet部分生成多個bounding box,對生成的多個bounding box,選擇top-k個box(根據得分),然後做如下處理:

1.選擇top-k個中心關鍵點(根據得分)

2.根據offset把中心點重映射到輸入影像上

3.定義個中心區域,檢查中心點是否在中心區域內(中心點的標籤與bounding box的標籤必須一致)

4.如果關鍵點在中心區域,則該bounding box保留,box得分將有三個關鍵點(左上角點、右下角點、中心點)平均值取代,反之則刪除該bounding box。

CenterNet模型的關鍵在於中心區域大小的定義選擇。當對小目標選擇小中心區域,召回率比較低,說明小目標比較難發現;對於大的目標選擇比較大的中心區域時候,發現精度比較低,說明預測錯誤框比較多。想想很容易理解,小目標選擇小的中心區域,中心關鍵點很難匹配到,而大目標選擇比較大的中心區域導致過度匹配。所以作者提出一種scale-aware的自適應中心區域選擇方法,對小bounding box盡量選擇大的中心區域,大的bounding box選擇小的中心區域 ,最終中心區域選擇滿足如下計算公式:

tl表示top-left即左上角點,br表示bottom right即右下角點,n為奇數。N=3與5的示例如下圖

池化模組

03

Center Pooling(中心池化)

上圖a表示中心池化,選擇水平與垂直兩個方向上的最大值,具體做法如下,對來自backbone輸出的feature map,進行X與Y方向的最大值提取,然後疊加,這樣做法有利於發現中心關鍵點。

Cascade Corner Pooling級聯角池化

見上圖(C)所示,首先發現bounding方向的最大值,然後再發現內部的最大值,把這兩個最大值疊加在一起,這樣就既獲得了框資訊也獲得對象可視化模式資訊。這兩種池化模組很容易結合在一起使用,它們的結構如下:

訓練與測試對比

04

損失計算公式如下:

其中前面兩個是focal losses

中間兩個是角點的量詞嵌入損失

最後兩個是位置損失基於L1計算

最終CenterNet的測試對比結果如下:

論文地址https://arxiv.org/pdf/1904.08189v3.