GA
目錄
論文: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,h∣I)=p(x,y∣I)p(w,h∣x,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,h∣I)等於上述兩個條件概率的乘積。 p ( x , y ∣ I ) p(x,y|I) p(x,y∣I)表示給定輸入影像 I I I,某個位置為該anchor中心的概率, p ( w , h ∣ x , y , I ) p(w,h|x,y,I) p(w,h∣x,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,y∣I)可以看成是均勻分佈,而 p ( w , h ∣ x , y , I ) p(w,h|x,y,I) p(w,h∣x,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,j∣FI)表示原圖上座標為 ( ( 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),其他方法上也有大幅提升。
相關文章
- Rancher RFO 正式 GA
- Milvus 2.0 正式 GA
- JDK/Java 16 GAJDKJava
- GA004-181-07
- GA001-181-21
- GA004-186-18
- GA0001-185-17
- GA002-186-17
- GA006-186-20
- TiDB 2.1 GA Release NotesTiDB
- Redis 6.0.0 GA已釋出! -antirezRedis
- 遺傳演算法(一):Basic GA演算法
- Micronaut框架3的GA 版本釋出!框架
- 2020-11-07 GA004-186-16
- [轉帖]JDK/Java 17 GA,新增「Free Java License」JDKJava
- 【譯】瞭解17.10 GA 中最新的 Git 工具特性Git
- 看CDN/DCDN/GA技術如何應對流量洪峰
- Java 21 正式 GA,虛擬執行緒真的來了Java執行緒
- 跨平臺.NET MAUI框架 正式版GA釋出UI框架
- 雙龍賀歲,龍蜥 LoongArch GA 版正式釋出
- 軟體版本GA、RC、Beta、RELEASE、Final、alpha等含義
- 生產環境中如何切換MySQL儲存引擎GAMySql儲存引擎
- Sophos Firewall (SFOS) v21 GA - 下一代防火牆防火牆
- .NET MAUI 6 正式 GA:一個程式碼庫,多個平臺UI
- Java 18和JDK 18可用於生產的GA版本釋出JavaJDK
- .NET MAUI RC 是完整的 API 並準備好起飛 (GA)UIAPI
- GA006-186-6 第六次圖檔繪製
- Nacos 釋出 1.0.0 GA 版本,可大規模投入到生產環境
- 網站動靜加速架構 dcdn+ga 全站加速和全球加速api網站架構API
- 技嘉推出新一代PICO-ITX主機板GA-PICO3350
- 全球應用加速GA 即將重磅釋出,專屬優惠等你來拿
- Kubernetes 1.14 版本釋出:正式支援Windows 節點,持久化本地捲進入GAWindows持久化
- 在matlab中利用遺傳演算法(GA)求取函式全域性最大值Matlab演算法函式
- 【演算法】遺傳演算法GA中幾種交叉運算元小結演算法
- 產後罕見發自拍 余文樂老婆王棠雲被稱讚辣媽GA
- InfoQ就Spring Boot 2.0 GA版釋出採訪了專案牽頭人Phil WebbSpring BootWeb
- TiDB Cloud GA,助力全球企業在雲上構建新一代雲原生應用TiDBCloud
- GA/T1400檢視庫平臺EasyCVR影片融合平臺HLS影片協議是什麼?VR協議