CentripetalNet: Pursuing High-quality Keypoint Pairs for Object Detection解讀

摘要

基於關鍵點的檢測器得到了不錯的性能,但關鍵點匹配錯誤是普遍性存在的,嚴重的影響了其檢測器的性能。

作者通過centripetal shif將相同的類別的實例分開。CentripetalNet是預測角點的位置和向心偏移,通過向向心偏移來對齊角點的匹配。

注:這裏說明,基於關鍵點檢測器的難點是針對相同類別的實例。而這個分析來源於在公開數據集中,跑前面論文的模型,分析出的bad case。爲了提點,針對普遍存在的問題,進行優化。

corner pooling通過提取bbox的邊緣信息,這裏爲了更好的利用這一信息,設計交叉星形變卷積(cross star deformable convolution)來引導學習這種特徵。

注:說明cross star deformable convolution能夠更好的提取bbox的信息,爲什麼呢,這個是後面閱讀文獻的關鍵點。

此外,作者加入了anchor free的實例級分割作爲mask module。centripetalNet在性能上,不僅優於所有(all,多霸氣)的現存的anchor free的方法,還優在實例分割達到最好的效果。

注:如何做實例級分割的,這裏大概想下,應該和mask rcnn差不多的思路,畢竟是主要做檢測的。針對論文的用詞,作者精通寫論文。

 

引言

anchor-base的檢測器,經過過去幾年的發展,其難點在於如何手工的設計合適的anchor,並且它們還存在正負樣本的不均衡的問題。

注:這裏總結了anchor-base的難點,雖然是一般性認識,但很多人不一樣意識到了。

爲了解決這個問題,CornerNet提出了通過提取角點對(左上和右下),來得到bbox的新思路,直接引導了檢測的新方向。基於角點的檢測器,分爲兩步,分別爲角點的提取和角點的匹配。該文獻中,關心第二點。

注:這裏引入了cornernet,並總結了方法的特點,並針對性的優化。作者很會寫文章,一步步的引人入勝,邏輯清楚。

那麼針對角點的匹配進行優化,那是不是我們先思考下,如何做呢?這個是發paper的要有的習慣。作者會提什麼樣的新穎的方法呢。想到摘要裏提到的cross star 形變卷積,有利於提取邊緣信息,是不是與它有關呢?如果是,又是如何體現在第二步?

大家可以先去回顧下形變卷積的論文。形變卷積的本質是對幾何圖形的變化進行自適應的建模,而它放在哪裏,都有會性能的提升。如果還是猜不出,作者是如何用這個形變卷積,那麼得好好琢磨了。

根據我們的理解,形變卷積應該對第一步的角點提取是很有幫助的,因爲在摘要裏說是爲了改進corner pooling的。這與第二步有什麼關係呢?我們在腦子裏應該立刻去想,前面的論文針對角點匹配是做了什麼優化。論文中也進行了對比:

圖1

從圖上,可以看到centernet是通過中心點來優化匹配的,而作者是通過方向來判斷的,這個想法與openpose的類似。如果是我,我可能會去用PAF去做,這樣會更準確,單一方向也會有問題,特別是大框裏有小框。不想了,繼續看下去。

cornernet和centernet主要是通過associative embedding來得到匹配點的,它們需要學習到兩個角點的匹配特徵。在它們的方法中,要學習同一個bbox的和不同bbox的區分能力,通過push和pull loss來讓每個點進行學習,即屬於同一個目標,就pull,不同的目標,就push。

注:這個與triple loss有同樣的意思,這類的話題有很多論文講了,減小類內距,增加類間距。比如傳統方法[1],深度學習,如人臉識別針對loss改進的一系列文獻,這裏不說了。這裏說下主要思路,一是改進loss,二是對數據的質量有一定的要求。

因此,在訓練階段,網絡要能夠學習到在所有潛在匹配點中,發現唯一的匹配點。其訓練的難點在於,針對多相同的目標(如圖中的相同的飛機)一起出現時,它會對outliers敏感。第二是,embedding預測是基於紋理語義信息,並沒有用到位置信息。

注:這裏提到了其難點是訓練出現多個相同目標的情況,作者分析是因爲只用到語義信息,並沒有使用位置信息。那麼如何使用位置信息呢?哪些論文使用了位置信息呢,Openpose使用了嗎?很顯然,openpose用到了,完全可以把openpose的搬過來。

基於上面的考慮,使用centripetal shift方法,同時cross-star deformable convlution模塊能夠讓centripetal shift表現的更好。每一個角點,通過centripetal shift都能夠產生一箇中心點,如果是同一個bbox的角點,那麼這個中心點會非常的接近。

而且不僅僅能學到更大的感受野,還能夠幾何結構信息。觀察得到在corner pooling的輸出,有cross stars現象。

