one stage和two stage是目標檢測的主流方法,最近由deng老闆引領的anchor free方法另闢蹊徑,以關鍵點檢測爲基礎來做檢測,也算是one stage的一種吧
CornerNet
]預測圖片上所有物體的左上角、右下角,然後後處理時再組合在一起。第一篇用關鍵點做檢測,無需設置anchor的文章,但是還是有很多問題的
- 左上角、右下角語義信息比較弱,很難檢測到,因此文章引入Cornerpool來改善這個問題
- 由於是bottom-up結構,還需要後處理組合在一起
ExtremeNet
改進Cornernet,本質上Cornernet還是top down結構,因爲左上角和右下角其實算是bbox的另一種形式,它不是直接和物體的語義特徵相關的,局部的外觀特徵不一致,一個人姿勢不同左上角完全不一樣。雖然引入了Corner pooling也只是部分緩解;cornetnet的後處理需要把左上角和右下角正確的組合起來,它利用的是geometric grouping,學習一個embeding,然後組合起來。
而Extremenet的不同點是檢測邊緣點,最左邊最右邊最上邊最下邊的極值點,這些點是有明確的語義特徵,而且局部外觀特徵是一致的,容易被檢測到;後處理進行組合時不需要隱式地去學習embeding,而是直接根據外觀特徵進行組合。
問題
- 速度慢,需要檢測的點更多了(每類都要上下左右中)
- 需要標註extreme point,不過可以通過coco的segmentation得到,或者重新找人標註,文章說比標註bbox更便宜
- 比Cornernet沒有明顯提升
CenterNet(Objects as Points)
超喜歡的一篇工作,算是top-down,不需要nms等後處理。
沒有anchor的設置(和yolov1一樣),檢測物體的中心點,然後從中心點出發回歸wh,或者做其他應用3d檢測等
- 利用關鍵點檢測網絡,預測一個heatmap,每個點代表一個物體,可能出現兩個物體的中心點落在同一個heatmap的格子裏,不過作者計算髮現這種情況太少了
- 由於heatmap是原圖的1/S,出現了量化誤差。所以還需要一個加個regress網絡需要中心點的偏移
- 但是中心點有時候不在物體上面,還是存在語義問題,根據作者提供的消融實驗,換成gt的中心點,精度大幅提升