&論文概述
論文題目:Objects as Points
作者&出處:Xingyi Zhou, UT Austin; Dequan Wang, UC Berkley; Philipp Krahenbuhl, UT Austin
獲取地址:https://arxiv.org/abs/1904.07850v1
&總結與個人觀點
提出新的表示目標的方法:使用points。CenterNet是一個成功的關鍵點評估網絡,找到目標的中心,回歸其size。這個算法簡單、快速、精確且沒有任何的NMS后處理因此端到端可微。這個想法很普通,且在簡單的二維檢測之外仍可大范圍的應用。CenterNet樂意評估一系列額外的目標屬性,如pose、3D方向、depth等。我們的實驗對實時目標識別及相關工作開辟了一個新的方向。
這篇論文是我看到相關方向的一個比較新穎的想法,將目標可做一個points,然后通過這個points的特征,來對相應的屬性進行回歸。
&貢獻
1) 提出CenterNet,將目標視為點,然后回歸出其他的目標的屬性;
2) 結合3D屬性、pose屬性,取得不錯的成果。
&擬解決的問題
問題:使用軸對齊(axis-aligned)boxes來檢測目標:大多成功的目標檢測通過枚舉一個近乎詳盡的潛在目標位置的列表,且對每個box分別進行分類操作。
分析:而這無疑是浪費的、低效的以及要求額外的后處理(如NMS等)的方法。此外,像NMS這種后處理操作,使得這個過程很難微分與訓練,以致於當前大多數的檢測器無法實現end-to-end的訓練。
而CenterNet將目標視為單獨的點——bbox的中心點。使用keypoint estimate來找到中心點,同時通過中心點回歸出其他的目標屬性,如:size、3D location、方向乃至pose。
1) 這種方法相比於基於相應的bbox的檢測器而言,可微、更簡單、更快甚至更精確。
2) 與anchor-based one-stage方法相比:CenterNet與其相似,一個中心點可視為一個形狀不可知的anchor。但其中仍有不同之處:
- CenterNet使用的“anchor”僅基於location,而不是box的覆蓋率,沒有對foreground與background設置閾值限制;
- 每個目標只有一個正“anchor”,不需要使用NMS。這個中心點是從heatmap中提取出的峰值;
- CenterNet相比於傳統的目標檢測器(輸出stride of 16)使用更大的輸出分辨率(輸出stride of 4),消除了多anchor的需要。
3) 與使用keypoint estimate的方法相比,如CornerNet、ExtremeNet,在關鍵點檢測之后需要結合分組的階段對關鍵點進行處理,降低了算法的速度。而CenterNet則直接提取每個目標中的中心點而不需要進行分組或其他后處理。
&框架及主要方法
1、CenterNet的網絡結構圖
2、如何找到Center Point
直接將圖片輸入到全卷積網絡中,生成一個heatmap。在heatmap中的峰值就是目標的中心。在每個峰值出的圖像特征用來預測目標的bbox的高和寬。
假定輸入圖像I(【W、H、3】),目的是生成一個keypoint heatmap Y(【W/R、H/R、C】),Y的值在[0, 1],如果為1則為檢測到的關鍵點,為0為背景。其中R是輸出的stride,實驗中使用4,C是總類別數。如1中圖像,實驗時使用不同的全卷積編碼解碼網絡來進行預測。
對每個類別c的真實值的關鍵點p,計算其低分辨率等式,對Y進行高斯處理:
使用focal loss來減少像素級邏輯回歸的懲罰:
Local Offset:
對每一個中心點額外預測局部偏移O(【W/R,H/R,2】),所有的類別共享相同的預測偏移。使用L1損失對偏移進行訓練:
只有在關鍵點p位置處進行監督,其他位置均忽略。
3、如何回歸出Object的其他屬性(size、3D location etc.)
Size Regression:
令(x1(k), y1(k), x2(k), y2(k))是類別ck第k個目標的bbox,其中心pk=((x1(k)+x2(k))/2, (y1(k)+y2(k))/2)。使用keypoint estimator Y來預測所有的中心點,此外對k回歸其size,sk=(x2(k)-x1(k), y2(k)-y1(k))。為限制計算負擔,對所有類別使用單個size預測S(【W/R,H/R,2】)。使用L1 loss來計算其size的loss:
此時總檢測損失可表示為:
到此為止,使用單個網絡預測Y、O、S,因此在每個位置網絡預測C+4個值,如下圖中的3個數據所示。
下表為CenterNet對於size、keypoint heatmap以及offset間的消融實驗,通過與baseline的對比可以看出,每種loss都對結果產生了好的影響。
Bbox Regression:
使用預測得到的中心點、偏移以及size可以計算出bbox,如下所示:
3D檢測:
在對3D檢測方面,主要考慮其深度、3D 維度、方向,其中深度d是一個標量,d=1/σ(d)-1,σ表示sigmoid。
使用separate head Γ(【W/R、H/R、3】),范圍在[0, 1],直接回歸距離的絕對值。方向默認為單獨的標量,但很難回歸,最終使用8個標量來表示,其中4個標量表示每個bin。對於每個bin,2個標量使用softmax分類,其他的在每個bin中回歸角度。
Pose estimator:
通過k個關節點預測姿勢,預測的數據如下圖所示:
&遇到的問題
1、CenterNet如何提取中心點,或者說是heatmap中的峰值;此外,為什么峰值可以作為中心點?這個keypoint的特征會有很多嗎,還是僅是一個點?
2、找到中心點后,如何回歸出邊界?
根據網絡的輸出可以看出最后的輸出是一並進行的,其中對每個location都會輸出C+4個值,如此的話,目標屬性的回歸應當是根據最后的loss計算進行的。提到每個loss只會在峰值出進行計算,如此就可以排除其他的信息影響,通過loss進行反向傳播一步步向ground truth逼近。
3、在論文中以及centernet的網絡結構中,體現的都是所有的數據是通過CNN一起輸出的,而論文中的中心是從對應的center回歸出其他的屬性是怎么得來的?
根據對整體框架以及結構的分析,應當只有共同的loss才能影響到對應的回歸部分。
&思考與啟發
這個想法看起來更像是使用了反向思維的成果,從另一個方向出發來對整體進行評估。但是對於heatmap我暫時還是不太理解,不太明白其機制,需要擴展一下這個方面的知識。