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


相關鏈接

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

代碼鏈接:https://github.com/Duankaiwen/CenterNet

概述

CenterNet由中科院、牛津大學和華為諾亞方舟實驗室聯合提出,發展了以CornerNet為代表的基於關鍵點的目標檢測方法。其主要思想在於,利用關鍵點的三元組(中心點、左上角點和右下角點)來確定一個目標,有效利用了目標內部信息。為了更好地提取中心點和角點特征,作者提出了center poolingcascade corner poolingCenterNetMS COCO數據集上的AP高達47%,大幅領先於其他SOTA算法。

介紹

CornerNet利用一對角點(左上角和右下角)來確定目標,算法對目標的邊緣信息很敏感,同時不知道哪組角點構成目標,所以經常產生一些錯誤的bbox,很多錯誤可以通過簡單的補充信息過濾掉(比如寬高比)。考慮到如果bboxgt有很高的IoU,那么中心區域的關鍵點的類別與之類別相同的概率會很大,反之亦然。在推理過程中,在將候選區生成為一對角關鍵點之后,通過檢查同一類的中心關鍵點是否位於其中心區域來確定是否為目標。

 

為了提取中心關鍵點和角點的特征,作者提出了center poolingcascade corner pooling。測試時間:Hourglass-52270ms per imageHourglass-104340ms per image

CenterNet

CenterNet使用CornerNet作為baseline

CornerNet生成兩個熱圖:左上角的熱圖和右下角的熱圖。熱圖表示不同類別的關鍵點的位置,並為每個關鍵點分配一個信任評分。此外,它還預測每個角點的embeddingoffsetsembedding用於識別兩個角點是否來自同一個對象。offsets學習將角點從heatmap重新映射到輸入圖像。為了生成目標的bbox,根據置信得分選取top-k的左上角點和右下角點,利用它們的embedding向量的距離來確定角點對是否來自同一目標(如果距離小於閾值則生成bbox),產生的bbox的置信分是角點對的平均分。

CornerNet的分析:

FDfalse discovery)的定義—— FD=1-AP

 

解決方案:引入center information

CenterNet的網絡結構:

 

產生top-kbbox方式與CornerNet相同。過濾錯誤bbox的步驟:(1)根據置信分選取top-k的中心關鍵點(2)使用對應的offsets將中心關鍵點重新映射到輸入圖像(3)定義中心區域判斷中心關鍵點是否落在該區域內。bbox的置信分取三點的平均值。

顯然,中心區域的大小對檢測結果影響很大。文中提出了一種scale-aware中心區域,傾向於小的bbox產生相對較大的中心區域,而大的bbox產生相對較小的中心區域。假設bbox的左上角點坐標為(tlx,tly),右下角點坐標為(brx,bry),中心區域的定義為:

 

其中n為奇數(文中n的設置:bbox的尺度小於150時,n3;否則取5)。

 

Center pooling:累加水平方向和垂直方向的最大值

 

Corner pooling:累加邊緣的最大值

 

Cascade pooling:累加邊緣方向和內部方向的最大值

 

corner pooling使得角點對邊緣信息很敏感,所以作者提出了cascade corner pooling:首先沿邊緣方向找到邊緣最大值,然后沿邊緣最大值的方向尋找內部最大值,最后累加最大值。

訓練和測試:

Pytorch

輸入圖像大小:511*511

heatmap大小:128*128

優化:Adam

損失函數:

 

其中,pcij是類別c在位置(i, j)scoreycij是非標准化高斯增強的ground-truthN是圖像中目標數,αβ是超參數(實驗中α設為2β 設為4)。

Offsets則是位置偏移。下采樣的使用使得輸出尺寸小於原始圖像尺寸,假設下采樣因子為n,則圖像中(x, y)映射到Heatmaps([x/n], [y/n])。取整計算會導致精度丟失,使用offsets來更准確地進行Heatmaps到輸入圖像的映射。

 

Embedding用於確定左上角和右下角的一對角點是否來自同一個目標邊界框。Embedding產生每個角點的embedding vector,如果左上角和右下角的一對角點屬於同一個目標,那么它們embedding vector之間的距離應該很小。該部分的訓練通過如下兩個損失函數實現,其中(4)用於縮小屬於同一目標的兩個角點的embedding向量的距離,(5)用來放大不屬於同一目標的兩個角點的embedding向量的距離:

 

整體損失函數:

 

GPU8Tesla V100

batch size48

迭代:0-450klr=2.5e-4),450k-480klr=2.5e-5

測試:單尺度測試輸入原始圖像和水平翻轉的圖像;多尺度測試時輸入原始圖像和水平翻轉的圖像(分辨率0.6,1,1.2,1.5,1.8)。選取top 70的關鍵點。采用Soft-NMS。選擇top-100 bbox作為最終檢測結果。

實驗

COCO上的檢測結果:

 

誤檢率對比:

 

推理速度:

同樣使用NVIDIA Tesla P100 GPUCornerNet511-104300ms/img,而CenterNet511-104340ms/imgCenterNet511-52270ms/img

Ablation study

中心區域、center poolingcascade corner pooling

 

中心關鍵點有多重要?作者把預測的中心關鍵點替換為gt的中心,AP明顯提升:

 

記得ExtremeNet也利用了中心關鍵點的信息,為什么效果沒這篇的好?(可能是沒有加入類別信息?)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM