WACV2021的一篇文章,將CenterNet的方案用到了旋轉物體的檢測中,設計了一種精巧的旋轉框表達方式,免去了設計anchor麻煩,效果也非常好,而且代碼也開源了。
這是一篇有方向的物體檢測的文章。當前的有方向物體檢測往往是兩階段的基於anchor的檢測方法,但是這種方法會有正負anchor的不平衡的問題。這篇文章將基於水平關鍵點的物體檢測的方法擴展了一下,用於有方向的物體檢測。我們首先進行物體的中心點的檢測,然後回歸一個包圍框的邊緣感知向量(BBAVectors)來得到有方向的包圍框。為了讓這個向量的學習變得簡單,我們還進一步將有方向的包圍框分成了水平框和選擇框兩類。
兩階段的基於anchor的旋轉框檢測有一些缺點:(1)anchor的設計非常的複雜,要去設計不同的比例,不同的尺寸。(2)正負樣本會非常的不均衡,這會導致訓練很慢,而且無法達到最優的效果。(3)第二個階段的crop和regress策略在計算量上也比較大。除了基於anchor的方法之外,最近anchor free的物體檢測方法得到了較大的發展,CenterNet的方法是先檢測物體的中心點,然後直接回歸出物體的寬和高,當然,我們可以直接再回歸一個旋轉角度θ來將CenterNet擴展到有方向的物體檢測,但是,對於任意的旋轉物體,寬和高實際上依賴於不同的旋轉坐標系統,所以直接回歸會有些難度。
本文中,我們擴展了CenterNet的方法,將其應用到有方向物體的檢測中,但是,並不是直接回歸w,h和θ,而是學習一個box boundary-aware vectors(BBAVectors),如圖1(b),然後得到物體的有方向的包圍框。在實際做的過程中,我們發現,在一些極端情況下,向量和象限的邊界非常的靠近,如圖1(c),這樣區分向量的類型就比較困難。
總結一下,我們的貢獻如下:
圖1:帶方向的包圍框的表示方式
網絡結構如圖2,是一個U型的結構,我們使用了ResNet101的Conv1~5作為主幹,然後再進行上採樣,得到一個原始圖像1/4大小的特徵圖。在上採樣的過程中,會有下採樣時候的層的跳躍連接拼接到一起。
圖2:本文提出的方法的整體結構以及OBB的描述方法
Heatmap是用來定位關鍵點的。這裡,我們用來檢測物體的中心點。熱圖有k個通道,分別對應了不同類別的物體。熱圖的每個像素點的值表示物體的置信度。
Groundtruth 假設c=(cx,cy)是旋轉框的中心點,我們以c為中心,構建一個2D的高斯分布來作為熱圖的groundtruth,其中,高斯分布的方差是和物體的尺寸相關的一個自適應的值。
訓練損失 在訓練熱圖的時候,只有中心點c是正樣本,其他的點,包括高斯分布範圍中的點都是負樣本。由於這個正負樣本的極度不平衡,所以直接去學習中心點是比較困難的,所以,我們對高斯分布以內的點的損失做了一定程度的衰減,使用了一個focal loss的變體來訓練這個熱圖。
其中,p_hat表示groundtruth,p表示預測值,N是物體的數量,α和β是超參數,這裡α=2,β=4。
在預測階段,從熱圖中提取峰值點作為物體的中心點,這個中心點c是一個整數,但是,原始圖經過下採樣之後,得到的中心點的坐標是一個浮點數,為了彌補這個量化的誤差,我們還需要再預測一個偏移量O:
用L1 loss來進行優化:
其中,SmoothL1的表達式可以是:
為了得到帶方向的包圍框,一個很自然的想法就是回歸出寬,高,和角度θ,我們把這個base line稱為Center+wh+θ,如圖1(a)。這個方法有幾個缺點:(1)小的角度的變化對於損失來說可能是微不足道的,但是對於IOU卻會產生較大的影響。(2)OBB中的w,h是在各自獨立的旋轉坐標系統中定義的,角度θ是相對於y軸的,這樣,網絡很難去聯合訓練所有的物體。所以,我們提出了一種描述OBB的方法,叫做box boundary-aware vectors(BBAVectors),包括4個向量,t,r,b,l。在我們的設計中,這4個向量分布在笛卡爾坐標系的4個象限中,所有的旋轉物體都共用一個坐標系,這樣可以高效的利用共同的信息,並提升模型的泛化能力。我們有意的設計了4個向量,而不是2個,為的是當某些局部特徵不是很明確的時候可以得到更多的交互信息。
此時,包圍框的參數定義為:b = [t,r,b,l,w,h],其中w,h是外接水平包圍框的寬和高,如圖2所示。這樣,每個包圍框就有2x4+2=10個參數,我們還是用L1 loss來回歸box的參數:
我們發現,當物體框和xy軸對齊的時候,檢測會失敗,這個原因可能是象限的邊界問題,這種類型的向量的差別很難區分。我們把這個問題叫做corner case,我們把OBBs分為兩類,一類是水平的,一類是旋轉的,當OBBs是水平的,w和h幫助我們得到準確的包圍框。另外,外接矩形的參數也可以幫助我們去更好的描述OBB。
我們定義了一個旋轉特徵圖α,我們這樣定義:
然後通過交叉熵來優化:
我們在兩個數據集上進行了驗證,DOTA和HRSC2016。
DOTA:
HRSC2016:
我們對比了BBAVectors+r和BBAVectors+rh兩種方法,一種是不區分水平和旋轉物體,一種區分水平和旋轉物體:
我們還對比了Center+wh+θ的baseline模型:
更多內容,請關注微信公眾號「AI公園」。