cross star包括了目標的邊緣信息,是因爲corner pooling是通過max和sum實現的交叉星的。所以我內嵌形變卷積,來達到提取定位信息和幾何信息。

注:作者的想法是因爲corner pooling能夠有交叉星的現象,說明有能夠學習到任何結構信息,而形變卷積本身能夠學習到幾何信息,那麼兩者是否能夠結合起來呢,這是他的出發點。

受到目標檢測中的多任務的啓發,增加實例級的分割,來改善精度。爲了證明它的有效性,在MS-COCO數據集上進行驗證。

CentripetalNet不僅僅比所有的現存的anchor-free的精度高,還能夠在實例級分割上達到最好的效果。

注:MS-COCO說明有它的特點,標註也有多樣性。

對於anchor-base的方法,需要仔細的設計anchor。而anchor-free的方法,不需要設計anchor,目前主流有兩種:

1. 直接預測目標的中心。比如yolov1、densebox、unitbox。爲了解決小目標,導致的低召回問題,FCOS直接訓練bbox裏面的所有點,檢測bbox裏所有點到四邊的距離。

2. 預測關鍵點,然後組合成bbox。cornernet、deepextremecut、reppoints。需要仔細的將點集轉換成bbox。而centernet增加中心點預測,能夠極大改進了性能。這些方法通常有高召回,但會帶着很多錯誤檢測。其主要的挑戰在於,相同目標的關鍵點匹配問題。

在我們的工作中,我們提出centripetal shift來編碼角點之間的關係及與相關中心的空間信息。

CentripetalNet
 

圖2

我們首先通過centripetalnet pipeline得到候選角點,然後再通過centripetal shift算法進行高質量的角點對。

然後通過cross-star deformable convolution能夠產生自適應的的feature,去豐富角點位置的視覺特徵。而它的offset field是從角點與它們的中心來學習到的。這種方式,能夠對改進centripetal shift module非常重要。

最後增加實例級分析來改善檢測精度。

注:它的意思是說,形變卷積的offset filed是通過是從角點與它們的中心單獨學習到的。與後面的loss有關係。

注:先來看下這個網絡結果,先由Hourglass網絡組成backbone,後面由三個分支組成,一個左上角點,另一個是右下角點,還一個是實例分割。

preview
圖3

沙漏網絡的設計初衷是爲了捕捉每個尺度下的信息,即需要局部信息,又需要全局信息。比如人體關鍵點,需要局部身體信息,還需要在全局人體信息,甚至還需要全局的背景信息。爲了單獨處理不同尺度的信息,使用skip layers的單個pipeline來保存每個尺度下的空間信息。如上圖所示。

其很適合角點檢測任務,所以一般的關鍵點網絡裏面,都有所涉及。

Centripetal Shift Module
 

其中ctx,cty,tlx,tly,brx,bry指的是bbox的中心座標、左上點和右下點。s是個常數。cs就是偏移量,取了對數。loss爲smoothL1 loss。

注:文章中沒有說明指的什麼,但代碼裏寫了,指定的是1或8之類常數。

假如輸入500X500的圖像,那麼log(500/2)=2.4,最小目標像素值爲16,那麼log(16/2)=0.9。所以cs值的變化範圍爲0.9到2.4,波動並不大,能夠進行訓練。

其中cs和ctx,cty是要預測的

圖4

爲了匹配角點,我們設計了基於centripetal shifts的方法來匹配。原理是,同一個bbox的角點,共享同一個中心點。

角點是從heatmaps和local offset得到,然後針對同一類別,且滿足左上與右下的位置關係的條件下,進行組合。

注:local offset是因爲下采樣造成座標點的損失,通過學習,儘可能的恢復其真值的,指的上圖中的Otl。這個有些論文也在用,如[2]。

(3)式是直接用於訓練的值,它是通過(4)得到左上和右下各自的中心點。

注:(tlx+brx)/2就是bbox ground truth的中心點,(brx-tlx)/2是bbox的寬,那個u是一個[0,1]因子,讓其中心點,能夠在一定的範圍進行波動。其它的也是一樣。

這個Rcentral是預先設置好的,就是通過bbox的ground truth,計算出來的一箇中心小區域,指的是上圖(c)的紅色中心小區域。

實驗部分,說明了bbox面積>3500的這個u爲1/2.1,其它情況爲1/2.4。

通過預測,能夠一組式(1)的cs值,通過計算與Rcentral的IOU,可以用來計算score。值越高,代表越相近。

注:這個w是用於篩選正樣本的,訓練和測試中都會用到。

這個IOU有點特別,首先各角點所預測的中心點,要落到Rcentral區域中。由於有這個條件,所以是包含關係,IOU計算很簡潔。

Cross-star Deformable Convolution
 

圖5

由於corner pooling本身在featuremap中有cross stars的特點,如上圖(a)所示,其包括了豐富的目標上下文信息,是因爲使用max和sum的操作。爲了得到cross star中的上下文信息,不僅需要大的感受野,還需要學習任何結構信息。

注:corner pooling只需要看下面兩圖就明白了。

圖6
圖7

我們使用cross-star-deformable convolution來加強這種feature的提取。這個在上面的原理圖上有說明。

首先,將corner pooling的結果,輸入到cross-star deformable convolution模塊裏,爲了學習到cross star的幾何結構信息,直接在guiding offset上進行相關目標的訓練。對於左上的點,讓它更加關注右下的特徵,使用減小目標外的特徵的提取。其效果圖在圖5(b)中。這樣,即包括了形狀,也包括了方向信息。

在進行3X3,1X1的兩層卷積得到guiding shift,在此處,加入監督學習,用如下的loss。

其中的變量,參考圖4。也就是說這個loss直接在形變卷積裏做了。注意,這裏的ground truth是下采樣後的座標值。這樣在featuremap的上的值,很乾淨了,如圖5(c)所示

Instance Mask Head

爲了確保檢測模塊能夠產生proposal,我們先用一些epochs進行預訓練。選擇top k高的proposal,使用ROIAlign去做mask。ROIAlign的大小是14X14,mask預測的大小是28X28.

ROI後,連續使用4個3X3的卷積後,再上採樣得到28X28的mask map m,訓練階段,使用交叉熵進行訓練

實驗

最終我們的Loss爲

這個\alpha很能影響網絡的性能,設置成0.05.

作者使用16個 32G NVIDIA V100GPUs進行訓練的

注:真有錢

作者針對Hourglass-52訓練了110epochs,Hourglass-104訓練了210個epochs。網絡輸入大小511X511.

在測試階段,使用pad=0進行填充。

Comparison with state-of-the-art models

從上面的結果,可以看出,相對centernet,我們的改進是在中大值目標上。原因是目標越大,偏離值越大,中心越難學。針對二階段網絡,我們的指標還是很有競爭力的。

注:w.o指的是without。你看看人家的表述,很有競爭力,前面表述的是在坐的各位anchor-free都是渣渣。

我們認爲有較高的召回的原因有兩個:

1. 和cornertnet相比,基於centripetal shift的匹配方式能夠有效消除誤檢的高分框

2. 我們的匹配策略不依賴於中心檢測

注:AR是平均召回的意思。第一條的意思是,減小角點的誤匹配的問題。第二個是爲了解釋第一點。總的來說是一個意思。

從上面來看,mask分支的結果,並不是最好的。和mask rcnn相比,在強些;有ExtremeNet有相同的骨幹網絡,有了4.2%的AP提升。

Ablation study

Cross-star Deformable Convolution

形變卷積通常是用來特徵適應其形狀,同時它的主要的不同在於怎麼通過offset field來得到不同的feature。

在Guided anchoring裏是學習預測的anchor shapes校正到不同位置的不同anchor的形狀。

AlignDet提供了更加精確的特徵提取,即ROI convolution。爲了能夠對比,我們對每個角點回歸寬高,然後應用 RoI convolution在corner pooling。這裏的RoI conv能夠比deformable conv提供更高精度的anchor shapes。

就能看懂下面的圖了

 

 

針對RoI conv還要比deformable還好,作者在deformable的基礎上增加了guiding shift,這樣比RoI conv更好了。

是有兩個原因:

1. 在corner pooling後,已經有了邊緣的信息了,能夠更好的特徵提取能力了。

2. 直接回歸bbox寬高,在corner location上有是不準的,以至於在ROI上無法和groundtruth進行對齊,而無anchor的沒有這個問題。

注:這裏,作者把它的文章的設計過程的思路進行了對比,這點非常好,我們看到了作者是如何一步步的改進過來的。

剛開始直接用形變卷積,發現並沒有太好的效果,只漲了0.1個點。於是上了RoI conv,但它是學習bbox的寬高,發現寬高學的不好,於是想到加個guiding shift,在這裏加入bbox的位置和方向信息,更容易的學習到幾何結構信息。這個就是前面講的部分。

Instance Segmentation Module

作者發現,增加mask多任務分支,在110epchos時,增加了0.3%,在210epchos時,增加了0.4%,但cornerNet並沒有增加。這說明多任務學習,對corner的預測和關聯性預測,是沒什麼影響的。但對centripetal shift的預測是有影響的。

注:至於爲什麼,不清楚,認真思考,有利於對多任務學習的理解。

注:這個是它的效果圖,看起來,少了很多大的誤檢框了,同時也減小了些漏檢。

參考文獻:

[1] Qian Q, Jin R, Zhu S, et al. Fine-grained visual categorization via multi-stage metric learning[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015: 3716-3724.

[2] Liu W, Liao S, Ren W, et al. High-level semantic feature detection: A new perspective for pedestrian detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 5187-5196.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章