論文精讀——CenterNet :Keypoint Triplets for Object Detection

論文地址https://arxiv.org/abs/1904.08189

論文代碼https://github.com/Duankaiwen/CenterNet

發佈時間:2019.4.17

發佈機構:University of Chinese Academy of Sciences ;University of Oxford ;Huawei Noah’s Ark Lab

之前精讀了篇也叫centerNet的網絡:論文精讀——CenterNet :Objects as Points  可以看得出最近目標檢測的趨勢大致都是去掉了錨點機制,引入關鍵點得到目標框,在one-stage方法中充分權衡了速度和精度,取得了不錯效果。




Abstract

       在目標檢測中,基於關鍵點的方法常常出現很多邊界框不正確,原因在於缺少對裁剪框中內容做進一步校驗。本文找到一種基於最小代價情況下探究各個裁剪框內視覺模式的方法。基於此前one-stage的CornerNet做的改進,我們方法叫做CenterNet,將每個檢測目標看做是三點(triplet),而不是一對關鍵點構成,此舉改善了精度和召回率。相應地,還設計了兩個自定義模塊,分別叫做cascade corner pooling(級聯角點池化)center pooling(中心點池化),各自的作用是豐富了利用左上和右下角收集的信息提供更多中心區域的識別信息

在MS-COCO數據集上,本方法獲得AP 47.0%,比現有one-stage方法高4.9%至少,且速度更快,此外與two-stage方法性能也有可比性。


1. Introduction

        當前較爲流行的目標檢測方法是基於錨點的,具體流程是將預先定義好尺寸大小的一系列矩形框放在圖像上,然後在真實框(監督的GT)的幫助下,迴歸到期望位置。該類基於錨點的檢測方法缺點是:1.往往需要大量錨點從而確保與GT目標有較高的IOU;2.框的尺寸和比例需要手動設計;3.錨點框往往不與實際框對齊,這不利於Bbox做分類任務

爲了克服如上問題,提出了基於關鍵點的目標檢測方法——CornerNet; 

CornerNet 優點:以一對角點方式構建目標,繞過錨點問題,實現one-srage目標檢測最好的精度度;

CornerNet 缺點:由於目標的全局信息獲取能力較弱,使得其性能受限,也就是說,每個目標由一對角點來表述,導致算法對目標框比較敏感,同時不知道哪些關鍵點該組成一對來構建成目標。 結果如圖1所示,常常產生錯誤的邊界框,如果有補充信息(如寬比例大小)則能簡單濾除此類錯誤。

       爲了解決CornerNet的問題,我們提出CenterNet,該網絡能感知每個proposed region處的視覺模式(內容),從而能自行確定每個邊界框的正確性。利用一個額外的關鍵點來獲取proposal區域的中心部分,該中心區域與幾何中心很近。我們設計的初衷思想是:如果一個預測框與GT框有很高的IOU,然後中心關鍵點在預測框的中心區域中預測同種類別的概率也很高,反之亦然。簡單地說,就是在推理時,通過一對角點關鍵點得到一個proposal區域,我們通過檢測是否有同種類別的中心關鍵點出現在proposal的中心區域 來判斷這個proposal是否真的是目標。思路見圖1,即用三個點來表述目標,而非一對角點。

        本文還提出了兩個策略來更好達到目的

         第一個策略 center pooling: 在預測中心關鍵點的分支網絡中使用。Center pooling幫助中心關鍵點獲取更多目標中可識別的視覺信息,對proposal中心部分的感知會更容易。通過在預測中心關鍵點的特徵圖上,對關鍵點響應值縱向和橫向值的求和的最大值來獲取最大響應位置。

        第二個策略 cascade corner pooling: 使得原始corner pooling 模塊具有感知內部信心的能力。我們通過在特徵圖上獲得目標邊界和內部方向最大響應值的和來預測角點。

        我們的CenterNet ,帶center pooling和cascade corner pooling的,在MS-COCO的測試集上取得AP 47.0%;52層 hourglass作爲backbone時推理時間爲270ms, 104層時爲340ms。


2. Related Work

        深度學習方法的目標檢測主要可分爲兩類:two-stage 和 one-stage

Two-stage 方法,將目標檢測任務分爲兩個階段:提取RoIs, 然後對RoIs進行分兩類和迴歸。R-CNN使用SS方式獲得RoIs,使用基於DCN分類;SPP-Net, Fast-RCNN,從特徵圖提取RoIs;Faster-RCNN使用RPN;此處原文還提到Mask-RCNN,R-FCN, Cascade R-CNN;基於關鍵點檢測的方式可避免使用錨點框和框迴歸的問題。

One-stage 方法,取消了RoI提取的過程,直接分類和迴歸候選錨點框。 文中提到了Yolo,Yolo v2,SSD, DSSD,R-SSD,RON,RefineDet, CornerNet;


3. Our Approach

3.1. Baseline and Motivation

       本文使用CornerNet作爲baseline. 爲了檢測角點,CornerNet會產生兩個熱力圖:一個是左上角點熱力圖,一個右下角點熱力圖。熱力圖表示不同類別關鍵點的位置且爲每個關鍵點賦予了置信度值。此外,它還預測了一個嵌入信息,爲每個角點提供一組偏移值。這個嵌入信息用於識別兩個角點是否來自同個目標。這個偏移值用於將角點從熱力圖重新映射回輸入圖像上。根據得分值大小,從熱力圖上分別獲得左上角點和右下角點的前top-k個來生成目標框計算一對角點的向量距離來確定這對角點是否來自同個目標。當一對角點的距離小於一個特定閾值,即生成一個目標框,目標框的置信度是這對角點熱力值的平均值

        CornerNet在MS-COCO驗證集上的FD(false discovery) rate如表1所示。IOU爲0.05時,FD=32.7%,即每100個檢測目標框中有32.7個框與GT的IOU小於0.05.造成這種情況的可能原因是CornerNet無法獲取bbox內的信息。

        我們提出的CenterNet,在檢測目標時,我們使用三個關鍵點而不是一對關鍵點。我們的方法仍屬於one-stage的檢測器。且部分繼承了RoI Pooling功能。我們的方法只關注中心信息,造成的附加代價較小。

