GA

dekiang發表於2020-10-26

論文:Region Proposal by Guided Anchoring
來源:CVPR 2019

1. Motivation

  • Anchor是物體檢測中的一個重要概念,通常是人為設計的一組框,作為分類和邊界框迴歸的基準框。無論是單階段檢測器還是兩階段檢測器,都廣泛地使用了anchor。例如,兩階段檢測器的第一階段通常採用RPN生成proposal,是對anchor進行分類和迴歸的過程,即anchor -> proposal -> detection bbox;大部分單階段檢測器是直接對 anchor 進行分類和迴歸,即anchor -> detection bbox

  • 常見的生成anchor的方式是滑窗(sliding window),也就是首先定義 k k k個特定尺度(scale)和寬高比(aspect ratio)的anchor,然後在全圖上以一定的步長滑動。這種方式在Faster R-CNN,SSD,RetinaNet等經典檢測方法中被廣泛使用。

  • 通過sliding window生成anchor的辦法簡單可行,但也不是完美的。
    (1)anchor的尺度和寬高比需要預先定義,這是一個對效能影響比較大的超參,而且對於不同資料集和方法需要單獨調整;
    (2)如果尺度和長寬比設定不合適,可能會導致recall不夠高,或者anchor過多影響分類效能和速度。一方面,大部分的anchor都分佈在背景區域,對proposal或者檢測不會有任何正面作用;
    (3)預先定義好的anchor形狀不一定能滿足極端大小或者長寬比懸殊的物體。

  • 預先定義的均勻密集且形狀固定的anchor存在多個不足之處,我們期待的是稀疏且形狀根據位置可變的anchor

  • 本文提出了一種新的anchor生成方法 —— Guided Anchoring,即通過影像特徵來指導anchor的生成。通過預測anchor的位置和形狀,來生成稀疏而且形狀任意的anchor,並且設計了Feature Adaption模組來修正特徵圖使之與anchor形狀更加匹配。

  • 在使用ResNet-50-FPN作為backbone的情況下,Guided Anchoring將RPN的召回率( A R 1000 AR_{1000} AR1000)提高了 9.1%,將其用於不同的物體檢測器上, A P AP AP也均有所提高。
    在這裡插入圖片描述

2. Guided Anchoring

2.1 overview

在這裡插入圖片描述

  • 網路以FPN為backbone,在原始RPN的特徵圖基礎上,採用兩個分支分別預測anchor位置和形狀,然後結合在一起得到anchor。之後採用一個Feature Adaption模組進行anchor特徵的調整,得到新的特徵圖供之後的預測(anchor 的分類和迴歸)使用。整個方法可以進行端到端的訓練,而且相比之前只是增加了 3 個 1 × 1 1\times1 1×1 conv 和一個 3 × 3 3\times3 3×3 deformable conv,帶來的模型引數量的變化很小。

  • Anchor generation模組的設計思想來源於公式
    p ( x , y , w , h ∣ I ) = p ( x , y ∣ I ) p ( w , h ∣ x , y , I ) p(x,y,w,h|I)=p(x,y|I)p(w,h|x,y,I) p(x,y,w,hI)=p(x,yI)p(w,hx,y,I)即,給定輸入影像 I I I(或影像的CNN特徵圖 F F F),其存在某個anchor的概率 p ( x , y , w , h ∣ I ) p(x,y,w,h|I) p(x,y,w,hI)等於上述兩個條件概率的乘積。 p ( x , y ∣ I ) p(x,y|I) p(x,yI)表示給定輸入影像 I I I,某個位置為該anchor中心的概率, p ( w , h ∣ x , y , I ) p(w,h|x,y,I) p(w,hx,y,I)表示給定輸入影像 I I I和anchor中心點 ( x , y ) (x,y) (x,y),其寬高為 ( w , h ) (w,h) (w,h)的概率。在傳統anchor-based方法(sliding window)中, p ( x , y ∣ I ) p(x,y|I) p(x,yI)可以看成是均勻分佈,而 p ( w , h ∣ x , y , I ) p(w,h|x,y,I) p(w,hx,y,I)可以看成是衝激函式。

  • 根據上面的公式,anchor的生成過程可以分解為兩個步驟,anchor 位置預測和形狀預測。將 Anchor generation模組分為2個分支, N L N_L NL分支對特徵圖 F I F_I FI使用一個 1 × 1 1\times1 1×1卷積+sigmoid函式,輸出每個位置是否為物體中心的概率; N S N_S NS分支對特徵圖使用一個 1 × 1 1\times1 1×1卷積,輸出每個位置的寬高偏移量。最後根據中心點概率值大小選出概率大於某閾值的中心點,與相應的寬高組成anchor。

  • 為什麼要先預測中心點概率,再預測寬和高,而不是直接輸出4維變數,分別表示anchor的中心點座標、寬和高?而且後續為什麼需要做feature adaption?(2.2節將給出解釋)

