相關鏈接
論文地址:https://arxiv.org/abs/1904.08189
代碼鏈接:https://github.com/Duankaiwen/CenterNet
概述
CenterNet由中科院、牛津大學和華為諾亞方舟實驗室聯合提出,發展了以CornerNet為代表的基於關鍵點的目標檢測方法。其主要思想在於,利用關鍵點的三元組(中心點、左上角點和右下角點)來確定一個目標,有效利用了目標內部信息。為了更好地提取中心點和角點特征,作者提出了center pooling和cascade corner pooling。CenterNet在MS COCO數據集上的AP高達47%,大幅領先於其他SOTA算法。
介紹
CornerNet利用一對角點(左上角和右下角)來確定目標,算法對目標的邊緣信息很敏感,同時不知道哪組角點構成目標,所以經常產生一些錯誤的bbox,很多錯誤可以通過簡單的補充信息過濾掉(比如寬高比)。考慮到如果bbox與gt有很高的IoU,那么中心區域的關鍵點的類別與之類別相同的概率會很大,反之亦然。在推理過程中,在將候選區生成為一對角關鍵點之后,通過檢查同一類的中心關鍵點是否位於其中心區域來確定是否為目標。
為了提取中心關鍵點和角點的特征,作者提出了center pooling和cascade corner pooling。測試時間:Hourglass-52為270ms per image,Hourglass-104為340ms per image。
CenterNet
CenterNet使用CornerNet作為baseline。
CornerNet生成兩個熱圖:左上角的熱圖和右下角的熱圖。熱圖表示不同類別的關鍵點的位置,並為每個關鍵點分配一個信任評分。此外,它還預測每個角點的embedding和offsets。embedding用於識別兩個角點是否來自同一個對象。offsets學習將角點從heatmap重新映射到輸入圖像。為了生成目標的bbox,根據置信得分選取top-k的左上角點和右下角點,利用它們的embedding向量的距離來確定角點對是否來自同一目標(如果距離小於閾值則生成bbox),產生的bbox的置信分是角點對的平均分。
對CornerNet的分析:
FD(false discovery)的定義—— FD=1-AP
解決方案:引入center information。
CenterNet的網絡結構:
產生top-k的bbox方式與CornerNet相同。過濾錯誤bbox的步驟:(1)根據置信分選取top-k的中心關鍵點(2)使用對應的offsets將中心關鍵點重新映射到輸入圖像(3)定義中心區域判斷中心關鍵點是否落在該區域內。bbox的置信分取三點的平均值。
顯然,中心區域的大小對檢測結果影響很大。文中提出了一種scale-aware中心區域,傾向於小的bbox產生相對較大的中心區域,而大的bbox產生相對較小的中心區域。假設bbox的左上角點坐標為(tlx,tly),右下角點坐標為(brx,bry),中心區域的定義為:
其中n為奇數(文中n的設置:bbox的尺度小於150時,n取3;否則取5)。
Center pooling:累加水平方向和垂直方向的最大值
Corner pooling:累加邊緣的最大值
Cascade pooling:累加邊緣方向和內部方向的最大值
corner pooling使得角點對邊緣信息很敏感,所以作者提出了cascade corner pooling:首先沿邊緣方向找到邊緣最大值,然后沿邊緣最大值的方向尋找內部最大值,最后累加最大值。
訓練和測試:
Pytorch
輸入圖像大小:511*511
heatmap大小:128*128
優化:Adam
損失函數:
其中,pcij是類別c在位置(i, j)的score,ycij是非標准化高斯增強的ground-truth,N是圖像中目標數,α和β是超參數(實驗中α設為2,β 設為4)。
Offsets則是位置偏移。下采樣的使用使得輸出尺寸小於原始圖像尺寸,假設下采樣因子為n,則圖像中(x, y)映射到Heatmaps的([x/n], [y/n])。取整計算會導致精度丟失,使用offsets來更准確地進行Heatmaps到輸入圖像的映射。
Embedding用於確定左上角和右下角的一對角點是否來自同一個目標邊界框。Embedding產生每個角點的embedding vector,如果左上角和右下角的一對角點屬於同一個目標,那么它們embedding vector之間的距離應該很小。該部分的訓練通過如下兩個損失函數實現,其中(4)用於縮小屬於同一目標的兩個角點的embedding向量的距離,(5)用來放大不屬於同一目標的兩個角點的embedding向量的距離:
整體損失函數:
GPU:8個Tesla V100
batch size:48
迭代:0-450k(lr=2.5e-4),450k-480k(lr=2.5e-5)
測試:單尺度測試輸入原始圖像和水平翻轉的圖像;多尺度測試時輸入原始圖像和水平翻轉的圖像(分辨率0.6,1,1.2,1.5,1.8)。選取top 70的關鍵點。采用Soft-NMS。選擇top-100 bbox作為最終檢測結果。
實驗
在COCO上的檢測結果:
誤檢率對比:
推理速度:
同樣使用NVIDIA Tesla P100 GPU,CornerNet511-104為300ms/img,而CenterNet511-104是340ms/img。CenterNet511-52為270ms/img。
Ablation study:
中心區域、center pooling和cascade corner pooling
中心關鍵點有多重要?作者把預測的中心關鍵點替換為gt的中心,AP明顯提升:
記得ExtremeNet也利用了中心關鍵點的信息,為什么效果沒這篇的好?(可能是沒有加入類別信息?)