3.2. Object Detection as Keypoint Triplets

        整體的網絡結構見圖2,

通過一箇中心關鍵點和一對角點來描述每個目標。利用檢測到的中心關鍵點來重新排列top-k個bbox,從而濾除不正確的bbox,流程如下:(1)根據得分情況,選擇top-k箇中心關鍵點;(2)根據相應偏移值,將這些選出的中心關鍵點在輸入圖像上重繪;(3)爲每個BBox設計一箇中心區域,並檢查這個中心區域中是否包含中心關鍵點,需要注意的是檢測的中心關鍵點所屬類別需要與Bbox的類別一致;(4)如果在中心區域中檢測到中心關鍵點,將保留該Bbox. 這個Bbox的得分值等於 三個點(top-left, bottom-right, center keypoint)得分的平均值。倘若沒有在中心區域檢測到中心關鍵點,則該Bbox將被移除。 

        可以看到圖2中將Bbox分爲3x3的網格,中心網格位置就是一箇中心區域,用於搜索中心關鍵點的。

         Bbox中心區域的大小會影響檢測結果,如小的中心區域導致小的bbox的地recall,對大的bbox取大的中心區域會導致低precision。文章提出scale-aware(尺寸可調)中心區域 來自適應各種尺寸的bbox. 即對於小的bbox框用相對較大的中心區域,對於大的bbox框用相對較小的中心區域。所用公式如下,參考圖3,涉及預測框左上角點,右下角點。中心區域左上角點和右下角點 的座標:

其中n爲奇數; 作者論文中對於bbox小於150時取n=3,當bbox大於150時取n=5;根據公式1計算中心區域,用於檢測是否包含中心關鍵點。

 3.3. Enriching Center and Corner Information

Center pooling.

物體的幾何中心可能不會傳達可識別性較強的模式(如人的頭可識別性較強,卻不是人體中心)。本文提出用center pooling來獲取更豐富更具識別性的視覺模式。圖4 顯示了center pooling的原理,詳細過程如下首先backbone會輸出一個特徵圖,爲了確定特徵圖上的某個像素是否爲中心關鍵點,需要在水平和垂直方向尋找最大值,並且將最大值相加。 center pooling有利於更好檢測中心關鍵點。

Cascade corner pooling.

 corners(我翻譯成了角點,表示四角上的點) 通常在物體之外,缺乏局部外觀特性。CornerNet用corner Pooling來解決此問題,通過沿邊界方向找到最大值從而確定角點(見圖4(b)),但其確實點角點對邊界特別敏感(因爲是針對邊界的特徵信息做的池化操作,受邊界信息變化影響較大)。爲此,本文作者提出讓角點可看到更多的目標視覺模式信息(即獲取物體內部的信息,而非單單邊界的),見圖4(c),原理是沿邊界尋找最大值,根據邊界沿物體內部方向尋找最大值,將兩個最大值相加。該方法獲取的角點 帶有邊界信息以及物體內部的數據模式信息

 

以上兩個池化操作的模塊見圖5;

 3.4. Training and Inference

Training.

輸入圖像尺寸:511x511; 經過backbone的熱力圖尺寸:128x128. 作者還用到數據增強。訓練loss函數定義如下,採用了Adam優化器:

 其中各個loss的含義具體可參考cornerNet的論文,其有詳細介紹。

Inference.

對於單尺度測試,將原始圖和水平翻轉圖像以原始分辨率送入網絡。對於多尺度測試,將原始圖和水平翻轉圖以0.6,1,1.2,1.5,1.8的尺寸倍數送入網絡。從熱力圖中選擇top70箇中心關鍵點和top70個左上角點和70個右下角點來檢測bbox,將水平翻轉圖上檢測到的bbox水平翻轉回來與原始未翻轉的bbox混合,用soft-nms來移除冗餘的bbox。根據得分情況,最後選擇top-100個bbox用於檢測。


4. Experiments

4.1. Dataset, Metrics and Baseline

使用MS-COCO數據集,用AP和AR來描述檢測器性能。

4.2. Comparisons with Stateoftheart Detectors

對比結果見表2,CenterNet511-52表示輸入圖像分辨率 511x511,52表示Hourglass-52的basebone;

 

 4.3. Incorrect Bounding Box Reduction

AP度量:反應一個網絡能預測多少高質量目標框(通常IOU>=0.5),而不能直接反應多少不正確的目標框(通常IOU<<0.5)。

FD度量:反應不正確框的比例;

對比見表3

 4.4. Inference Speed

測試平臺:NVIDIA Tesla P100 GPU

CornerNet511-104 一張圖需要300ms;

CenterNet511-52 一張圖需要270ms;

CenterNet511-104 一張圖需要340ms;

 

作者還研究了Central region的影響, Center pooling.Cascade corner pooling.的一些實驗獲取的結論(即使用其中一個或兩個的數據結果),數據如下表:

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