2.2 anchor的2個設計準則

作者認為,anchor的設計必須滿足2個準則:alignment(中心對齊) 和 consistency(特徵一致)。 alignment是指anchor的中心點要和feature的位置對齊,

  • alignment是指anchor的中心必須與特徵圖的每個位置對齊。這保證了anchor box的中心與特徵圖元素的感受野中心與anchor box對齊,如果不對齊,那麼後續使用單點特徵來對anchor進行分類迴歸就會出現問題。傳統的方法就是在特徵圖的每個位置 F I ( i , j ) F_I(i,j) FI(i,j)設定anchor,並將 F I ( i , j ) F_I(i,j) FI(i,j)設定為anchor的中心,自然地滿足了alignment準則。如果直接由迴歸方法得到anchor的中心,則不滿足alignment準則。而且為了設定稀疏的anchor,還需要增加一個表示該位置是否存在物體的概率圖,這樣實際上相當於沒有anchor的RPN,這時如何設定訓練標籤就成了非常棘手的問題。而直接在每個位置先輸出是否存在物體的概率值,並直接以此位置作為anchor的中心,一來滿足alignment準則,二來該方法簡單方便,訓練標籤的獲取也比較方面。Guided Anchoring生成anchor時相當於使用anchor-free的方法進行了一次粗略的檢測,消除了大量的negative anchors,生成了許多質量較高的positive anchors,後續再進行anchor的分類和迴歸,就相當於時多分類和精修邊界框了。
  • consistency是指anchor的特徵(感受野)要和形狀匹配。傳統的方法在特徵圖的所有位置均設定了寬高比相同的anchor(儘管同一個位置設定了多個寬高比不同的anchor),當使用同一個卷積核進行預測時,所有位置的特徵點所對應的感受野與各自anchor的關係都是相同的,這時,anchor的特徵和形狀是相匹配的。但是現在每個anchor都有自己獨特的形狀大小,和特徵就不是特別好地匹配。另一方面,對原本的特徵圖來說,它並不知道形狀預測分支預測的anchor形狀,但是接下來的分類和迴歸卻是基於預測出的anchor來做的,可能會比較懵。由於每個位置anchor形狀不同而破壞了特徵的一致性,所以需要通過feature adaption來進行修正。

2.3 中心點預測分支

  • 對大小為 W × H × C W\times H\times C W×H×C的特徵圖 F I F_I FI使用一個 1 × 1 1\times1 1×1卷積+sigmoid函式,輸出一個大小為 W × H × 1 W\times H\times1 W×H×1的概率圖 P I P_I PI,概率圖 P I P_I PI的某個位置 ( i , j ) (i,j) (i,j)的值 p ( i , j ∣ F I ) p(i,j|F_I) p(i,jFI)表示原圖上座標為 ( ( i + 0.5 ) s , ( j + 0.5 ) s ) ((i+0.5)s,(j+0.5)s) ((i+0.5)s,(j+0.5)s)的點為物體中心的概率。
  • 設定某個閾值 θ L \theta_L θL,選擇概率大於 θ L \theta_L θL的點為anchor中心點。下圖b表示概率圖 P I P_I PI,顯然大部分高置信的anchor中心都集中在物體上,設定閾值可以過濾大部分的背景類。
    在這裡插入圖片描述
  • 在訓練中心點預測分支時,其訓練標籤構造與FCOS類似,如下圖所示,對於某一特徵層,落入任何一個GT框中心區域內的center為正樣本,不落入任何GT框中的center為負樣本,其餘center為忽略樣本。當考慮多個特徵層時,特定大小的GT框只assign給特定特徵層(下圖實線框),但GT框會影響相鄰特徵層(下圖虛線框),當出現重疊GT框時,存在優先順序:CR>IR>OR。
  • 由於positive樣本較少,negative樣本很多,所以採用focal loss構造分類損失。
    在這裡插入圖片描述

2.4 形狀預測分支

  • 由於anchor的寬高變化範圍非常大,直接預測寬高是不合理的,甚至可能導致網路無法收斂,於是,預測量是寬高的偏移量 d w dw dw d h dh dh
    在這裡插入圖片描述其中, σ \sigma σ是超引數,論文中令 σ = 8 \sigma=8 σ=8 s s s是下采樣率。此時,範圍為 [ 0 , 1000 ] [0,1000] [0,1000]的寬高將被歸一化至 [ − 1 , 1 ] [-1,1] [1,1]
  • 對大小為 W × H × C W\times H\times C W×H×C的特徵圖 F I F_I FI使用一個 1 × 1 1\times1 1×1卷積,輸出一個大小為 W × H × 2 W\times H\times2 W×H×2的寬高預測圖,其每個位置表示寬高的偏移量 d w dw dw d h dh dh
  • 既然中心點預測分支已經定義好正負樣本了,為什麼不直接以正樣本對應的GT框作為該位置迴歸的真實寬高呢?原因是,center正樣本與GT框中心不是對齊的,就算能無差地預測寬高(指預測值與GT框的寬高一樣),那麼最終的anchor與GT框的IoU不一定是最高的,所以不能以GT框的寬高作為形狀預測分支的標籤。對此,可以直接使用IoU loss作為迴歸損失。但是作者也不是採用這種做法。
  • 假設某一GT框為 g t = ( x g , y g , w g , h g ) gt=(x_g,y_g,w_g,h_g) gt=(xg,yg,wg,hg),在特徵圖的某一位置 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)預定義一些可變anchor,為 a w h = { ( x 0 , y 0 , w , h ) ∣ w > 0 , h > 0 } a_{wh}=\{(x_0,y_0,w,h)|w>0,h>0\} awh={(x0,y0,w,h)w>0,h>0},接著定義vIoU
    v I o U ( a w h , g t ) = max ⁡ w > 0 , h > 0 I o U n o r m a l ( a w h , g t ) vIoU(a_{wh},gt)=\max_{w>0,h>0}IoU_{normal}(a_{wh},gt) vIoU(awh,gt)=w>0,h>0maxIoUnormal(awh,gt)由於不可能搜尋所以可能的anchor的寬高,所以還是預先設定了最常用的9個不同寬高對(與RetinaNet的anchor相同),理論上sample得越多,近似效果越好,但出於效率的考慮,只sample了常見的9組w和h。通過實驗發現,最終結果對sample的組數這個超參並不敏感,也就是說不管sample多少組,近似效果已經足夠。最後使用 bounded IoU loss計算損失
    在這裡插入圖片描述其中 L 1 L_1 L1表示Smooth L1 loss。
  • 作者的這種做法,還是使用了預先定義的anchor,並對這些anchor進行迴歸,最後使用中心預測分支進行篩選。直接使用定義好的中心點正樣本,並用IoU損失來訓練也是可以的吧。

2.5 Feature Adaption

  • 增加了一個Feature Adaption模組來解決特徵不一致問題。思路很簡單,就是把anchor的形狀資訊直接融入到特徵圖中,這樣新得到的特徵圖就可以去適應每個位置anchor的形狀。我們利用一個 3x3 的deformable convolution來修正原始的特徵圖,而deformable convolution 的offset 是通過anchor的w和h經過一個1x1conv得到的。(如果是像正常的 deformable convolution 一樣,用特徵圖來預測offset,則提升有限,因為沒有起到根據anchor形狀來adapt的效果)

通過這樣的操作,達到了讓feature的有效範圍和anchor形狀更加接近的目的,同一個conv的不同位置也可以代表不同形狀大小的anchor 了。從表格可以看到,Feature Adaption帶來了接近 5 個點的提升。

2.6 The Use of High-quality Proposals

  • 2.1~2.5節已經介紹完GA的原理,理論上高質量的proposals(如下圖所示)會使 A P AP AP提高很多,但是作者經過實驗發現,在不同的檢測模型上,使用Guided Anchoring只提升 1 個點左右。
    在這裡插入圖片描述
  • 經過一番探究,發現了以下兩點:1. 減少proposal數量,2. 增大訓練時正樣本的IoU閾值(這個更重要)。既然在top300裡面已經有了很多高 oU的proposal,那麼何必用1000個框來訓練和測試,既然 proposal們都這麼優秀,那麼讓 IoU 標準嚴格一些也未嘗不可。這一發現是通過調參得來的,通過這兩個改進,在 Faster R-CNN 上的漲點瞬間提升到了 2.7 個點(沒有加任何 trick),其他方法上也有大幅提升。
    在這裡插入圖片描述

相關文章